Last Updated on October 18, 2026 by Zona Ekonomi
tutorial Propensity Score Matching PSM di Python untuk data non-eksperimental
Bagi mahasiswa tingkat akhir, dosen peneliti, maupun praktisi ekonomi, membuktikan hubungan sebab-akibat (*causal inference*) dari data non-eksperimental adalah sebuah tantangan klasik. Berbeda dengan uji klinis di laboratorium yang bisa dikendalikan, data sosial-ekonomi di dunia nyata sering kali dipenuhi oleh bias seleksi (*selection bias*). Di sinilah pentingnya memahami tutorial Propensity Score Matching PSM di Python untuk data non-eksperimental secara mendalam agar hasil riset Anda tidak terbantahkan oleh penguji.
Secara psikologis, peneliti sering merasa cemas ketika variabel perancu (*confounding variables*) membuat model ekonometrika mereka gagal memvalidasi hipotesis. Anda mungkin punya data survei ribuan responden, tetapi kelompok perlakuan (*treatment group*) dan kelompok kontrol (*control group*) tidak seimbang secara karakteristik dasar. Artikel ini akan memandu Anda meredakan kecemasan akademik tersebut melalui penerapan teknis yang rapi menggunakan bahasa pemrograman Python.
Baca selengkapnya Penerapan Machine Learning dan Inferensi Kausal dalam Ekonometrika
Memahami Akar Masalah: Mengapa Data Non-Eksperimental Butuh PSM?
Dalam analisis kebijakan ekonomi atau evaluasi program, kita sering ingin tahu: “Apakah pelatihan kerja benar-benar menaikkan pendapatan peserta?” Secara intuitif, kita membandingkan pendapatan peserta pelatihan dengan yang tidak ikut. Namun, masalahnya muncul karena mereka yang ikut pelatihan mungkin memang lebih termotivasi sejak awal.
Tanpa penyesuaian, estimasi dampak yang Anda hasilkan akan bias. Metode Propensity Score Matching (PSM) bekerja dengan cara mereduksi dimensi karakteristik kovariat yang banyak itu menjadi satu skor kecenderungan tunggal (probabilitas seseorang masuk ke dalam kelompok perlakuan berdasarkan karakteristiknya).
Prinsip Kerja Propensity Score Matching dalam Ekonometrika
Sebelum masuk ke kode Python, mari samakan persepsi mengenai tahapan krusial dalam PSM:
- Estimasi Skor Propensity: Menggunakan regresi logistik (*logit*) atau probit untuk memprediksi probabilitas partisipasi berdasarkan variabel kovariat.
- Matching (Pencocokan): Memasangkan individu dari kelompok perlakuan dengan individu di kelompok kontrol yang memiliki skor proporsi yang hampir sama (menggunakan teknik seperti *nearest neighbor matching*).
- Evaluasi Keseimbangan (*Balance Checking*): Memastikan bahwa setelah dicocokkan, perbedaan karakteristik antara kedua kelompok sudah hilang atau sangat kecil (bias berkurang).
- Estimasi Efek Treatment: Menghitung *Average Treatment Effect on the Treated* (ATT).
Persiapan Lingkungan Kerja di Python
Jangan khawatir jika Anda bukan *data scientist* tingkat lanjut. Python menyediakan pustaka yang sangat ramah peneliti untuk urusan *causal inference*. Kita akan menggunakan pustaka standar seperti pandas, numpy, statsmodels, serta modul khusus causalml atau pustaka *matching* sederhana.
Untuk kebutuhan praktis ekonomi, mari kita buat simulasi kode dasar menggunakan statsmodels untuk estimasi logit dan logika *matching* manual atau memakai pustaka pymatch.
import statsmodels.api as sm
import statsmodels.formula.api as smf
import numpy as np
import pandas as pd
# Contoh simulasi dataFrame ekonomi
# df = pd.read_csv('data_kebijakan_ekonomi.csv')
Langkah Demi Langkah Eksekusi PSM di Python
Mari kita bedah alur kerjanya ke dalam baris kode yang transparan dan mudah diaudit oleh tim penilai atau reviewer jurnal.
1. Estimasi Propensity Score dengan Regresi Logistik
Langkah pertama adalah memodelkan probabilitas individu menerima *treatment* (misal: variabel diterima_bantuan, bernilai 1 atau 0) berdasarkan variabel sosio-demografis seperti umur, pendidikan, dan pendapatan awal.
# Model Logit untuk menghitung propensity score
formula_ps = "diterima_bantuan ~ umur + tingkat_pendidikan + pendapatan_awal + tanggungan_keluarga"
ps_model = smf.logit(formula_ps, data=df).fit()
# Menyimpan hasil prediksi skor ke dalam dataframe
df['propensity_score'] = ps_model.predict()
2. Melakukan Matching (Pencocokan Skor)
Setelah setiap observasi memiliki skor antara 0 dan 1, tugas berikutnya adalah mencari pasangan (*nearest neighbor*). Individu dari kelompok perlakuan dengan skor 0.45 akan dipasangkan dengan kelompok kontrol yang memiliki skor 0.45 juga.
Tips E-E-A-T: Selalu tetapkan batas toleransi (*caliper*) yang ketat, misalnya 0.05, untuk menghindari pencocokan yang ‘dipaksakan’ antara individu yang sebenarnya karakteristik dasarnya jauh berbeda.
3. Uji Keseimbangan Kovariat (Balance Test)
Sebuah riset ekonomi yang kredibel wajib menyertakan tabel *standardized mean difference* (SMD) sebelum dan sesudah *matching*. Jika nilai SMD di bawah 0.1 setelah *matching*, maka asumsi keseimbangan data Anda umumnya sudah diterima secara akademis.
Pertanyaan yang Sering Diajukan (FAQ)
Apa bedanya Propensity Score Matching dengan Regresi Linear biasa?
Regresi linear mengasumsikan hubungan linier dan sering gagal mengatasi bias seleksi jika ada *confounding* non-linear. PSM merestrukturisasi sampel sedemikian rupa sehingga menyerupai eksperimen acak (*quasi-experiment*), membuat perbandingan efek menjadi jauh lebih valid secara kausal.
Bagaimana jika setelah matching ukuran sampel saya menyusut drastis?
Ini adalah dilema umum. Jika banyak data kontrol yang terbuang karena tidak punya pasangan yang cocok, artinya *overlap* data Anda lemah. Anda bisa melonggarkan sedikit parameter *caliper* atau beralih ke metode lain seperti *Propensity Score Weighting* (IPW).
Apakah PSM bisa diterapkan untuk data time-series?
PSM secara tradisional dirancang untuk data cross-section. Namun, perkembangannya kini bisa dikombinasikan dengan *Difference-in-Differences* (DiD) menjadi metode *PSM-DiD* untuk menangkap tren waktu pada data panel non-eksperimental.
Kesimpulan dan Langkah Selanjutnya
Menguasai teknik kausalitas seperti PSM di Python memberikan nilai tambah yang masif bagi kredibilitas riset ekonomi Anda. Dengan mereduksi bias seleksi secara matematis, argumen kebijakan yang Anda tawarkan akan jauh lebih tajam dan objektif.
Ingin memperdalam metodologi riset ekonomi, teknik ekonometrika tingkat lanjut, atau studi kasus pengolahan data lainnya? Kunjungi Zona Ekonomi untuk mendapatkan referensi artikel ilmiah, panduan analisis data, dan wawasan ekonomi terkini yang dirancang khusus untuk akademisi dan masyarakat cerdas.