Estou fazendo uma regressão de riscos proporcionais de Cox em R usando coxph
, que inclui muitas variáveis. Os resíduos de Martingale parecem ótimos, e os resíduos de Schoenfeld são ótimos para QUASE todas as variáveis. Existem três variáveis cujos resíduos de Schoenfeld não são planos e a natureza das variáveis é tal que faz sentido que elas possam variar com o tempo.
Essas são variáveis nas quais não estou realmente interessado, portanto, seria bom fazê-las. No entanto, todos eles são variáveis contínuas, não variáveis categóricas. Portanto, percebo que os estratos não são uma rota viável *. Eu tentei criar interações entre as variáveis e o tempo, conforme descrito aqui , mas obtemos o erro:
In fitter(X, Y, strats, offset, init, control, weights = weights, :
Ran out of iterations and did not converge
Estou trabalhando com quase 1000 pontos de dados e trabalhando com meia dúzia de variáveis com muitos fatores cada, então parece que estamos pressionando os limites de como esses dados podem ser fatiados e cortados em cubos. Infelizmente, todos os modelos mais simples que tentei com menos variáveis incluídas são claramente piores (por exemplo, os resíduos de Schoenfeld são mais fracos para mais variáveis).
Quais são as minhas opções? Como não me importo com essas variáveis mal comportadas em particular, gostaria de ignorar a saída delas, mas suspeito que não seja uma interpretação válida!
* Um é contínuo, um é um número inteiro com um intervalo superior a 100 e um é um número inteiro com um intervalo de 6. Talvez o binning?
Respostas:
A maneira mais elegante seria usar um modelo de sobrevivência paramétrico (Gompertz, Weibull, Exponential, ...) se você tiver alguma idéia de como pode ser o risco da linha de base.
Se você quiser ficar com o seu modelo Cox, poderá adotar um modelo cox estendido com coeficientes dependentes do tempo . Tenha em mente que também existem modelos cox estendidos com covariáveis que dependem do tempo - isso não resolve o seu problema!
Para R, consulte aqui: http://cran.r-project.org/web/packages/survival/vignettes/timedep.pdf
fonte
Duas idéias -
1) Tente a abordagem de modelagem de Royston-Parmar, por exemplo, http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0047804 e suas referências. Tivemos resultados úteis com isso.
2) Centralizar e padronizar variáveis contínuas podem ser úteis numericamente.
3) Em muitos modelos com fatores com muitos níveis, existem alguns níveis em que basicamente não há dados. Mesclar níveis para removê-los, mas com base em bons critérios substantivos, pode ser muito útil.
Boa sorte!
fonte
Se o uso de uma interação com o tempo subjacente não funcionar, tente as funções de etapa (para obter mais informações, consulte o artigo 2016 da Therneau ).
As funções de etapa são estratificadas em coeficientes específicos em intervalos específicos. Depois de ver os resíduos de Schoenfeld plotados para as covariáveis problemáticas (ie
plot(cox.zph(model.coxph))
), você precisa verificar visualmente onde as linhas mudam de ângulo. Tente encontrar um ou dois pontos em que a versão beta pareça marcadamente diferente. Suponha que isso ocorreu nos tempos 10 e 20. Portanto, criaremos dados usando asurvSplit()
partir dosurvival
pacote que criará um quadro de dados para o agrupamento de modelos de dados específicos nos horários mencionados acima:E, em seguida, execute o
cox.ph
modelo com astrata
função como interações com as variáveis problemáticas (como com a interação com o tempo, não adicione um efeito principal para o tempo ou os estratos):E isso deve ajudar.
fonte