R - Análise de Sobrevivência

A análise de sobrevivência trata de prever o momento em que um evento específico irá ocorrer. Também é conhecido como análise do tempo de falha ou análise do tempo até a morte. Por exemplo, prever o número de dias que uma pessoa com câncer sobreviverá ou prever o tempo em que um sistema mecânico irá falhar.

O pacote R denominado survivalé usado para realizar análises de sobrevivência. Este pacote contém a funçãoSurv()que pega os dados de entrada como uma fórmula R e cria um objeto de sobrevivência entre as variáveis ​​escolhidas para análise. Então usamos a funçãosurvfit() para criar um gráfico para a análise.

Pacote de instalação

install.packages("survival")

Sintaxe

A sintaxe básica para criar análise de sobrevivência em R é -

Surv(time,event)
survfit(formula)

A seguir está a descrição dos parâmetros usados ​​-

  • time é o tempo de acompanhamento até que o evento ocorra.

  • event indica o status de ocorrência do evento esperado.

  • formula é a relação entre as variáveis ​​preditoras.

Exemplo

Vamos considerar o conjunto de dados denominado "pbc" presente nos pacotes de sobrevivência instalados acima. Ele descreve os pontos de dados de sobrevivência sobre pessoas afetadas com cirrose biliar primária (PBC) do fígado. Entre as muitas colunas presentes no conjunto de dados, estamos principalmente preocupados com os campos "hora" e "status". O tempo representa o número de dias entre o registro do paciente e antes do evento entre o paciente que recebe um transplante de fígado ou a morte do paciente.

# Load the library.
library("survival")

# Print first few rows.
print(head(pbc))

Quando executamos o código acima, ele produz o seguinte resultado e gráfico -

id time status trt      age sex ascites hepato spiders edema bili chol
1  1  400      2   1 58.76523   f       1      1       1   1.0 14.5  261
2  2 4500      0   1 56.44627   f       0      1       1   0.0  1.1  302
3  3 1012      2   1 70.07255   m       0      0       0   0.5  1.4  176
4  4 1925      2   1 54.74059   f       0      1       1   0.5  1.8  244
5  5 1504      1   2 38.10541   f       0      1       1   0.0  3.4  279
6  6 2503      2   2 66.25873   f       0      1       0   0.0  0.8  248
  albumin copper alk.phos    ast trig platelet protime stage
1    2.60    156   1718.0 137.95  172      190    12.2     4
2    4.14     54   7394.8 113.52   88      221    10.6     3
3    3.48    210    516.0  96.10   55      151    12.0     4
4    2.54     64   6121.8  60.63   92      183    10.3     4
5    3.53    143    671.0 113.15   72      136    10.9     3
6    3.98     50    944.0  93.00   63       NA    11.0     3

A partir dos dados acima, estamos considerando o tempo e o status de nossa análise.

Aplicando as funções Surv () e survfit ()

Agora passamos a aplicar o Surv() função para o conjunto de dados acima e crie um gráfico que mostrará a tendência.

# Load the library.
library("survival")

# Create the survival object. 
survfit(Surv(pbc$time,pbc$status == 2)~1)

# Give the chart file a name.
png(file = "survival.png")

# Plot the graph. 
plot(survfit(Surv(pbc$time,pbc$status == 2)~1))

# Save the file.
dev.off()

Quando executamos o código acima, ele produz o seguinte resultado e gráfico -

Call: survfit(formula = Surv(pbc$time, pbc$status == 2) ~ 1)

      n  events  median 0.95LCL 0.95UCL 
    418     161    3395    3090    3853

A tendência no gráfico acima nos ajuda a prever a probabilidade de sobrevivência ao final de um determinado número de dias.