Khu vực theo pdf pdf trong ước tính mật độ hạt nhân trong R


15

Tôi đang cố gắng sử dụng hàm ' mật độ ' trong R để thực hiện ước tính mật độ hạt nhân. Tôi gặp một số khó khăn giải thích kết quả và so sánh bộ dữ liệu khác nhau như có vẻ như diện tích dưới đường cong không nhất thiết phải là 1. Đối với bất kỳ hàm mật độ xác suất (pdf) , chúng ta cần phải có khu vực - φ ( x ) d x = 1 . Tôi giả sử rằng ước tính mật độ hạt nhân báo cáo pdf. Tôi đang sử dụng integrate.xy từ sfsmisc để ước tính diện tích dưới đường cong.φ(x)-φ(x)dx= =1

> # generate some data
> xx<-rnorm(10000)
> # get density
> xy <- density(xx)
> # plot it
> plot(xy)

âm mưu của mật độ

> # load the library
> library(sfsmisc)
> integrate.xy(xy$x,xy$y)
[1] 1.000978
> # fair enough, area close to 1
> # use another bw
> xy <- density(xx,bw=.001)
> plot(xy)

mật độ với bw = 0,001

> integrate.xy(xy$x,xy$y)
[1] 6.518703
> xy <- density(xx,bw=1)
> integrate.xy(xy$x,xy$y)
[1] 1.000977
> plot(xy)

mật độ với bw = 1

> xy <- density(xx,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 6507.451
> plot(xy)

mật độ với bw = 1e-6

Không phải diện tích dưới đường cong luôn là 1 sao? Có vẻ như băng thông nhỏ là một vấn đề, nhưng đôi khi bạn muốn hiển thị các chi tiết, vv trong đuôi và băng thông nhỏ là cần thiết.

Cập nhật / Trả lời:

220

> xy <- density(xx,n=2^15,bw=.001)
> plot(xy)

mật độ có số điểm cao hơn để lấy mẫu tại

> integrate.xy(xy$x,xy$y)
[1] 1.000015
> xy <- density(xx,n=2^20,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 2.812398


3
Điều này trông giống như một giới hạn điểm nổi về mật độ (): khi sử dụng băng thông 1e-6, bạn đang tạo (về lý thuyết) một bộ sưu tập 10.000 gai, mỗi khối có tổng khối lượng 1/10000. Những gai này cuối cùng được đại diện chủ yếu bởi các đỉnh của chúng, mà không có các khoảng trống được đặc trưng đầy đủ. Bạn chỉ đang đẩy mật độ () vượt quá giới hạn của nó.
whuber

@whuber, theo giới hạn điểm nổi, bạn có nghĩa là giới hạn của độ chính xác, vì trong việc sử dụng phao sẽ dẫn đến sự đánh giá quá cao về lỗi so với sử dụng gấp đôi. Tôi không nghĩ rằng tôi thấy điều đó sẽ xảy ra như thế nào nhưng tôi muốn xem một số bằng chứng.
highBandWidth

n

1

@ Anony-Mousse, vâng, đó là những gì câu hỏi này đang hỏi. Tại sao nó không được đánh giá đến 1?
highBandWidth

Câu trả lời:


9

Hãy suy nghĩ về việc integrate.xy()sử dụng quy tắc hình thang . Đối với phân phối chuẩn, nó sẽ đánh giá thấp khu vực dưới đường cong trong khoảng (-1,1) trong đó mật độ là lõm (và do đó phép nội suy tuyến tính nằm dưới mật độ thực) và đánh giá quá cao ở nơi khác (khi nội suy tuyến tính đi trên cùng của mật độ thực). Vì vùng sau lớn hơn (theo thước đo Lesbegue, nếu bạn muốn), quy tắc hình thang có xu hướng đánh giá quá cao tích phân. Bây giờ, khi bạn di chuyển đến băng thông nhỏ hơn, gần như tất cả các ước tính của bạn là lồi cầu, với rất nhiều gai hẹp tương ứng với các điểm dữ liệu và thung lũng giữa chúng. Đó là nơi quy tắc hình thang bị phá vỡ đặc biệt tồi tệ.


điều đó có nghĩa là chúng ta đang "quá khổ" các đỉnh và "nhấp nhô" các thung lũng, theo một nghĩa nào đó là gợn sóng. Vì trực quan hóa cũng tuân theo quy tắc hình thang (nội suy tuyến tính trên các mẫu), nên có vẻ như băng thông hạt nhân quá nhỏ cũng không tốt cho việc hiển thị. Ngoài ra, nếu chúng ta có thể nhận được số điểm lớn hơn mà tại đó chúng ta tính toán mật độ, sẽ có ít vấn đề hơn.
highBandWidth

1
Giải thích này không giữ nước. Vấn đề là mật độ không được phân tách đầy đủ, không phải là quy tắc hình thang bị phá vỡ tồi tệ. integ () không thể có được câu trả lời đúng vì mật độ () không tạo ra một biểu diễn đúng. Để thấy điều này, chỉ cần kiểm tra xy $ x: nó chỉ có 512 giá trị dự định đại diện cho 10.000 gai hẹp!
whuber

@whuber, đó là những gì câu trả lời. Vấn đề là bạn cần sử dụng quy tắc hình thang cho số lượng mẫu hữu hạn và nó đánh giá quá cao diện tích so với mật độ thực trên một trục liên tục theo hạt nhân. Cập nhật của tôi ở cuối câu hỏi mở rộng về nó.
highBandWidth

1
@ cao Không; quy tắc hình thang đang hoạt động tốt. Vấn đề là nó đang làm việc với sự phân tách không chính xác của integrand. Bạn có thể không thể có "nhiều gai hẹp tương ứng với các điểm dữ liệu" khi có 10.000 điểm dữ liệu và chỉ có 512 giá trị trong mảng mật độ!
whuber

1
Nhìn vào các biểu đồ này, bây giờ tôi nghĩ rằng vấn đề là với densitychứ không phải với integrate.xy. Với N = 10000 và bw = 1e-6, bạn sẽ phải nhìn thấy một chiếc lược có chiều cao của mỗi răng khoảng 1e6 và răng dày hơn khoảng 0. Thay vào đó, bạn vẫn thấy một đường cong hình chuông dễ nhận biết. Vì vậy, densitylà lừa dối bạn, hoặc ít nhất nó nên được sử dụng khác nhau với băng thông nhỏ: nnên là về (phạm vi dữ liệu) / (bw) thay vì mặc định n=512. Người hòa giải phải chọn một trong những giá trị to lớn này densitytrả về bởi một sự trùng hợp không vui.
StasK

-1

Không sao, bạn có thể sửa nó thay đổi và nhân rộng; thêm số nhỏ nhất sao cho mật độ không âm, sau đó nhân toàn bộ với một hằng số sao cho diện tích là thống nhất. Đây là cách dễ dàng.

L2c[φ(x)-c]+ tích hợp để thống nhất.


2
Chú ý rằng câu hỏi là thay vì về lý do tại sao các densitychức năng không tạo ra mật độ "thích" mà tích hợp đến 1 - chứ không phải sau đó làm thế nào để sửa chữa nó.
Tim
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.