Survivalanalyse toepassen op groepen

Survivalanalyse in Python

Shae Wang

Senior Data Scientist

Het hypotheekprobleem

DataFrame-naam: mortgage_df

id property type duration paid_off
1 house 25 0
2 apartment 17 1
3 apartment 5 0
... ... ... ...
100 house 30 1

Property type: het type woning gefinancierd door de hypotheek (house of apartment)

Is er een verschil in tijd tot aflossing tussen houses en apartments?
Survivalanalyse in Python

Survivalverdelingen tussen groepen vergelijken

We willen vaak weten of er verschillen zijn in survival (of gebeurtenis-/survivalkansen) tussen groepen.

  • Dimensiekenmerken van de subjecten
    • bijv. hypotheektypen, bandenmerken
  • Verschillende experimentele groepen
    • bijv. treatment versus control
  • Verschillende waarden van hetzelfde dimensiekenmerk
    • bijv. hoge versus lage inkomenshuishoudens
Survivalanalyse in Python

Typen groepsvergelijkingen in survivalanalyse

1. Zijn puntenschattingen of survivalstatistieken verschillend?
  • Vergelijk survivalkansen van twee groepen op een specifieke tijd
  • Vergelijk het totale aandeel overlevenden tussen twee groepen
Survivalanalyse in Python

Typen groepsvergelijkingen in survivalanalyse

2. Verschillen de onderliggende verdelingen?
  • Vereist formele hypothesetests
Survivalanalyse in Python

Typen groepsvergelijkingen in survivalanalyse

3. Hoeveel beïnvloedt een kenmerk de survival?
  • Vereist regressiemodellen
Survivalanalyse in Python

Groepsverschillen visualiseren

Pas per groep een Kaplan-Meier-survivalfunctie toe en visualiseer de curves naast elkaar.

Voordelen:

  • Eenvoudig te gebruiken en te interpreteren.
  • Niet-parametrisch, dus flexibel voor verschillende survivalverdelingen.
  • Handig om verschillen tussen survivalfuncties te tonen.
Survivalanalyse in Python

De groepen identificeren

DataFrame-naam: mortgage_df

id property type duration paid_off
1 house 25 0
2 apartment 17 1
3 apartment 5 0
... ... ... ...
100 house 30 1

Maak voor elke groep een booleaanse mask.

house = (mortgage_df["property_type"]=="house")
apt = (mortgage_df["property_type"]=="apartment")

Zijn er slechts 2 groepen, dan is 1 mask genoeg. Verwijs naar de andere met negatie.

Survivalanalyse in Python

Survivalcurves fitten en plotten

Maak één figuur en instantieer een KaplanMeierFitter.

ax = plt.subplot(111)
mortgage_kmf = KaplanMeierFitter()

Fit mortgage_kmf op de house-groep en plot op figuur ax.

mortgage_kmf.fit(duration=mortgage_df[house]["duration"], 
                 event_observed=mortgage_df[house]["paid_off"],
                 label="Houses")
mortgage_kmf.plot_survival_function(ax=ax)
Survivalanalyse in Python

Survivalcurves fitten en plotten

Fit mortgage_kmf op de apartment-groep en plot op figuur ax.

mortgage_kmf.fit(duration=mortgage_df[apt]["duration"], 
                 event_observed=mortgage_df[apt]["paid_off"],
                 label="Apartments")
mortgage_kmf.plot_survival_function(ax=ax)
Survivalanalyse in Python

Naast elkaar visualiseren

plt.show()

Kaplan-Meier-survivalcurves: apartment vs. house.

Survivalanalyse in Python

Survivalcurves per groep interpreteren

Kaplan-Meier-survivalcurves: apartment vs. house

  • Apartment-hypotheken lijken gemiddeld sneller afgelost dan house-hypotheken.
  • Bij elke duur lost een groter aandeel gebruikers apartment-hypotheken af dan house-hypotheken.

Let op: overlappen de betrouwbaarheidsintervallen, dan is een echt verschil minder waarschijnlijk.

Survivalanalyse in Python

Laten we oefenen!

Survivalanalyse in Python

Preparing Video For Download...