Algoritmos de análise de sobrevivência de analítica preditiva do SPSS em blocos de notas
É possível usar os algoritmos de análise preditiva do SPSS para ajuste de distribuição não paramétrica, ajuste de distribuição paramétrica ou modelagem de regressão paramétrica em blocos de notas.
Ajuste de Distribuição Não Paramétrico
A análise de sobrevivência analisa dados nos quais a variável de resultado é o tempo até a ocorrência de um evento de interesse. A distribuição dos tempos de evento normalmente é descrita por uma função de sobrevivência.
O Ajuste de Distribuição Não Paramétrico (NPDF) fornece uma estimativa da função de sobrevivência sem fazer suposições à respeito da distribuição dos dados. O NPDF inclui uma estimação de Kaplan-Meier, tabelas de mortalidade e algoritmos de extensão especializados para suportar dados censurados à esquerda, dados censurados por intervalo e dados de evento recorrentes.
Exemplo de código Python:
from spss.ml.survivalanalysis import NonParametricDistributionFitting
from spss.ml.survivalanalysis.params import DefinedStatus, Points, StatusItem
npdf = NonParametricDistributionFitting(). \
setAlgorithm("KM"). \
setBeginField("time"). \
setStatusField("status"). \
setStrataFields(["treatment"]). \
setGroupFields(["gender"]). \
setUndefinedStatus("INTERVALCENSORED"). \
setDefinedStatus(
DefinedStatus(
failure=StatusItem(points = Points("1")),
rightCensored=StatusItem(points = Points("0")))). \
setOutMeanSurvivalTime(True)
npdfModel = npdf.fit(df)
predictions = npdfModel.transform(data)
predictions.show()
Ajuste de distribuição paramétrico
A análise de sobrevivência analisa dados nos quais a variável de resultado é o tempo até a ocorrência de um evento de interesse. A distribuição dos tempos de evento normalmente é descrita por uma função de sobrevivência.
O Ajuste de Distribuição Paramétrico (PDF) fornece uma estimativa da função de sobrevivência comparando as funções para várias distribuições conhecidas (exponencial, Weibull, log-normal e log-logística) para determinar qual, se houver, descreve melhor os dados. Além disso, as distribuições para dois ou mais grupos de casos podem ser comparadas.
Exemplo de código Python:
from spss.ml.survivalanalysis import ParametricDistributionFitting
from spss.ml.survivalanalysis.params import DefinedStatus, Points, StatusItem
pdf = ParametricDistributionFitting(). \
setBeginField("begintime"). \
setEndField("endtime"). \
setStatusField("status"). \
setFreqField("frequency"). \
setDefinedStatus(
DefinedStatus(
failure=StatusItem(points=Points("F")),
rightCensored=StatusItem(points=Points("R")),
leftCensored=StatusItem(points=Points("L")))
). \
setMedianRankEstimation("RRY"). \
setMedianRankObtainMethod("BetaFDistribution"). \
setStatusConflictTreatment("DERIVATION"). \
setEstimationMethod("MRR"). \
setDistribution("Weibull"). \
setOutProbDensityFunc(True). \
setOutCumDistFunc(True). \
setOutSurvivalFunc(True). \
setOutRegressionPlot(True). \
setOutMedianRankRegPlot(True). \
setComputeGroupComparison(True)
pdfModel = pdf.fit(data)
predictions = pdfModel.transform(data)
predictions.show()
Modelagem de regressão paramétrica
Modelagem de regressão paramétrica (PRM) é uma técnica de análise de sobrevivência que incorpora os efeitos das covariáveis nos tempos de sobrevivência. A PRM inclui dois tipos de modelo: tempo de falha acelerado e fragilidade. Os modelos de tempo de falha acelerado supõem que o relacionamento do logaritmo do tempo de sobrevivência e das covariáveis seja linear. Os modelos de fragilidade, ou efeitos aleatórios, são úteis para analisar eventos recorrentes, dados de sobrevida correlacionados ou quando observações são armazenadas em grupos.
A PRM seleciona automaticamente a distribuição do tempo de sobrevivência (exponencial, Weibull, log-normal ou log-logística) que melhor descreve os tempos de sobrevivência.
Exemplo de código Python:
from spss.ml.survivalanalysis import ParametricRegression
from spss.ml.survivalanalysis.params import DefinedStatus, Points, StatusItem
prm = ParametricRegression(). \
setBeginField("startTime"). \
setEndField("endTime"). \
setStatusField("status"). \
setPredictorFields(["age", "surgery", "transplant"]). \
setDefinedStatus(
DefinedStatus(
failure=StatusItem(points=Points("0.0")),
intervalCensored=StatusItem(points=Points("1.0"))))
prmModel = prm.fit(data)
PMML = prmModel.toPMML()
statXML = prmModel.statXML()
predictions = prmModel.transform(data)
predictions.show()