Настройка экспериментов

Планирование экспериментов в 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-значения показывает, что X повлияло на Y с риском ошибки 10% (ошибка I рода)

  • Ошибка I рода: ошибочное отклонение нулевой гипотезы

 

  • Цель: планирование эксперимента и статистический анализ
Планирование экспериментов в Python

Зачем нужно планирование эксперимента?

 

Применяется во многих областях:

  • Медицинские исследования
  • Маркетинг
  • Продуктовая аналитика
  • Сельское хозяйство
  • Государственная политика

why.png

Планирование экспериментов в Python

Немного терминологии...

     

  • Испытуемые = _то_, над чем проводится эксперимент (люди, сотрудники, пользователи и т. д.)

Испытуемый: в данном случае человек.

Планирование экспериментов в Python

Немного терминологии...

     

  • Испытуемые = _то_, над чем проводится эксперимент (люди, сотрудники, пользователи и т. д.)
  • Воздействие = изменение, применяемое к одной группе

Воздействие, применяемое к группе испытуемых.

Планирование экспериментов в Python

Немного терминологии...

     

  • Испытуемые = _то_, над чем проводится эксперимент (люди, сотрудники, пользователи и т. д.)
  • Воздействие = изменение, применяемое к одной группе

Воздействие, применяемое к экспериментальной группе.

Планирование экспериментов в Python

Немного терминологии...

     

  • Испытуемые = _то_, над чем проводится эксперимент (люди, сотрудники, пользователи и т. д.)
  • Воздействие = изменение, применяемое к одной группе
  • Контроль = группа, к которой изменение не применяется

Испытуемые, разделённые на экспериментальную и контрольную группы.

Планирование экспериментов в Python

Распределение испытуемых по группам

     

  • Как распределить испытуемых по группам?
    • Вариант 1 — нерандомный (разбиение DataFrame)
    • Вариант 2 — случайное распределение

     

  • Пример: рост 200 испытуемых в DataFrame 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...