Проблема R с симуляцией Монте-Карло - PullRequest
0 голосов
/ 19 апреля 2020

Как я мог решить это упражнение:

Пусть U получено из равномерного (0,1) распределения, а Z - из стандартного нормального распределения. Пусть X = pZ + (1-p) U. Оцените p, когда X имеет дисперсию 0,4.

Может быть, я должен установить .packages ('polynom')?

p равно 0,62, потому что я уже рассчитал это аналитически, но я не знаю, как решить это с R, используя генераторы случайных чисел

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Я не буду решать за вас упражнение, но дам вам подсказку, как его решить

Вам нужно сделать так, как это делает упражнение:

  1. Имитировать U [0, 1]
  2. Имитация N (0,1)

Соедините их, используя значение для p

Для заданного p , вы можете определить функцию:

set.seed(234)
computeX <- function(p){

  u <- runif(1000)
  z <- rnorm(1000)

  X = p*z + (1-p)*u
  return(X)
}

var(computeX(0.2))
[1] 0.08924463

Теперь я позволю вам найти процедуру для получения p , которая необходима для вашего упражнения.

Нет нужна для любой внешней библиотеки

1 голос
/ 20 апреля 2020

Вот пример

fobj <- function(p)  abs(var(p*rnorm(1e5) + (1-p)*runif(1e5))-0.4)
pval <- optimise(fobj,c(0,1))$minimum

, где

  • сначала определяют вашу целевую функцию fobj, т. Е. Расстояние между дисперсией X и 0.4
  • затем применить optimise свести к минимуму fobj

Результат

> pval
[1] 0.6223968
...