È possibile utilizzare gli algoritmi di analisi predittiva SPSS nei notebook per l'adattamento della distribuzione non parametrica, l'adattamento della distribuzione parametrica o la modellazione della regressione parametrica.
Adattamento distribuzione non parametrica
L'analisi di sopravvivenza analizza i dati in cui la variabile risultato è il tempo fino alla ricorrenza di un evento di interesse. La distribuzione dei tempi degli eventi è tipicamente descritta da una funzione di sopravvivenza.
Non - parametric Distribution Fitting (NPDF) fornisce una stima della funzione di sopravvivenza senza fare alcuna ipotesi sulla distribuzione dei dati. NPDF include la stima Kaplan - Meier, tabelle di vita e algoritmi di estensione specializzati per supportare dati di eventi ricorrenti, censurati ad intervalli e censurati a sinistra.
Codice di esempioPython :
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()
PDF (Parametric Distribution Fitting)
L'analisi di sopravvivenza analizza i dati in cui la variabile risultato è il tempo fino alla ricorrenza di un evento di interesse. La distribuzione dei tempi degli eventi è tipicamente descritta da una funzione di sopravvivenza.
Parametric Distribution Fitting (PDF) fornisce una stima della funzione di sopravvivenza confrontando le funzioni per diverse distribuzioni note (esponenziale, Weibull, log - normale e log - logistica) per determinare quale, se presente, descrive meglio i dati. Inoltre, è possibile confrontare le distribuzioni per due o più gruppi di casi.
Codice Python excample:
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()
Creazione di modelli di regressione parametrica
Il modello di regressione parametrica (PRM) è una tecnica di analisi di sopravvivenza che incorpora gli effetti delle covariate sui tempi di sopravvivenza. PRM include due tipi di modelli: tempi di errore accelerati e fragilità. I modelli di tempo di errore accelerato presuppongono che la relazione del logaritmo del tempo di sopravvivenza e delle covariate sia lineare. I modelli di fragilità, o effetti casuali, sono utili per analizzare eventi ricorrenti, dati di sopravvivenza correlati o quando le osservazioni sono raggruppate in gruppi.
PRM seleziona automaticamente la distribuzione del tempo di sopravvivenza (esponenziale, Weibull, log - normale o log - logistica) che meglio descrive i tempi di sopravvivenza.
Codice di esempioPython :
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()
Argomento principale SPSS algoritmi di analisi predittiva