gpt4 book ai didi

r中的递归采样

转载 作者:行者123 更新时间:2023-12-01 22:18:12 26 4
gpt4 key购买 nike

我正在尝试模拟 7 年的死亡,累积概率如下:

tab <- data.frame(id=1:1000,char=rnorm(1000,7,4))

cum.prob <- c(0.05,0.07,0.08,0.09,0.1,0.11,0.12)

如何根据 cum.prob 中的累积概率从 tab$id 中进行采样,而无需以矢量化方式进行替换?从第 1 年采样的 id 不一定会在第 2 年再次采样。因此 lapply(cum.prob,function(x) sample(tab$id,x*1000)) 将不起作用。是否可以对其进行矢量化?

//M

最佳答案

这里有一种方法:首先获取给定个人在给定年份死亡的概率为 probYrDeath,即 probYrDeath[i] = Prob( individual dies inyear i ),其中 i=1,2,...,7

probYrDeath <- c(diff(c(0,cum.prob)).

现在根据 probYrDeath 中的概率,从序列 1:8 中生成 1000 个“死亡年份”的随机样本,并进行替换,并通过第 7 年未死亡的概率进行增强:

set.seed(1) ## for reproducibility
tab$DeathYr <- sample( 8, 1000, replace = TRUE,
prob = c(probYrDeath, 1-sum(probYrDeath)))

我们将“'DeathYr = 8'”解释为“7年内不会死亡”,并提取tab的子集,其中DeathYr != 8:

tab_sample <- subset(tab, DeathYr != 8 )

您可以验证每年的累计死亡比例是否近似于 cum.prob 中的值:

> cumsum(table(tab_sample$DeathYr)/1000)
1 2 3 4 5 6 7
0.045 0.071 0.080 0.094 0.105 0.115 0.124

关于r中的递归采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com