双因素方差分析(代码)

262 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情

总结:此文为12月更文计划第三天第八篇。

今天继续上次的学习, 双因素方差分析的代码研究:

双因素方差分析 分为两种,第一种是无交互作用的双因素方差分析,第二种是有交互作用的双因素方差分析。

首先是无交互作用的双因素方差分析:

数据为花朵数据,数据如下:

image.png

image.png

其中含有的特征为:environment,genotype,Particle_drop_rate,First_flowering,Full_bloom, 我将要使用相关特征来进行花瓣掉落率的研究与学习

无交互作用的双因素方差分析

import pandas as pd
#import numpy as np
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
from scipy import stats
shuju = pd.read_csv('hua.csv', encoding="gbk")
shuju.head()
print(shuju.head())
formula='Particle_drop_rate ~C(genotype)+C(First_flowering)+C(Full_bloom):C(environment)'
shuju_anova_est=ols(formula,data=shuju).fit()
print(shuju_anova_est.summary2())
model=ols(formula,data=shuju).fit()
print(shuju_anova_est)

输出的结果如下:

image.png

image.png

image.png
  1. Bartlett对各行业总体方差的齐性检验知,p=0.868>0.05,不显著。说明四个总体方差没有显著差异,符合方差分析要求。
  2. 对四个总体均值检验,p= 2.571125e-10<0.01,拒绝假设,即认为四个均值不相同。四个行业的服务质量显著不同。
  3. 利用线性模型拟合,各行业对投诉次数影响均不显著。显著水平均大于0.05.
  4. 由多重检验结果,只有行业3与4的均值之间在0.05水平下有显著差异。其他行业服务质量差异不明显。

有交互作用的双因素方差分析

import pandas as pd
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
import statsmodels.api as sm

shuju = pd.read_csv('hua.csv', encoding="gbk")
shuju.head()
print(shuju.head())
formula='genotype ~C(environment)+C(genotype)+C(environment):C(genotype)'
shuju_anova_inter=sm.stats.anova_lm(ols(formula,data=shuju).fit())
print(shuju_anova_inter)
print(ols(formula,data=shuju).fit().rsquared)

输出的结果如下:

image.png