繁体   English   中英

在 R 中复制模拟和 For 循环

[英]Replicate simulations and For Loop in R

大家好,抱歉,我是 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 循环。

我完全是新手,任何反馈都将不胜感激!!!

您可以执行以下操作:

对于data.frame每个count数值,从1001:24999抽取尽可能多的样本进行替换,并返回小于 6000 的采样值的数量; 重复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)))

Nsim列和与原始data.frame中的行数一样多的行存储在matrix

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM