You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从t检验模型生成的列表提取指标并整理为统一表格

从t检验结果列表中提取统计值并生成表格

问题描述

如何从统计模型(t检验)生成的列表中提取特定值?
我通过以下代码执行了多个t检验:

A<-lapply(merged_DF_final[2:6], function(x) t.test(x ~ merged_DF_final$Group))

我需要从每个子检验的结果中提取p值、t统计量、置信区间以及组均值,并将这些信息输出到一个统一表格中,请问该如何操作?

以下是存储在对象A中的内容:

$HC_HC_L_amygdala_baseline

    Welch Two Sample t-test

data:  x by merged_DF_final$Group 
t = 0.039543, df = 47.412, p-value = 0.9686
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:  -0.4694404  0.4882694 
sample estimates:
mean in group CONN   mean in group HC 
         0.2954200          0.2860055 


$HC_HC_L_culmen_baseline

    Welch Two Sample t-test

data:  x by merged_DF_final$Group 
t = 0.81387, df = 53.695, p-value = 0.4193
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:  -0.2970321  0.7028955 
sample estimates:
mean in group CONN   mean in group HC 
         0.4020883          0.1991566 


$HC_HC_L_fusiform_baseline

    Welch Two Sample t-test

data:  x by merged_DF_final$Group 
t = 0.024945, df = 53.851, p-value = 0.9802
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:  -0.5768786  0.5914136 
sample estimates:
mean in group CONN   mean in group HC 
         0.5552184          0.5479509 


$HC_HC_L_insula_baseline

    Welch Two Sample t-test

data:  x by merged_DF_final$Group 
t = 0.79659, df = 52.141, p-value = 0.4293
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:  -0.3000513  0.6951466 
sample estimates:
mean in group CONN   mean in group HC 
        0.12436946        -0.07317818 


$HC_HC_L_lingual_gyrus_baseline

    Welch Two Sample t-test

data:  x by merged_DF_final$Group 
t = -0.11033, df = 53.756, p-value = 0.9126
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:  -0.5172863  0.4633268 
sample estimates:
mean in group CONN   mean in group HC 
         0.4395066          0.4664864

解决方案

每个t.test()返回的结果是一个包含各类统计值的列表,我们可以通过提取列表元素的方式获取所需信息,再合并成统一表格:

步骤1:定义提取函数

先写一个函数,从单个t检验结果中提取需要的统计量:

extract_tstats <- function(test_result) {
  data.frame(
    t_stat = test_result$statistic,       # t统计量
    df = test_result$parameter,           # 自由度
    p_value = test_result$p.value,        # p值
    ci_low = test_result$conf.int[1],     # 置信区间下限
    ci_high = test_result$conf.int[2],    # 置信区间上限
    mean_CONN = test_result$estimate[1],  # CONN组均值
    mean_HC = test_result$estimate[2]     # HC组均值
  )
}

步骤2:批量提取并合并表格

用lapply()遍历列表A,应用上面的提取函数,再用do.call(rbind, ...)合并成一个数据框:

# 批量提取每个检验的统计值
t_results <- lapply(A, extract_tstats)

# 合并为一个表格,保留变量名作为单独列
final_table <- do.call(rbind, t_results)
final_table$variable <- rownames(final_table)
rownames(final_table) <- NULL

# 调整列顺序(可选,让变量名在前)
final_table <- final_table[, c("variable", "t_stat", "df", "p_value", "ci_low", "ci_high", "mean_CONN", "mean_HC")]

最终结果示例

运行上述代码后,final_table会生成如下格式的表格(数值保留原精度):

variablet_statdfp_valueci_lowci_highmean_CONNmean_HC
HC_HC_L_amygdala_baseline0.03954347.4120.9686-0.46944040.48826940.29542000.2860055
HC_HC_L_culmen_baseline0.8138753.6950.4193-0.29703210.70289550.40208830.1991566
HC_HC_L_fusiform_baseline0.02494553.8510.9802-0.57687860.59141360.55521840.5479509
HC_HC_L_insula_baseline0.7965952.1410.4293-0.30005130.69514660.12436946-0.07317818
HC_HC_L_lingual_gyrus_baseline-0.1103353.7560.9126-0.51728630.46332680.43950660.4664864

内容的提问来源于stack exchange,提问作者lotus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:35:47