Kontrollera modellantaganden och göra prediktioner

Maskininlärning för marknadsanalys i R

Verena Pflieger

Data Scientist at INWT Statistics

Test av PH-antagandet

testCPH1 <- cox.zph(fitCPH1)
print(testCPH1)
                              rho   chisq        p
gender=Male               0.0317   1.884 1.70e-01
SeniorCitizen=Yes         0.0587   6.507 1.07e-02
Partner=Yes               0.0752  10.116 1.47e-03
Dependents=Yes            0.0131   0.314 5.75e-01
StreamMov=NoIntServ      -0.0448   3.588 5.82e-02
StreamMov=Yes             0.0827  12.174 4.85e-04
PaperlessBilling=Yes      0.0180   0.611 4.34e-01
PayMeth=CreditCard(auto)  0.0253   1.198 2.74e-01
PayMeth=ElektCheck       -0.0427   3.427 6.41e-02
PayMeth=MailedCheck      -0.0851  13.069 3.00e-04
MonthlyCharges            0.1268  25.778 3.83e-07
GLOBAL                        NA 217.172 0.00e+00
Maskininlärning för marknadsanalys i R

Proportionella hazarder för Partner

plot(testCPH1, var = "Partner")

Maskininlärning för marknadsanalys i R

Proportionella hazarder för MonthlyCharges

plot(testCPH1, var = "MonthlyCharges")

Maskininlärning för marknadsanalys i R

Allmänna kommentarer om tester

  • cox.zph()-testet är konservativt
  • Känsligt för antal observationer
  • Olika allvar på överträdelser
Maskininlärning för marknadsanalys i R

Vad händer om PH-antagandet bryts?

  • Stratifierad analys
fitCPH2 <- cph(Surv(tenure, churn) ~ MonthlyCharges +
                 SeniorCitizen + Partner + Dependents + 
                 StreamMov + Contract,
               stratum = "gender = Male",
               data = dataSurv, x = TRUE, y = TRUE, surv = TRUE)

  • Tidsberoende koefficienter
Maskininlärning för marknadsanalys i R

Validera modellen

validate(fitCPH1, 
         method = "crossvalidation", 
         B = 10, pr = FALSE)
      index.orig training   test optimism index.corrected  n
R2        0.2277   0.2279 0.2277   0.0002          0.2276 10
                            ...
Maskininlärning för marknadsanalys i R

Sannolikhet att inte churna vid en given tidpunkt

oneNewData <- data.frame(gender = "Female",
                             SeniorCitizen = "Yes",
                             Partner = "No",
                             Dependents = "Yes",
                             StreamMov = "Yes",
                             PaperlessBilling = "Yes",
                             PayMeth = "BankTrans(auto)",
                             MonthlyCharges = 37.12)
str(survest(fitCPH1, newdata = oneNewData, times = 3))
List of 5
 $ time   : num 3
 $ surv   : num 0.905
 $ std.err: num 0.0136
 $ lower  : num 0.881
 $ upper  : num 0.93
Maskininlärning för marknadsanalys i R

Överlevnadskurva för ny kund

plot(survfit(fitCPH1, newdata = oneNewData))

Maskininlärning för marknadsanalys i R

Predicera förväntad tid till churn

print(survfit(fitCPH1, newdata = oneNewData))
Call: survfit(formula = fitCPH1, newdata = oneNewData)

      n  events  median 0.95LCL 0.95UCL 
   5311    1869      65      53      72 
Maskininlärning för marknadsanalys i R

Lärdomar

Lärdomar om överlevnadsanalys
Du har lärt dig... att visualisera kundernas kundlivslängd
att modellera tid till händelse och identifiera påverkande faktorer
hur man validerar modellen
hur man gör prediktioner
Lärdomar från modellen
Du har lärt dig... att det ökar sannolikheten att churna med 23% om kunden är senior
att en enhets ökning i månadsavgift minskar churnrisken med cirka 1%
Maskininlärning för marknadsanalys i R

Nu är det din tur!

Maskininlärning för marknadsanalys i R

Preparing Video For Download...