Stima computazionalmente efficiente della modalità multivariata


14

Versione breve: qual è il metodo più efficiente dal punto di vista computazionale per stimare la modalità di un set di dati multidimensionale, campionato da una distribuzione continua?

Versione lunga: ho un set di dati di cui ho bisogno per stimare la modalità di. La modalità non coincide con la media o la mediana. Di seguito è mostrato un esempio, questo è un esempio 2D, ma una soluzione ND sarebbe migliore: inserisci qui la descrizione dell'immagine

Attualmente, il mio metodo è

  1. Calcola la stima della densità del kernel su una griglia uguale alla risoluzione desiderata della modalità
  2. Cerca il punto calcolato più grande

Ovviamente, questo calcola il KDE in molti punti non plausibili, il che è particolarmente negativo se ci sono molti punti dati di dimensioni elevate o mi aspetto una buona risoluzione sulla modalità.

Un alternativa sarebbe usare una ricottura simulata, un algoritmo genetico, ecc. Per trovare il picco globale nel KDE.

La domanda è se esiste un metodo più intelligente per eseguire questo calcolo?


Non conosco la risposta ma penso che sia un'ottima domanda. È difficile per me pensare ad approcci migliori di quelli che hai menzionato. penso che ci siano differenze tra l'approccio alla stima univariata del kernel rispetto al multivariato. Questo libro di David Scott potrebbe essere utile per quanto riguarda l'approccio del kernel multivariato, anche se non sono sicuro che discuti del picco di caccia. amazon.com/…
Michael R. Chernick il

Risposte:


7

KKf(x)Kf(x)K

Un'esposizione molto dettagliata sull'algoritmo è fornita anche in questo post di blog .


3
Riferimenti piacevoli, Larry Wasserman ha anche recentemente pubblicato un post più breve che descrive la tecnica in modo meno dettagliato, The Amazing Mean Shift Algorithm .
Andy W,

1
@AndyW Buona chiamata! Il post di Larry Wasserman (e il suo blog in generale) è fantastico. Scorrendo i commenti, ho trovato questo riferimento illustrativo su spostamento medio, spostamento medio e una variante, QuickShift.
Sameer

2
Grazie. Non posso dire se quello è il più veloce, ma trova sicuramente il massimo locale. Ecco alcuni grafici della traiettoria e della velocità di apprendimento su alcuni dati sintetici .
tkw954,

9

Se il tuo interesse principale è rappresentato dai problemi bidimensionali, direi che la stima della densità del kernel è una buona scelta perché ha delle belle proprietà asintotiche (nota che non sto dicendo che sia il migliore). Vedi per esempio

Parzen, E. (1962). Sulla stima di una funzione e modalità di densità di probabilità . Annali delle statistiche matematiche 33: 1065–1076.

de Valpine, P. (2004). Probabilità di spazio nello stato di Monte Carlo mediante stima ponderata della densità del kernel posteriore . Diario dell'American Statistical Association 99: 523-536.

Per dimensioni superiori (4+) questo metodo è molto lento a causa della ben nota difficoltà nella stima della matrice di larghezza di banda ottimale, vedere .

Ora, il problema con il comando ksnel pacchetto KDEè, come hai detto, che valuta la densità in una griglia specifica che può essere molto limitante. Questo problema può essere risolto se si utilizza il pacchetto KDEper stimare la matrice della larghezza di banda, utilizzando ad esempio lo Hscvstrumento per stimare la densità del kernel e quindi ottimizzare questa funzione mediante il comando optim. Questo è mostrato sotto usando dati simulati e un kernel gaussiano in 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

Gli stimatori con forma limitata tendono ad essere più veloci, per esempio

Cule, ML, Samworth, RJ e Stewart, MI (2010). Stima della massima verosimiglianza di una densità multidimensionale concavo-log . Journal Royal Statistical Society B 72: 545–600.

Ma sono troppo alti per questo scopo.

4

Altri metodi che potresti considerare di utilizzare sono: adattamento di una miscela finita multivariata di normali (o altre distribuzioni flessibili) o

Abraham, C., Biau, G. e Cadre, B. (2003). Stima semplice della modalità di una densità multivariata . The Canadian Journal of Statistics 31: 23–34.

Spero che questo possa essere d'aiuto.


0

Recentemente abbiamo pubblicato un documento che suggerisce uno stimatore di modalità veloce e coerente.

PS Ruzankin e AV Logachov (2019). Uno stimatore in modalità veloce nello spazio multidimensionale. Lettere statistiche e di probabilità

O(dn)dn

Vorrei anche suggerire i nuovi stimatori della modalità di varianza minima dal mio recente articolo

PS Ruzankin (2020). Una classe di stimatori della modalità non parametrica. Comunicazioni in statistica - Simulazione e calcolo

O(dn2)nRd

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.