R中带向量变元的积分函数

R中带向量变元的积分函数,r,function,vector,integrate,survival-analysis,R,Function,Vector,Integrate,Survival Analysis,我有一个与前一个职位类似的挑战: 我有一个函数,我想积分曲线下的面积 首先,[生存]功能: surv <- function(x,score) exp(-0.0405*exp(score)*x) # probability of survival 如果我们有一个特定的时间点x,那么计算所有7名患者的surv是很容易的: surv(5, score) # Survival to year 5 [1] 0.7161497 0.6914399 0.6651219 0.6371998 0.607

我有一个与前一个职位类似的挑战:

我有一个函数,我想积分曲线下的面积

首先,[生存]功能:

surv <- function(x,score) exp(-0.0405*exp(score)*x) # probability of survival
如果我们有一个特定的时间点
x
,那么计算所有7名患者的
surv
是很容易的:

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\u integrate
是要集成的功能

vectorize.args
是要矢量化并传递给fun\u integrate的参数

vec
是作为要传递到fun\u 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
我尝试了不同的修改,但似乎没有任何结果


你有什么建议吗?

你做的顺序不对。您需要创建一个函数来计算给定分数的积分,并将其矢量化

surv <- function(x,score) exp(-0.0405*exp(score)*x) # probability of survival
area <- function(score) integrate(surv,lower=0,upper=Inf,score=score)$value
v.area <- Vectorize(area)

scores <- c(0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1)  # 7 different scores
v.area(scores)
# [1] 14.976066 13.550905 12.261366 11.094542 10.038757  9.083443  8.219039

surv jhoward你刚刚拯救了白天和黑夜。干杯
surv <- function(x,score) exp(-0.0405*exp(score)*x) # probability of survival
area <- function(score) integrate(surv,lower=0,upper=Inf,score=score)$value
v.area <- Vectorize(area)

scores <- c(0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1)  # 7 different scores
v.area(scores)
# [1] 14.976066 13.550905 12.261366 11.094542 10.038757  9.083443  8.219039