Çekirdek yoğunluğu tahmincisini 2B'ye entegre etme


12

Kimse izi takip etmek isterse bu sorudan geliyorum .

Temelde bir veri kümesi her nesnenin kendisine (ölçülen bu durumda iki) ölçülen değerlerin belirli sayıda bağlı olduğu nesnelerinden oluşur :NΩN

Ω=o1[x1,y1],o2[x2,y2],...,oN[xN,yN]

ait yeni bir nesne olasılığını belirlemek için bir yola ihtiyacım var bu yüzden bu soruda , ben inanıyorum bir çekirdek yoğunluğu tahmincisi aracılığıyla bir olasılık yoğunluk elde etmek için tavsiye edildi çoktan sahip.Ω fp[xp,yp]Ωf^

Amacım bu yeni nesnenin olasılığını (elde etmek olduğu için Bu 2D veri kümesine ait olma) , ben pdf entegre etmek söylendi "üzerinde destek değerler yoğunluk gözlemlediğiniz yoğunluktan daha az ". "Görülmektedir" yoğunluğu yeni nesne değerlendirilmiştir : örneğin, . Bu yüzden denklemi çözmem gerekiyor:Ω fp[xp,yp]Ωf^f^f ( x s , y s )pf^(xp,yp)

x,y:f^(x,y)<f^(xp,yp)f^(x,y)dxdy

2D veri setimin PDF'si (python stats.gaussian_kde modülü aracılığıyla elde edilir ) şöyle görünür:

resim açıklamasını buraya girin

burada kırmızı nokta çizilen yeni nesnesini temsil eder .p[xp,yp]

Yani soru şudur: pdf buna benzediğinde, limitleri için yukarıdaki integrali nasıl hesaplayabilirim ?x,y:f^(x,y)<f^(xp,yp)


Ekle

Yorumlardan birinde bahsettiğim Monte Carlo yönteminin ne kadar iyi çalıştığını görmek için bazı testler yaptım. Elimde bu var:

tablo

Her iki bant genişliği de az ya da çok aynı varyasyonu gösteren değerlerin düşük yoğunluklu alanlar için biraz daha fazla değiştiği görülmektedir. Tabloda büyük varyasyon bir fark verir Silverman 2500 vs 1000 örneklik bir değer, karşılaştırma (x, y) = (2.4,1.5) oluşur 0.0126veya ~1.3%. Benim durumumda bu büyük ölçüde kabul edilebilir.

Düzenleme : Ben sadece 2 boyutta Scott'ın kuralının burada verilen tanıma göre Silverman'ın eşdeğer olduğunu fark ettim.


2
Tahmincinizin unimodal olmadığını, ancak izlediğiniz tavsiyenin sadece "unimodal" dağılımlar için geçerli olduğunu fark ettiniz mi? Bu, yanlış bir şey yaptığınız anlamına gelmez, ancak cevabın ne anlama gelebileceği hakkında sert bir düşünce üretmelidir.
whuber

Merhaba @whuber, bu sorunun aslında cevabı Bunu belki de düşündük bu yüzden, tek-modlu dağılımlar için "iyi huylu" söylüyor olabilir bazı değişikliklerle benim problem üzerinde çalışır. "İyi davranılmış", istatistiksel jargonda "dürüst soru" anlamına mı gelir? Şerefe.
Gabriel

Ana kaygım, KDE'nin bant genişliği seçimine duyarlı olabileceğidir ve integralinizin, özellikle çizimde gösterilen gibi marjinal yerler için, seçime çok duyarlı olacağını umuyorum. (Bu arada bir tarama görüntüsü oluşturduktan sonra hesaplamanın kendisi kolaydır: değeri "prob" noktasından daha küçük olan noktalar arasındaki görüntüdeki ortalama değerle orantılıdır.) Yaklaşabilirsiniz bu, tüm makul bant genişlikleri aralığının cevabını hesaplayarak ve bu aralık içinde herhangi bir maddi şekilde değişip değişmediğini görün. Değilse, iyisin.
whuber

Çözüm hakkında yorum yapmayacağım, ancak entegrasyon basit Monte Carlo tarafından yapılabilir: dan örnek noktalar (bu kolay, çünkü kde örneklemesi kolay yoğunlukların bir karışımı olduğundan) ve sayın entegrasyon bölgesi içinde yer alan noktaların oranı (eşitsizliğin bulunduğu yer). f^
Zen

Veri kümenizde kaç gözlem var?
Hong Ooi

Yanıtlar:


11

Basit bir yol, entegrasyon alanını rasterleştirmek ve integrale ayrı bir yaklaşım hesaplamaktır.

Dikkat edilmesi gereken bazı şeyler var:

  1. Noktaların kapsamından daha fazlasını kapsadığınızdan emin olun: çekirdek yoğunluğu tahmininin kayda değer değerlere sahip olacağı tüm yerleri dahil etmeniz gerekir. Bu, noktaların boyutunu çekirdek bant genişliğinin üç ila dört katına (Gauss çekirdeği için) genişletmeniz gerektiği anlamına gelir.

  2. Sonuç, raster çözünürlüğüne göre biraz değişecektir. Çözünürlük, bant genişliğinin küçük bir kısmı olmalıdır. Hesaplama süresi, rasterdeki hücre sayısı ile orantılı olduğundan, daha kaba çözünürlükler kullanarak bir dizi hesaplamanın yapılması amaçlanandan daha fazla zaman gerektirmez: daha kaba olanlar için sonuçların, en iyi çözünürlük. Değilse, daha iyi bir çözünürlük gerekebilir.

İşte 256 puanlık bir veri kümesi için bir örnek:

Şekil 1

Noktalar, iki çekirdek yoğunluk tahminine eklenen siyah noktalar olarak gösterilir. Altı büyük kırmızı nokta algoritmanın değerlendirildiği "problar" dır. Bu, 1000 x 1000 hücre çözünürlüğünde dört bant genişliği (varsayılan 1.8 (dikey) ve 3 (yatay), 1/2, 1 ve 5 birim arasında)) için yapılmıştır. Aşağıdaki dağılım grafiği matrisi, sonuçların çok çeşitli yoğunlukları kapsayan bu altı prob noktası için bant genişliğine ne kadar güçlü bağlı olduğunu göstermektedir:

şekil 2

Varyasyon iki nedenden dolayı meydana gelir. Açıkçası yoğunluk tahminleri farklıdır ve bir çeşit varyasyon getirmektedir. Daha da önemlisi, yoğunluk tahminlerindeki farklılıklar herhangi bir ("prob") noktasında büyük farklılıklar yaratabilir . İkinci varyasyon, nokta kümelerinin orta yoğunluklu "saçakları" etrafında en büyüktür - tam olarak bu hesaplamanın en çok kullanılacağı yerler.

Bu, bu hesaplamaların sonuçlarını kullanma ve yorumlamada önemli dikkat gösterilmesini gerektirir, çünkü bunlar nispeten keyfi bir karara (kullanılacak bant genişliği) çok duyarlı olabilirler.


R Kodu

Algoritma, birinci fonksiyonun yarım düzine satırında bulunur f. Kodun geri kalanını kullanımını göstermek için önceki şekilleri oluşturur.

library(MASS)     # kde2d
library(spatstat) # im class
f <- function(xy, n, x, y, ...) {
  #
  # Estimate the total where the density does not exceed that at (x,y).
  #
  # `xy` is a 2 by ... array of points.
  # `n`  specifies the numbers of rows and columns to use.
  # `x` and `y` are coordinates of "probe" points.
  # `...` is passed on to `kde2d`.
  #
  # Returns a list:
  #   image:    a raster of the kernel density
  #   integral: the estimates at the probe points.
  #   density:  the estimated densities at the probe points.
  #
  xy.kde <- kde2d(xy[1,], xy[2,], n=n, ...)
  xy.im <- im(t(xy.kde$z), xcol=xy.kde$x, yrow=xy.kde$y) # Allows interpolation $
  z <- interp.im(xy.im, x, y)                            # Densities at the probe points
  c.0 <- sum(xy.kde$z)                                   # Normalization factor $
  i <- sapply(z, function(a) sum(xy.kde$z[xy.kde$z < a])) / c.0
  return(list(image=xy.im, integral=i, density=z))
}
#
# Generate data.
#
n <- 256
set.seed(17)
xy <- matrix(c(rnorm(k <- ceiling(2*n * 0.8), mean=c(6,3), sd=c(3/2, 1)), 
               rnorm(2*n-k, mean=c(2,6), sd=1/2)), nrow=2)
#
# Example of using `f`.
#
y.probe <- 1:6
x.probe <- rep(6, length(y.probe))
lims <- c(min(xy[1,])-15, max(xy[1,])+15, min(xy[2,])-15, max(xy[2,]+15))
ex <- f(xy, 200, x.probe, y.probe, lim=lims)
ex$density; ex$integral
#
# Compare the effects of raster resolution and bandwidth.
#
res <- c(8, 40, 200, 1000)
system.time(
  est.0 <- sapply(res, 
           function(i) f(xy, i, x.probe, y.probe, lims=lims)$integral))
est.0
system.time(
  est.1 <- sapply(res, 
           function(i) f(xy, i, x.probe, y.probe, h=1, lims=lims)$integral))
est.1
system.time(
  est.2 <- sapply(res, 
           function(i) f(xy, i, x.probe, y.probe, h=1/2, lims=lims)$integral))
est.2
system.time(
  est.3 <- sapply(res, 
           function(i) f(xy, i, x.probe, y.probe, h=5, lims=lims)$integral))
est.3
results <- data.frame(Default=est.0[,4], Hp5=est.2[,4], 
                      H1=est.1[,4], H5=est.3[,4])
#
# Compare the integrals at the highest resolution.
#
par(mfrow=c(1,1))
panel <- function(x, y, ...) {
  points(x, y)
  abline(c(0,1), col="Red")
}
pairs(results, lower.panel=panel)
#
# Display two of the density estimates, the data, and the probe points.
#
par(mfrow=c(1,2))
xy.im <- f(xy, 200, x.probe, y.probe, h=0.5)$image
plot(xy.im, main="Bandwidth=1/2", col=terrain.colors(256))
points(t(xy), pch=".", col="Black")
points(x.probe, y.probe, pch=19, col="Red", cex=.5)

xy.im <- f(xy, 200, x.probe, y.probe, h=5)$image
plot(xy.im, main="Bandwidth=5", col=terrain.colors(256))
points(t(xy), pch=".", col="Black")
points(x.probe, y.probe, pch=19, col="Red", cex=.5)

Şaşırtıcı cevap, her ne kadar emin değilim Defaultve Hp5bant genişliklerini anlamıyorum (varsayalım H1ve H5demek h=1ve h=5) Hp5değer h=1/2mi? Varsa nedir Default?
Gabriel

1
Anlayışınız doğru. ("p5", ".5" anlamına gelir.) Varsayılan, kde2dkullanılarak otomatik olarak hesaplanır bandwidth.nrd. Örnek veriler için , yatay yönde ve dikey yönde eşittir , kabaca testte ve değerleri arasında yaklaşık yarıya eşittir . Bu varsayılan bant genişliklerinin, toplam yoğunluğun kayda değer bir kısmını noktaların kendisinin çok ötesine yerleştirecek kadar büyük olduğuna dikkat edin, bu nedenle hangi entegrasyon algoritmasını kullanmayı seçeceğinize bakılmaksızın bu kapsamın genişletilmesi gerekir . 31.8515
whuber

Kullanılan bant genişliğini artırdığımda, sonuçta ortaya çıkan boyutun kdeda arttığını söylesem doğru anlıyorum (ve bu yüzden entegrasyon sınırlarını genişletmem gerekiyor)? <10%İntegralin sonuç değerinde bir hata ile yaşayabileceğim düşünüldüğünde, Scott'ın kuralını kullanma hakkında ne düşünüyorsunuz?
Gabriel

Bu kuralların tamamen farklı hedefler için geliştirildiğinden, özellikle stats.stackexchange.com/questions/63263 adresinde yapılan bir öneri uygulamaksa, amaçlarınız için iyi performans göstermeyebileceklerinden şüphelenmeniz gerektiğini düşünüyorum . KDE için hangi kuralını kullanabileceğiniz konusunda endişe etmek erken; bu aşamada, tüm yaklaşımın güvenilir bir şekilde çalışıp çalışmayacağı konusunda ciddi bir endişe duymalısınız.
whuber

1
Yukarıdakileri çizin. Ben bunu uygulama çalışma ve hatta ne kadar iyi çalıştığını nicel ise bilmenin bir yolu var. Biraz karmaşık ve zaman alıcı ama bunu yapabilirim (yapabilmeliyim).
Gabriel

1

Yeterli sayıda gözleminiz varsa, herhangi bir entegrasyon yapmanız gerekmeyebilir. Yeni noktanızın . Bir yoğunluk tahmin ediciniz olduğunu varsayın ; gözlem sayısı Özetle olan örnek büyüklüğü ile ve bölme. Bu, gerekli olasılığa yaklaşık bir değer verir.x0f^xf^(x)<f^(x0)

Bu, "çok küçük" olmadığı ve örnek boyutunuzun düşük yoğunluklu bölgelerde iyi bir tahmin sağlayacak kadar büyük (ve yeterince yayılmış olduğunu varsayar . 20000 vaka iki değişkenli için yeterince büyük görünüyor .f^(x0)x


Bu tavsiyenin bazı kantitatif analizi veya gerçek bir uygulamanın en az bir örneği memnuniyetle karşılanacaktır. Teklifinizin doğruluğunun büyük ölçüde çekirdeğin şekline bağlı olduğundan şüpheleniyorum . Bu, özellikleri üzerinde önemli bir çalışma yapmadan böyle bir hesaplamaya güvenmemi istemedi.
whuber
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.