我在r中运行模拟,这是我使用的主要功能:
runBothArms<-function(HFincidence,r,cost,util,mod,matProb,baseCaseMat,HazardR,
allCauseMortality,iniAge,noInfluenceYear,noRecurencYear,HFduration,s2){
res<-foreach(n=1:100000,.combine = rbind) %dopar%
mainSim(HFincidence,r,cost,util,mod,matProb,baseCaseMat,HazardR,
allCauseMortality,iniAge,noInfluenceYear,noRecurencYear,HFduration,s2)
return(calcRes(res,cost,mod))
}
现在是我进行敏感度分析的时候了。假设我希望r在0-5%之间变化,我怎么能用我目前的功能呢?因为如果我发送到函数r<-sample(0:5,1)
,它只会采样一个数字并用它运行整个模拟。
答案 0 :(得分:0)
正如@Ken S.建议的那样,你需要循环你的函数来运行多个模拟。考虑lapply
返回函数返回对象的列表,其长度等于输入向量,这里是sample(0:5, 5)
下面, calcResults 将是每个迭代模拟的5个列表,其中 r 现在在循环中更改为循环变量。请务必将 param 值替换为实际值:
calcResults <- lapply(sample(0:5, 5), function(r)
runBothArms(hparam, r, cparam, uparam, mparam, mPparam, bCparam, HRparam,
aparam, iparam, nIparam, nRparam, HFparam, s2param))