Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:计算pec';s加权锤击分数_R_Survival Analysis - Fatal编程技术网

R:计算pec';s加权锤击分数

R:计算pec';s加权锤击分数,r,survival-analysis,R,Survival Analysis,我想重新计算软件包计算的加权brier分数(方程式(3)和下面的一个) 以下是我迄今为止的尝试: set.seed(130971) library(dplyr) library(survival) library(prodlim) ## for SimSurv() library(pec) ## generate simulated data dat <- SimSurv(100) ## compute the apparent prediction error Models <

我想重新计算软件包计算的加权brier分数(方程式(3)和下面的一个)

以下是我迄今为止的尝试:

set.seed(130971)
library(dplyr)
library(survival)
library(prodlim) ## for SimSurv()
library(pec)


## generate simulated data
dat <- SimSurv(100)

## compute the apparent prediction error
Models <- list("Cox.X1"=coxph(Surv(time,status)~X1,data=dat,y=TRUE))
PredError <- pec(object=Models,
                 formula=Surv(time,status)~X1+X2,
                 data=dat,
                 verbose=TRUE)

## I'd like to re-calc the brier score at time 5
mytime <- PredError$time[58]
pecbs <- PredError$AppErr$Cox.X1[58]
mytime
## [1] 5.072562
pecbs
## [1] 0.2159007

## so, I need the weights for the weighted brier score
dat <- dat %>%
  mutate(ipcw5 = ipcw(
        ##formula=Surv(time,status)~X1+X2,
        formula=Surv(time,status)~1,
        data = dat,
        ##method = "cox",
        method = "marginal",
        what = "IPCW.times",
        times = mytime)$IPCW.times)

## I also need the predicted survival probabilities at time = 5
coxmod <- coxph(Surv(time,status)~X1,data=dat,y=TRUE)
dat <- dat %>%
  mutate(risk5 = as.numeric(1-summary(survfit(
                                coxmod,
                                newdata = dat,
                                se.fit = F,
                                conf.int = F
                              ),
                              times = mytime)$surv))

## and finally, I need the status at time = 5
dat <- dat %>%
  mutate(status5 = ifelse(status == 1 & time <= mytime, 1,
                   ifelse(status == 0 & time  > mytime, 0,
                   ifelse(status == 1 & time  > mytime, 0,
                   ifelse(status == 0 & time <= mytime, 0,  ## this is censored
                          NA)))))

## brier score
mybs <- dat %>%
  summarize(bs = sum((status5-risk5)^2*ipcw5)/n())

## compare
pecbs
## [1] 0.2159007
mybs$bs
## [1] 0.1612572
pecbs - mybs$bs
## [1] 0.05464348
set.seed(130971)
图书馆(dplyr)
图书馆(生存)
图书馆(prodlim)###供SimSurv()使用
图书馆(pec)
##生成模拟数据

我也有类似的问题。在我的实现中,我低估了综合Bier分数,尽管不如您的时间特定的分数那么显著。我很感兴趣的是,你的综合分数是否也比具体时间的分数偏少,以及你是否找到了解决问题的方法。我也有类似的问题。在我的实现中,我低估了综合Bier分数,尽管不如您的时间特定的分数那么显著。我很感兴趣的是,你的综合分数是否也比具体时间的分数偏少,以及你是否找到了解决问题的方法