Репликация симуляции и For Loop in R - PullRequest
2 голосов
/ 17 апреля 2019

Привет, ребята, извините, я абсолютный новичок в R.

У меня есть таблица Excel:

Fund count
1 1961
2 2086
3 453
...

Я пытаюсь сделать следующее: для каждого фонда я быМне нравится запускать 1000 симуляций, где я рисую случайные числа из диапазона 1001:24999 столько раз, сколько count для этого фонда.Затем определите, сколько случайных чисел меньше 6000. Наконец, получите среднее значение для 1000 симуляций.

После импорта файла в RStudio я написал:

#count for the first fund in the table
z <- replicate(1000, {1001:24449, replace=T, size=1961})
count<-length(which(z>6000))
mean(count)

Кажется, я могу использовать вышеперечисленное для одного фонда, и я знаю, что я должен использовать цикл for для всех фондов.

Я совершенно новичок, любая обратная связь будет оценена !!!

1 Ответ

1 голос
/ 17 апреля 2019

Вы можете сделать следующее:

Для каждого значения count в вашем data.frame возьмите столько выборок из 1001:24999 с заменой и верните число выборочных значений, которые <6000; повторите <code>Nsim = 1000 раз.

Nsim <- 1000
lst <- replicate(Nsim, lapply(
    apply(df, 1, function(x) sample(1001:24999, x["count"], replace = T)),
    function(x) sum(x < 6000)))

Хранить в matrix со столбцами Nsim и количеством строк, равным количеству строк в исходном data.frame.

mat <- matrix(unlist(lst), ncol = Nsim)

Рассчитать среднее значение для каждой строки.

rowMeans(mat)
#[1] 409.215 433.868  93.973

Пример данных

df <- read.table(text =
    "Fund count
1 1961
2 2086
3 453", header = T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...