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

Rstudio中向量型多元回归实现及按分组计算回归系数报错问题

错误原因与修正方案
  • 第一个问题:你原始数据里的Y1~Y6都是用逗号做小数点的字符串格式,直接拼接出来的Y向量是字符类型,无法参与回归运算,需要先把逗号替换为点再转成数值格式
  • 第二个问题:by是data.table的专属语法,普通data.frame的方括号取值不支持该参数,你已经加载了dplyr、purrr、broom系列包,可以用分组嵌套+映射的方式批量提取分组回归系数
library(dplyr)
library(tidyr)
library(purrr)
library(broom)
# 注意如果要同时使用plyr和dplyr,先加载plyr再加载dplyr,避免同名函数冲突

# 先处理原始数据的Y列,把逗号替换为小数点后转数值
data <- data %>%
  mutate(across(Y1:Y6, ~ as.numeric(gsub(",", ".", .x))))

# 构造回归用长表
Y <- as.vector(t(cbind(data$Y1, data$Y2, data$Y3, data$Y4, data$Y5, data$Y6)))
cos <- cos(0:5 * pi / 3) # 自变量1,所有被试共用
sin <- sin(0:5 * pi / 3) # 自变量2,所有被试共用
ID <- rep(data$ID, each = 6) # 保留被试ID,支持按被试计算回归
group <- factor(rep(data$group, each = 6), levels = c(1,2), labels = c("A", "B"))
dat <- data.frame(Y, cos, sin, ID, group)

# 按分组计算回归系数
group_coef <- dat %>%
  nest(data = -group) %>%
  mutate(fit = map(data, ~ lm(Y ~ cos + sin, data = .x)),
         coef = map(fit, tidy)) %>%
  unnest(coef) %>%
  select(group, term, estimate)

# 按被试ID计算每个个体的回归系数,替换分组变量为ID即可
id_coef <- dat %>%
  nest(data = -ID) %>%
  mutate(fit = map(data, ~ lm(Y ~ cos + sin, data = .x)),
         coef = map(fit, tidy)) %>%
  unnest(coef) %>%
  select(ID, term, estimate)

运行后group_coef会存储每个组别对应的截距、cos系数、sin系数,id_coef会存储每个被试对应的个体层面回归系数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:57:04