6  Studi Kasus & Komunikasi Insight

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.

6.1 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?

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.

6.2 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.
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).

6.3 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.

6.3.1 Langkah 1: Memuat Data Bersih

Code
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")
Dataset: 7,043 pelanggan × 23 kolom

6.3.2 Langkah 2: Menetapkan Baseline

Sebelum masuk ke detail, kita perlu baseline yang akan menjadi konteks semua temuan:

Code
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
Metrik Nilai
0 Total pelanggan 7,043
1 Pelanggan churn 1,869
2 Churn rate 26.5%
3 Tagihan bulanan rata-rata Rp 65
4 Tenure rata-rata (bulan) 32.4
5 Estimasi revenue hilang per churn (Rp) Rp 2,096
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.

6.3.3 Langkah 3: Diagnosis — Di Mana Churn Terkonsentrasi?

Code
# 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
Contract tenure_bin jumlah churn_rate
0 Month-to-month 0-6 bln 1413 55.2
1 Month-to-month 7-12 bln 581 42.0
2 Month-to-month 13-24 bln 737 37.7
3 Month-to-month 25-48 bln 802 32.9
4 Month-to-month >48 bln 342 26.0
5 One year 0-6 bln 39 10.3
6 One year 7-12 bln 85 10.6
7 One year 13-24 bln 197 8.1
8 One year 25-48 bln 518 10.6
9 One year >48 bln 634 12.9
10 Two year 0-6 bln 29 0.0
11 Two year 7-12 bln 39 0.0
12 Two year 13-24 bln 90 0.0
13 Two year 25-48 bln 274 2.2
14 Two year >48 bln 1263 3.3

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.

6.3.4 Langkah 4: Menghitung Dampak Finansial per Segmen

Temuan statistik perlu diterjemahkan ke bahasa bisnis. Berapa revenue yang berisiko di setiap segmen?

Code
# 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
jumlah churn_rate avg_charges churn_count revenue_berisiko
priority_segment
Prioritas 1: Bulanan baru 1994 51.4 58.2 1024 1929217.0
Prioritas 2: Bulanan lama 1881 33.5 75.1 631 1534007.0
Prioritas 3: Tahunan 1473 11.3 65.0 166 349285.0
Prioritas 4: Dua tahun 1695 2.8 60.8 48 94472.0
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.

6.4 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.

6.4.1 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.

6.4.2 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.
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.

6.5 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.

6.5.1 Tiga KPI Utama

Code
# 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()
Figure 6.1: Tiga KPI utama untuk presentasi eksekutif: skala masalah, konsentrasi risiko, dan potensi penyelamatan.

6.5.2 Dashboard Detail: Tiga Grafik yang Menjawab “Siapa, Mengapa, Berapa”

Code
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()
Figure 6.2: Dashboard eksekutif detail: (kiri) churn per segmen prioritas; (tengah) kurva survival; (kanan) kontribusi revenue berisiko.
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.

6.6 Menyampaikan ke Stakeholder

Analisis yang baik bisa gagal jika penyampaiannya buruk. Berikut adalah prinsip-prinsip praktis yang saya sarankan kita terapkan.

6.6.1 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.”

6.6.2 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”

6.6.3 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.”

6.6.4 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.”

6.7 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
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.

6.8 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.

6.9 Kotak “Jembatan”: Dari Diagnosis ke Prediksi

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.

6.10 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.

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%”.

6.11 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.

6.12 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.

6.13 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.