Ferramentas de análise de sobrevivência em Python [fechado]


46

Gostaria de saber se existem pacotes para python capazes de executar análises de sobrevivência. Eu tenho usado o pacote de sobrevivência em R, mas gostaria de portar meu trabalho para python.


11
Use RPY chamar R partir Python ;-)

2
É extremamente duvidoso que os desenvolvedores do Python para análise de sobrevivência tenham se empenhado em algo próximo ao que Terry Therneau e outros colocaram no pacote de sobrevivência R nos últimos 30 anos, incluindo testes extensivos. O pacote de sobrevivência é submetido aos procedimentos de teste mais rigorosos que já vi nas estatísticas.
— precisa

2
Acordado. O survivalpacote de R está sob exame minucioso de uma grande comunidade.
— Marc Claesen

O RPy (agora 2) é muito doloroso de instalar na minha experiência.
— Zhubarb

Respostas:


21

AFAIK, não existem pacotes de análise de sobrevivência em python. Como o mbq comenta acima, a única rota disponível seria para o Rpy .

Mesmo se houvesse um pacote python puro disponível, eu seria muito cuidadoso ao usá-lo, em particular, observaria:

  • Com que frequência é atualizado.
  • Possui uma grande base de usuários?
  • Possui técnicas avançadas?

Um dos benefícios do R é que esses pacotes padrão recebem uma enorme quantidade de testes e feedback do usuário. Ao lidar com dados reais, casos extremos inesperados podem surgir.


6
Nos últimos 5 anos, muitas coisas mudaram (para melhor) no Python. Vide resposta de Cam.Davidson.Pilon em Lifelines .
— Piotr Migdal

69

Confira o projeto de linhas de vida para uma implementação simples e limpa de modelos de sobrevivência em Python, incluindo

  • Estimadores de funções de sobrevivência
  • Estimadores de curvas de risco cumulativas
  • Modelo de regressão de risco proporcional de Cox
  • Modelo de regressão variável no tempo de Cox
  • modelos AFT paramétricos
  • Modelo de regressão aditiva de Aalen
  • Teste multivariado

Benefícios:

  • construído em cima de pandas
  • Python puro e fácil de instalar
  • construído em funções de plotagem
  • interface simples

A documentação está disponível aqui: documentação e exemplos

Exemplo de uso:

from lifelines import KaplanMeierFitter

survival_times = np.array([0., 3., 4.5, 10., 1.])
events = np.array([False, True, True, False, True])

kmf = KaplanMeierFitter()
kmf.fit(survival_times, event_observed=events)

print(kmf.survival_function_)
print(kmf.median_)
kmf.plot()

Gráficos de exemplo da biblioteca de plotagem interna:

insira a descrição da imagem aqui

  1. Disclaimer: Eu sou o autor principal. Ping me (email no perfil) para perguntas ou comentários sobre linhas de vida .

14
(+1) Nome bastante inteligente para um pacote de sobrevivência.
— Marc Claesen

8

python-asurv é um esforço para portar o software asurv para métodos de sobrevivência em astronomia. Pode valer a pena ficar de olho, mas cgillespie está certa sobre as coisas a observar: ainda há um longo caminho a percorrer e o desenvolvimento não parece ativo. (AFAICT existe apenas um método e, mesmo concluído, pode faltar o pacote para, digamos, bioestatísticos.)

Você provavelmente está melhor usando o pacote de sobrevivência no R do Python através de algo como RPy ou PypeR . Não tive problemas para fazer isso sozinho.


7

O PyIMSL contém várias rotinas para análises de sobrevivência. É grátis como na cerveja para uso não comercial, totalmente compatível com o contrário. Na documentação do Guia do usuário de estatísticas ...

Calcula as estimativas de Kaplan-Meier das probabilidades de sobrevivência: kaplanMeierEstimates ()

Analisa dados de sobrevivência e confiabilidade usando o modelo de riscos proporcionais de Cox: propHazardsGenLin ()

Analisa dados de sobrevivência usando o modelo linear generalizado: survivalGlm ()

Estimativas usando vários modos paramétricos: survivalEstimates ()

Estima uma função de risco à confiabilidade usando uma abordagem não paramétrica: nonparamHazardRate ()

Produz tabelas de vida de população e coorte: lifeTables ()


4

Agora você pode usar o R ​​a partir do IPython , portanto, pode querer usar o IPython com a extensão R.


2
Você pode dar um exemplo disso? Estou curioso para experimentar!
— user603

Eu acredito que você se refere à interface mágica do R (que usa rpy2). Eu também adoraria ver um exemplo rápido. (É meu entendimento que os modelos de sobrevivência ainda não estão totalmente disponíveis na statsmodels .)
— chl

Não tenho muita certeza sobre os modelos de estatísticas, mas você pode obter blocos de anotações no github com exemplos das extensões C, Octave e R. Você precisa executar o Notebook para usá-los obviamente, mas tenho certeza de que pode usar o mesmo código em qualquer interface.
— Carl Smith

3
@ user603 Aqui está uma demonstração simples: nbviewer.ipython.org/4383682 ; isso depende do iPython bastante recente, acredito.
— precisa

2

Também quero mencionar o scikit-survival , que fornece modelos para análise de sobrevivência que podem ser facilmente combinados com ferramentas do scikit-learn (por exemplo, validação cruzada do KFold).

Até o momento em que este artigo foi escrito, o scikit-survival inclui implementações de

  • Estimador de Nelson-Aalen da função de risco cumulativo.
  • Estimador de Kaplan-Meier da função de sobrevivência.
  • Modelo de risco proporcional de Cox com e sem penalidade líquida elástica.
  • Modelo de tempo de falha acelerado.
  • Máquina de vetor de suporte de sobrevivência.
  • Modelo de Cox impulsionado por gradiente.
  • índice de concordância para avaliação de desempenho.

O scikit-survival é excelente para tarefas relacionadas à previsão de tempo para evento!
— usar o seguinte código

1

Além de usar Ratravés RPyou equivalente, existem várias rotinas de análise de sobrevivência na biblioteca de python statsmodels (anteriormente sicpy.statsmodel). Eles estão no pacote "sandbox", o que significa que não devem estar prontos para produção no momento.

Por exemplo, você tem o modelo Cox de risco proporcional codificado aqui .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.