Интеграция Монте-Карло с использованием выборки по важности с учетом функции предложения

Учитывая предложение о распространении Laplace:

g(x) = 1/2*e^(-|x|)

и размер выборки n = 1000, Я хочу провести интеграцию Монте-Карло (MC) для оценки θ:

введите описание изображения здесь

через выборку важности. В конце концов я хочу вычислить среднее и стандартное отклонение этой оценки MC в R, как только я доберусь туда.


Изменить (прибыл поздно после ответа ниже)

Это то, что у меня есть для моего кода R:

library(VGAM)
n = 1000
x = rexp(n,0.5)
hx = mean(2*exp(-sqrt(x))*(sin(x))^2)
gx = rlaplace(n, location = 0, scale = 1)

1 ответ

Решение

Теперь мы можем написать простую функцию R для выборки из распределения Лапласа:

## `n` is sample size
rlaplace <- function (n) {
  u <- runif(n, 0, 1)
  ifelse(u < 0.5, log(2 * u), -log(2* (1 - u)))
  }

Также напишите функцию для плотности распределения Лапласа:

g <- function (x) ifelse(x < 0, 0.5 * exp(x), 0.5 * exp(-x))

Теперь ваш интеграл:

f <- function (x) {
  ifelse(x > 0, exp(-sqrt(x) - 0.5 * x) * sin(x) ^ 2, 0)
  }

Теперь оценим интеграл по 1000 выборок (set.seed для воспроизводимости):

set.seed(0)
x <- rlaplace(1000)
mean(f(x) / g(x))
# [1] 0.2648853

Также сравните с числовым интегрированием с использованием квадратуры:

integrate(f, lower = 0, upper = Inf)
# 0.2617744 with absolute error < 1.6e-05
Другие вопросы по тегам