Python-2x2析因设计资料方差分析

本文2243字12图,预计阅读需14分钟.

析因设计(Facorial design)是将两个或两个以上因素的各种水平进行排列组合、交叉分组的实验设计,是对影响因素的作用进行全面分析的设计方法,可以研究两个或者两个以上因素多个水平的效应,也可以研究各因素之间是否有交互作用并找到最佳组合。

常见析因设计有: 2x2析因设计、IxJ两因素析因设计和IxJxK三因素析因设计。

处理组数等于各因素水平之积,如两因素同时进行实验,每个因素取两个水平,实验总组合数为2x2=4;若有3因素,每个因素取4个水平,实验总的组合数为4x4x4=64;下表有3各因素,各有2/2/3个因素,实验总组合数为2x2x3=12。

析因设计资料的因素效应

1.单独效应,其他因素水平固定时,同一因素不同水平间的差别;

2.主效应,某一因素各水平之间的平均差别;

3.交互作用,当某因素的各个单独效应随另一因素变化而变化时,则因素之间存在交互作用(interaction)。

前面学习的完全随机设计、随机区组设计和拉丁发设计资料的方差分析时不考虑交互作用,析因设计、正交设计资料方差分析时需要考虑交互作用,如观察2个因素的效应,交互作用为A*B,若观察3个因素的效应,一级交互作用为A*B、B*C、A*C,二级交互作用为A*B*C。

析因设计应注意的几个问题

1.实验时,因素同时实加,注意同裂区设计区别,裂区设计因素施加存在顺序;

2.因素之间在专业上地位平等,表现在统计分析时所用误差相同;

3.无交互作用时,一般应排除交互项,再次计算各因素主效应。

数据来源

孙振球主编的《医学统计学》第4版,例11-1,将20只家兔随机等分4组,每组5只进行损伤后的缝合实验,欲比较不同缝合方法及缝合后时间对轴突通过率的影响,试做析因设计的方差分析,数据见表1。

上述2x2两因素实验设计中:

1.单独效应:当A因素固定在1水平时,B因素单独效应为20;当A因素固定在2水平时,B因素单独效应为24;当B因素固定在1水平时,A因素单独效应为4;当B因素固定在2水平时,A因素单独效应为8。

2.主效应:A因素单独效应为6(8+4=12/2=6,A因素在B因素不同水平下的单独效应的平均);B因素单独效应为22(20+24=44/2=22,B因素在A因素不同水平下的单独效应的平均)。

3.交互作用:AB的交互作用=BA的交互作用=2,AB的交互作用[(a2b2-a1b2)-(a2b1-a1b1)]/2=(8-4)/2=2,BA的交互作用[(a2b2-a2b1)-(a1b2-a1b1)]/2=(24-220/2=2。

检验假设

H0,A:两种缝合方式间轴突通过率相同(A因素主效应=0)

H1,A:两种缝合方式间轴突通过率不同(A因素主效应≠0)

H0,B:不同时间轴突通过率相同(B因素交互作用=0)

H1,B:不同时间轴突通过率不同(B因素交互作用≠0)

H0,AB:缝合方式与时间存在交互作用(AB因素主效应=0)

H1,AB:缝合方式与时间不存在交互作用(AB因素主效应≠0)

α=0.05

Python语言操作

Step1:导入模块和数据导入

Step2:建模、拟合数据

Step3:结果

结论

F(Method)=0.600,P=0.450,按照α=0.05检验水准,不拒绝H0,差异无统计学意义,尚不能认为两种缝合方式间轴突通过率不同(A因素主效应≠0);

F(Time)=0.8607,P=0.012,按照α=0.05检验水准,拒绝H0,接受H1,差异有统计学意义,可以认为不同时间轴突通过率不同(B因素交互作用≠0);

F(Method*Time)=0.067,P=0.800,按照α=0.05检验水准,不拒绝H0,差异无统计学意义,尚不能认为缝合方式与时间不存在交互作用(AB因素主效应≠0);

由于本研究Method,Time两因素交互作用无统计学意义,将交互项删除,分析两因素的主效应。

F(Method)=0.635,P=0.437,按照α=0.05检验水准,不拒绝H0,差异无统计学意义,尚不能认为两种缝合方式间轴突通过率不同(A因素主效应≠0);

F(Time)=8.535,P=0.010,按照α=0.05检验水准,拒绝H0,接受H1,差异有统计学意义,可以认为不同时间轴突通过率不同(B因素交互作用≠0);

结论:尚不能认为两种缝合方法对神经轴突通过率有影响。

代码:

import pandas as pd

df=pd.read_csv("C:\\Users\\lenovo\\Desktop\\xy.csv")

formula = "Pro~C(Method)+C(Time)+C(Method):C(Time)"

anova_results = anova_lm(ols(formula,df).fit())

print(anova_results)

formula = "Pro~C(Method)+C(Time)"

anova_results = anova_lm(ols(formula,df).fit())

print(anova_results)

参考文献:

孙振球.医学统计学[M].第4版,北京:人民卫生出版社,2016.

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180515G0AN6700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券