Як виконати тристоронній дисперсійний аналіз на python


Тристоронній дисперсійний аналіз використовується, щоб визначити, чи існує статистично значуща різниця між середніми значеннями трьох або більше незалежних груп, які були розподілені між трьома факторами.

У наступному прикладі показано, як виконати тристоронній дисперсійний аналіз у Python.

Приклад: тристоронній дисперсійний аналіз у Python

Припустімо, що дослідник хоче визначити, чи призводять дві тренувальні програми до різного середнього покращення висоти стрибка серед студентських баскетболістів.

Дослідник підозрює, що стать і поділ (Розділ I або II) також можуть впливати на висоту стрибка, тому він також збирає дані про ці фактори.

Його мета — виконати тристоронній дисперсійний аналіз, щоб визначити, як програма тренувань, стать і класифікація впливають на висоту стрибка.

Виконайте такі кроки, щоб виконати цей тристоронній дисперсійний аналіз у Python:

Крок 1: Створіть дані

Спочатку давайте створимо pandas DataFrame для зберігання даних:

 import numpy as np
import pandas as pd

#createDataFrame
df = pd. DataFrame ({' program ': np.repeat ([1,2],20),
                   ' gender ': np. tile (np. repeat (['M', 'F'], 10), 2),
                   ' division ': np. tile (np. repeat ([1, 2], 5), 4),
                   ' height ': [7, 7, 8, 8, 7, 6, 6, 5, 6, 5,
                              5, 5, 4, 5, 4, 3, 3, 4, 3, 3,
                              6, 6, 5, 4, 5, 4, 5, 4, 4, 3,
                              2, 2, 1, 4, 4, 2, 1, 1, 2, 1]})

#view first ten rows of DataFrame 
df[:10]

	program gender division height
0 1 M 1 7
1 1 M 1 7
2 1 M 1 8
3 1 M 1 8
4 1 M 1 7
5 1 M 2 6
6 1 M 2 6
7 1 M 2 5
8 1 M 2 6
9 1 M 2 5

Крок 2: Виконайте тристоронній дисперсійний аналіз

Далі ми можемо використати функцію anova_lm() із бібліотеки statsmodels для виконання тристороннього дисперсійного аналізу:

 import statsmodels. api as sm
from statsmodels. formula . api import ols

#perform three-way ANOVA
model = ols("""height ~ C(program) + C(gender) + C(division) +
               C(program):C(gender) + C(program):C(division) + C(gender):C(division) +
               C(program):C(gender):C(division)""", data=df) .fit ()

sm. stats . anova_lm (model, typ= 2 )

	                          sum_sq df F PR(>F)
C(program) 3.610000e+01 1.0 6.563636e+01 2.983934e-09
C(gender) 6.760000e+01 1.0 1.229091e+02 1.714432e-12
C(division) 1.960000e+01 1.0 3.563636e+01 1.185218e-06
C(program):C(gender) 2.621672e-30 1.0 4.766677e-30 1.000000e+00
C(program):C(division) 4.000000e-01 1.0 7.272727e-01 4.001069e-01
C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
C(program):C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
Residual 1.760000e+01 32.0 NaN NaN

Крок 3: Інтерпретація результатів

Стовпець Pr(>F) відображає значення p для кожного окремого фактора та взаємодію між факторами.

З результатів ми бачимо, що жодна взаємодія між трьома факторами не була статистично значущою.

Ми також бачимо, що кожен із трьох факторів (програма, стать і підрозділ) був статистично значущим із такими значеннями p:

  • P-значення програми : 0,00000000298
  • Р-значення статі : 0,00000000000171
  • Дивізіон Р-значення: 0,00000185

Підсумовуючи, ми б сказали, що тренувальна програма, стать і дивізіон є важливими показниками збільшення висоти стрибка у гравців.

Ми б також сказали, що між цими трьома факторами немає істотних ефектів взаємодії.

Додаткові ресурси

У наступних посібниках пояснюється, як адаптувати інші моделі ANOVA у Python:

Як виконати односторонній дисперсійний аналіз у Python
Як виконати двосторонній дисперсійний аналіз у Python
Як виконувати повторювані вимірювання ANOVA в Python

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *