如何用R检验毕业生与本科生的SAT平均分数是否相同?
检验毕业生与本科生SAT平均分数差异的方法及R实现
一、核心统计方法与公式
检验两组独立样本的均值是否相同,最常用的是独立样本t检验,需满足数据正态性和方差齐性的前提(若不满足可考虑非参数检验如曼-惠特尼U检验):
- 方差齐性时,t统计量公式:
t = (x̄₁ - x̄₂) / √(sₚ²(1/n₁ + 1/n₂))
其中sₚ² = [(n₁-1)s₁² + (n₂-1)s₂²]/(n₁+n₂-2)为合并方差,x̄代表组均值,s为组标准差,n为组样本量。 - 方差不齐时,采用Welch校正t检验,自由度调整公式:
df = (s₁²/n₁ + s₂²/n₂)² / [(s₁²/n₁)²/(n₁-1) + (s₂²/n₂)²/(n₂-1)]
二、R代码实现步骤
1. 正确筛选分组数据(修正你的subset用法)
你之前的subset代码聚焦于年龄、性别筛选,未针对Status(毕业生/本科生)和SAT分数提取数据,正确写法如下:
# 提取毕业生的SAT分数列 grad_sat <- subset(mydata2, Status == "Graduate", select = SAT) # 提取本科生的SAT分数列 undergrad_sat <- subset(mydata2, Status == "Undergraduate", select = SAT)
2. 执行t检验
方式一:直接基于数据框分组(更高效)
无需提前筛选,直接通过Status分组调用t.test,同时可先做方差齐性检验:
# 方差齐性检验(判断用哪种t检验) var_check <- var.test(SAT ~ Status, data = mydata2) print(var_check) # 根据方差齐性结果选择检验类型 if (var_check$p.value > 0.05) { # 方差齐,用标准独立样本t检验 t_result <- t.test(SAT ~ Status, data = mydata2, var.equal = TRUE) } else { # 方差不齐,用Welch校正t检验(默认即为此方法) t_result <- t.test(SAT ~ Status, data = mydata2) } print(t_result)
方式二:用提前筛选好的向量
若已通过subset得到两组数据,可直接传入t.test:
t_result <- t.test(grad_sat, undergrad_sat) print(t_result)
3. 结果解读
- 关注p值:若p>0.05,无法拒绝“两组SAT平均分相同”的原假设;若p<0.05,则说明两组平均分存在显著差异。
- 输出中的
mean in group Graduate和mean in group Undergraduate即为两组的平均SAT分数。
内容的提问来源于stack exchange,提问作者Vithy Suganthan
相关产品推荐
相关产品推荐

