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

如何用R的sapply()函数查看自变量增1个标准差时因变量的变化

计算简单线性回归中自变量增1个标准差时因变量的变化(sapply实现)

核心逻辑

在简单线性回归模型 y = a + b₁*x 中,当自变量x增加1个标准差时,因变量y的变化量等于回归系数b₁乘以x的标准差,即 Δy = b₁ * sd(x)。

实现步骤(含sapply用法)

以下用模拟数据演示完整流程:

  1. 生成模拟数据
set.seed(123) # 固定随机种子保证结果可复现
x <- rnorm(100, mean = 5, sd = 2)
y <- 3 + 1.5*x + rnorm(100, sd = 1)
  1. 拟合线性回归模型
model <- lm(y ~ x)
  1. 定义计算函数
    先写一个函数,输入变量名、回归模型和数据集,返回该变量增1个标准差时y的变化量:
sd_effect <- function(var, mod, dat) {
  coef_val <- coef(mod)[[var]] # 提取对应变量的回归系数
  var_sd <- sd(dat[[var]])     # 提取变量的标准差
  coef_val * var_sd            # 计算变化量
}
  1. 用sapply执行计算
    sapply可以批量处理变量(这里以单个变量x为例,也可传入多个变量名向量):
# 传入变量名,调用函数
result <- sapply("x", sd_effect, mod = model, dat = data.frame(x, y))
print(result)

运行后会输出类似x=3.02的结果,意思是x每增加1个标准差,y平均增加约3.02个单位。

扩展:多自变量场景

如果是多元回归模型(比如y ~ x1 + x2),只需把变量名改成向量传入sapply即可:

# 模拟多变量数据
x1 <- rnorm(100)
x2 <- rnorm(100)
y_multi <- 2 + 0.8*x1 + 1.2*x2 + rnorm(100)
model_multi <- lm(y_multi ~ x1 + x2)

# 批量计算x1和x2的效应
sapply(c("x1", "x2"), sd_effect, mod = model_multi, dat = data.frame(x1, x2, y_multi))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:01:20