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

如何用R生成符合APA格式的线性与调节回归系数表

解决R中生成APA格式回归系数表并导出Word的问题

问题说明

  • 已完成1个简单线性回归、2个调节回归分析,需要生成符合APA格式的系数表,要求包含estimate(非标准化系数b)、SE、t值、p值、95%CI、R²、F统计量等核心指标,且能直接导出至Word文档。
  • 当前遇到的问题:
    • 使用apaTables的apa.reg.table生成的表格指标不全,置信区间与R原生输出不符,缺少SE、t值、p值;
    • 尝试apa.save函数时提示未识别;
    • 使用rempsyc的nice_table函数时提示未识别。

解决方案

方案1:优化apaTables包的使用

apaTables的apa.reg.table支持通过参数配置显示更多APA要求的指标,且导出Word的正确方式是直接在函数内指定filename,无需额外调用apa.save:

library(apaTables)

# 简单线性回归表格(包含全部APA要求指标)
apa.reg.table(DF1, 
              table.number = 1,
              show.conf.interval = TRUE,  # 显示95%CI
              show.se = TRUE,             # 显示标准误SE
              show.t = TRUE,              # 显示t值
              show.p = TRUE,              # 显示p值
              show.std = TRUE,            # 可选:显示标准化系数β
              filename = "table1.doc")

# 第一个调节回归表格
apa.reg.table(DF2, 
              table.number = 2,
              show.conf.interval = TRUE,
              show.se = TRUE,
              show.t = TRUE,
              show.p = TRUE,
              filename = "table2.doc")

# 第二个调节回归表格
apa.reg.table(DF3, 
              table.number = 3,
              show.conf.interval = TRUE,
              show.se = TRUE,
              show.t = TRUE,
              show.p = TRUE,
              filename = "table3.doc")

注:APA格式中通常用b代表非标准化回归系数(即你要的estimate),如果需要标准化系数,添加show.std = TRUE参数即可。


方案2:使用rempsyc包的正确函数(nice_lm而非nice_table)

你之前误用了函数,rempsyc中专门处理回归分析的APA格式表格函数是nice_lm,而非nice_table:

# 安装并加载依赖包
install.packages(c("rempsyc", "flextable", "broom", "effectsize"))
library(rempsyc)
library(flextable)

# 生成简单线性回归的APA表格
table1 <- nice_lm(DF1,
                  title = c("Table 1", "线性回归:TUTscore对UEBscore的预测作用"),
                  note = c("数据来源于本研究", "* p < .05, ** p < .01, *** p < .001"))

# 导出至Word
save_as_docx(table1, path = "table1.docx")

# 第一个调节回归表格
table2 <- nice_lm(DF2,
                  title = c("Table 2", "调节回归:social_context对TUTscore与UEBscore关系的调节作用"),
                  note = c("数据来源于本研究", "* p < .05, ** p < .01, *** p < .001"))
save_as_docx(table2, path = "table2.docx")

# 第二个调节回归表格
table3 <- nice_lm(DF3,
                  title = c("Table 3", "调节回归:emotionality对TUTscore与UEBscore关系的调节作用"),
                  note = c("数据来源于本研究", "* p < .05, ** p < .01, *** p < .001"))
save_as_docx(table3, path = "table3.docx")

注:nice_lm会自动输出非标准化系数b(estimate)、SE、t值、p值、95%CI,以及模型的R²、调整R²、F统计量,完全符合APA格式规范。


方案3:broom+flextable手动定制(灵活性最高)

如果需要完全自定义表格内容(比如调整列顺序、添加个性化注释),可以用broom提取回归结果,再用flextable格式化并导出:

install.packages(c("broom", "flextable", "dplyr"))
library(broom)
library(flextable)
library(dplyr)

# 定义函数:提取回归结果并整理成APA格式
extract_reg_results <- function(model, model_name) {
  # 提取系数表(包含estimate、SE、t、p、CI)
  coeffs <- tidy(model, conf.int = TRUE) %>%
    select(term, estimate, std.error, statistic, p.value, conf.low, conf.high) %>%
    rename(b = estimate, SE = std.error, t = statistic, p = p.value, `95% CI下限` = conf.low, `95% CI上限` = conf.high)
  # 提取模型拟合指标(R²、F统计量等)
  fit <- glance(model) %>%
    select(r.squared, adj.r.squared, statistic, p.value, df.residual) %>%
    rename(R² = r.squared, `调整R²` = adj.r.squared, F = statistic, `F-p值` = p.value)
  # 返回整理后的结果列表
  list(coeffs = coeffs, fit = fit, name = model_name)
}

# 处理三个回归模型
res1 <- extract_reg_results(DF1, "模型1:简单线性回归")
res2 <- extract_reg_results(DF2, "模型2:social_context调节回归")
res3 <- extract_reg_results(DF3, "模型3:emotionality调节回归")

# 定义函数:格式化结果为flextable并添加标题、注释
format_reg_table <- function(res) {
  ft <- flextable(res$coeffs) %>%
    set_caption(caption = res$name, align_with_table = TRUE) %>%
    # 添加模型拟合指标行
    add_footer_row(values = paste0("R² = ", round(res$fit$R², 3), ", 调整R² = ", round(res$fit$`调整R²`, 3), 
                                   ", F(", res$fit$df.residual, ",", nrow(finalised_dataset)-res$fit$df.residual-1, ") = ", 
                                   round(res$fit$F, 2), ", p = ", round(res$fit$`F-p值`, 3)), 
                   colwidths = ncol(res$coeffs)) %>%
    # 添加显著性注释行
    add_footer_row(values = "* p < .05, ** p < .01, *** p < .001", colwidths = ncol(res$coeffs)) %>%
    autofit()
  return(ft)
}

# 生成表格并导出至Word
ft1 <- format_reg_table(res1)
save_as_docx(ft1, path = "table1_custom.docx")

ft2 <- format_reg_table(res2)
save_as_docx(ft2, path = "table2_custom.docx")

ft3 <- format_reg_table(res3)
save_as_docx(ft3, path = "table3_custom.docx")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:25:30