R平方导致线性回归和“无法解释的方差”

机器算法验证 回归
2022-04-10 21:38:22

我在 R 中进行了线性回归并得到以下结果:

                        Estimate Std. Error t value Pr(>|t|)    
(Intercept)        192116.40    6437.27  29.844  < 2e-16 ***
cdd                   272.74      26.94  10.123 1.56e-09 ***
pmax(hdd - 450, 0)     61.73      22.54   2.738   0.0123 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 16500 on 21 degrees of freedom
Multiple R-squared: 0.8454, Adjusted R-squared: 0.8307 
F-statistic: 57.41 on 2 and 21 DF,  p-value: 3.072e-09 

我的问题是关于 R 平方值 0.83 以及如果我想指定每个(每月)变量的近似百分比贡献意味着什么。

编辑:见下面的数据。假设我取前 12 个 hdd 和 cdd 数据点,并使用上面的系数计算 12 个预测的总和(即第一年的总预测)。该年的基线(截距)贡献约为 12 * 192116.40 = 2305397,对吗?同样,cdd 对年份的贡献约为 1608 * 272.74 = 438565.9,而 hdd 将(在我的手工铰链函数之后)约为 1329 * 61.73 = 82039.17。将三个值相加得出 2826002,它在实际总使用量的 1.3% 以内(2862840,前 12 个电子的总和)。

那么我可以说 cdd 贡献了 438565.9/2826002= 0.1551895,或者大约是每年总数的 16%?或者我是否需要用它来补偿调整后的 R 平方:0.1551895*0.8307= 0.1289159(即乘以调整后的 R 平方),约占总数的 13%?还是没有一个正确的推理?

我的数据是:

     elec  hdd cdd
1  235940  880   3
2  205380  772   4
3  211780  551   9
4  192220  281  68
5  221440  165 119
6  304840   15 364
7  283160    4 434
8  300440   11 339
9  272900   42 214
10 204220  322  44
11 201060  592   8
12 229460  784   2
13 214520 1064   0
14 197900  719   2
15 186660  618  15
16 195340  332  88
17 241200  109 159
18 260700   18 282
19 299940   29 367
20 293240    2 426
21 268740   51 159
22 208380  319  36
23 183820  452   7
24 231360  903   0

(elec 的每月计费周期可以从 29 天到 32 天不等,这会带来很大的差异。我还没有将所有的计费周期长度调整到交易日类型。)

2个回答

R2是 OLS 预测和 DV的平方相关。在具有三个预测变量的多元回归中:Y^YX1,X2,X3

# generate some data
> N  <- 100
> X1 <- rnorm(N, 175, 7)                                 # predictor 1
> X2 <- rnorm(N,  30, 8)                                 # predictor 2
> X3 <- abs(rnorm(N, 60, 30))                            # predictor 3
> Y  <- 0.5*X1 - 0.3*X2 - 0.4*X3 + 10 + rnorm(N, 0, 10)  # DV
> fitX123 <- lm(Y ~ X1 + X2 + X3)  # regression
> summary(fitX123)$r.squared       # R^2
[1] 0.6361916

> Yhat <- fitted(fitX123)          # OLS prediction Yhat
> cor(Yhat, Y)^2
[1] 0.6361916

R2也等于的方差除以的方差。从这个意义上说,它是“预测变量所解释的方差”。Y^Y

> var(Yhat) / var(Y)
[1] 0.6361916

与预测变量的平方半偏相关等于作为预测变量添加到所有剩余预测变量的回归这可以看作是对所有预测变量解释的方差比例的独特贡献。这里,半偏相关是与回归残差的相关性,其中是预测变量,是预测变量。YX1R2X1X1YX1X2X3

# residuals from regression with DV X1 and predictors X2, X3
> X1.X23 <- residuals(lm(X1 ~ X2 + X3))
> (spcorYX1.X23 <- cor(Y, X1.X23))   # semi-partial correlation of Y with X1
[1] 0.3172553

> spcorYX1.X23^2                     # squared semi-partial correlation
[1] 0.1006509

> fitX23 <- lm(Y ~ X2 + X3)          # regression with DV Y and predictors X2, X3

# increase in R^2 when changing to full regression
> summary(fitX123)$r.squared - summary(fitX23)$r.squared
[1] 0.1006509

R^2 是整个模型占 DV 方差的百分比。也就是说,使用线性回归模型,您的截距和您的 IVS 结合起来解释了这么多的方差。

在您的情况下,您的 R^2 为 0.85,表明截距加上 cdd 加上 pmax 合计占 DV 方差的 85%。另外 15% 是错误的。也就是说,模型未考虑的方差

从给出的信息中,你无法判断这 85% 中有多少是由每个人贡献的。为此,您必须运行更多模型:

DV~。(单独截取)
DV ~ cdd
DV ~ pmax

这些中的每一个都有一个 R^2,然后你可以知道每个增加了多少。