Come prelevare campioni casuali da una distribuzione stimata non parametrica?


14

Ho un campione di 100 punti che sono continui e monodimensionali. Ho stimato la sua densità non parametrica usando i metodi del kernel. Come posso estrarre campioni casuali da questa distribuzione stimata?

Risposte:


21

Una stima della densità del kernel è una distribuzione mista; per ogni osservazione, c'è un kernel. Se il kernel ha una densità scalata, questo porta a un semplice algoritmo per il campionamento dalla stima della densità del kernel:

repeat nsim times:
  sample (with replacement) a random observation from the data
  sample from the kernel, and add the previously sampled random observation

hXio) e quindi campionare da a N(μ=Xio,σ=h). In R:

# Original distribution is exp(rate = 5)
N = 1000
x <- rexp(N, rate = 5)

hist(x, prob = TRUE)
lines(density(x))

# Store the bandwith of the estimated KDE
bw <- density(x)$bw

# Draw from the sample and then from the kernel
means <- sample(x, N, replace = TRUE)
hist(rnorm(N, mean = means, sd = bw), prob = TRUE)

A rigor di termini, dato che i componenti della miscela sono equamente ponderati, è possibile evitare il campionamento con parti di ricambio e disegnare semplicemente un campione di una dimensione M da ciascun componente della miscela:

M = 10
hist(rnorm(N * M, mean = x, sd = bw))

Se per qualche motivo non puoi attingere dal tuo kernel (es. Il tuo kernel non è una densità), puoi provare con campionamento importante o MCMC . Ad esempio, utilizzando il campionamento per importanza:

# Draw from proposal distribution which is normal(mu, sd = 1)
sam <- rnorm(N, mean(x), 1)

# Weight the sample using ratio of target and proposal densities
w <- sapply(sam, function(input) sum(dnorm(input, mean = x, sd = bw)) / 
                                 dnorm(input, mean(x), 1))

# Resample according to the weights to obtain an un-weighted sample
finalSample <- sample(sam, N, replace = TRUE, prob = w)

hist(finalSample, prob = TRUE)

PS Con i miei ringraziamenti a Glen_b che ha contribuito alla risposta.


1
Mi dispiace di essere andato direttamente al campionamento per importanza, e poi mi sono reso conto che di solito il campionamento è più semplice di così. Ho aggiunto la tua spiegazione iniziale alle mie risposte. Mille grazie
Matteo Fasiolo,

@ Matteo Fasiolo - Hai qualche riferimento a un documento che posso citare per questo metodo.
Pallavi,
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.