多方法做配对样本t检验(一)

配对样本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)
  • 这两行代码用于对两个数据集 Data1RCData1IC 按照被试(sub)进行分组,计算每个被试的注视点平均时长(CURRENT_FIX_DURATION)。
  • aggregate() 函数将按被试(sub)分组,并计算每组注视时长的均值。
    • CURRENT_FIX_DURATION ~ sub 表示按 sub(被试)分组,计算每个被试的 CURRENT_FIX_DURATION(注视时长)均值。
    • Data1RCData1IC 分别表示 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,一个衡量两组之间效应大小的指标。
    • data1data2 是两组配对样本数据(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$meanRC_stats$se 分别获取 RC 任务的均值和标准误。
  • IC_stats$meanIC_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 表示大效应

总结

# 计算每个被试在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效应大小

### 双样本t检验配对样本t检验的区别 #### 区别 双样本t检验(独立样本t检验)用于评估来自两个不同群体的数据均值是否存在显著差异。这两个群体应相互独立,即个群体中的观测值不应影响另个群体中的观测值[^3]。 相比之下,配对样本t检验专门针对同组对象在两种条件下获得的两套数据进行分析。这种情况下,每对观察值都是关联的,比如同个人在接受某种治疗前后的血压读数。因此,该测试能够更精确地控制个体间的变异因素[^2]。 #### 应用场景 对于双样本t检验而言,当研究者希望比较完全不相关的两个群组间某变量平均值得时候会采用此法。例如,在医学领域中对比新药和安慰剂的效果;教育界里衡量两种教学方法对学生成绩的影响等情形下都适合运用这种方法来判断两者之间是否存在统计意义上的差距[^1]。 而配对样本t检验则更多应用于实验设计中有自然匹配关系的情况或是纵向研究设置内——也就是同个体被多次测量的情景之下。典型例子包括临床试验里的基线特征与干预措施实施之后的变化情况对照;市场调研方面关于消费者态度转变的研究等等[^4]。 ```python import scipy.stats as stats # 假设data_before 和 data_after 是配对样本的数据集 paired_t_statistic, paired_p_value = stats.ttest_rel(data_before, data_after) print(f'Paired T-test statistic: {paired_t_statistic}, P-value: {paired_p_value}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱做科研的桶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值