配对样本t检验介绍
配对样本t检验(Paired Samples t-test),也叫配对t检验或相关样本t检验,是一种用于比较两组相关数据样本均值差异的统计方法。它通常用于比较相同个体或单位在不同时间点或条件下的测量值,目的是检验在两个条件下的均值是否存在显著差异。
1. 概念与背景
配对样本t检验适用于以下情况:
- 同一组对象在不同时间点进行测量(例如,治疗前后,或者实验前后)。
- 同一组对象在两种不同条件下进行测量(例如,同一批产品在两种不同环境下的表现)。
与独立样本t检验(Independent Samples t-test)不同,配对样本t检验关注的是差异值的分布,而不是两个样本本身的分布。
2. 应用条件
配对样本t检验的适用条件包括:
- 样本来自同一组个体或相互配对的个体(即样本之间相关)。
- 数据近似服从正态分布。
- 每一对数据之间是独立的。
3. 假设
- 原假设 H0H_0H0: 配对样本的均值差异为零,即两组数据的均值没有显著差异。
- 备择假设 H1H_1H1: 配对样本的均值差异不为零,即两组数据的均值有显著差异。
代码
1. 计算单个注视点的平均时长
result_RC_fixadura <- aggregate(CURRENT_FIX_DURATION ~ sub, Data1RC, mean)
result_IC_fixadura <- aggregate(CURRENT_FIX_DURATION ~ sub, Data1IC, mean)
- 这两行代码用于对两个数据集
Data1RC
和Data1IC
按照被试(sub
)进行分组,计算每个被试的注视点平均时长(CURRENT_FIX_DURATION
)。 aggregate()
函数将按被试(sub
)分组,并计算每组注视时长的均值。CURRENT_FIX_DURATION ~ sub
表示按sub
(被试)分组,计算每个被试的CURRENT_FIX_DURATION
(注视时长)均值。Data1RC
和Data1IC
分别表示 RC 任务和 IC 任务的原始数据集。mean
表示对每组数据进行均值计算。
2. 定义计算均值和标准误的函数
calculate_mean_se <- function(data_column) {
mean_value <- mean(data_column)
se_value <- sd(data_column) / sqrt(length(data_column))
return(list(mean = mean_value, se = se_value))
}
- 这个自定义函数
calculate_mean_se()
用于计算给定数据列的 均值 和 标准误。mean(data_column)
计算数据列的均值。sd(data_column) / sqrt(length(data_column))
计算标准误(标准差除以样本量的平方根)。- 返回值是一个包含均值和标准误的列表。
3. 定义计算Cohen's d(效应大小)函数
calculate_cohens_d <- function(data1, data2) {
paired_diff <- data1 - data2
mean_diff <- mean(paired_diff)
sd_diff <- sd(paired_diff)
cohen_d <- mean_diff / sd_diff
return(cohen_d)
}
- 这个函数
calculate_cohens_d()
用于计算 Cohen's d,一个衡量两组之间效应大小的指标。data1
和data2
是两组配对样本数据(RC任务和IC任务的注视时长)。paired_diff
计算两组数据的差异(data1 - data2
)。mean_diff
计算这些差异的均值。sd_diff
计算这些差异的标准差。cohen_d
是 Cohen's d 的值,即差异的均值与标准差的比值。
4. 计算RC任务和IC任务的注视时长的均值和标准误
RC_stats <- calculate_mean_se(result_RC_fixadura$CURRENT_FIX_DURATION)
IC_stats <- calculate_mean_se(result_IC_fixadura$CURRENT_FIX_DURATION)
- 这两行代码调用
calculate_mean_se()
函数,分别计算 RC 任务和 IC 任务的注视时长均值和标准误。 result_RC_fixadura$CURRENT_FIX_DURATION
提取 RC 任务的注视时长数据列。result_IC_fixadura$CURRENT_FIX_DURATION
提取 IC 任务的注视时长数据列。
5. 输出RC和IC任务的均值和标准误
cat("RC任务单个注视点平均时长:", RC_stats$mean, "\n")
cat("RC任务单个注视点标准误:", RC_stats$se, "\n")
cat("IC任务单个注视点平均时长:", IC_stats$mean, "\n")
cat("IC任务单个注视点标准误:", IC_stats$se, "\n")
- 使用
cat()
输出 RC 任务和 IC 任务的注视点平均时长和标准误。 RC_stats$mean
和RC_stats$se
分别获取 RC 任务的均值和标准误。IC_stats$mean
和IC_stats$se
分别获取 IC 任务的均值和标准误。
6. 进行配对样本t检验
result_mean_fixadura_t <- t.test(result_RC_fixadura$CURRENT_FIX_DURATION, result_IC_fixadura$CURRENT_FIX_DURATION, paired = TRUE)
print(result_mean_fixadura_t)
t.test()
用于进行 配对样本t检验,检验 RC 任务和 IC 任务的注视时长均值是否存在显著差异。paired = TRUE
表示这是一个配对样本t检验,假设每个被试在两种任务下都有注视时长数据。result_mean_fixadura_t
存储t检验的结果,print(result_mean_fixadura_t)
输出检验的详细结果(包括p值、均值差异等)。
7. 计算Cohen's d效应大小
cohen_d <- calculate_cohens_d(result_RC_fixadura$CURRENT_FIX_DURATION, result_IC_fixadura$CURRENT_FIX_DURATION)
cat("Cohen's d =", cohen_d, "\n")
- 使用之前定义的
calculate_cohens_d()
函数,计算 RC 任务和 IC 任务的注视时长差异的效应大小(Cohen's d)。 cat()
输出 Cohen's d 的值,用于衡量两组数据之间的效应大小。- Cohen's d的解释通常如下:
d = 0.2
表示小效应d = 0.5
表示中等效应d = 0.8
表示大效应
- Cohen's d的解释通常如下:
总结
# 计算每个被试在RC任务和IC任务中的注视时长均值
result_RC_fixadura <- aggregate(CURRENT_FIX_DURATION ~ sub, Data1RC, mean) # 计算RC任务的注视时长均值
result_IC_fixadura <- aggregate(CURRENT_FIX_DURATION ~ sub, Data1IC, mean) # 计算IC任务的注视时长均值
# 定义函数:计算均值和标准误
calculate_mean_se <- function(data_column) {
mean_value <- mean(data_column) # 计算均值
se_value <- sd(data_column) / sqrt(length(data_column)) # 计算标准误
return(list(mean = mean_value, se = se_value)) # 返回均值和标准误
}
# 定义函数:计算Cohen's d效应大小
calculate_cohens_d <- function(data1, data2) {
paired_diff <- data1 - data2 # 计算配对差异
mean_diff <- mean(paired_diff) # 计算差异的均值
sd_diff <- sd(paired_diff) # 计算差异的标准差
cohen_d <- mean_diff / sd_diff # 计算Cohen's d效应大小
return(cohen_d) # 返回Cohen's d
}
# 计算RC任务和IC任务的注视时长的均值和标准误
RC_stats <- calculate_mean_se(result_RC_fixadura$CURRENT_FIX_DURATION) # RC任务注视时长的均值和标准误
IC_stats <- calculate_mean_se(result_IC_fixadura$CURRENT_FIX_DURATION) # IC任务注视时长的均值和标准误
# 输出RC任务和IC任务的均值和标准误
cat("RC任务单个注视点平均时长:", RC_stats$mean, "\n") # 输出RC任务的均值
cat("RC任务单个注视点标准误:", RC_stats$se, "\n") # 输出RC任务的标准误
cat("IC任务单个注视点平均时长:", IC_stats$mean, "\n") # 输出IC任务的均值
cat("IC任务单个注视点标准误:", IC_stats$se, "\n") # 输出IC任务的标准误
# 进行配对样本t检验,比较RC任务和IC任务的注视时长是否有显著差异
result_mean_fixadura_t <- t.test(result_RC_fixadura$CURRENT_FIX_DURATION, result_IC_fixadura$CURRENT_FIX_DURATION, paired = TRUE)
print(result_mean_fixadura_t) # 输出t检验的结果
# 计算Cohen's d效应大小,衡量RC任务和IC任务之间差异的强度
cohen_d <- calculate_cohens_d(result_RC_fixadura$CURRENT_FIX_DURATION, result_IC_fixadura$CURRENT_FIX_DURATION)
cat("Cohen's d =", cohen_d, "\n") # 输出Cohen's d效应大小