导入包
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
导入数据
#create data
df = pd.DataFrame({'water': np.repeat(['daily', 'weekly'], 15),
'sun': np.tile(np.repeat(['low', 'med', 'high'], 5), 2),
'height': [6, 6, 6, 5, 6, 5, 5, 6, 4, 5,
6, 6, 7, 8, 7, 3, 4, 4, 4, 5,
4, 4, 4, 4, 4, 5, 6, 6, 7, 8]})
前十行数据
df[:10]
water sun height
0 daily low 6
1 daily low 6
2 daily low 6
3 daily low 5
4 daily low 6
5 daily med 5
6 daily med 5
7 daily med 6
8 daily med 4
9 daily med 5
实现大连人流医院 http://www.84211111.cn/
model = ols('height ~ C(water) + C(sun) + C(water):C(sun)', data=df).fit()
sm.stats.anova_lm(model)
NOTES
'height ~ C(water) + C(sun) + C(water):C(sun)' 代表的含义是height作为因变量,water、sun、water和sun的交互效应作为自变量,使用ols建立了线性模型。C()的含义是设置该类为“分类型”的数据(有别于数值型数据,数据型数据不需要加,会报错!),:则是交互效应,与*一致。
如果需要再增加其他的自变量直接在后面增加即可
结果
sum_sq df F PR(>F)
C(water) 8.533333 1.0 16.0000 0.000527
C(sun) 24.866667 2.0 23.3125 0.000002
C(water):C(sun) 2.466667 2.0 2.3125 0.120667
Residual 12.800000 24.0 NaN NaN
我们可以看到,水和阳光的p值均小于0.05,因此这两个因素对植物高度在统计学上的有着显著影响。而水和阳光交互效应的p值0.120667 > 0.05,这表明在阳光照射和浇水频率之间没有显著影响。