Puede utilizar el ajuste de distribución no paramétrica, el ajuste de distribución paramétrica o los algoritmos de análisis predictivos de SPSS de modelado de regresión paramétrica en cuadernos.
Ajuste de distribución no paramétrica
El análisis de supervivencia analiza los datos en los que la variable de resultado es el periodo de tiempo hasta que se genera un suceso de interés. La distribución de los tiempos de sucesos suele describirse mediante una función de supervivencia.
El ajuste de distribución no paramétrica (NPDF) proporciona una estimación de la función de supervivencia sin ninguna suposición sobre la distribución de los datos. NPDF incluye la estimación Kaplan-Meier, las tablas de vida y los algoritmos de extensión especializados para dar soporte a datos de sucesos censurados, censurados por intervalos y recurrentes.
Código de ejemplo de 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 distribución paramétrica
El análisis de supervivencia analiza los datos en los que la variable de resultado es el periodo de tiempo hasta que se genera un suceso de interés. La distribución de los tiempos de sucesos suele describirse mediante una función de supervivencia.
El ajuste de distribución paramétrica (PDF) proporciona una estimación de la función de supervivencia comparando las funciones para varias distribuciones conocidas (exponencial, Weibull, log-normal, y log-logistic) para determinar cuál describe mejor los datos, si existe. Además, se pueden comparar las distribuciones para dos o más grupos de casos.
Código de ejemplo de 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()
Modelado de regresión paramétrica
El modelado de regresión paramétrica (PRM) es una técnica de análisis de supervivencia que incorpora los efectos de las covariables en los tiempos de supervivencia. PRM incluye dos tipos de modelo: Tiempo de anomalía acelerada y fragilidad. Los modelos de tiempo de anomalía acelerada presuponen que la relación del logaritmo del tiempo de supervivencia y las covariables es lineal. Los modelos de fragilidad, o aleatorios, son útiles para analizar los sucesos recurrentes, los datos de supervivencia correlacionados, o cuando las observaciones están agrupadas.
PRM selecciona automáticamente la distribución del tiempo de supervivencia (exponencial, Weibull, log-normal o log-logistic) que describe mejor los tiempos de supervivencia.
Código de ejemplo de 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()
Tema principal: SPSS algoritmos de análisis predictivo