如何在 r 中执行配对样本 t 检验
配对样本 t 检验是一种统计检验,当一个样本的每个观察值可以与另一个样本的观察值相匹配时,它会比较两个样本的平均值。
例如,假设我们想知道某个课程是否对学生在特定考试中的表现有重大影响。为了测试这一点,我们要求一个班级 20 名学生进行预测试。然后,每个学生每天都参加学习计划,持续两周。然后,学生重新参加类似难度的测试。
为了比较第一次和第二次测试的平均分数之间的差异,我们使用配对 t 检验,因为对于每个学生来说,他们在第一次测试中的分数可以与他们在第二次测试中的分数相关联。
如何进行配对 t 检验
要执行配对 t 检验,我们可以使用以下方法:
步骤 1:陈述原假设和备择假设。
H 0 : μ d = 0
H a : μ d ≠ 0 (两侧)
H a : μ d > 0 (单侧)
H a : μ d < 0 (单侧)
其中μ d是平均差。
步骤 2:查找检验统计量和相应的 p 值。
令a = 学生在第一次测试中的分数, b = 学生在第二次测试中的分数。要检验测试分数之间的真实平均差为零的原假设:
- 计算每对分数之间的差异 (d i = b i – a i )
- 计算平均差 (d)
- 计算差异 s d的标准差
- 计算 t 统计量,即 T = d / (s d / √n)
- 找到自由度为n-1 的t 统计量的相应 p 值。
步骤 3:根据显着性水平拒绝或不拒绝原假设。
如果 p 值小于所选的显着性水平,我们拒绝原假设并得出结论:两组均值之间存在统计显着差异。否则,我们将无法拒绝原假设。
如何在 R 中执行配对 t 检验
要在 R 中执行配对 t 检验,我们可以使用内置函数t.test() ,语法如下:
t.test (x,y,配对= TRUE,替代=“两侧”)
- x,y:我们要比较的两个数字向量
- paired:一个逻辑值,指定我们要计算配对 t 检验
- 替代方案:替代假设。可以设置为“双面”(默认)、“顶部”或“底部”。
以下示例说明如何执行配对 t 检验,以确定 20 名学生的预测试和后测试之间的平均分数是否存在显着差异。
创建数据
首先,我们将创建数据集:
#create the dataset data <- data.frame(score = c(85,85, 78, 78, 92, 94, 91, 85, 72, 97, 84, 95, 99, 80, 90, 88, 95, 90, 96, 89, 84, 88, 88, 90, 92, 93, 91, 85, 80, 93, 97, 100, 93, 91, 90, 87, 94, 83, 92, 95), group = c(rep('pre', 20), rep('post', 20))) #view the dataset data #scoregroup #1 85 pre #2 85 pre #3 78 pre #4 78 pre #5 92 pre #6 94 pre #7 91 pre #8 85 pre #9 72 pre #10 97 pre #11 84 pre #12 95 pre #13 99 pre #14 80 pre #15 90 pre #16 88 pre #17 95 pre #18 90 pre #19 96 pre #20 89 pre #21 84 post #22 88 post #23 88 post #24 90 post #25 92 post #26 93 post #27 91 post #28 85 post #29 80 post #30 93 post #31 97 post #32 100 posts #33 93 post #34 91 post #35 90 post #36 87 post #37 94 post #38 83 post #39 92 post #40 95 post
可视化差异
接下来,我们将使用dplyr库中的group_by()和summary ()函数查看两个组的汇总统计信息:
#load dplyr library
library(dplyr)
#find sample size, mean, and standard deviation for each group
data %>%
group_by (group) %>%
summarize (
count = n(),
mean = mean(score),
sd = sd(score)
)
# A tibble: 2 x 4
# group count mean sd
#
#1 post 20 90.3 4.88
#2 pre 20 88.2 7.24
我们还可以使用 R 中的boxplot()函数创建箱线图来显示前组和后组的分数分布:
boxplot (score~group,
data=data,
main="Test Scores by Group",
xlab="Group",
ylab="Score",
col="steelblue",
border="black"
)
从汇总统计数据和箱线图中,我们可以看到后组的平均得分略高于前组的平均得分。我们还可以看到,组后分数的变异性比组前分数要小。
为了确定这两组均值之间的差异是否具有统计显着性,我们可以进行配对 t 检验。
执行配对 t 检验
在执行配对 t 检验之前,我们需要验证差异的分布是否为正态(或近似正态)分布。为此,我们可以创建一个新向量,定义为前后分数之间的差异,并对这个值向量执行 Shapiro-Wilk 检验以验证正态性:
#define new vector for difference between post and pre scores differences <- with(data, score[group == "post"] - score[group == "pre"]) #perform shapiro-wilk test for normality on this vector of values shapiro.test(differences) # Shapiro-Wilk normality test # #data: differences #W = 0.92307, p-value = 0.1135 #
检验的 p 值为 0.1135,大于 alpha = 0.05。因此,我们无法拒绝数据呈正态分布的原假设。这意味着我们现在可以继续进行配对 t 检验。
我们可以使用以下代码来执行配对 t 检验:
t.test (score~group, data = data, paired = TRUE)
# Paired t-test
#
#data: score by group
#t = 1.588, df = 19, p-value = 0.1288
#alternative hypothesis: true difference in means is not equal to 0
#95 percent confidence interval:
# -0.6837307 4.9837307
#sample estimates:
#mean of the differences
#2.15
从结果我们可以看出:
- t检验统计量为1.588 。
- 此具有 19 个自由度 (df) 的检验统计量的 p 值为0.1288 。
- 均值差的 95% 置信区间为(-0.6837, 4.9837) 。
- 前后组的平均分数差为2.15 。
因此,由于我们的 p 值低于显着性水平 0.05,因此我们将无法拒绝两组均值具有统计显着性的原假设。
换句话说,我们没有足够的证据表明前组和后组之间的平均分数在统计上存在差异。这意味着课程对考试成绩没有显着影响。
此外,我们的 95% 置信区间表明我们“95% 确信”两组之间的真实平均差异在-0.6837和4.9837之间。
由于值零包含在该置信区间内,这意味着零实际上可能是平均分数之间的真实差异,这就是我们在这种情况下未能拒绝原假设的原因。