Tôi đã cố gắng để trả lời câu hỏi Đánh giá không thể thiếu với Tầm quan trọng lấy mẫu phương pháp trong R . Về cơ bản, người dùng cần tính toán
sử dụng phân phối theo cấp số nhân làm phân phối quan trọng
và tìm giá trị của , nó mang lại xấp xỉ tốt hơn cho tích phân (nó ). Tôi gọi lại vấn đề là đánh giá giá trị trung bình của trên : tích phân sau đó chỉ là . L f ( x ) [ 0 , π ] π Lself-study
Do đó, đặt là pdf của và để : mục tiêu bây giờ là ước tínhX ∼ U ( 0 , π ) Y ∼ f ( X )
sử dụng lấy mẫu quan trọng. Tôi đã thực hiện một mô phỏng trong R:
# clear the environment and set the seed for reproducibility
rm(list=ls())
gc()
graphics.off()
set.seed(1)
# function to be integrated
f <- function(x){
1 / (cos(x)^2+x^2)
}
# importance sampling
importance.sampling <- function(lambda, f, B){
x <- rexp(B, lambda)
f(x) / dexp(x, lambda)*dunif(x, 0, pi)
}
# mean value of f
mu.num <- integrate(f,0,pi)$value/pi
# initialize code
means <- 0
sigmas <- 0
error <- 0
CI.min <- 0
CI.max <- 0
CI.covers.parameter <- FALSE
# set a value for lambda: we will repeat importance sampling N times to verify
# coverage
N <- 100
lambda <- rep(20,N)
# set the sample size for importance sampling
B <- 10^4
# - estimate the mean value of f using importance sampling, N times
# - compute a confidence interval for the mean each time
# - CI.covers.parameter is set to TRUE if the estimated confidence
# interval contains the mean value computed by integrate, otherwise
# is set to FALSE
j <- 0
for(i in lambda){
I <- importance.sampling(i, f, B)
j <- j + 1
mu <- mean(I)
std <- sd(I)
lower.CB <- mu - 1.96*std/sqrt(B)
upper.CB <- mu + 1.96*std/sqrt(B)
means[j] <- mu
sigmas[j] <- std
error[j] <- abs(mu-mu.num)
CI.min[j] <- lower.CB
CI.max[j] <- upper.CB
CI.covers.parameter[j] <- lower.CB < mu.num & mu.num < upper.CB
}
# build a dataframe in case you want to have a look at the results for each run
df <- data.frame(lambda, means, sigmas, error, CI.min, CI.max, CI.covers.parameter)
# so, what's the coverage?
mean(CI.covers.parameter)
# [1] 0.19
Mã về cơ bản là một triển khai đơn giản của việc lấy mẫu quan trọng, theo ký hiệu được sử dụng ở đây . Sau đó, việc lấy mẫu quan trọng được lặp lại lần để có nhiều ước tính và mỗi lần kiểm tra được thực hiện cho dù khoảng 95% có bao gồm giá trị trung bình thực tế hay không.μ
Như bạn có thể thấy, với , phạm vi bảo hiểm thực tế chỉ là 0,19. Và việc tăng lên các giá trị như không giúp ích gì (phạm vi bảo hiểm thậm chí còn nhỏ hơn, 0,15). Tại sao chuyện này đang xảy ra?B 10 6