重复测量方差分析---R语言

使用场景:

  • 同一组被试在多个时间点的测量:例如,在药物实验中,研究者希望了解某种药物对同一组患者在多个时间点的效果。
  • 同一组被试在不同条件下的测量:例如,心理学实验中,研究者可能希望了解同一组被试在不同刺激条件下的反应差异。

使用前提:

  • 独立性:要求各组数据相互独立,互不相关
  • 正态性:各组数据呈现正态分布
  • 方差齐性:各组方差呈现反差齐性
  • 球形对称:检验不同测量之间的插值的方差是否相等

准备数据:

  1. 将数据在Excel中分好组
IDcondition_1condition_2value
1A1B111
2A1B212
3A1B111
nA3B321
  1. 将数据转换为.csv文件
  2. 导入数据
testvalue <- read.csv("path/data.csv")
  1. 将所有分类变量设置为因子
testvalue$ID <- as.factor(testvalue$ID)
testvalue$A <- as.factor(testvalue$A)
testvalue$B <- as.factor(testvalue$B)
  1. 正态性检验
    如果所有的点都离直线很近,落在置信区间内则说明正态性良好;
    如果不符合正态,那么近似正态也是可以的,或者当受试者数量大于等于30时数据是默认正态的。
    不符合正态性,则可以通过数据转换,可参考非正态到正态的转换------打酱油的工程师
install.packages("car")
library(car)
par(mfrow = c(1, 2))#在同一绘图区绘制1行2列的图形
qqPlot(lm(value~condition_1, data = testvalue), simulate = TRUE, main = 'QQ Plot', labels = FALSE)
qqPlot(lm(value~condition_2, data = testvalue), simulate = TRUE, main = 'QQ Plot', labels = FALSE)
par(opar)#还原
  1. 方差齐性检验
    使用 Bartlett 检验进行方差齐性检验(p > 0.05 说明方差齐整)
bartlett.test(value~condition_1, data = testvalue)
bartlett.test(value~condition_2, data = testvalue)
  1. 球形检验
    本处不另外进行检验,以下方法都会带有球形检验

  2. 重复测量方差分析

  • 使用ezANOVA
install.packages("ez")
library(ez)

result_anova <- ezANOVA(
  data = testvalue,
  dv = .(value),  
  wid = .(ID),         # 指定参与者ID
  within = .(condition_1, condition_2), # 指定被试内因素(条件)
  detailed = TRUE,       # 如果需要详细输出
  type = 3               # 方差分析的类型
)
  • 使用bruceR
install.packages("emmeans")
install.packages("bruceR")
library(emmeans)
library(bruceR)

result_manova <- MANOVA(
  data = testvalue,
  dv = "value",  
  subID = "ID",      # 指定参与者ID
  within = c("condition_1", "condition_1") # 指定被试内因素(条件)
)

# 成对比较(事后检验)
emmeans_condition_1_by_condition_2 <- EMMEANS(result_manova, "condition_1", by="condition_2")
# 等同于
# emmeans_result <- emmeans(result_manova, pairwise ~ condition_1 | condition_2)

# 成对比较(事后检验)
emmeans_condition_2_by_condition_1 <- EMMEANS(result_manova, "condition_2", by="condition_1")
  1. 绘制交互作用(看个人需要)
with(testvalue, interaction.plot(condition_2, condition_2, value,type='b',
col=c('red','blue'),pch=1:2))

【参考文章】:
R语言做两因素重复测量方差分析------Epiphany心理
R语言和医学统计学(6):重复测量方差分析------医学和生信笔记

R语言是一种常用的统计编程语言,可以用于执行各种统计分析,包括单因素重复测量方差分析。在进行单因素重复测量方差分析时,我们可以使用R语言中的“aov”函数。 首先,我们需要准备数据,数据应该是一个数据框,每个变量代表一个重复测量因素的不同水平。我们假设有3个不同的水平:A,B和C。每个水平下对应了多个观测值。我们可以用以下代码创建一个简单的数据框: data <- data.frame( level = factor(rep(c("A", "B", "C"), each = 5)), measurement = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) ) 接下来,我们可以使用“aov”函数执行单因素重复测量方差分析。我们将使用“Error()”函数指定一个误差因素,该因素代表了每个水平下的重复测量。以下是一个示例代码: model <- aov(measurement ~ level + Error(subject/level), data = data) 在这个模型中,我们使用“measurement ~ level”指定了主要效应。而使用“Error(subject/level)”指定了重复测量的误差因素,并假设因素“subject”代表了受试者标识。执行这个模型后,我们可以使用“summary”函数查看结果: summary(model) 通过“summary”函数,我们可以得到重复测量方差分析的结果,包括F值、p值和残差误差等。 此外,我们还可以使用其他函数和方法对结果进行进一步的分析和可视化。例如,我们可以使用“TukeyHSD”函数进行事后多重比较分析,以确定哪些水平之间存在显著差异。我们还可以使用绘图函数(如“interaction.plot”和“boxplot”)来可视化结果。 总之,通过使用R语言中的“aov”函数和其他相关函数,我们可以进行单因素重复测量方差分析,并通过分析结果进行统计推断和结果展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值