统计推断与作图|第4期. 方差分析全解析

文摘   教育   2024-12-27 20:04   北京  
BE声明学写文章②



往期回顾

  REVIEWS  


1)统计推断与作图|第1期. 还在为统计学苦恼人儿看过来!

2)统计推断与作图|第2期. 统计分析前必不可少的正态性检验

3) 统计推断与作图|第3期. 吃透t检验,看这一篇就够!


当要对两组以上样本均数进行比较时,我们便需要用到方差分析,这种统计方法通过分析数据中的变异源来推断不同组之间是否存在显著差异。


MASCU

统计推断与作图




01

基本原理


方差分析的基本原理是通过比较不同组之间的差异(组间变异)和组内差异(组内变异)的大小来判断各组的均值是否相等。它的核心步骤如下:

1. 总变异:描述所有观测值与总体均值之间的差异。

2. 组间变异:描述不同组的均值与总体均值之间的差异。

3. 组内变异:描述同一组内观测值与该组均值之间的差异。

4. 通过计算F值(即组间变异与组内变异的比值),如果F值较大,说明组间差异大于组内差异,也就是是说各组均数可能存在显著差异。然后,使用p值来判断是否拒绝零假设(各组均值相等)。






02

前提条件


在使用方差分析之前,必须确保数据符合一定的前提条件。若数据不符合这些条件,检验的结果可能不准确,导致产生错误结论。进行方差分析的数据应满足如下假设:

1.正态性:每组数据应服从正态分布。

2.方差齐性:各组的方差应大致相等。若方差不齐,可考虑使用Welch’s ANOVA或进行数据转换(例如对数转换)。

3.独立性:各组样本应相互独立。对于重复测量数据,应使用重复测量ANOVA或混合效应模型。

相关内容与代码可见前两期推送。





03

方差分析分类


根据因素的数量和设计的不同,方差分析可分为几种类型:

1. 单因素方差分析

适用范围:只有一个自变量,且该自变量具有多个水平(例如不同的治疗方法)

可以使用箱线图展示每组数据的分布和中心趋势


R代码:

# 创建示例数据set.seed(123)data <- data.frame(  Treatment = rep(c("A", "B", "C"), each = 20),  BloodPressure = c(rnorm(20, mean=120, sd=10),                     rnorm(20, mean=125, sd=10),                     rnorm(20, mean=130, sd=10)))# 执行单因素方差分析anova_result <- aov(BloodPressure ~ Treatment, data = data)summary(anova_result)# 单因素方差分析的箱线图boxplot(BloodPressure ~ Treatment, data = data,         main = "Blood Pressure by Treatment",         xlab = "Treatment", ylab = "Blood Pressure",         col = c("lightblue", "lightgreen", "lightcoral"))


结果:


结果解读


Df:Treatment的自由度为2(有3个组,每组一个自由度);Residuals的自由度为57(样本总数60减去3个组数)。

Sum Sq(平方和):Treatment的平方和为972,表示组间差异的总量;Residuals的平方和为4848,表示组内差异的总量。

Mean Sq(均方):均方等于平方和除以相应的自由度,Treatment的均方为486,Residuals的均方为85。

F value(F统计量):F值是组间均方与组内均方的比值。这里F值为5.714,表示组间差异相对于组内差异较大。

Pr(>F)(p值):p值为0.00547,表示拒绝零假设,即认为至少有一个治疗方法的均值与其他方法显著不同。



2. 双因素方差分析

适用范围:分析两个因素对因变量的影响,且需要考虑它们的主效应和交互效应


R代码:

# 创建示例数据set.seed(123)data_2way <- data.frame(  Treatment = rep(c("A", "B", "C"), each = 20),  Gender = rep(c("Male", "Female"), each = 10, times = 3),  BloodPressure = c(rnorm(10, mean=120, sd=10), rnorm(10, mean=125, sd=10), rnorm(10, mean=130, sd=10), rnorm(10, mean=110, sd=10), rnorm(10, mean=115, sd=10), rnorm(10, mean=120, sd=10)))# 执行双因素方差分析anova_result_2way <- aov(BloodPressure ~ Treatment * Gender, data = data_2way)summary(anova_result_2way)# 绘制双因素方差分析的交互作用图interaction.plot(data_2way$Treatment, data_2way$Gender, data_2way $BloodPressure, xlab = "Treatment", ylab = "Blood Pressure", trace.label = "Gender")


结果:



结果解读:


Treatment:治疗方法的p值为0.15221,表明不同治疗方法对血压无显著影响。

Gender:性别的p值为0.87630,表明性别对血压无显著影响。

Treatment:Gender(交互作用):交互作用的p值为0.00139,表明治疗方法和性别的交互作用对血压有显著影响。

交互作用图显示两条曲线不平行,表明Treatment和Gender因素组合对响应变量有不同的影响,即交互作用显著


3. 重复测量方差分析

适用范围:分析两个因素对因变量的影响,且需要考虑它们的主效应和交互效应


R代码:

# 创建示例数据#应为长数据set.seed(123)data_rm <- data.frame(  ID = rep(1:10, each = 3),  # 10个个体,每个个体有3个时间点  Time = rep(c("Pre", "Post1", "Post2"), times = 10),  # 三个时间点  BloodPressure = c(rnorm(10, mean=120, sd=10),                     rnorm(10, mean=125, sd=10),                     rnorm(10, mean=130, sd=10)))# 执行重复测量方差分析anova_result_rm <- aov(BloodPressure ~ Time + Error(ID/Time), data = data_rm)summary(anova_result_rm)


结果:


结果解读:


Error: ID:表示每个个体之间的残差(个体的内在差异)。

Error: ID:Time:表示个体在各个时间点上的差异(即个体和时间因素的交互效应)。

Error: within:表示个体在重复测量(时间)内的误差。



4. 协方差分析

适用范围:在方差分析中控制一个或多个连续变量(协变量)对响应变量的影响(即考虑协变量的影响)


R代码:

# 创建示例数据set.seed(123)data <- data.frame(Treatment = rep(c("DrugA", "DrugB"), each = 10),  # 10个个体,每个治疗组  Age = c(rnorm(10, mean = 30, sd = 5), rnorm(10, mean = 40, sd = 5)),  # 年龄协变量  BloodPressure = c(rnorm(10, mean = 120, sd = 10), rnorm(10, mean = 125, sd = 10))  # 血压因变量)# 查看数据head(data)# 执行协方差分析:血压受治疗(Treatment)和年龄(Age)的影响ancova_model <- aov(BloodPressure ~ Treatment + Age, data = data)# 显示模型结果summary(ancova_model)


结果:


结果解读:


Treatment:F value =13.083 ,p-value = 0.00213,表明治疗(Treatment)对血压有显著影响,因为 p 值小于 0.05。因此拒绝原假设(即治疗没有效应),认为不同的治疗组对血压存在显著的影响。

Age:F value = 0.342,p-value = 0.56616,表明年龄(Age)对血压的影响不显著,因为 p 值大于 0.05。因此,我们无法拒绝原假设(即年龄对血压没有显著影响)。

在这个例子中,年龄作为协变量并未对血压有显著影响。

Residuals:Residuals 表示误差项,它的平方和(Sum Sq)和均方(Mean Sq)提供了数据中未被解释部分的估计。



今天的分享到这里就结束啦,你学会了吗?大家对于推送内容有任何问题或建议可以在公众号菜单栏“更多--读者的话” 栏目中提出,我们会尽快回复!


期待已久~临床科研交流群来啦!


(欢迎大家入群交流~若群满,请添加下方微信,备注:“进临床科研与统计_互助交流群” )







写在最后


“观科研”(点击进一步了解我们吧)是由一群北京协和医学院(清华大学医学部)的博士开创的公众号,初心是让医学科研有迹可循,帮助一线的医学科研人员更快地成长,希望大家支持与关注!

如果大家对分享医学科研知识感兴趣,特别欢迎加入我们,期待与您的相遇相识相知,也非常欢迎大家自主投稿,如果您有需要分享的内容或对我们有任何建议,可通过后台留言、
公众号菜单栏
“更多—读者的话”栏目进一步了解)或发送邮件至mascu_forever@163.com与我们交流并留下个人联系方式,我们会及时与您联系。

如果您觉得我们长期的干货推送对您的科研工作有所帮助,可以在合适的机会致谢(包括但不限于SCI论文、毕业论文等),格式如下:
 The authors thank the support of Skill Learning from Kaixin Doctor and MASCU (Medical Association with Science, Creativity, and Unity), Inc, Shenzhen, China (mascu_forever@163.com).


【大家的支持,是我们持续更新的动力!】


Pay attention!
微信公众号的推送规则发生改变(不再按照时间顺序来显示),如果没有将“观科研”设置为星标,你就可能错失里面的精彩推送。


点击“在看”,可参与讨论哦!

图文:奇观

审核:美观

编辑:云观

编审:静观

观科研
让医学科研有迹可循
 最新文章