Usando imputação múltipla para riscos proporcionais de Cox e validando com o pacote rms?

8

Pesquisei o pacote de mouses e ainda não descobri uma maneira de usar as várias imputações para criar um modelo de Cox e validá-lo com a função do pacote rmsvalidate() . Aqui está um código de amostra do que tenho até agora, usando o conjunto de dados veteran:

library(rms)
library(survival)
library(mice)

remove(veteran)
data(veteran)
veteran$trt=factor(veteran$trt,levels=c(1,2))
veteran$prior=factor(veteran$prior,levels=c(0,10))

#Set random data to NA 
veteran[sample(137,4),1]=NA
veteran[sample(137,4),2]=NA
veteran[sample(137,4),7]=NA

impvet=mice(veteran)
survmod=with(veteran,Surv(time,status))

#make a CPH for each imputation
for(i in seq(5)){
    assign(paste("mod_",i,sep=""),cph(survmod~trt+celltype+karno+age+prior,
        data=complete(impvet,i),x=T,y=T))
}

#Now there is a CPH model for mod_1, mod_2, mod_3, mod_4, and mod_5.

Agora, se eu estivesse trabalhando apenas com um modelo de CPH, faria o seguinte:

validate(mod_1,B=20)

O problema que estou enfrentando é como usar os 5 modelos de CPH (1 para cada imputação) e poder criar um modelo em pool com o qual eu possa usar rms. Eu sei que o micepacote tem alguns built-in pooling funções, mas eu não acredito que eles trabalham com o cphobjeto rms. A chave aqui é poder ainda usar rmsapós o pool. Procurei usar a aregImpute()função de Harrell, mas estou tendo problemas para seguir os exemplos e a documentação; miceparece mais simples de usar.

JJM
fonte
A propósito: moderadores, se você acha que esse Q pertence ao Stack Overflow, sinta-se à vontade para migrá-lo.
JJM
Oi @JJM. Estou em uma situação semelhante em que preciso agrupar meus modelos cox dos diferentes conjuntos de dados imputados e validar. Para gerar o modelo unificado, como os riscos cumulativos da linha de base devem ser combinados? Os registros das taxas de risco (coeficientes) podem ser agrupados facilmente, pois possuem normalidade assintótica. No entanto, para calcular as probabilidades de sobrevivência, você também precisa de uma estimativa do risco (cumulativo) da linha de base. Isso não tem normalidade assintótica, pelo que sei, por isso não tenho certeza de como agrupar vários modelos de coxph em um único modelo. Muito obrigado se você ver isso.
AP30

Respostas:

12

A fit.mult.imputefunção no Hmiscpacote desenhará imputações criadas a partir miceda mesma forma que a partir de aregImpute. cphvai trabalhar com fit.mult.impute. A questão mais difícil é como fazer a validação por meio de reamostragem ao fazer imputações múltiplas. Não acho que alguém tenha realmente resolvido isso. Normalmente, tomo o caminho mais fácil e uso a imputação única para validar o modelo, usando a Hmisc transcanfunção, mas usando a imputação múltipla para ajustar o modelo final e obter erros padrão.

Frank Harrell
fonte
1
Obrigado pela sua resposta útil, Dr. Harrell. Gostaria apenas de resumir minha compreensão do que você disse. Corrija-me se estiver interpretando errado fit.mult.impute():: Use isso para agrupar os cph()modelos (5 deles, com base em 5 imputações mice) e obter taxas de risco agrupadas e erros padrão. transcan(): Use isso para criar uma única imputação e validar isso. Parece que isso fornece uma validação suficientemente boa. Tudo isso está correto? Realmente aprecio sua ajuda, Dr. Harrell.
JJM
1
Está correto. A validação de imputação única é um substituto temporário para o ajuste de imputação múltipla.
precisa