Penyiapan data eksperimen

Perancangan Eksperimen dengan Python

James Chapman

Curriculum Manager, DataCamp

Masalah pada randomisasi

1) Masalah ketidakseimbangan: jumlah subjek berbeda antar grup

Dua grup dengan jumlah subjek berbeda.

Perancangan Eksperimen dengan Python

Masalah pada randomisasi

2) Masalah kovariat: Variabilitas kovariat tinggi → ketidakseimbangan grup saat randomisasi

Grup kontrol dan perlakuan untuk mengukur dampak usia pada waktu reaksi. Kedua grup memiliki distribusi kebugaran fisik yang tidak seimbang, yang meski bukan fokus utama eksperimen, dapat memengaruhi variabel waktu reaksi.

Hasil: lebih sulit mengukur efek perlakuan!

Perancangan Eksperimen dengan Python

Randomisasi blok

 

  • Bagi ke blok berukuran $n$ terlebih dulu lalu acak
    • Memperbaiki masalah ketidakseimbangan

Contoh randomisasi blok yang menampilkan dua kisi kotak oranye dan putih

  • 24 subjek dibagi dua grup lalu diacak
Perancangan Eksperimen dengan Python

Dataset kita

  • Dataset e-commerce (ecom) (1000 subjek)
    • Rata-rata ukuran keranjang
    • Rata-rata waktu di situs
    • Power user (Rata-rata 40+ menit/hari di situs)
   basket_size  web_time  power_user
0          227         7           0
1          123         5           0
2           98        16           0
3          211        45           1
4          133        17           0
Perancangan Eksperimen dengan Python

Randomisasi blok di Python

group1 = ecom.sample(frac=0.5, random_state=42, replace=False)
group1['Block'] = 1
group2 = ecom.drop(group1.index)
group2['Block'] = 2
print(len(group1), len(group2))
500,500
Perancangan Eksperimen dengan Python

Memvisualkan pemisahan

 

import seaborn as sns
import matplotlib.pyplot as plt
sns.displot(data=ecom, 
            x='basket_size', 
            hue='power_user', 
            fill=True, 
            kind='kde')    
plt.show()

Confounding = variabel yang mungkin menyebabkan efek, bukan perlakuan

 

Plot distribusi seaborn yang menampilkan dua distribusi mirip normal dan sedikit tembus pandang. Satu biru lebih besar dan satu oranye lebih kecil, saling tumpang tindih, dengan oranye lebih ke kanan

Perancangan Eksperimen dengan Python

Randomisasi berstrata

 

  • Bagi berdasarkan kovariat terlebih dulu
    • Lalu acak
  • Hijau = Semua power user (Kuning = Bukan power user)
    • Lalu bagi Perlakuan/Kontrol
  • Memperbaiki masalah kovariat/konfunder
  • Bisa untuk banyak kovariat — tetapi jadi kompleks

Gambar dua kisi data, satu hijau dan satu kuning. Keduanya berisi huruf T atau C di semua sel dan kisi kuning lebih besar

Perancangan Eksperimen dengan Python

Strata pertama kita

  • Pisahkan power user
  • Sample ke Perlakuan/Kontrol
strata_1 = ecom[ecom['power_user'] == 1]
strata_1['Block'] = 1

strata_1_g1 = strata_1.sample(frac=0.5, replace=False) strata_1_g1['T_C'] = 'T'
strata_1_g2 = strata_1.drop(strata_1_g1.index) strata_1_g2['T_C'] = 'C'
Perancangan Eksperimen dengan Python

Strata kedua

  • Pisahkan yang bukan power user
  • Sample ke Perlakuan/Kontrol
strata_2 = ecom.drop(strata_1.index)
strata_2['Block'] = 2

strata_2_g1 = strata_2.sample(frac=0.5, replace=False) strata_2_g1['T_C'] = 'T' strata_2_g2 = strata_2.drop(strata_2_g1.index) strata_2_g2['T_C'] = 'C'
Perancangan Eksperimen dengan Python

Konfirmasi stratifikasi

  • Gabungkan blok dan grup
  • Gunakan groupby untuk cek alokasi
ecom_stratified = pd.concat([strata_1_g1, strata_1_g2, strata_2_g1, strata_2_g2])

ecom_stratified.groupby(['Block','T_C', 'power_user']).size()
Block  T_C  power_user
1      C    1              50
       T    1              50
2      C    0             450
       T    0             450
Perancangan Eksperimen dengan Python

Ayo berlatih!

Perancangan Eksperimen dengan Python

Preparing Video For Download...