Çok değişkenli modun hesaplamalı olarak verimli tahmini


14

Kısa versiyon: Sürekli bir dağılımdan örneklenen çok boyutlu bir veri kümesinin modunu tahmin etmenin en hesaplı olarak etkili yöntemi nedir?

Uzun versiyon: Modunu tahmin etmem gereken bir veri setim var. Mod, ortalama veya ortanca ile uyuşmuyor. Aşağıda bir örnek gösterilmektedir, bu bir 2D örnektir, ancak bir ND çözümü daha iyi olacaktır: resim açıklamasını buraya girin

Şu anda benim yöntemim

  1. Modun istenen çözünürlüğüne eşit bir ızgarada çekirdek yoğunluğu tahminini hesaplama
  2. Hesaplanan en büyük noktayı arayın

Açıkçası, bu KDE'yi birçok mantıksız noktada hesaplar, bu da yüksek boyutlarda çok fazla veri noktası varsa veya modda iyi bir çözünürlük bekliyorsam özellikle kötüdür.

Bir alternatif KDE'deki küresel zirveyi bulmak için simüle edilmiş bir tavlama, genetik algoritma, vb. Kullanmak olacaktır.

Soru, bu hesaplamayı gerçekleştirmek için daha akıllı bir yöntem olup olmadığıdır.


Cevabı bilmiyorum ama bence bu harika bir soru. Bahsettiğinden daha iyi yaklaşımlar düşünmek benim için zor. tek değişkenli çekirdek kestirimine yaklaşım arasında çok değişkenli ile karşılaştırıldığında farklılıklar olduğunu düşünüyorum. David Scott'un bu kitabı çok değişkenli çekirdek yaklaşımı konusunda yardımcı olabilir, ancak en yüksek avı tartıştığından emin değilim. amazon.com/…
Michael R.Chernick

Yanıtlar:


7

Yapmak istediğiniz şey için faturaya uyan yöntem ortalama kaydırma algoritmasıdır. Esasen, ortalama kaydırma, belirli bir çekirdek "gölgesi", ile parametrik olmayan bir şekilde tahmin edilen gradyanın yönü boyunca hareket etmeye dayanır . Buna karşılık, eğer yoğunluğu ile tahmin edilirse, ile tahmin edilir . Bir çekirdek yoğunluğunun gradyanını tahmin etmenin ayrıntıları , aynı zamanda ortalama kaydırma algoritmasını da tanıtan bu makalede açıklanmaktadır . K f ( x ) K f ( x ) K KKf(x)Kf(x)K

Bu blog girişinde algoritma hakkında çok ayrıntılı bir açıklama da verilmiştir .


3
Güzel referanslar, Larry Wasserman'ın son zamanlarda tekniği daha az ayrıntılı olarak anlatan daha kısa bir yazısı vardı : İnanılmaz Ortalama Vardiya Algoritması .
Andy W

1
@AndyW İyi çağrı! Larry Wasserman'ın gönderisi (ve genel olarak blog'u) harika. Yorumlara baktığımda, ortalama kaydırma, mediod-shift ve QuickShift varyantı hakkındaki bu açıklayıcı referansı buldum .
Sameer

2
Teşekkürler. Biri en hızlı olup olmadığını söyleyemem, ama kesinlikle yerel maksimum bulur. İşte bazı sentetik veriler üzerindeki yörünge ve öğrenme oranının bazı çizimleri .
tkw954

9

Eğer asıl ilginiz 2 boyutlu problemler ise, çekirdek yoğunluğu tahmininin iyi bir seçim olduğunu söyleyebilirim çünkü güzel asimptotik özelliklere sahiptir (bunun en iyisi olduğunu söylemediğimi unutmayın). Örneğin bakınız

Parzen, E. (1962). Olasılık yoğunluğu fonksiyonu ve modunun tahmininde . Yıllık Matematik İstatistikleri 33: 1065-1076.

de Valpine, P. (2004). Monte Carlo durum uzay ağırlıklı olasılıklı arka çekirdek yoğunluğu tahmini ile . Amerikan İstatistik Derneği 99: 523-536.

Daha yüksek boyutlar (4+) için bu yöntem, optimum bant genişliği matrisini tahmin etmede iyi bilinen zorluk nedeniyle gerçekten yavaştır, bkz .

Şimdi, kspaketteki komutla ilgili sorun KDE, belirttiğiniz gibi, çok sınırlayıcı olabilecek belirli bir ızgaradaki yoğunluğu değerlendirmesidir. KDEBant genişliği matrisini tahmin etmek için paketi kullanırsanız, örneğin HscvÇekirdek yoğunluk tahmincisini kullanarak ve sonra komutu kullanarak bu işlevi en iyi duruma getirirseniz bu sorun çözülebilir optim. Bu, aşağıda simüle edilmiş veriler ve bir Gauss çekirdeği kullanılarak gösterilmiştir R.

rm(list=ls())

# Required packages
library(mvtnorm)
library(ks)

# simulated data
set.seed(1)
dat = rmvnorm(1000,c(0,0),diag(2))

# Bandwidth matrix
H.scv=Hlscv(dat)

# [Implementation of the KDE](http://en.wikipedia.org/wiki/Kernel_density_estimation)
H.eig = eigen(H.scv)
H.sqrt = H.eig$vectors %*% diag(sqrt(H.eig$values)) %*% solve(H.eig$vectors)
H = solve(H.sqrt)
dH = det(H.scv)

Gkde = function(par){
return( -log(mean(dmvnorm(t(H%*%t(par-dat)),rep(0,2),diag(2),log=FALSE)/sqrt(dH))))
}

# Optimisation
Max = optim(c(0,0),Gkde)$par
Max

Şekil kısıtlamalı tahmin ediciler daha hızlı olma eğilimindedir, örneğin

Cule, ML, Samworth, RJ ve Stewart, MI (2010). Çok boyutlu log-içbükey yoğunluğun maksimum olabilirlik tahmini . Journal Royal Statistics Society B 72: 545-600.

Ancak bu amaç için çok fazla zirve yapıyorlar .

4

Kullanmayı düşünebileceğiniz diğer yöntemler şunlardır: normallerin (veya diğer esnek dağılımların) çok değişkenli bir sonlu karışımının yerleştirilmesi veya

Abraham, C., Biau, G. ve Cadre, B. (2003). Çok değişkenli yoğunluk modunun basit tahmini . Kanada İstatistik Dergisi 31: 23-34.

Umarım bu yardımcı olur.


0

Son zamanlarda, hızlı ve tutarlı bir mod tahmincisi öneren bir makale yayınladık.

PS Ruzankin ve AV Logachov (2019) Karşılaştırması. Çok boyutlu uzayda hızlı mod tahmincisi. İstatistik ve Olasılık Mektupları

O(dn)dn

Ayrıca son makalemden yeni minimal varyans modu tahmin edicileri öneririm

PS Ruzankin (2020). Parametrik olmayan mod tahmin edicileri sınıfı. İstatistikte İletişim - Simülasyon ve Hesaplama

O(dn2)nRd

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.