1.5.1 t检验
功能说明
比较两个独立组的连续结局均值,返回组内人数、均值和标准差,以及均值差、置信区间、t值、自由度和P值。需要已存在的数据框 huyiba_rawdata:每行一个独立观察单位,结局为有明确单位的有限数值,分组列恰好包含两个组;两列无缺失,每组至少两条观察。
在模板前部替换 outcome_var、group_var 和 group_levels。主要检验对象为 huyiba_result,提取后的表为 huyiba_result_table;均值差及区间沿用结局列单位。检验形式与输出解读见1.5.1 t检验。
核心R包
| 包名 | 主要用途 | 实际验证版本 |
|---|---|---|
| stats(R基础包) | 独立样本t检验、标准差及结果提取 | 4.5.2(随R 4.5.2) |
无需安装额外分析包;版本记录本次实际运行环境。
代码
先提供符合输入要求的 huyiba_rawdata,再修改前部配置并运行。下载同一份R源码。
# 1.5.1 t检验:比较两个独立组的连续结局均值。
# 输入:已准备好的数据框 huyiba_rawdata;每行一个独立观察单位。
# 1. 修改列名、组别顺序及检验设置。
outcome_var <- "outcome" # 数值型连续结局;输出沿用该列的单位。
group_var <- "group" # 分组列,只能包含下面指定的两个组。
group_levels <- c("control", "treatment")
# 差值方向为第一个组减第二个组;替换为数据中的实际组别取值。
null_difference <- 0 # 零假设中的总体均值差,与结局同单位。
alternative <- "two.sided" # 双侧;"greater"/"less"为差值大于/小于mu。
# 单侧方向须由研究问题预先确定,不能看过结果再选择。
conf_level <- 0.95 # 区间置信水平;如改为0.99,区间通常更宽。
equal_variance <- FALSE # FALSE为Welch;TRUE需等方差假设支持。
# 2. 按角色取列;输入应无缺失,不在检验时静默删除观察。
huyiba_analysis_data <- huyiba_rawdata[c(outcome_var, group_var)]
if (anyNA(huyiba_analysis_data) ||
!is.numeric(huyiba_analysis_data[[outcome_var]]) ||
any(!is.finite(huyiba_analysis_data[[outcome_var]]))) {
stop("请先准备无缺失、结局为有限数值的分析数据。")
}
if (length(group_levels) != 2L || anyDuplicated(group_levels) ||
!setequal(as.character(huyiba_analysis_data[[group_var]]), group_levels)) {
stop("group_levels须恰好列出实际存在的两个组,且不能重复。")
}
huyiba_analysis_data[[group_var]] <- factor(
huyiba_analysis_data[[group_var]], levels = group_levels
)
group_values <- split(
huyiba_analysis_data[[outcome_var]], huyiba_analysis_data[[group_var]]
)
# 3. 每组至少两条观察;标准差描述组内个体差异。
huyiba_group_summary <- data.frame(
group = names(group_values),
n = vapply(group_values, length, integer(1)),
mean = vapply(group_values, mean, numeric(1)),
sd = vapply(group_values, stats::sd, numeric(1)),
row.names = NULL
)
# 4. x、y按指定组别顺序传入,保证检验方向和差值方向一致。
huyiba_result <- stats::t.test(
x = group_values[[1]], y = group_values[[2]],
paired = FALSE, # 两组独立;配对资料须另行准备真实配对输入。
mu = null_difference,
alternative = alternative,
conf.level = conf_level,
var.equal = equal_variance
)
# 5. estimate、conf.int、p.value来自同一检验对象;保留计算精度。
# 单侧检验返回含无穷端点的单侧区间,解释时须与alternative一致。
huyiba_result_table <- data.frame(
contrast = paste(group_levels, collapse = " - "),
mean_difference = unname(huyiba_result$estimate[1] - huyiba_result$estimate[2]),
ci_lower = huyiba_result$conf.int[1],
ci_upper = huyiba_result$conf.int[2],
t_value = unname(huyiba_result$statistic),
degrees_freedom = unname(huyiba_result$parameter),
p_value = huyiba_result$p.value
)
print(huyiba_group_summary, row.names = FALSE)
print(huyiba_result)
print(huyiba_result_table, row.names = FALSE)huyiba_group_summary 保存组内汇总,huyiba_result$conf.int 和 huyiba_result$p.value 分别保存区间与P值。huyiba_result_table$contrast 标明差值方向;仅在最终展示时取舍小数位。
注意事项
- 本模板实现独立样本比较。重复测量、真实配对或聚类资料需按研究设计另选分析,不能通过重排行号获得独立性。
- Welch方法允许两组方差不同;严重偏态和极端值仍需评估。两组结局都无变异时,检验可能无法计算。
- 缺失数据需先按研究方案处理并记录人数;模板遇到所用列缺失即停止。组别取值须与配置完全一致,包括字符与数字的表示。
group_levels的顺序决定均值差、区间和单侧方向。单侧假设须预先确定;使用单侧检验时,输出相应单侧区间。- 单样本和配对形式见知识页的设计比较;此份源码不提供这两种输入形式。