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

基于dplyr根据其他列动态mutate线性回归残差列的需求

使用dplyr生成线性回归残差列

1. 准备示例数据

首先还原你提供的示例数据(修正了Y_Intependent的拼写错误):

library(dplyr)
library(tidyr)

sample_df <- tibble(
  Dependent_VAR = c(1200, 3100, 52222, 400),
  X_Independent = c(2000, 3000, 55500, 456),
  X_Coefficient = rep(3000, 4),
  X_Intercept = rep(4500, 4),
  Y_Independent = c(500, 670, 700, 800),
  Y_Coefficient = rep(750, 4),
  Y_Intercept = rep(600, 4)
)

2. 手动生成残差列(适用于少量变量)

如果只有少数独立变量,直接用mutate逐个计算残差即可:

result_df <- sample_df %>%
  mutate(
    X_Residual = X_Independent - (X_Intercept + X_Coefficient * Dependent_VAR),
    Y_Residual = Y_Independent - (Y_Intercept + Y_Coefficient * Dependent_VAR)
  )

# 查看结果
result_df

3. 可扩展方法(适用于大量变量)

如果数据包含多个同结构的独立变量(如Z、W等),通过数据重塑实现批量计算,无需手动编写每个变量的公式:

scalable_result <- sample_df %>%
  # 转长表,拆分变量前缀和属性类型
  pivot_longer(
    cols = -Dependent_VAR,
    names_to = c("var", "type"),
    names_sep = "_"
  ) %>%
  # 将每个变量的属性转为列
  pivot_wider(
    names_from = type,
    values_from = value
  ) %>%
  # 统一计算残差
  mutate(Residual = Independent - (Intercept + Coefficient * Dependent_VAR)) %>%
  # 转回宽表格式
  pivot_longer(
    cols = c(Independent, Coefficient, Intercept, Residual),
    names_to = "type",
    values_to = "value"
  ) %>%
  pivot_wider(
    names_from = c(var, type),
    values_from = value
  )

# 查看结果
scalable_result

这种方法会自动识别所有以_Independent、_Coefficient、_Intercept结尾的变量组,并为每个组生成对应的_Residual列,新增变量时无需修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:40:34