Python实现双因素方法分析(Two-Way ANOVA)

导入包

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

实现

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,这表明在阳光照射和浇水频率之间没有显著影响。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值