如何计算 r 中的标准化回归系数


通常,当我们执行多元线性回归时,模型输出中得到的回归系数不是标准化的,这意味着它们使用原始数据来找到最佳拟合线。

 model <- lm(price ~ age + sqfeet, data=df)

但是,可以标准化每个预测变量和响应变量(通过从原始值中减去每个变量的平均值,然后除以变量的标准差),然后运行回归,这会导致标准化回归系数

在 R 中计算标准化回归系数的最简单方法是使用scale()函数来标准化模型中的每个变量:

 model <- lm(scale(price) ~ scale(age) + scale(sqfeet), data=df)

下面的例子展示了如何在实践中计算标准化回归系数。

示例:如何计算 R 中的标准化回归系数

假设我们有以下数据集,其中包含 12 栋房屋的房龄、面积和销售价格信息:

 #create data frame
df <- data. frame (age=c(4, 7, 10, 15, 16, 18, 24, 28, 30, 35, 40, 44),
                 sqfeet=c(2600, 2800, 1700, 1300, 1500, 1800,
                          1200, 2200, 1800, 1900, 2100, 1300),
                 price=c(280000, 340000, 195000, 180000, 150000, 200000,
                         180000, 240000, 200000, 180000, 260000, 140000))

#view data frame
df

   age square feet price
1 4 2600 280000
2 7 2800 340000
3 10 1700 195000
4 15 1300 180000
5 16 1500 150000
6 18 1800 200000
7 24 1200 180000
8 28 2200 240000
9 30 1800 200000
10 35 1900 180000
11 40 2100 260000
12 44 1300 140000

假设我们使用年龄平方英尺作为预测变量,价格作为响应变量来执行多元线性回归:

 #fit regression model
model <- lm(price ~ age + sqfeet, data=df)

#view model summary
summary(model)

Call:
lm(formula = price ~ age + sqfeet, data = df)

Residuals:
   Min 1Q Median 3Q Max 
-32038 -10526 -6139 21641 34060 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 34736.54 37184.32 0.934 0.374599    
age -409.83 612.46 -0.669 0.520187    
sqfeet 100.87 15.75 6.405 0.000125 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 24690 on 9 degrees of freedom
Multiple R-squared: 0.8508, Adjusted R-squared: 0.8176 
F-statistic: 25.65 on 2 and 9 DF, p-value: 0.0001916

从模型结果中,我们可以看到非标准化回归系数

  • 拦截: 34736.54
  • 年龄: -409.83
  • 平方英尺: 100.87

乍一看,年龄对房地产价格的影响似乎更大,因为回归表中的系数为-409.833 ,而平方英尺预测变量的系数仅为100.866

然而,年龄的标准误差比平方英尺的标准误差大得多,这就是为什么年龄的相应 p 值实际上较大 (p = 0.520),而平方英尺的标准误差较小 (p = 0.000)。

回归系数存在极大差异的原因是两个变量的尺度存在极大差异:

  • 年龄值范围为 4 至 44 岁。
  • 平方英尺值范围从 1,200 到 2,800。

假设我们对原始数据进行标准化并拟合新的回归模型:

 #standardize each variable and fit regression model
model_std <- lm(scale(price) ~ scale(age) + scale(sqfeet), data=df)

#turn off scientific notation
options(scipen= 999 )

#view model summary
summary(model_std)

Call:
lm(formula = scale(price) ~ scale(age) + scale(sqfeet), data = df)

Residuals:
    Min 1Q Median 3Q Max 
-0.5541 -0.1820 -0.1062 0.3743 0.5891 

Coefficients:
                            Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.0000000000000002253 0.1232881457926768426 0.000 1.000000
scale(age) -0.0924421263946849786 0.1381464029075653854 -0.669 0.520187
scale(sqfeet) 0.8848591938302141635 0.1381464029075653577 6.405 0.000125
                 
(Intercept)      
scale(age)       
scale(sqfeet)***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4271 on 9 degrees of freedom
Multiple R-squared: 0.8508, Adjusted R-squared: 0.8176 
F-statistic: 25.65 on 2 and 9 DF, p-value: 0.0001916

该表中的回归系数是标准化的,这意味着他们使用标准化数据来拟合该回归模型。

表中系数的解释方式如下:

  • 假设面积保持不变,年龄增加 1 个标准差与房价下降0.092 个标准差相关。
  • 假设年龄保持不变,平方英尺每增加 1 个标准差,房价就会增加0.885 个标准差。

我们现在可以看到,面积对房价的影响比年龄更大。

注意:每个预测变量的 p 值与之前的回归模型中的 p 值完全相同。

在决定使用哪种最终模型时,我们现在知道,在预测房屋价格方面,平方英尺比房屋年龄更重要。

其他资源

以下教程提供有关回归模型的其他信息:

如何阅读和解释回归表
如何解释回归系数
如何解释线性回归中的P值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注