Time to Relapse After Cancer Treatment
Business Objective
Compare two treatments and determine which one delays relapse longer.
healthcare <- data.frame(
id = paste0("P",1:20),
treatment = c(rep("A",10), rep("B",10)),
time = c(6,10,4,8,12,7,9,5,11,3,
8,12,6,14,9,13,7,15,10,16),
event = c(1,0,1,1,0,1,0,1,0,1,
1,0,1,0,1,0,1,0,1,0),
age = c(45,50,39,60,47,55,52,41,48,44,
46,51,38,62,49,53,57,45,43,54),
gender = c("F","M","F","M","F","M","F","M","F","M",
"F","M","F","M","F","M","F","M","F","M")
)km_health <- survfit(Surv_health ~ treatment, data = healthcare)
ggsurvplot(km_health,
data = healthcare,
pval = TRUE,
risk.table = TRUE)Berdasarkan kurva Kaplan–Meier, kelompok Treatment B secara konsisten memiliki kurva survival yang berada di atas Treatment A sepanjang periode observasi. Hal ini menunjukkan bahwa probabilitas pasien untuk tetap bebas relaps pada setiap titik waktu lebih tinggi pada kelompok Treatment B.
Penurunan survival pada Treatment A terjadi lebih cepat, terutama pada rentang bulan 3–8, yang mengindikasikan kejadian relaps lebih dini dibandingkan Treatment B. Dengan demikian, secara deskriptif Treatment B menunjukkan performa yang lebih baik dalam menunda relaps.
Pada bulan ke-8, estimasi probabilitas survival dapat dibaca langsung dari kurva:
Treatment A berada di kisaran sekitar 0.40–0.45.
Treatment B berada di kisaran sekitar 0.70.
Artinya, pada bulan ke-8, sekitar 70% pasien yang menerima Treatment B masih bebas relaps, dibandingkan hanya sekitar 40–45% pada Treatment A. Perbedaan ini cukup substantif secara klinis, karena menunjukkan gap sekitar 25–30 poin persentase dalam probabilitas bertahan tanpa relaps.
Secara visual, terdapat pemisahan kurva yang cukup jelas antara kedua kelompok, terutama setelah bulan ke-5. Treatment B tampak memberikan ketahanan yang lebih stabil terhadap relaps.
Namun, nilai p yang ditampilkan pada grafik adalah 0.35, yang berada jauh di atas batas signifikansi konvensional (α = 0.05). Ini mengindikasikan bahwa perbedaan survival yang terlihat secara visual tidak signifikan secara statistik.
Dari perspektif analitik, ini berarti:
Secara deskriptif dan klinis, Treatment B tampak lebih unggul.
Secara inferensial, dengan ukuran sampel yang relatif kecil (n = 20), bukti statistik belum cukup kuat untuk menyimpulkan bahwa Treatment B secara signifikan lebih baik dalam menunda relaps.
Kemungkinan besar, keterbatasan power statistik akibat ukuran sampel menjadi faktor utama tidak tercapainya signifikansi.
## Call:
## survdiff(formula = Surv_health ~ treatment, data = healthcare)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## treatment=A 10 6 4.51 0.494 0.879
## treatment=B 10 5 6.49 0.343 0.879
##
## Chisq= 0.9 on 1 degrees of freedom, p= 0.3
Nilai Chi-square = 0.9 dengan df = 1 menghasilkan p-value = 0.3.
Secara statistik, nilai tersebut menunjukkan bahwa perbedaan antara jumlah kejadian yang diamati (observed) dan yang diharapkan (expected) pada kedua kelompok relatif kecil. Karena p-value (0.3) lebih besar dari tingkat signifikansi umum (α = 0.05), maka tidak ada bukti yang cukup untuk menolak hipotesis nol.
Sehingga tidak terdapat perbedaan fungsi survival yang signifikan antara Treatment A dan Treatment B berdasarkan uji log-rank. Perbedaan yang terlihat pada data kemungkinan besar disebabkan oleh variasi acak (random variation), bukan efek perlakuan yang nyata.
Tidak.
Walaupun secara numerik Treatment B menunjukkan jumlah event lebih sedikit dibanding expected, perbedaan tersebut tidak signifikan secara statistik (p = 0.3). Dengan ukuran sampel yang kecil (masing-masing N = 10), kekuatan uji (statistical power) juga relatif terbatas, sehingga kemungkinan terjadi type II error tetap ada.
Treatment B belum dapat diklaim lebih efektif dalam meningkatkan survival dibanding Treatment A berdasarkan bukti statistik saat ini. Diperlukan ukuran sampel yang lebih besar atau estimasi lanjutan seperti Cox Proportional Hazards Model untuk mengestimasi hazard ratio dan interval kepercayaan guna memperoleh gambaran efek yang lebih robust.
## Call:
## coxph(formula = Surv_health ~ treatment + age + gender, data = healthcare)
##
## n= 20, number of events= 11
##
## coef exp(coef) se(coef) z Pr(>|z|)
## treatmentB -0.68540 0.50389 0.63846 -1.074 0.2830
## age -0.13534 0.87341 0.07543 -1.794 0.0728 .
## genderM 0.03021 1.03067 0.69187 0.044 0.9652
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## treatmentB 0.5039 1.9846 0.1442 1.761
## age 0.8734 1.1449 0.7534 1.013
## genderM 1.0307 0.9702 0.2656 4.000
##
## Concordance= 0.693 (se = 0.102 )
## Likelihood ratio test= 5.36 on 3 df, p=0.1
## Wald test = 4.25 on 3 df, p=0.2
## Score (logrank) test = 4.59 on 3 df, p=0.2
Nilai untuk treatmentB:
coef = -0.68540
exp(coef) = 0.50389
p-value = 0.2830
95% CI = (0.1442 ; 1.761)
Hazard Ratio sebesar 0.50 berarti bahwa, dengan mengontrol variabel usia dan gender, pasien pada Treatment B memiliki risiko relapse sekitar 49–50% lebih rendah dibandingkan Treatment A (sebagai kategori referensi).
Namun, interval kepercayaan 95% mencakup nilai 1 (0.1442 hingga 1.761) dan p-value > 0.05. Artinya, secara statistik efek protektif tersebut tidak signifikan. Secara praktis, ada indikasi penurunan risiko, tetapi bukti empirisnya belum cukup kuat untuk menyimpulkan bahwa Treatment B benar-benar lebih efektif.
Untuk variabel age:
coef = -0.13534
HR = 0.87341
p-value = 0.0728
95% CI = (0.7534 ; 1.013)
Hazard Ratio < 1 menunjukkan bahwa setiap kenaikan 1 unit usia justru dikaitkan dengan penurunan risiko relapse sekitar 12–13% (1 − 0.873 ≈ 0.127).
Jadi, berdasarkan model ini, usia tidak meningkatkan risiko relapse; arah efeknya justru protektif. Namun, p-value = 0.0728 menunjukkan signifikansi marginal (significant at 10% level, tetapi tidak pada 5%). Dengan sampel kecil (n = 20), kemungkinan keterbatasan power cukup besar.
Pada tingkat signifikansi 5% (α = 0.05):
treatmentB → tidak signifikan (p = 0.2830)
age → tidak signifikan pada 5%, tetapi mendekati signifikan pada 10% (p = 0.0728)
genderM → tidak signifikan (p = 0.9652)
Secara simultan, uji global model:
Likelihood ratio test p = 0.1
Wald test p = 0.2
Score test p = 0.2
Semua > 0.05, sehingga model secara keseluruhan belum signifikan pada level 5%.
Jadi, tidak ada variabel yang signifikan secara statistik pada tingkat 5%, meskipun usia menunjukkan kecenderungan efek protektif yang borderline. Dengan ukuran sampel dan jumlah event yang terbatas (11 event), estimasi masih memiliki variabilitas yang tinggi, tercermin dari interval kepercayaan yang lebar, khususnya pada variabel treatment dan gender.
Machine Failure Analysis
Business Objective
Determine whether Premium machines last longer than Standard machines.
manufacturing <- data.frame(
id = paste0("M",1:20),
type = c(rep("Standard",10), rep("Premium",10)),
time = c(200,350,180,260,300,220,310,190,280,340,
400,320,410,290,360,330,420,310,390,305),
status = c(1,0,1,1,0,1,0,1,1,0,
0,1,0,1,0,1,0,1,0,1),
temp = c(75,72,78,80,74,77,73,79,76,72,
70,68,69,71,67,72,66,70,68,73)
)km_machine <- survfit(Surv_machine ~ type,
data = manufacturing)
ggsurvplot(km_machine,
data = manufacturing,
pval = TRUE,
risk.table = TRUE)Secara visual, kurva Premium berada di atas kurva Standard hampir sepanjang periode observasi. Artinya, pada waktu yang sama, probabilitas mesin Premium masih bertahan (belum gagal) lebih tinggi dibandingkan mesin Standard.
Selain itu, kegagalan pada mesin Standard mulai terjadi lebih awal (sekitar 180–200 jam), sementara Premium menunjukkan penurunan survival yang lebih lambat dan terjadi pada waktu yang relatif lebih tinggi.
Secara deskriptif: Premium lasts longer than Standard.
Namun, uji log-rank menghasilkan p = 0.16, yang berarti perbedaan tersebut tidak signifikan secara statistik pada α = 0.05.
Berdasarkan grafik pada t ≈ 300 jam:
Premium: survival probability sekitar 0.80–0.90
Standard: survival probability sekitar 0.40
Maka,
Sekitar 80–90% mesin Premium masih beroperasi pada 300 jam.
Hanya sekitar 40% mesin Standard yang masih beroperasi pada 300 jam.
Dan dapat disimpulkan bahwa perbedaan ini cukup besar secara praktis.
## Call:
## coxph(formula = Surv_machine ~ type + temp, data = manufacturing)
##
## n= 20, number of events= 11
##
## coef exp(coef) se(coef) z Pr(>|z|)
## typeStandard -1.4100 0.2441 0.9467 -1.489 0.136386
## temp 0.5467 1.7275 0.1510 3.620 0.000294 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## typeStandard 0.2441 4.0959 0.03818 1.561
## temp 1.7275 0.5789 1.28495 2.323
##
## Concordance= 0.872 (se = 0.034 )
## Likelihood ratio test= 17.99 on 2 df, p=1e-04
## Wald test = 13.69 on 2 df, p=0.001
## Score (logrank) test = 19.69 on 2 df, p=5e-05
Untuk variabel temp:
HR = 1.7275
95% CI = (1.285 ; 2.323)
p = 0.000294 (sangat signifikan)
Setiap kenaikan 1 unit suhu meningkatkan risiko kegagalan sebesar:
\[ (1.7275 - 1) \times 100\% ≈ 72.7\% \]
Karena:
HR > 1
CI tidak mencakup 1
p < 0.001
Maka, suhu yang lebih tinggi secara signifikan meningkatkan risiko kegagalan mesin. Ini adalah efek yang kuat dan konsisten.
Dari perspektif pengambilan keputusan industri:
a) Faktor dominan adalah suhu operasional
Suhu memiliki pengaruh besar dan signifikan terhadap risiko kegagalan. Artinya:
Pengendalian suhu lebih kritis dibanding pemilihan tipe mesin.
Investasi pada sistem cooling atau kontrol lingkungan produksi dapat memberikan dampak reliabilitas yang lebih besar.
b) Tipe mesin bukan determinan utama (setelah kontrol suhu)
Meskipun secara visual Premium tampak lebih tahan lama, setelah dikontrol oleh suhu, perbedaannya tidak signifikan.
Ini mengindikasikan kemungkinan:
Premium mungkin beroperasi pada suhu berbeda dalam data mentah.
Efek tipe mesin sebagian dijelaskan oleh variabel temperatur.
c) Strategi berbasis data
Implikasi praktis yang rasional:
Prioritaskan kontrol suhu sebagai strategi mitigasi risiko kegagalan.
Evaluasi ulang positioning produk Premium — apakah benar menawarkan durability premium, atau hanya sensitif terhadap kondisi operasional.
Lakukan studi lanjutan dengan sampel lebih besar untuk memastikan efek tipe mesin.
Kesimpulan:
Dalam konteks manufaktur ini, reliability lebih dipengaruhi oleh kondisi operasional (temperature) dibandingkan spesifikasi produk (machine type). Pengendalian lingkungan produksi memberikan ROI yang lebih jelas dibanding sekadar upgrade tipe mesin.
Time to Customer Churn
Business Objective
Evaluate retention differences between Basic and Pro subscription plans.
km_customer <- survfit(Surv_customer ~ plan,
data = customer)
ggsurvplot(km_customer,
data = customer,
pval = TRUE,
risk.table = TRUE)Kurva Kaplan–Meier menunjukkan bahwa pelanggan Pro memiliki probabilitas bertahan yang lebih tinggi dibandingkan pelanggan Basic sepanjang periode observasi. Penurunan survival pada Basic terjadi lebih cepat, yang berarti churn terjadi lebih dini pada segmen tersebut.
Dalam konteks retensi pelanggan:
Plan Pro menunjukkan performa retensi yang lebih baik, karena pelanggan cenderung bertahan lebih lama sebelum churn. Ini mengindikasikan bahwa pelanggan dengan paket Pro memiliki customer lifetime yang relatif lebih panjang.
Dari estimasi kurva pada bulan ke-6:
Basic ≈ 50%
Pro ≈ 80%
Artinya:
Hanya sekitar separuh pelanggan Basic yang masih aktif setelah 6 bulan.
Sekitar delapan dari sepuluh pelanggan Pro masih bertahan pada periode yang sama.
Dalam analisis churn, ini menunjukkan bahwa risiko kehilangan pelanggan dalam 6 bulan pertama jauh lebih tinggi pada segmen Basic.
Nilai p dari uji log-rank adalah 0.17.
Karena p > 0.05, maka secara statistik tidak terdapat bukti yang cukup kuat untuk menyimpulkan bahwa perbedaan retensi antara Basic dan Pro signifikan pada tingkat kepercayaan 95%.
Namun, secara praktis terdapat gap retensi yang cukup besar. Dengan ukuran sampel yang kecil (20 pelanggan), kemungkinan keterbatasan statistical power cukup tinggi.
cox_customer <- coxph(Surv_customer ~ plan +
support_calls + fee,
data = customer)
summary(cox_customer)## Call:
## coxph(formula = Surv_customer ~ plan + support_calls + fee, data = customer)
##
## n= 20, number of events= 10
##
## coef exp(coef) se(coef) z Pr(>|z|)
## planPro 0.6690 1.9523 0.8219 0.814 0.41564
## support_calls 2.3029 10.0031 0.7092 3.247 0.00116 **
## fee NA NA 0.0000 NA NA
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## planPro 1.952 0.51222 0.3899 9.775
## support_calls 10.003 0.09997 2.4917 40.158
## fee NA NA NA NA
##
## Concordance= 0.958 (se = 0.023 )
## Likelihood ratio test= 32.54 on 2 df, p=9e-08
## Wald test = 10.63 on 2 df, p=0.005
## Score (logrank) test = 33.94 on 2 df, p=4e-08
Untuk variabel planPro:
HR = 1.95
95% CI = (0.39 ; 9.78)
p = 0.416
Dengan jumlah support calls dan fee yang sama, pelanggan Pro memiliki risiko churn sekitar 1.95 kali lebih tinggi dibanding Basic (karena Basic menjadi referensi).
Namun:
Interval kepercayaan sangat lebar dan mencakup 1
p-value > 0.05
Artinya, efek plan tidak signifikan secara statistik setelah mengontrol variabel lain. Perbedaan retensi yang terlihat pada Kaplan–Meier tampaknya bukan semata-mata disebabkan oleh jenis plan, melainkan oleh variabel lain dalam model.
Untuk variabel support_calls:
HR = 10.00
95% CI = (2.49 ; 40.16)
p = 0.00116
Setiap tambahan 1 support call meningkatkan risiko churn sekitar 10 kali lipat, dengan efek yang sangat signifikan secara statistik.
Karena:
HR jauh > 1
CI tidak mencakup 1
p < 0.01
Maka secara empiris, frekuensi interaksi dengan support merupakan prediktor kuat churn. Dalam konteks customer analytics, ini mengindikasikan bahwa tingginya support calls kemungkinan merefleksikan ketidakpuasan, friksi penggunaan, atau service failure.
Berdasarkan model ini, strategi retensi sebaiknya berfokus pada experience management, bukan sekadar diferensiasi plan.
a) Early Warning System
Support calls dapat digunakan sebagai variabel churn trigger. Pelanggan dengan >2–3 support calls dalam periode tertentu dapat dikategorikan sebagai high-risk dan diberi intervensi proaktif.
b) Root Cause Analysis
Karena efek support_calls sangat besar, perlu dianalisis:
Jenis keluhan yang paling sering muncul
Waktu respon support
Resolution time dan satisfaction score
Tujuannya adalah menurunkan volume dan frekuensi eskalasi.
c) Quality over Pricing
Variabel fee tidak terestimasi (NA), kemungkinan karena kolinearitas sempurna dengan plan (Basic = 20, Pro = 35). Ini menunjukkan bahwa harga tidak dapat dipisahkan dari jenis plan dalam dataset ini.
Implikasinya: Retensi tidak cukup dijelaskan oleh harga atau tipe paket saja; kualitas pengalaman pelanggan menjadi faktor dominan.
1. What does censoring represent?
Censoring merepresentasikan pasien yang belum mengalami relapse hingga akhir periode observasi atau hilang dari follow-up. Artinya, kita hanya mengetahui bahwa waktu bebas relapse ≥ waktu terakhir observasi, tetapi tidak mengetahui waktu kejadian sebenarnya.
2. Why is the average time insufficient?
Rata-rata waktu relapse tidak mempertimbangkan:
Pasien yang belum relapse (censored data)
Distribusi waktu kejadian yang biasanya tidak simetris
Informasi tentang timing of risk
Menggunakan mean akan bias karena pasien yang tidak relapse akan diperlakukan seolah-olah memiliki waktu relapse pasti, padahal sebenarnya belum terjadi.
3. What strategic decision can management make?
Manajemen rumah sakit atau klinik dapat:
Mengidentifikasi terapi dengan hazard lebih rendah
Mendesain monitoring intensif pada periode risiko tinggi
Mengalokasikan sumber daya pada protokol yang menurunkan hazard relapse
Keputusan berbasis hazard ratio lebih informatif daripada sekadar rata-rata durasi.
4. What would happen if we used linear regression instead?
Linear regression:
Mengabaikan censoring
Mengasumsikan distribusi normal residual
Bisa menghasilkan prediksi waktu negatif
Tidak memodelkan risiko kejadian per unit waktu
Hasilnya bias dan tidak sesuai untuk data time-to-event.
1. What does censoring represent?
Censoring berarti mesin belum gagal sampai akhir periode pengamatan. Mesin tersebut masih beroperasi saat studi selesai.
2. Why is the average time insufficient?
Rata-rata waktu kegagalan:
Tidak mempertimbangkan mesin yang belum gagal
Tidak menggambarkan perubahan risiko seiring waktu
Mengabaikan hazard dinamis akibat kondisi operasional (misalnya suhu)
Reliability analysis memerlukan estimasi survival function, bukan hanya mean time to failure.
3. What strategic decision can management make?
Manajemen dapat:
Mengontrol suhu operasional karena terbukti meningkatkan hazard
Mendesain preventive maintenance berbasis hazard
Mengevaluasi klaim durability antar tipe mesin secara berbasis data
Fokus strategis bergeser dari spesifikasi produk ke kondisi operasional.
4. What would happen if we used linear regression instead?
Linear regression akan:
Memperlakukan mesin yang belum gagal seolah memiliki waktu kegagalan pasti
Mengabaikan struktur hazard
Menghasilkan estimasi yang bias terhadap durability
Model tidak akan mampu menangkap probabilitas survival pada waktu tertentu.
1. What does censoring represent?
Censoring berarti pelanggan masih aktif hingga akhir periode observasi. Kita tidak mengetahui kapan mereka akan churn, hanya bahwa churn belum terjadi.
2. Why is the average time insufficient?
Rata-rata tenure:
Tidak mempertimbangkan pelanggan aktif
Tidak menangkap periode kritis churn (misal bulan 3–6)
Tidak mengestimasi risiko churn per unit waktu
Dalam churn analysis, timing sangat krusial; hazard rate lebih informatif dibanding mean tenure.
3. What strategic decision can management make?
Manajemen dapat:
Menggunakan support calls sebagai early warning churn signal
Mendesain intervensi retensi pada periode risiko tinggi
Mengoptimalkan customer experience, bukan hanya pricing plan
Strategi retensi harus berbasis risk profiling, bukan hanya segmentasi statis.
4. What would happen if we used linear regression instead?
Linear regression pada tenure:
Mengabaikan pelanggan yang masih aktif
Menghasilkan bias estimasi lifetime
Tidak dapat memodelkan probabilitas bertahan pada horizon tertentu
Tidak menangkap dinamika hazard akibat perilaku pelanggan
Akibatnya, model retensi menjadi kurang presisi dan berisiko menghasilkan keputusan yang salah arah.