【发布时间】:2020-03-23 18:17:49
【问题描述】:
我正在模拟泊松分布中的事件数(参数为 9)。对于每个事件,我使用参数为 2 和 1.1 的对数正态分布来模拟事件的价格
我正在运行 100 次模拟(每个模拟代表一年)。代码(我很满意)是:
simul <- list()
for(i in 1:100) {simul[[i]] <- rlnorm (rpois(1, 9), meanlog = 2, sdlog = 1.1) }
我的问题是输出“simul”是一个列表列表,我不知道如何对其应用基本操作。
我希望能够: 1. 限制每个单独的模拟值(由于预算限制) 2. 获得所有模拟值的总和,分别为每一年(有和没有封顶) 3. 获得每一年的平均值(有和没有封顶) 4. 计算每年的第 95 个百分位(有和没有封顶) 5. 将结果输出到数据框中(一列代表总数,一列代表平均值,一列代表百分位数等),每一行代表一年
似乎可行的方法是我提取了个人列表:
sim1 <- simul[1]
我现在可以使用“unlist”来展平列表并应用我想要的任何操作。
sims1 <- data.frame(unlist(sim1), nrow=length(sim1), byrow=F)
sims1 <- subset(sims1, select = c(unlist.sim1.))
colnames(sims1) <- "sim1"
quantile <- data.frame(quantile(sims1$sim1, probs = c(0.95)))
但我不想为列表中的每个子列表编写上述逻辑 100 次...有没有办法解决它?
对此的任何帮助将不胜感激。
【问题讨论】:
标签: r list nested simulation summary