Налаштування експериментів

Експериментальний дизайн у Python

James Chapman

Curriculum Manager, DataCamp

Визначення Experimental Design

 

  • Це процес
  • Об'єктивний і керований підхід
  • Робити конкретні висновки
    • Відносно гіпотези

експериментальний дизайн.png

1 https://www.sciencedirect.com/topics/earth-and-planetary-sciences/experimental-design
Експериментальний дизайн у Python

Формулюємо надійні твердження

X ймовірно вплинуло на Y. Ймовірно існує невеликий ризик помилки

 

  • Точна, кількісна мова

Аналіз p-value вказує, що X вплинуло на Y з ризиком 10% помилки I типу

  • Помилка I типу: хибно відхилити нульову гіпотезу

 

  • Мета: експериментальний дизайн і статистичний аналіз
Експериментальний дизайн у Python

Навіщо експериментальний дизайн?

 

Корисно в багатьох сферах:

  • Медичні дослідження
  • Маркетинг
  • Аналітика продукту
  • Сільське господарство
  • Державна політика

чому.png

Експериментальний дизайн у Python

Декілька термінів…

     

  • Subjects = над чим ми експериментуємо (люди, працівники, користувачі тощо)

Об'єкт дослідження: у цьому разі — людина.

Експериментальний дизайн у Python

Декілька термінів…

     

  • Subjects = над чим ми експериментуємо (люди, працівники, користувачі тощо)
  • Treatment = певна зміна, надана одній групі

Застосування впливу до групи об'єктів.

Експериментальний дизайн у Python

Декілька термінів…

     

  • Subjects = над чим ми експериментуємо (люди, працівники, користувачі тощо)
  • Treatment = певна зміна, надана одній групі

Застосування впливу до експериментальної групи.

Експериментальний дизайн у Python

Декілька термінів…

     

  • Subjects = над чим ми експериментуємо (люди, працівники, користувачі тощо)
  • Treatment = певна зміна, надана одній групі
  • Control = група без змін

Об'єкти поділено на експериментальну й контрольну групи.

Експериментальний дизайн у Python

Призначення об'єктів у групи

     

  • Як розподілити об'єкти по групах?
    • Варіант 1 — невипадковий («розрізати» DataFrame)
    • Варіант 2 — випадкове призначення

     

  • Приклад: 200 об'єктів із зростом у датафреймі heights
    id  height
0    0  177.98
1    1  174.17
2    2  178.89
Експериментальний дизайн у Python

Невипадкове призначення

 

Розподіл через зрізи DataFrame

group1_nonrandom = heights.iloc[0:100,:]
group2_nonrandom = heights.iloc[100:,:]

compare_df = pd.concat( [group1_nonrandom['height'].describe(), group2_nonrandom['height'].describe()], axis=1) compare_df.columns = ['group1', 'group2'] print(compare_df)
  • Дуже різні! (середнє відрізняється на 9 см)

 

 

       group1  group2
count  100.00  100.00
mean   170.32  179.19 <--
std      3.28    3.50
min    159.28  175.03
25%    168.06  176.57
50%    170.75  178.03
75%    173.09  180.79
max    174.92  191.32
Експериментальний дизайн у Python

Випадкове призначення

     

  • Використайте .sample()
    • n або frac (частка 0–1)
group1 = heights.sample(frac=0.5,
                        replace=False,
                        random_state=42)

group2 = heights.drop(group1.index)
print(compare_df)
  • Набагато ближче! (<1 см)

 

       group1  group2
count  100.00  100.00
mean   175.10  174.41 <--
std      5.39    5.78
min    163.07  159.28
25%    171.32  170.17
50%    175.22  174.86
75%    178.32  177.85
max    189.78  191.32
Експериментальний дизайн у Python

Підсумок призначення

 

  • Об'єкти слід призначати до груп випадково
    • Щоб коректно приписати спостережені зміни

 

  • Випадкове призначення об'єктів: .sample()
  • Перевірка відмінностей: .describe()

Об'єкти випадково призначені до експериментальної та контрольної груп.

Експериментальний дизайн у Python

Давайте потренуємось!

Експериментальний дизайн у Python

Preparing Video For Download...