---
jupyter: decanal
---
# Studi Kasus & Komunikasi Insight {#sec-studi-kasus-1}
::: {.callout-note appearance="simple"}
**Tujuan pembelajaran.** Setelah menyelesaikan bab ini, kita akan mampu:
1. Menerapkan kerangka **SCQA** (Situation-Complication-Question-Answer) untuk menyusun narasi analitis.
2. Menggabungkan seluruh teknik Bagian I—wrangling, statistik, visualisasi, diagnosis—dalam satu alur kerja end-to-end.
3. Merancang **dashboard eksekutif** yang merangkum temuan untuk audiens non-teknis.
4. Mengomunikasikan ketidakpastian dan batas analisis tanpa melemahkan rekomendasi.
5. Menerjemahkan insight menjadi **rekomendasi yang dapat dieksekusi** dengan prioritas yang jelas.
6. Mengenali kapan analisis deskriptif **berhenti menjadi cukup**, dan model prediktif diperlukan.
:::
## Skenario: Dua Minggu untuk Menyelamatkan Pelanggan
Bayangkan kita baru bergabung sebagai **Senior Data Analyst** di **Telko Nusantara**, sebuah perusahaan telekomunikasi dengan sekitar 7.000 pelanggan aktif. Pada hari Senin pagi, VP Customer Success memanggil kita ke ruangannya:
> *"Kita kehilangan pelanggan lebih cepat dari yang bisa kita gantikan. Saya butuh diagnosis yang jelas dalam dua minggu—bukan laporan 50 halaman, tetapi sesuatu yang bisa saya bawa ke rapat direksi. Beri tahu saya: siapa yang churn, mengapa, dan apa yang harus kita lakukan."*
kita memiliki dataset pelanggan, keterampilan Python dari Bab 1–5, dan **dua minggu**. Bagaimana kita mendekatinya?
::: {.callout-tip}
**Ini bukan latihan akademis.** Dalam pekerjaan nyata, analis jarang mendapat waktu berbulan-bulan. Yang membedakan analis yang efektif bukan hanya keterampilan teknis, tetapi kemampuan **memfokuskan energi pada pertanyaan yang tepat** dan **menyampaikan jawaban yang dapat ditindaklanjuti**.
:::
## Kerangka SCQA: Cara Berpikir Sebelum Menulis Kode
Sebelum menyentuh data, tetapkan **narasi** yang akan kita bangun. Kerangka **SCQA** (Barbara Minto, *The Pyramid Principle*) adalah standar dalam konsultasi strategis:
| Komponen | Pertanyaan | Jawaban untuk kasus ini |
|---|---|---|
| **Situation** | Apa konteks yang disepakati semua orang? | Telko Nusantara memiliki ~7.000 pelanggan aktif. Churn rate ~26,5%—sekitar 1 dari 4 pelanggan berhenti setiap tahun. |
| **Complication** | Apa masalah atau perubahan yang memicu kebutuhan ini? | Churn rate ini **tinggi** untuk industri telekomunikasi, dan biaya akuisisi pelanggan baru jauh lebih besar daripada retensi. |
| **Question** | Pertanyaan apa yang muncul dari komplikasi ini? | *Pelanggan seperti apa yang churn, mengapa mereka churn, dan intervensi apa yang paling efektif?* |
| **Answer** | Jawaban utama (yang akan diuraikan di seluruh presentasi) | *Churn terkonsentrasi pada pelanggan baru dengan kontrak bulanan dan layanan fiber optic. Intervensi retensi harus difokuskan pada 12 bulan pertama, dengan program onboarding dan bundling layanan sebagai prioritas utama.* |
::: {.callout-important}
**Mengapa SCQA penting?** Karena pengambil keputusan tidak punya waktu untuk mengikuti alur berpikir kita dari awal. Mereka perlu **jawaban lebih dulu**, baru kemudian bukti. SCQA memaksa kita menyusun presentasi **dari kesimpulan ke detail** (deduktif), bukan dari data ke kesimpulan (induktif).
:::
## Menyusun Analisis: Alur Kerja End-to-End
Dengan SCQA di tangan, kita sekarang menjalankan analisis. Perhatikan bahwa setiap langkah di bawah ini **sudah kita kuasai** dari Bab 1–5—yang baru adalah cara merangkainya menjadi satu alur yang koheren.
### Langkah 1: Memuat Data Bersih
```{python}
#| label: case-load
import sys
sys.path.insert(0, ".")
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
from decanal.utils import load_churn_clean
df = load_churn_clean()
# Konstanta warna konsisten dari Bab 4
COLOR_NO = "#4C72B0"
COLOR_YES = "#DD8452"
PALETTE_CHURN = {"No": COLOR_NO, "Yes": COLOR_YES}
print(f"Dataset: {df.shape[0]:,} pelanggan × {df.shape[1]} kolom")
```
### Langkah 2: Menetapkan Baseline
Sebelum masuk ke detail, kita perlu **baseline** yang akan menjadi konteks semua temuan:
```{python}
#| label: case-baseline
n_total = len(df)
n_churn = (df["Churn"] == "Yes").sum()
churn_rate = n_churn / n_total * 100
# Estimasi dampak finansial (asumsi konservatif)
avg_monthly = df["MonthlyCharges"].mean()
avg_tenure = df["tenure"].mean()
lost_revenue_per_churn = avg_monthly * avg_tenure # nilai seumur hidup rata-rata
baseline = pd.DataFrame({
"Metrik": [
"Total pelanggan",
"Pelanggan churn",
"Churn rate",
"Tagihan bulanan rata-rata",
"Tenure rata-rata (bulan)",
"Estimasi revenue hilang per churn (Rp)",
],
"Nilai": [
f"{n_total:,}",
f"{n_churn:,}",
f"{churn_rate:.1f}%",
f"Rp {avg_monthly:,.0f}",
f"{avg_tenure:.1f}",
f"Rp {lost_revenue_per_churn:,.0f}",
],
})
baseline
```
::: {.callout-note}
**Asumsi harus eksplisit.** Estimasi revenue hilang di atas menggunakan asumsi sederhana: pelanggan yang churn akan bertahan selama rata-rata tenure dataset. Ini **bukan** angka pasti—pelanggan yang churn mungkin memiliki profil berbeda. Tetapi untuk presentasi eksekutif, **angka perkiraan yang dapat dijelaskan** lebih berguna daripada tidak ada angka sama sekali. Selalu cantumkan asumsi di catatan kaki.
:::
### Langkah 3: Diagnosis — Di Mana Churn Terkonsentrasi?
```{python}
#| label: case-diagnosis
# Stratifikasi bertingkat: Contract × tenure bin
df["tenure_bin"] = pd.cut(
df["tenure"], bins=[-1, 6, 12, 24, 48, np.inf],
labels=["0-6 bln", "7-12 bln", "13-24 bln", "25-48 bln", ">48 bln"]
)
segmen = (df.groupby(["Contract", "tenure_bin"], observed=True)
.agg(
jumlah=("Churn", "size"),
churn_rate=("Churn", lambda s: (s == "Yes").mean() * 100),
)
.round(1)
.reset_index())
segmen
```
Dari tabel ini, kita dapat menyusun **tiga temuan utama**:
1. **Efek kontrak**: Churn rate kontrak bulanan konsisten lebih tinggi di semua kelompok tenure.
2. **Efek tenure**: Churn rate menurun tajam seiring tenure—puncaknya pada 0–6 bulan pertama.
3. **Interaksi**: Kombinasi kontrak bulanan + tenure pendek memiliki churn rate **paling ekstrem**.
### Langkah 4: Menghitung Dampak Finansial per Segmen
Temuan statistik perlu diterjemahkan ke **bahasa bisnis**. Berapa revenue yang berisiko di setiap segmen?
```{python}
#| label: case-financial
# Definisikan segmen prioritas
df["priority_segment"] = np.select(
[
(df["Contract"] == "Month-to-month") & (df["tenure"] <= 12),
(df["Contract"] == "Month-to-month") & (df["tenure"] > 12),
(df["Contract"] == "One year"),
],
["Prioritas 1: Bulanan baru", "Prioritas 2: Bulanan lama", "Prioritas 3: Tahunan"],
default="Prioritas 4: Dua tahun"
)
finansial = (df.groupby("priority_segment", observed=True)
.agg(
jumlah=("Churn", "size"),
churn_rate=("Churn", lambda s: (s == "Yes").mean() * 100),
avg_charges=("MonthlyCharges", "mean"),
churn_count=("Churn", lambda s: (s == "Yes").sum()),
)
.round(1))
finansial["revenue_berisiko"] = (
finansial["churn_count"] * finansial["avg_charges"] * df["tenure"].mean()
).round(0)
finansial = finansial.sort_values("revenue_berisiko", ascending=False)
finansial
```
::: {.callout-important}
**Perhatikan pergeseran prioritas.** Segmen "Prioritas 1" mungkin memiliki jumlah pelanggan lebih kecil, tetapi karena churn rate-nya tinggi, **revenue berisiko**-nya bisa lebih besar dari segmen lain yang jumlahnya lebih banyak. Inilah mengapa analisis keuangan harus menyertai analisis statistik—untuk mengarahkan keputusan ke tempat yang dampaknya paling besar.
:::
## Dari Analisis ke Narasi: Data Storytelling
Sekarang kita memiliki semua bahan: baseline, segmen, angka finansial. Tetapi presentasi eksekutif **bukan** kumpulan tabel dan grafik. Ia adalah **cerita** dengan alur, klimaks, dan resolusi.
### Tiga Tingkat Data Storytelling
| Tingkat | Audiens | Fokus | Contoh dalam kasus kita |
|---|---|---|---|
| **Laporan** | Analis, tim teknis | Kelengkapan, akurasi | Tabel lengkap, kode, metode |
| **Presentasi** | Manajer, direksi | Insight dan implikasi | 5–7 slide dengan grafik kunci |
| **One-pager** | Eksekutif senior | Rekomendasi dan dampak | Satu halaman dengan tiga rekomendasi |
Untuk VP Customer Success, kita membutuhkan **presentasi** dan **one-pager**—bukan laporan teknis.
### Struktur Narasi: Piramida Terbalik
1. **Jawaban (1 slide)**: *"Churn terkonsentrasi pada pelanggan bulanan baru. Intervensi di 12 bulan pertama akan menyelamatkan X pelanggan dan Y revenue."*
2. **Tiga bukti utama (3 slide)**: Setiap bukti adalah satu grafik dengan satu pesan.
3. **Rekomendasi (1 slide)**: Tiga intervensi dengan prioritas dan estimasi dampak.
4. **Lampiran**: Tabel detail, metodologi, batasan.
::: {.callout-tip}
**Aturan 1-3-1.** Untuk presentasi eksekutif, gunakan struktur:
- **1** slide pembuka dengan jawaban utama
- **3** slide pendukung (satu bukti per slide)
- **1** slide rekomendasi dan next steps
Lebih dari ini, dan audiens akan kehilangan benang merah. Kurang dari ini, dan kita terlihat kurang mendalam.
:::
## Dashboard Eksekutif
Dashboard eksekutif berbeda dari dashboard analis (Bab 4). Ia harus menjawab **satu pertanyaan besar** dan menyoroti **tiga angka kunci**—bukan menyediakan semua detail.
### Tiga KPI Utama
```{python}
#| label: fig-exec-kpis
#| fig-cap: "Tiga KPI utama untuk presentasi eksekutif: skala masalah, konsentrasi risiko, dan potensi penyelamatan."
#| fig-width: 11
#| fig-height: 3.5
# KPI 1: Skala masalah
total_churn_loss = finansial["revenue_berisiko"].sum()
# KPI 2: Konsentrasi
prioritas_1 = finansial.loc["Prioritas 1: Bulanan baru"]
pct_of_total_churn = (
prioritas_1["churn_count"] / df["Churn"].eq("Yes").sum() * 100
)
# KPI 3: Potensi penyelamatan (asumsi 20% reduction dari churn prioritas 1)
potential_saved = prioritas_1["revenue_berisiko"] * 0.2
fig = make_subplots(
rows=1, cols=3,
subplot_titles=(
"Revenue berisiko",
"Churn dari segmen prioritas 1",
"Potensi diselamatkan (20%)",
),
specs=[[{"type": "indicator"}, {"type": "indicator"}, {"type": "indicator"}]],
)
fig.add_trace(
go.Indicator(
mode="number",
value=total_churn_loss / 1e9,
number={"suffix": " M", "valueformat": ".2f"},
title={"text": "Rp miliar"},
),
row=1, col=1,
)
fig.add_trace(
go.Indicator(
mode="number+gauge",
value=pct_of_total_churn,
number={"suffix": "%", "valueformat": ".0f"},
gauge={"axis": {"range": [0, 100]}, "bar": {"color": COLOR_YES},
"threshold": {"line": {"color": "red", "width": 2},
"thickness": 0.75, "value": 50}},
),
row=1, col=2,
)
fig.add_trace(
go.Indicator(
mode="number",
value=potential_saved / 1e9,
number={"suffix": " M", "valueformat": ".2f"},
title={"text": "Rp miliar"},
),
row=1, col=3,
)
fig.update_layout(
height=350, width=1100,
title_text="Dashboard Eksekutif — Churn Telko Nusantara",
margin=dict(l=40, r=40, t=100, b=40),
)
fig.show()
```
### Dashboard Detail: Tiga Grafik yang Menjawab "Siapa, Mengapa, Berapa"
```{python}
#| label: fig-exec-dashboard
#| fig-cap: "Dashboard eksekutif detail: (kiri) churn per segmen prioritas; (tengah) kurva survival; (kanan) kontribusi revenue berisiko."
#| fig-width: 11
#| fig-height: 4
fig = make_subplots(
rows=1, cols=3,
subplot_titles=(
"Churn rate per segmen prioritas",
"Kurva survival",
"Kontribusi revenue berisiko",
),
specs=[[{"type": "bar"}, {"type": "scatter"}, {"type": "domain"}]],
)
# Panel 1: Churn rate per segmen
seg_plot = finansial.reset_index().sort_values("churn_rate")
fig.add_trace(
go.Bar(
x=seg_plot["churn_rate"],
y=seg_plot["priority_segment"],
orientation="h",
marker_color=COLOR_YES,
text=seg_plot["churn_rate"].round(1),
texttemplate="%{text}%",
textposition="outside",
showlegend=False,
),
row=1, col=1,
)
# Panel 2: Kurva survival
tenure_range = np.arange(0, 73, 1)
survival = [(df["tenure"] >= t).mean() * 100 for t in tenure_range]
fig.add_trace(
go.Scatter(
x=tenure_range, y=survival,
mode="lines",
line={"color": COLOR_NO, "width": 3},
fill="tozeroy",
fillcolor="rgba(76, 114, 176, 0.2)",
showlegend=False,
),
row=1, col=2,
)
# Panel 3: Donut revenue
fig.add_trace(
go.Pie(
labels=finansial.index,
values=finansial["revenue_berisiko"],
hole=0.5,
marker={"colors": ["#DD8452", "#55A868", "#4C72B0", "#8172B3"]},
showlegend=True,
),
row=1, col=3,
)
fig.update_xaxes(title_text="Churn rate (%)", row=1, col=1)
fig.update_xaxes(title_text="Tenure (bulan)", row=1, col=2)
fig.update_yaxes(title_text="Bertahan (%)", row=1, col=2)
fig.update_layout(
height=420, width=1200,
title_text="Di Mana Churn Terkonsentrasi — dan Berapa Biayanya",
margin=dict(l=40, r=40, t=100, b=80),
)
fig.show()
```
::: {.callout-important}
**Perhatikan desainnya.** Setiap panel menjawab **satu pertanyaan** yang berbeda:
- Kiri: **Siapa** yang paling berisiko (segmen prioritas).
- Tengah: **Kapan** risiko paling akut (kurva survival).
- Kanan: **Berapa** dampak finansialnya (donut revenue).
Ketiganya bersama-sama menjawab pertanyaan VP: *"Siapa yang churn, mengapa, dan apa yang harus kita lakukan?"* Tanpa satu pun, narasinya tidak lengkap.
:::
## Menyampaikan ke Stakeholder
Analisis yang baik bisa gagal jika **penyampaiannya** buruk. Berikut adalah prinsip-prinsip praktis yang saya sarankan kita terapkan.
### 1. Buka dengan Jawaban, Bukan Metodologi
**Jangan** memulai dengan: *"Saya menggunakan stratifikasi berdasarkan tenure dan contract..."*
**Mulai** dengan: *"Churn kita terkonsentrasi pada 1.800 pelanggan baru dengan kontrak bulanan. Jika kita bisa menahan 20% dari mereka, kita menyelamatkan sekitar Rp X miliar setahun."*
### 2. Gunakan Analogi, Bukan Jargon
| Jargon | Alternatif |
|---|---|
| "Churn rate 26,5%" | "Satu dari empat pelanggan berhenti setiap tahun" |
| "Distribusi bimodal" | "Ada dua kelompok pelanggan: yang baru bergabung dan yang sudah lama" |
| "Stratifikasi berdasarkan tenure" | "Ketika kita bandingkan pelanggan baru dengan pelanggan lama secara terpisah" |
| "Simpson's Paradox" | "Rata-rata keseluruhan menyesatkan karena komposisi pelanggan berbeda" |
### 3. Tunjukkan Ketidakpastian Secara Eksplisit
Jangan sembunyikan ketidakpastian—**bimbing audiens untuk mempercayai kita** dengan menunjukkannya:
> *"Estimasi revenue berisiko adalah Rp X miliar. Angka ini didasarkan pada asumsi bahwa pelanggan yang churn akan bertahan selama tenure rata-rata. Jika asumsi ini terlalu optimis, dampak sebenarnya bisa lebih kecil—tetapi besaran relatif antar segmen tetap sama."*
### 4. Akhiri dengan Ajakan Bertindak yang Spesifik
**Jangan** akhiri dengan: *"Demikian presentasi saya, terima kasih."*
**Akhiri** dengan: *"Saya merekomendasikan tiga hal: pertama, pilot program onboarding untuk 500 pelanggan prioritas 1 selama 3 bulan. Kedua, alokasi ulang 30% anggaran retensi ke segmen prioritas 1. Ketiga, mengizinkan saya membangun model prediktif dalam 4 minggu ke depan untuk mengidentifikasi pelanggan berisiko secara individual—sehingga intervensi bisa ditargetkan lebih presisi."*
## Tiga Rekomendasi Prioritas
Berdasarkan diagnosis, berikut adalah rekomendasi yang dapat disampaikan ke VP:
| Prioritas | Rekomendasi | Target | Estimasi Dampak |
|---|---|---|---|
| **1** | Program onboarding 90 hari untuk pelanggan baru (welcome call bulan 1, check-in bulan 3, penawaran upgrade bulan 6) | Semua pelanggan baru | Mengurangi churn dini ~15–20% |
| **2** | Bundling layanan tambahan gratis 3 bulan (OnlineSecurity, TechSupport) | Pelanggan prioritas 1 | Meningkatkan keterikatan; estimasi 10% pengurangan churn |
| **3** | Diskon perpanjangan kontrak untuk pelanggan yang beralih dari bulanan ke tahunan | Pelanggan prioritas 1 & 2 | Meningkatkan revenue per pelanggan (LTV) dan mengurangi churn |
::: {.callout-warning}
**Rekomendasi ini belum teruji.** Ketiganya adalah **hipotesis** berdasarkan diagnosis yang kuat, tetapi efektivitasnya harus dikonfirmasi melalui **A/B test**. Presentasi eksekutif yang baik **mengakui hal ini**—dan mengusulkan pengujian sebagai langkah berikutnya, bukan sebagai keputusan final. Ini melindungi kita dari risiko rekomendasi yang tidak berhasil, dan membangun kepercayaan melalui kejujuran.
:::
## Batas Analisis Ini
Setiap presentasi eksekutif yang baik menyertakan **slide batasan**. Ini bukan kelemahan—ini adalah tanda kedewasaan analitis. Untuk kasus ini:
1. **Analisis korelasional, bukan kausal.** Kita tahu segmen mana yang berisiko, tetapi tidak bisa memastikan intervensi akan **menyebabkan** penurunan churn tanpa eksperimen.
2. **Data historis, bukan data real-time.** Churn rate bisa berubah jika kompetitor meluncurkan produk baru atau jika kondisi pasar berubah.
3. **Estimasi revenue berdasarkan asumsi.** Angka dampak finansial menggunakan asumsi tenure rata-rata—nilai sebenarnya bisa berbeda.
4. **Tidak ada model prediktif individual.** Analisis ini mengidentifikasi **segmen** berisiko, tetapi tidak dapat memprediksi **pelanggan spesifik** yang akan churn.
Poin keempat inilah yang menjadi **jembatan langsung ke Bagian II**.
## Kotak "Jembatan": Dari Diagnosis ke Prediksi
::: {.callout-important}
**Jembatan.** Semua yang kita lakukan di Bagian I menjawab pertanyaan **tingkat populasi**: *"Segmen mana yang berisiko?"*
Tetapi keputusan retensi yang efektif membutuhkan jawaban **tingkat individu**: *"Pelanggan mana yang harus saya hubungi minggu ini?"*
Di sinilah analisis deskriptif mencapai batasnya. Kita bisa mengidentifikasi bahwa **pelanggan bulanan baru berisiko**, tetapi:
- Dari 1.800 pelanggan di segmen itu, mana 200 yang paling mungkin churn bulan ini?
- Bagaimana kita memprioritaskan intervensi ketika anggaran terbatas?
- Bagaimana kita memperkirakan probabilitas churn untuk pelanggan **baru** yang belum kita kenal?
Pertanyaan-pertanyaan ini **tidak dapat dijawab** oleh statistik deskriptif atau diagnostik—betapapun canggihnya. Mereka membutuhkan **model prediktif** yang dapat memperkirakan probabilitas churn **untuk setiap pelanggan**, berdasarkan pola yang telah kita identifikasi di Bagian I.
**Inilah tujuan Bagian II.** Kita akan menggunakan semua insight dari Bagian I—variabel mana yang penting, segmen mana yang berisiko, pola mana yang muncul—sebagai **fondasi untuk membangun model** yang dapat memprediksi churn secara individual. Model itu sendiri akan menjadi input untuk **optimasi di Bagian III**: siapa yang diintervensi, dengan apa, dan berapa anggarannya.
:::
## Latihan Terbimbing
**Latihan 6.1 — SCQA untuk skenario baru.**
Bayangkan kita bekerja di perusahaan retail (bukan Telko) yang ingin memahami mengapa penjualan menurun. Susun SCQA untuk skenario ini—Situation, Complication, Question, dan Answer (hipotesis awal). kita belum perlu data.
**Latihan 6.2 — One-pager eksekutif.**
Buat satu halaman (300 kata) ringkasan untuk VP Customer Success berdasarkan analisis di bab ini. Harus mencakup: (a) temuan utama dalam satu kalimat, (b) tiga bukti pendukung, (c) tiga rekomendasi, (d) satu slide batasan. Gunakan bahasa non-teknis.
**Latihan 6.3 — Kritik dashboard.**
Ambil dashboard eksekutif yang saya buat di bab ini. Kritik secara konstruktif: apa yang sudah baik, dan apa yang bisa diperbaiki? Pertimbangkan prinsip dari Bab 4 (data-ink ratio, chart selection) dan prinsip storytelling di bab ini.
**Latihan 6.4 — Komunikasi ketidakpastian.**
Tulis dua paragraf yang mengomunikasikan estimasi "revenue berisiko Rp X miliar" kepada audiens eksekutif. Paragraf pertama harus **percaya diri namun jujur**; paragraf kedua harus **terlalu hati-hati** sehingga melemahkan pesan. Bandingkan keduanya—mana yang lebih efektif, dan mengapa?
**Latihan 6.5 — Jembatan ke prediksi.**
Berdasarkan temuan Bagian I, tuliskan tiga **pertanyaan spesifik** yang menurut kita hanya dapat dijawab oleh model prediktif. Untuk setiap pertanyaan, jelaskan mengapa statistik deskriptif tidak cukup.
::: {.callout-note collapse="true"}
**Petunjuk Latihan 6.5.** Pertanyaan yang baik bersifat **individual** dan **prediktif**. Contoh: *"Pelanggan mana dari 1.800 pelanggan bulanan baru yang paling mungkin churn dalam 30 hari ke depan?"* — ini membutuhkan model yang dapat menghasilkan skor probabilitas per pelanggan. Statistik deskriptif hanya bisa mengatakan "segmen ini berisiko tinggi", bukan "pelanggan A berisiko 78%, pelanggan B berisiko 12%".
:::
## Rangkuman
Dalam bab ini kita telah:
- **Menerapkan kerangka SCQA** untuk menyusun narasi analitis dari konteks ke rekomendasi—sebelum menyentuh data.
- **Menggabungkan seluruh teknik Bagian I**—wrangling, statistik deskriptif, visualisasi, diagnosis—dalam satu alur kerja end-to-end yang menjawab pertanyaan bisnis nyata.
- **Menerjemahkan temuan statistik ke dampak finansial**, menyadari bahwa prioritas segmen bisa berubah ketika revenue diperhitungkan.
- **Menerapkan prinsip data storytelling**: piramida terbalik, aturan 1-3-1, analogi bukan jargon.
- **Merancang dashboard eksekutif** yang menyoroti tiga KPI utama dan tiga grafik yang menjawab "siapa, mengapa, berapa".
- **Menyusun rekomendasi prioritas** dengan estimasi dampak dan pengakuan bahwa rekomendasi adalah hipotesis yang perlu diuji.
- **Mengomunikasikan batas analisis** secara eksplisit sebagai tanda kedewasaan analitis, bukan kelemahan.
- **Mengidentifikasi batas analisis deskriptif**: ia menjawab pertanyaan tingkat populasi, tetapi tidak dapat memberikan prediksi tingkat individu—dan inilah jembatan ke Bagian II.
## Penutup Bagian I
Kita telah menyelesaikan **Bagian I — Descriptive & Diagnostic Analytics**. Mari kita lihat kembali perjalanan ini:
| Bab | Yang Kita Pelajari |
|---|---|
| **1** | Fondasi: Python, pandas, dataset pendamping, lima langkah inspeksi |
| **2** | Wrangling: nilai hilang, duplikat, outlier, feature engineering dasar |
| **3** | Statistik: ukuran pusat, sebaran, bentuk, uji hipotesis, effect size |
| **4** | Visualisasi: grammar of graphics, prinsip Tufte, matplotlib, plotly, dashboard |
| **5** | Diagnostik: stratifikasi, Simpson's Paradox, kohort, root cause analysis |
| **6** | Studi kasus: SCQA, storytelling, dashboard eksekutif, rekomendasi |
Sekarang kita memiliki:
- **Dataset bersih** (`data/processed/telco_clean.csv`) dengan 21 kolom siap analisis.
- **Pemahaman mendalam** tentang churn: siapa yang berisiko, mengapa, dan berapa dampaknya.
- **Keterampilan komunikasi** untuk menyampaikan insight kepada pengambil keputusan.
- **Hipotesis yang dapat diuji** untuk intervensi retensi.
Yang **belum** kita miliki:
- **Model prediktif** yang dapat memprediksi churn untuk pelanggan individual.
- **Kemampuan untuk mengoptimalkan** alokasi sumber daya retensi.
- **Simulasi ketidakpastian** untuk mengevaluasi kebijakan sebelum implementasi.
Ketiganya adalah **inti Bagian II dan III**.
## Jembatan ke Bagian II
Bagian I telah mengajarkan kita untuk **melihat** dan **memahami** data. Bagian II akan mengajarkan kita untuk **memprediksi**.
Perjalanan Bagian II:
- **Bab 7 — Kerangka Predictive**: dari deskriptif ke prediktif; bias-variance tradeoff; train-test split.
- **Bab 8 — Regresi**: memodelkan hubungan kontinu; interpretasi koefisien; diagnostik residual.
- **Bab 9 — Klasifikasi**: memprediksi probabilitas churn individual; metrik evaluasi; penanganan kelas tidak seimbang.
- **Bab 10 — Time Series**: deret waktu; forecasting; analisis survival (dengan dataset retail pendamping).
- **Bab 11 — Unsupervised**: clustering pelanggan; segmentasi berbasis data; PCA.
- **Bab 12 — Monte Carlo**: simulasi ketidakpastian; jembatan ke simulasi keputusan di Bagian III.
Setiap bab di Bagian II akan merujuk kembali ke temuan Bagian I. Variabel yang penting dalam diagnosis (Contract, tenure, InternetService) akan menjadi **fitur** dalam model. Segmen yang kita identifikasi akan divalidasi oleh model. Hipotesis yang kita bentuk akan diuji secara empiris.
**Selamat datang di Bagian II.**