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

如何对标准化变量建模所得标准误进行逆变换以用于绘图?

线性混合模型标准化系数的逆变换(含标准误)

我用scale()函数标准化数据后构建了线性混合模型,代码如下:

data <- data.frame(
      X1 = c(1.2, 2.3, 3.1, 4.8, 5.5, 4.6),
      X2 = c(10.4, 9.3, 8.2, 7.1, 6.0, 5.2),
      X3 = c(5.5, 6.6, 7.7, 8.8, 9.9, 12.0),
      rand = c("A", "A", "B", "B", "C", "C")
    )    

data = data %>% 
      mutate(across(X1:X2, ~ scale(.), .names = "scaled_{.col}"))    

model = lmerTest::lmer(X3 ~ scaled_X1 + scaled_X2 + (1|rand), data = data)
summary(model)

我希望将模型输出的估计值逆变换回原始尺度后绘图,提升结果可读性。已知系数可通过除以对应变量的标准差实现逆变换,推导过程如下:
标准化公式:$X_S = \frac{X_0 - \text{mean}}{sd}$
逆变换后原始尺度的预测公式:$Y = \frac{B}{sd} \times X_0 + \left(-\frac{B \times \text{mean}}{sd} + A\right)$
其中$B$是标准化变量的系数,$A$是截距项。

但我不清楚如何对summary(model)输出的标准误进行逆变换。虽然有观点认为这种变换无意义,但保留标准化值绘图会极大降低可读性。


解决方法

1. 标准误的逆变换逻辑

标准化是线性变换,系数的标准误(即系数估计值的标准差)可通过相同的缩放比例逆变换:

  • 设标准化系数的标准误为$SE_S$
  • 原始尺度下的标准误$SE_0 = \frac{SE_S}{sd(X)}$
    原理:线性变换$B_0 = \frac{B_S}{sd(X)}$,方差满足$\text{Var}(B_0) = \frac{\text{Var}(B_S)}{sd(X)^2}$,因此标准差(标准误)就是$\frac{SE_S}{sd(X)}$。

2. R中实现逆变换的代码示例

先提取模型系数、标准误,同时获取原始变量的均值和标准差:

# 提取原始变量的均值和标准差
var_stats <- data %>% 
  summarise(across(X1:X2, list(mean = mean, sd = sd))) %>% 
  pivot_longer(everything(), names_sep = "_", names_to = c("var", "stat")) %>% 
  pivot_wider(names_from = stat, values_from = value)

# 提取模型的系数和标准误
model_coefs <- summary(model)$coefficients %>% 
  as.data.frame() %>% 
  rownames_to_column("term") %>% 
  filter(term != "(Intercept)") %>% 
  mutate(var = str_remove(term, "scaled_"))

# 合并计算逆变换后的系数和标准误
original_scale_coefs <- model_coefs %>% 
  left_join(var_stats, by = "var") %>% 
  mutate(
    original_estimate = Estimate / sd,
    original_se = `Std. Error` / sd,
    # 可选:计算95%置信区间
    original_lower = original_estimate - 1.96 * original_se,
    original_upper = original_estimate + 1.96 * original_se
  )

3. 基于原始尺度系数绘图示例

用ggplot2绘制系数森林图:

library(ggplot2)

ggplot(original_scale_coefs, aes(x = original_estimate, y = var)) +
  geom_vline(xintercept = 0, linetype = "dashed", color = "gray50") +
  geom_point(size = 3) +
  geom_errorbarh(aes(xmin = original_lower, xmax = original_upper), height = 0.2) +
  labs(x = "原始尺度下的系数估计值(95%置信区间)", y = "自变量") +
  theme_minimal()

4. 截距项的逆变换说明

如果需要将截距项转换到原始尺度,公式为:
$A_0 = A_S + \sum \left(\frac{B_S \times \text{mean}(X)}{sd(X)}\right)$
其中$A_S$是模型输出的截距项,求和针对所有标准化自变量。这个截距对应所有原始自变量取均值时的预测值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:44:53