ANOVA with interaction:
Measurement of fetal head circumference, by four observers in three fetuses, from a study investigating the reproducibility of ultrasonic fetal head circumference data.
Author: Thomas Haslwanter, Date: June-2014
%pylab inline
import pandas as pd
import urllib
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
Populating the interactive namespace from numpy and matplotlib
inFile = 'altman_12_6.txt'
url_base = 'https://raw.githubusercontent.com/thomas-haslwanter/statsintro_python/master/ipynb/Data/data_altman/'
url = url_base + inFile
data = genfromtxt(urllib.request.urlopen(url), delimiter=',')
# Bring them in dataframe-format
df = pd.DataFrame(data, columns=['hs', 'fetus', 'observer'])
formula = 'hs ~ C(fetus) + C(observer) + C(fetus):C(observer)'
lm = ols(formula, df).fit()
print(anova_lm(lm))
df sum_sq mean_sq F PR(>F) C(fetus) 2 324.008889 162.004444 2113.101449 1.051039e-27 C(observer) 3 1.198611 0.399537 5.211353 6.497055e-03 C(fetus):C(observer) 6 0.562222 0.093704 1.222222 3.295509e-01 Residual 24 1.840000 0.076667 NaN NaN