Công thức của Doane cho việc tạo biểu đồ


9

Tôi đang thực hiện các thuật toán khác nhau để ước tính số lượng thùng tốt nhất để sử dụng cho biểu đồ. Hầu hết những cái tôi đang triển khai được mô tả trên trang "Biểu đồ" Wikipedia trong phần " Số lượng thùng và chiều rộng " *.

Tôi bị mắc kẹt trong một vấn đề với công thức của Doane:

1 + log(n) + log(1 + kurtosis(data) * sqrt(n / 6.))

nơi nlà kích thước dữ liệu.

Vấn đề là khi sự suy yếu là tiêu cực và n >> 1bởi vì lập luận của logtrở nên tiêu cực.

* (trang đó đã thay đổi kể từ khi trang này được đăng, liên kết được chỉnh sửa để trỏ đến trang như lúc nó được đăng)


1
Bạn có biết nếu công thức đó sử dụng kurtosis hoặc kurtosis dư thừa (tức là dist bình thường có 4 hoặc 0)?
Peter Flom

@PeterFlom: trong bài báo gốc ( amstat.tandfonline.com/doi/pdf/10.1080/00031305.1976.10479172 ) kurtosis được định nghĩa là Skewness, nhưng tôi không phải là chuyên gia. Bài báo gốc cũng khá khác so với công thức wikipedia
Ruggero Turra

1
Ơ, cái gì? Kurtosis được định nghĩa là độ lệch? Điều đó không có ý nghĩa; họ rất khác nhau. Tôi không thể truy cập vào tờ giấy, nhưng có vẻ như có gì đó bị rối tung ở đâu đó.
Peter Flom

@PeterFlom Phân phối bình thường nên có mức độ tổn thương là 3 chứ không phải 4.
Glen_b -Reinstate Monica

@PeterFlom Tôi đã nghiên cứu vấn đề sai lệch và kurtosis - xem "Chỉnh sửa 2" trong câu trả lời của tôi.
Glen_b -Reinstate Monica

Câu trả lời:


11

Câu trả lời này đã trải qua những thay đổi đáng kể khi tôi điều tra trang wikipedia. Tôi đã để lại câu trả lời phần lớn như chúng nhưng được thêm vào chúng, vì vậy hiện tại điều này hình thành một sự tiến triển của sự hiểu biết; phần cuối cùng là nơi thông tin tốt nhất.

Câu trả lời ngắn: trang wikipedia - và công thức của OP, dường như giống nhau - đơn giản là sai, vì ít nhất ba lý do khác nhau. Tôi sẽ rời khỏi cuộc thảo luận ban đầu của mình (giả định rằng OP và wikipedia đã đúng) vì điều đó giải thích một số vấn đề. Thảo luận tốt hơn sau. Lời khuyên ngắn gọn: hãy quên Doane. Nếu bạn phải sử dụng nó, hãy sử dụng những gì wikipedia nói bây giờ (tôi đã sửa nó).


Tôi tin rằng công thức phải đề cập đến kurtosis dư thừa; Lý do của tôi cho điều đó là nó sửa đổi một công thức cho dữ liệu bình thường để giải thích cho dữ liệu không bình thường, do đó bạn mong muốn nó tái tạo dữ liệu không được sửa đổi ở mức bình thường. Nó làm điều đó nếu bạn sử dụng kurtosis dư thừa.

Tuy nhiên, điều đó đặt ra vấn đề là thuật ngữ trong nhật ký có thể trở nên tiêu cực với các mẫu lớn (thực sự, nó có thể là ở mức khá nhỏ ). Tôi muốn đề nghị không sử dụng nó với nhọn dư âm (tôi chưa bao giờ sử dụng nó ngoài unimodality nào, một khi mọi thứ trở nên đa phương thức bạn muốn áp dụng ý tưởng nhọn dư thừa để mỗi chế độ, không mịn hơn họ!), Mặc dù với trường hợp nhẹ ( kurtosis dư thừa chỉ dưới 0) và kích thước mẫu khiêm tốn sẽ không phải là vấn đề lớn.n0n

Tôi cũng đề nghị rằng trong mọi trường hợp, nó sẽ cung cấp quá ít thùng với kích thước mẫu lớn, ngay cả khi nó hoạt động như dự định.

Bạn có thể tìm thấy bài viết này (bởi CVer Rob Hyndman thông thường ):

http://www.robjhyndman.com/ersky/sturges.pdf

của một số quan tâm. Nếu lập luận của Sturges là sai, công thức của Doane có cùng một vấn đề ... như Rob ghi chú rõ ràng trong bài báo.

Trong bài báo đó (và trong câu trả lời này ), ông gật đầu với quy tắc Freedman-Diaconis. Trong bài báo, anh ta cũng chỉ ra cách tiếp cận được đề cập bởi Matt Wand (anh ta đề cập đến bài báo làm việc dường như không trực tuyến, nhưng bài báo tiếp theo có sẵn nếu bạn có quyền truy cập):

http://www.jstor.org/discover/10.2307/2684697

[Chỉnh sửa: thực sự là một liên kết đến bài viết đang ở trên trang citeseer ]

Cách tiếp cận đó bao gồm ước tính xấp xỉ các chức năng cụ thể để có được xấp xỉ tối ưu (về mặt bình phương lỗi tích hợp trung bình, MISE) để ước tính mật độ cơ bản. Mặc dù những thứ này hoạt động tốt và cung cấp nhiều thùng hơn Sturges hay Doane nói chung, đôi khi tôi vẫn thích sử dụng nhiều thùng hơn, mặc dù đó thường là một nỗ lực đầu tiên rất tốt.

Thành thật mà nói tôi không biết tại sao cách tiếp cận của Wand (hoặc ít nhất là quy tắc Fredman Diaconis) không phải là một mặc định khá nhiều ở mọi nơi.

R ít nhất cung cấp phép tính Freedman-Diaconis về số lượng thùng:

 nclass.FD(rnorm(100))
[1] 11
 nclass.FD(runif(100))
[1] 6
 nclass.FD(rt(100,1))
[1] 71

Xem ?nclass.FD

Cá nhân, đối với tôi đó là quá ít thùng trong hai trường hợp đầu tiên ít nhất; Tôi đã nhân đôi cả hai thứ đó mặc dù thực tế rằng nó có thể ồn hơn một chút so với tối ưu. Khi n trở nên lớn, tôi nghĩ rằng nó làm rất tốt trong hầu hết các trường hợp.


Chỉnh sửa 2:

Tôi đã quyết định điều tra vấn đề sai lệch và kurtosis mà @PeterFlom thể hiện đúng sự bối rối tại.

Tôi chỉ có một cái nhìn về wiso giấy Doane được liên kết với (tôi đã đọc nó trước đó .... nhưng đó là gần 30 năm trước) - nó không liên quan gì đến kurtosis, chỉ nói về sự sai lệch.

Công thức thực tế của Doane là:Ke= =tôiog2(1+g1σg1)

Trong đó là số thùng được thêm vào, là độ lệch giây thứ 3. [Thực ra, Doane, theo cách sử dụng khá phổ biến của thời gian, sử dụng cho sự sai lệch thời điểm thứ 3 (!) Đã (nguồn gốc của việc lạm dụng ký hiệu đặc biệt không xác định này là khá cũ và tôi sẽ không theo đuổi nó, ngoại trừ việc nói rằng may mắn thay, nó xuất hiện ít thường xuyên hơn bây giờ).]g 1 Keg1b1

Bây giờ ở mức bình thường, (mặc dù xấp xỉ đó khá kém cho đến khi n vượt quá 100; Doane sử dụng mẫu đầu tiên)σg1= =6(n-2)(n+1)(n+3)6n

σg1. Có vẻ như nó đã được chơi với nhiều lần trước khi nó kết thúc ở đó; Tôi sẽ quan tâm nếu có ai theo dõi nó.

Theo tôi, có vẻ như cuộc tranh luận của Doane sẽ vui vẻ mở rộng đến sự bứt rứt, nhưng lỗi tiêu chuẩn chính xác sẽ phải được sử dụng.

Tuy nhiên, vì Doane dựa vào lập luận của Sturges và Sturges dường như là thiếu sót, có lẽ toàn bộ doanh nghiệp đã phải chịu số phận. Trong mọi trường hợp tôi đã chỉnh sửa trang thảo luận Biểu đồ trên wikipedia để ý lỗi.

---

b1


b1

Các lỗi nhỏ của thang đo đó (sự vắng mặt của giá trị tuyệt đối) không xảy ra thường xuyên trong các tạp chí - các số liệu thống kê bên ngoài mà tôi đã thấy rõ hơn (và nghiêm trọng hơn). Đối với ký hiệu, nó thực sự khá phổ biến; eg1 , eg2 , eg3 ... tôi có thể trỏ đến hàng chục
Glen_b -Reinstate Monica

2

Các biện pháp kurtosis được xác định theo các khía cạnh thứ hai và thứ tư là không bao giờ âm tính ( xem ), sau đó log(1+...)>0.

Số lượng này được thực hiện trong các lệnh kurtosis()từ thư viện R moments. Ngoài ra, sử dụng lệnh hist()bạn có thể chỉ định số lần ngắt như sau

library(moments)

n <- 250
data <- rnorm(n)

# Sturges formula log_2(n) + 1
hist(data,breaks = "Sturges")

# Doane's formula    
Doane <- 1 + log(n) + log(1 + kurtosis(data) * sqrt(n / 6.))
hist(data,breaks = Doane)

Công thức được sử dụng trong lệnh kurtosis()là đơn giản mean((data - mean(data))^4)/mean((data - mean(data))^2)^2.

Bây giờ, nếu bạn muốn điều tra công thức '`best' 'là gì, thì bạn sẽ cần một tiêu chí. Hãy xem xét rằng điều này đã được thảo luận một cách rộng rãi trong các tài liệu thống kê.


Những gì tôi không biết là định nghĩa của kurtosis trong công thức của Doane là gì
Ruggero Turra

Có một liên kết đến định nghĩa của kurtosis trong mục wikipedia mà bạn đã đăng. Ngẫu nhiên, nó giống như cái tôi đã đăng. Nó được ước tính là khoảnh khắc trung tâm mẫu thứ tư chia cho bình phương của khoảnh khắc trung tâm mẫu thứ hai. Xin vui lòng, xem chỉnh sửa của tôi cho mã.
Miles Davis

1
một lần nữa, tôi không biết liệu công thức của bạn có phải là công thức chính xác của Doane hay không, nếu bạn nhìn vào tờ giấy chẳng hạn anh ta sử dụng log2 thay vì log
Ruggero Turra

Vâng, đó là "công thức Doane của" bạn được đăng ¬¬ . Dù sao, điều này có thể được sửa chữa bằng cách sử dụng log(n,2)thay vì log(n). NHƯNG, mục wikipedia cũng như các nguồn khác chỉ ra rằng nó nên được log.
Miles Davis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.