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.