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

R语言面板数据线性回归代码无法返回fit与rsq问题求解

问题原因分析

你的代码存在4个核心错误导致无法得到正确结果:

  • 回归公式中错误使用df[3,i]:该语法仅提取第3行第i列的单个数值,线性回归需要传入整列数据作为因变量
  • 未对结果做持久化存储:循环中每次迭代都会覆盖fit和rsq变量,循环结束后仅会保留最后一次迭代的结果
  • 数值列判断逻辑错误:仅判断第三行是否为数值,无法保证整列都是数值类型,应该直接判断列本身的类型
  • 未过滤无效列:id、id1、Gender这些列不需要作为因变量参与回归,会出现无意义的回归结果
优化后代码
# 初始化结果存储容器
fit_list <- list()
rsq_vec <- c()

# 筛选需要作为因变量的数值列:排除id、id1、Gender列,且列类型为数值
target_cols <- names(df)[!names(df) %in% c("id", "id1", "Gender") & sapply(df, is.numeric)]

for(i in target_cols)
{       
    # 整列作为因变量,构建回归公式
    fit <- lm(df[[i]] ~ Gender, data=df)
    # 存储拟合结果
    fit_list[[i]] <- fit
    # 存储决定系数
    rsq_vec[i] <- summary(fit)$r.squared
}

# 查看所有拟合结果
fit_list
# 查看所有决定系数
rsq_vec
结果说明
  • 所有列的拟合模型都存在fit_list列表中,可通过fit_list[['a1']]的方式调取指定列的拟合结果
  • 所有列的决定系数都存在rsq_vec命名向量中,可直接打印查看所有值,也可通过名称调取指定列的R方
  • 如果是标准面板数据分析需要控制个体/时间效应,建议使用plm包的plm()函数替换基础lm(),输出结果会更符合面板回归的规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 23:45:05