我对上一篇文章有类似的挑战:如何传递向量来集成函数
我有一个函数,我想整合曲线下的面积。
一、【生存】功能:
surv <- function(x,score) exp(-0.0405*exp(score)*x) # probability of survival
score
来自风险计算器,它会调整生存估计。患者有不同的分数,例如:
score <- c(0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1) # 7 different scores
surv
如果我们有一个特定的时间点,计算所有 7 名患者的时间很容易x
:
surv(5, score) # Survival to year 5
[1] 0.7161497 0.6914399 0.6651219 0.6371998 0.6077026 0.5766890 0.5442516
但是为了得到一个群体的平均存活率或一个个体的预期存活率,我需要计算曲线下的面积,其中曲线由函数给出surv
。我需要计算 和 限制下的x=0
面积x=Inf
。我需要为所有 7 名(在本例中)患者执行此操作。
我引用的另一个 stackoverflow 帖子也有类似的问题。目前尚不清楚该解决方案是否可以帮助我。我在下面介绍它:
integrate(Vectorize(fun_integrate,vectorize.args='x'), upper = 3, lower = -3, vec = rnorm(100),subdivisions=10000)
fun_integrate
是要集成的功能
vectorize.args
是要矢量化并传递给 fun_integrate 的参数
vec
是作为要传递到 fun_integrate 的参数的值向量
我不知道细分是什么,但我认为这并不重要。
我尝试使用以下方法执行此操作:
integrate(Vectorize(surv, vectorize.args="score"), lower=0, upper=Inf, score=score)
Error in integrate(Vectorize(surv, vectorize.args = "score"), lower = 0, :
evaluation of function gave a result of wrong length
我尝试了不同的修改,但似乎没有任何结果。
你有什么建议吗?