Неправильный результат при выполнении простой интеграции Монте-Карло в R

Я делаю часть презентации по численному интегрированию. В то время как сам разговор пойдет о более совершенных формах численного интегрирования (в основном выборка по важности и стратифицированная выборка), я упоминаю в части своего раздела выборку интегрирования Монте-Карло из равномерного распределения.

Я обнаружил, что:

mean(sin(runif(1e8, 0, pi)))

дает ответ 0.636597, а не 1, как ожидается. Этот ответ кажется довольно согласующимся с увеличением размера выборки, и я не уверен, почему так много ошибок. Другие вычисления, такие как:

mean(sin(runif(1e6, 0, 2 * pi)))

дайте 0.0005398996, что гораздо ближе к ожидаемому ответу 0.

Может ли кто-нибудь помочь мне понять, почему

mean(sin(runif(1e8, 0, pi)))

дает такой неточный ответ? Является ли это ошибкой пользователя или ее следует ожидать при выборке из равномерного распределения?


person Mark    schedule 05.12.2016    source источник
comment
@ZheyuanLi Написав вам ответ, я понял, что забыл умножить результат на длину интервала, который не будет обнаружен, когда ожидается, что интеграл будет равен 0. Спасибо!   -  person Mark    schedule 05.12.2016


Ответы (1)


Я вернулся, чтобы сделать свой ответ полным, на случай, если будущим читателям понадобится знать логику. Обратите внимание, что истинное значение равно 2, а не 1, как указано в вашем вопросе.

Истинное значение


Монте-Карло

Итак, вы только что вычислили средние значения функции на выборках, но забыли умножить длину интервала.

set.seed(0); pi * mean(sin(runif(1000, 0, pi)))
# [1] 2.001918

это то, что вам нужно.


Детерминированное представление этого результата — теорема о среднем значении для интеграла, или Аппроксимация интеграла суммой Римана.

Риман

Так что мы также можем сделать

pi * mean(sin(seq(0, pi, length = 1000)))
# [1] 1.997998

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

person Zheyuan Li    schedule 05.12.2016
comment
Ранее я упоминал различные гауссовые квадратурные методы, поэтому их недетерминированность важна для перехода между этим и более сложными методами Монте-Карло. Скорость/точность этого кода вообще не важны (и неточность для малых n может быть даже хороша, так как она покажет, почему необходимо улучшить равномерную выборку). - person Mark; 05.12.2016