Segmentasi

Disiplin kelompokkan lalu periksa, dan bagaimana rata-rata keseluruhan menipu.

Daftar isi

Segmentasi adalah disiplin mengurai angka keseluruhan menjadi angka per kelompok sebelum menyimpulkan, dan inilah penangkal harfiah atas paradoks Simpson yang diperkenalkan pada modul cara berpikir. Topik ini mempraktikkannya pada dataset latihan dengan dua pemenggalan yang wajar, yaitu per stasiun dan per periode jam, dan membuka topik dengan bukti bahwa satu baris data rusak mampu menggeser rata-rata keseluruhan secara dramatis. Setelah membacanya, setiap angka agregat pada laporan disertai angka per segmennya.

Rata-rata keseluruhan yang menipu#

Titik awal segmentasi adalah membuktikan bahwa agregat perlu diuji, dan dataset latihan ini menyediakan buktinya secara alami, yaitu satu baris sensor rusak bernilai 9999.0. Skrip berikut membandingkan rata-rata sebelum dan sesudah baris itu dibuang, lalu mengurai rata-rata yang sehat ke dalam periode jam.

python segmentasi.py
"""Segmentasi: kelompokkan dahulu, lalu baca rata-ratanya."""
import pandas as pd

data = pd.read_csv(
    "ukuran_udara.csv",
    na_values=["kosong", "-999.0"],
    dtype={"pm25": "string", "kelembapan": "string"},
)
data["pm25"] = data["pm25"].astype("float")
data["waktu"] = pd.to_datetime(data["waktu"], format="mixed", dayfirst=True)
data["stasiun"] = (
    data["stasiun"].str.strip().str.replace(r"\s+", " ", regex=True).str.title()
)

print("rata-rata mentah (termasuk sensor rusak) :",
      round(data["pm25"].mean(), 1))
sah = data[data["pm25"] < 500]
print("rata-rata setelah baris tidak sah dibuang:",
      round(sah["pm25"].mean(), 1))
print()

sah = sah.copy()
sah["periode"] = pd.cut(
    sah["waktu"].dt.hour,
    bins=[-1, 5, 10, 15, 23],
    labels=["dini", "pagi", "siang", "malam"],
)
ringkas = sah.groupby(["stasiun", "periode"], observed=True)["pm25"].mean().unstack()
print(ringkas.round(1).to_string())
print()
print(sah.groupby("stasiun")["pm25"].agg(["count", "mean"]).round(1).to_string())
text Keluaran
rata-rata mentah (termasuk sensor rusak) : 232.7
rata-rata setelah baris tidak sah dibuang: 44.9

periode    dini  pagi  siang  malam
stasiun                            
Stasiun A  33.3  39.9   36.2   30.5
Stasiun B  54.8  63.3   58.3   49.8

           count  mean
stasiun               
Stasiun A     26  34.3
Stasiun B     26  55.4

Rata-rata mentah 232.7 dan rata-rata bersih 44.9 berjarak lima kali lipat, padahal bedanya hanya satu baris dari enam puluh dua. Agregat yang belum diuji kebersihannya dapat meleset sejauh itu tanpa peringatan apa pun, dan segmentasi yang benar baru dimulai setelah data yang memenuhi rentang yang masuk akal dipisahkan dari kegagalan alat.

Pemenggalan yang dipilih dengan alasan#

Kolom pemenggalan dipilih karena wajar memengaruhi variabel yang diukur, bukan karena tersedia. Pada data pengukuran udara, jam pengukuran adalah kandidat alami karena lalu lintas dan aktivitas kota berdenyut sepanjang hari, sedangkan stasiun memisahkan lingkungan yang berbeda, yaitu kawasan sekolah berbanding jalan utama.

Pemenggalan waktu dilakukan dengan pd.cut yang mengelompokkan jam ke dalam empat periode, dan hasilnya groupby dua kunci yang langsung di-unstack menjadi matriks stasiun-ke-periode. Angkanya konsisten pada setiap sel, yaitu Stasiun B lebih tinggi dari Stasiun A pada setiap periode, dengan lonjakan bersama pada periode pagi, yaitu 63.3 berbanding 39.9.

Kolom count pada ringkasan per stasiun disertakan secara sadar, karena rata-rata tanpa jumlah data mudah menipu. Kedua stasiun kebetulan berimbang pada dataset ini, yaitu 26 berbanding 26, dan pada ukuran yang timpang perbandingan rata-rata harus membawa bobotnya sebagaimana dipelajari pada paradoks Simpson.

Dari tabel ke keputusan#

Tabel segmentasi mengubah pertanyaan analisis menjadi lebih tajam. Rata-rata keseluruhan 44.9 tidak menjawab pertanyaan siapa pun, sedangkan tabel periode menjawab bahwa kebijakan yang menyasar jam pagi menyentuh kedua stasiun, dan bahwa selisih antar stasiun sekitar 20 unit berlaku stabil pada semua periode.

Pemenggalan yang terlalu halus juga punya harganya. Memecah data dua hari ke dalam dua puluh empat jam membuat setiap sel berisi satu atau dua baris, dan rata-rata satu baris adalah baris itu sendiri. Ukuran kelompok minimum yang wajar disebut sejak awal, dan tabel yang selnya terlalu tipis diringkas kembali ke pemenggalan yang lebih kasar.

Disiplin yang dibawa dari topik ini adalah menulis setiap temuan segmentasi dengan tiga bagian, yaitu angka keseluruhan sebagai konteks, angka per kelompok sebagai isi, dan jumlah data sebagai kepercayaannya.

Kesalahan umum#

Kesalahan pertama adalah segmentasi pada data yang belum diuji kebersihannya. Rata-rata per periode yang dihitung dari data mentah akan menaruh 9999.0 pada sel dini Stasiun B dan menutupi seluruh polanya, sehingga pemeriksaan rentang selalu mendahului pemenggalan.

Kesalahan kedua adalah membaca sel tabel tanpa jumlah data di belakangnya. Sel dengan dua baris dan sel dengan dua ratus baris memberi tingkat kepercayaan yang berbeda, dan kebiasaan menyertakan count membuat perbedaan itu terlihat.

Kesalahan ketiga adalah memilih pemenggalan setelah melihat hasilnya agar suatu kelompok tampak unggul. Pemenggalan yang wajar dinyatakan sebelum angkanya dilihat, sebagaimana metrik pada modul cara berpikir, dan perubahan pemenggalan setelahnya harus dinyatakan terbuka.

Ringkasan#

  • Rata-rata keseluruhan diuji kebersihannya sebelum dipakai, dan satu baris rusak pada dataset latihan menggesernya lima kali lipat.
  • Pemenggalan dipilih karena wajar memengaruhi variabelnya, dan pd.cut dengan groupby dua kunci adalah pola kerjanya.
  • Setiap angka per kelompok disertai jumlah datanya, dan sel yang terlalu tipis diringkas kembali ke pemenggalan kasar.
  • Temuan segmentasi ditulis tiga bagian, yaitu konteks agregat, isi per kelompok, dan kepercayaannya.

Referensi#