2017-01-22 2 views
-1

Мое сомнение в том, что можно собрать несколько наборов данных вменения от «mice()» на подходящей модели Fine-Grey от «crr()», и если это статистически корректно. .can мышь() ручка crr()? Fine-Grey model

пример

library(survival) 
library(mice) 
library(cmprsk) 

test1 <- as.data.frame(list(time=c(4,3,1,1,2,2,3,5,2,4,5,1, 4,3,1,1,2,2,3,5,2,4,5,1), 
          status=c(1,1,1,0,2,2,0,0,1,1,2,0, 1,1,1,0,2,2,0,0,1,1,2,0), 
          x=c(0,2,1,1,NA,NA,0,1,1,2,0,1, 0,2,1,1,NA,NA,0,1,1,2,0,1), 
          sex=c(0,0,0,NA,1,1,1,1,NA,1,0,0, 0,0,0,NA,1,1,1,1,NA,1,0,0))) 

dat <- mice(test1,m=10, seed=1982) 

#Cox regression: cause 1 

models.cox1 <- with(dat,coxph(Surv(time, status==1) ~ x +sex))     

summary(pool(models.cox1)) 

#Cox regression: cause 1 or 2 

models.cox <- with(dat,coxph(Surv(time, status==1 | status==2) ~ x +sex))     
models.cox 
summary(pool(models.cox)) 


#### crr() 

#Fine-Gray model 

models.FG<- with(dat,crr(ftime=time, fstatus=status, cov1=test1[,c("x","sex")], failcode=1, cencode=0, variance=TRUE))     

summary(pool(models.FG)) 

#Error in pool(models.FG) : Object has no vcov() method. 

models.FG 
+1

Там нет 'метод vcov' для' crr' моделей, которые 'мыши 'потребностей. Посмотрите на одну модель. '(m = models.FG $ анализы [[1]]); vcov (m) '. Но мы можем получить доступ к этому с помощью 'models.FG $ analysis [[1]] $ var'. Проверьте стандартные ошибки в отношении возвращаемых значений для 'm', против этого' sqrt (diag (models.FG $ analysis [[1]] $ var)) '. Поэтому, возможно, напишите собственный метод 'vcov' (также нужен метод coef): ' vcov.crr <- function (object, ...) object $ var; coef.crr <- function (object, ...) object $ coef'. Затем запустите снова 'summary (pool (models.FG))' (я понятия не имею, является ли статистически корректным объединение значений для этого типа модели) – user20650

+0

В ситуациях, когда thare не является методом vcov, нужно задать вопрос о том, является ли пакет авторы хотят, чтобы пользователи предполагали, что дальнейший статистический анализ действителен за пределами того, что они поддерживают. Электронная почта легко доступна с помощью: 'maintainer (" cmprsk ")' –

+0

Я получил этот ответ: я думаю, вы можете легко создать его; например 'coef.crr = функция (объект, ...) объект $ coef' ' vcov.crr = getS3method ('vcov', 'coxph') ' Я думаю, что тогда vcov (crrobject) должен работать –

ответ

0

Есть несколько вещей, которые нужно сделать, чтобы получить эту работу.

Ваши первоначальные данные и вменение.

library(survival) 
library(mice) 
library(cmprsk) 

test1 <- as.data.frame(list(time=c(4,3,1,1,2,2,3,5,2,4,5,1, 4,3,1,1,2,2,3,5,2,4,5,1), 
          status=c(1,1,1,0,2,2,0,0,1,1,2,0, 1,1,1,0,2,2,0,0,1,1,2,0), 
          x=c(0,2,1,1,NA,NA,0,1,1,2,0,1, 0,2,1,1,NA,NA,0,1,1,2,0,1), 
          sex=c(0,0,0,NA,1,1,1,1,NA,1,0,0, 0,0,0,NA,1,1,1,1,NA,1,0,0))) 

dat <- mice(test1,m=10, print=FALSE) 

Там нет vcov метода crr моделей, mice требует, однако, мы можем получить доступ к ковариационной матрице, используя model$var возвращаемого значения.

Так что напишите самостоятельно vcov метод для извлечения, а также нужен метод coef.

vcov.crr <- function(object, ...) object$var # or getS3method('vcov','coxph') 
coef.crr <- function(object, ...) object$coef 

Существует также ошибка в том, как модель передается with.mids: ваш код cov1=test1[,c("x","sex")], но на самом деле вы хотите cov1 использовать вмененные данные. Я не уверен, как правильно написать это как выражение из-за cov1, требующего матрицы с соответствующими переменными, но вы можете легко записать код функции.

# This function comes from mice:::with.mids 
Andreus_with <- 
function (data, ...) { 
    call <- match.call() 
    if (!is.mids(data)) 
     stop("The data must have class mids") 
    analyses <- as.list(1:data$m) 
    for (i in 1:data$m) { 
     data.i <- complete(data, i) 
     analyses[[i]] <- crr(ftime=data.i[,'time'], fstatus=data.i[,'status'], 
         cov1=data.i[,c("x","sex")], 
         failcode=1, cencode=0, variance=TRUE) 
    } 
    object <- list(call = call, call1 = data$call, nmis = data$nmis, 
     analyses = analyses) 
    oldClass(object) <- c("mira", "matrix") 
    return(object) 
} 

Приведенный выше код позволяет объединить данные.

models.FG <- Andreus_with(dat)     
summary(pool(models.FG)) 

С оговоркой, что я понятия не имею, если это статистически корректно значений пула для данной модели типа

+0

'vcov.crr <- getS3method ('vcov', 'coxph')' 'coef.crr <- function (object, ...) object $ coef' Как и для другого метода vcov ??? Оба получат одинаковый результат ... Это действительно похоже на результаты STATA.12, коэф. Одинаковы, все же vcov ... Не могли бы вы назвать код для: 'vcov.crr = getS3method ('vcov', 'coxph') ' –

+0

Andreu, единственная разница в функциях' vcov' (между моими и сопровождающими) заключается в том, что их имена добавляются в матрицу, поэтому они не будут влиять на результаты. (чтобы увидеть код типа 'getS3method ('vcov', 'coxph')' в терминале, вы увидите, что он использует 'object $ var', как и мой) – user20650

+0

Спасибо! Я попробую ! –

Смежные вопросы