1.5.1 t检验

更新日期

2026年10月20日

功能说明

比较两个独立组的连续结局均值,返回组内人数、均值和标准差,以及均值差、置信区间、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 的顺序决定均值差、区间和单侧方向。单侧假设须预先确定;使用单侧检验时,输出相应单侧区间。
  • 单样本和配对形式见知识页的设计比较;此份源码不提供这两种输入形式。