जवाबों:
कर्नेल घनत्व का अनुमान मिश्रण वितरण है; हर अवलोकन के लिए, एक कर्नेल है। यदि कर्नेल एक छोटा घनत्व है, तो यह कर्नेल घनत्व अनुमान से नमूने के लिए एक सरल एल्गोरिथ्म की ओर जाता है:
repeat nsim times:
sample (with replacement) a random observation from the data
sample from the kernel, and add the previously sampled random observation
# 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 = 10
hist(rnorm(N * M, mean = x, sd = bw))
यदि किसी कारण से आप अपने कर्नेल से आकर्षित नहीं कर सकते हैं (उदाहरण के लिए आपका कर्नेल घनत्व नहीं है), तो आप महत्वपूर्ण नमूने या MCMC के साथ प्रयास कर सकते हैं । उदाहरण के लिए, महत्व के नमूने का उपयोग करना:
# 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 Glen_b को मेरे धन्यवाद के साथ जिन्होंने उत्तर में योगदान दिया।