R'de çekirdek yoğunluğu tahmininde “pdf” altındaki alan


15

Çekirdek yoğunluk tahminleri yapmak için R'de ' yoğunluk ' işlevini kullanmaya çalışıyorum . Sonuçları yorumlamakta ve çeşitli veri kümelerini eğri altındaki alanın mutlaka olması gerekmediği gibi karşılaştırmakta zorluk çekiyorum. Herhangi bir olasılık yoğunluk fonksiyonu (pdf) , - ϕ ( x ) d x = 1 . Çekirdek yoğunluk tahmininin pdf rapor ettiğini varsayıyorum. Ben kullanıyorum integrate.xy gelen sfsmisc eğri altında kalan alan tahmin etmek.φ(x)-φ(x)dx=1

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

yoğunluk grafiği

> # 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)

bw ile yoğunluk = .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)

bw ile yoğunluk = 1

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

bw ile yoğunluk = 1e-6

Eğrinin altındaki alan her zaman 1 olmamalı mı? Küçük bant genişlikleri bir sorun gibi görünüyor, ancak bazen kuyruklarda ayrıntıları vb. Göstermek istiyorsunuz ve küçük bant genişliklerine ihtiyaç var.

Güncelleme / Cevap:

220

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

örneklemede daha fazla nokta ile yoğunluk

> 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
Bu, yoğunluk () içinde bir kayan nokta sınırlaması gibi görünür: 1e-6 bant genişliği kullanırken, (teoride) her biri toplam kütle 1/10000 olan 10.000 sivri bir koleksiyon yaratırsınız. Bu sivri uçlar, boşluklar yeterince karakterize edilmeden öncelikle zirveleriyle temsil edilir. Yoğunluğu () sınırlarının ötesine itiyorsunuz.
whuber

@whuber, kayan nokta sınırlaması ile, şamandıraların kullanımında, iki katına kıyasla hatanın daha fazla tahmin edilmesine yol açacağı için, kesinlik sınırlarını mı kastediyorsunuz? Bunun nasıl olacağını gördüğümü sanmıyorum ama bazı kanıtlar görmek istiyorum.
highBandWidth

n

1

@ Anony-Mousse, evet, bu soru soruyor. Neden 1 olarak değerlendirilmiyor?
highBandWidth

Yanıtlar:


9

Yamuk kuralının integrate.xy()kullanımlarını düşünün . Normal dağılım için, yoğunluğun içbükey olduğu (ve dolayısıyla doğrusal enterpolasyonun gerçek yoğunluğun altında olduğu) aralıkta (-1,1) eğrinin altındaki alanı küçümseyecek ve başka bir yerde (doğrusal enterpolasyon gittikçe ) fazla tahmin edecektir. gerçek yoğunluğun üstünde). İkinci bölge daha büyük olduğu için (isterseniz Lesbegue ölçüsünde), yamuk kuralı integrali fazla tahmin etme eğilimindedir. Şimdi, daha küçük bant genişliklerine geçtiğinizde, tahmininizin neredeyse tamamı parçalı dışbükeydir, veri noktalarına karşılık gelen çok sayıda dar ani ve aralarındaki vadilerdir. Yamuk kuralı özellikle kötü bir şekilde parçalanıyor.


yani zirveleri "fazla örnekliyoruz" ve vadileri bir miktar dalgalı anlamda "az örnekliyoruz". Görselleştirme aynı zamanda trapezoidal kuralı (örnekler arasında doğrusal enterpolasyon) izlediğinden, çekirdek bant genişliği görselleştirme için de kötü görünmektedir. Ayrıca, yoğunluğu hesapladığımız daha fazla sayıda nokta elde edebilseydik, daha az sorun olurdu.
highBandWidth

1
Bu açıklama su tutmaz. Sorun, yamuk kuralının kötü bir şekilde parçalanmaması değil, yoğunluğun yeterince ayrıklaştırılmış olmasıdır. integrate () doğru bir yanıt almak için çaresizdir çünkü density () doğru bir gösterim üretmez. Bunu görmek için, sadece xy $ x'ı inceleyin: 10.000 dar anıyı temsil etmek için sadece 512 değeri var!
whuber

@whuber, cevap buydu. Mesele şu ki, sonlu sayıda örnek için yamuk kuralını kullanmanız gerekir ve bu, çekirdekleri göre sürekli bir eksendeki gerçek yoğunluğa kıyasla alanı fazla tahmin eder. Sorunun sonundaki güncellemem genişliyor.
highBandWidth

1
@high Hayır; yamuk kuralı iyi çalışıyor. Sorun, integralin yanlış bir takdirine bağlı olarak çalışmasıdır. Yoğunluk dizisinde 10.000 veri noktası ve yalnızca 512 değer olduğunda "veri noktalarına karşılık gelen çok fazla dar ani" olmayabilir!
whuber

1
Bu grafiklere baktığımda, şimdi sorunun onunla densitydeğil de olduğunu düşünüyorum integrate.xy. N = 10000 ve bw = 1e-6 ile, her dişin yüksekliği yaklaşık 1e6 olan bir tarak ve dişler 0 civarında daha yoğun olan bir tarak görmeniz gerekir . Bunun yerine, hala tanınabilir bir çan şeklinde eğri görüyorsunuz. Yani densitysizi aldatıyor ya da en azından küçük bant genişlikleri ile farklı kullanılmalıdır: nvarsayılandan ziyade (veri aralığı) / (bw) olmalıdır n=512. Sorgulayıcı, densitymutsuz bir tesadüfle dönen bu büyük değerlerden birini almalıdır .
StasK

-1

Sorun değil, kaydırarak ve ölçeklendirerek düzeltebilirsiniz; yoğunluğu negatif olmayacak şekilde en küçük sayıyı ekleyin, ardından her şeyi alan birliği olacak şekilde bir sabitle çarpın. Bu kolay yol.

L2c[φ(x)-c]+


2
Bildirim soru oldukça açık olduğunu nedendensity işlevi "doğru" yoğunluğunu üretmek etmediğini 1'e bütünleştirir - ziyade düzeltmek için nasıl.
Tim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.