Deneysel veri kurulumu

Python ile Deney Tasarımı

James Chapman

Curriculum Manager, DataCamp

Rastgeleleştirmenin sorunu

1) Dengesizlik sorunu: gruplarda farklı sayıda denek

İçlerinde farklı sayıda denek olan iki grup.

Python ile Deney Tasarımı

Rastgeleleştirmenin sorunu

2) Eş değişken sorunu: Bazı eş değişkenlerde yüksek değişkenlik → rastgeleleştirmede grup dengesizlikleri

Tepki süreleri üzerindeki yaş etkisini ölçmek için tasarlanmış kontrol ve tedavi grupları. İki grupta fiziksel uygunluk dağılımı eşit değil; bu, deneyin ana odağı olmasa da tepki süresini etkileyebilir.

Sonuç: tedavi etkisini ölçmek daha zor!

Python ile Deney Tasarımı

Blok rastgeleleştirme

 

  • Önce boyutu $n$ olan bloklara ayırın, sonra rastgele bölün
    • Dengesizlik sorununu giderir

Turuncu ve beyaz karelerden oluşan iki ızgarayla blok rastgeleleştirme örneği

  • 24 denek iki gruba ayrılır, sonra rastgeleleştirilir
Python ile Deney Tasarımı

Veri setimiz

  • E-ticaret veri seti (ecom) (1000 denek)
    • Ortalama sepet boyutu
    • Web sitesinde ortalama süre
    • Güçlü kullanıcı (Web sitesinde günde ort. 40+ dakika)
   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
Python ile Deney Tasarımı

Python'da blok rastgeleleştirme

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
Python ile Deney Tasarımı

Bölünmeleri görselleştirme

 

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()

Karıştırıcı (confounding) = etkiyi tedaviden ziyade değişken tetikleyebilir

 

İki yarı saydam normal benzeri dağılım gösteren bir seaborn dağılım grafiği. Daha büyük mavi ve biraz sağa kaymış daha küçük turuncu dağılım kısmen örtüşüyor

Python ile Deney Tasarımı

Tabakalı rastgeleleştirme

 

  • Önce eş değişken(ler)e göre bölme
    • Sonra rastgeleleştirme
  • Yeşil = Tüm güçlü kullanıcılar (Sarı = Güçlü olmayanlar)
    • Ardından Tedavi/Kontrol ayrımı
  • Eş değişken/karıştırıcı sorununu giderir
  • Birden çok eş değişken için yapılabilir, ancak karmaşıklaşır

Biri yeşil, biri sarı iki veri ızgarası. Hücrelerde T veya C var ve sarı ızgara daha büyük

Python ile Deney Tasarımı

İlk tabakamız

  • Güçlü kullanıcıları ayırın
  • Tedavi/Kontrol için örnekleyin
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'
Python ile Deney Tasarımı

İkinci tabaka

  • Güçlü olmayan kullanıcıları ayırın
  • Tedavi/Kontrol için örnekleyin
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'
Python ile Deney Tasarımı

Tabakalaştırmayı doğrulama

  • Blokları ve grupları birleştirin
  • Dağılımı kontrol için groupby kullanın
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
Python ile Deney Tasarımı

Hadi pratik yapalım!

Python ile Deney Tasarımı

Preparing Video For Download...