Wie zeichnet man Zufallsstichproben aus einer nicht parametrisch geschätzten Verteilung?


14

Ich habe eine Stichprobe von 100 Punkten, die kontinuierlich und eindimensional sind. Ich habe seine nicht-parametrische Dichte mit Hilfe von Kernel-Methoden geschätzt. Wie kann ich Zufallsstichproben aus dieser geschätzten Verteilung ziehen?

Antworten:


21

Eine Schätzung der Kerndichte ist eine Mischungsverteilung. Für jede Beobachtung gibt es einen Kernel. Wenn der Kernel eine skalierte Dichte ist, führt dies zu einem einfachen Algorithmus zum Abtasten aus der Kerneldichteschätzung:

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

hxichN(μ=xich,σ=h)

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

M

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

Wenn Sie aus irgendeinem Grund nicht aus Ihrem Kernel ziehen können (z. B. Ihr Kernel ist keine Dichte), können Sie es mit einer Stichprobenauswahl oder MCMC versuchen . Verwenden Sie beispielsweise die Stichprobenerfassung für die Wichtigkeit:

# 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 Mit meinem Dank an Glen_b, der zur Antwort beigetragen hat.


1
Es tut mir leid, dass ich mich direkt mit dem Sampling von Wichtigkeit befasst habe, und dann wurde mir klar, dass das Sampling normalerweise einfacher ist. Ich habe Ihre erste Erklärung zu meinen Antworten hinzugefügt. Vielen Dank
Matteo Fasiolo

@ Matteo Fasiolo - Haben Sie einen Hinweis auf ein Papier, das ich für diese Methode zitieren kann?
Pallavi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.