【发布时间】:2015-07-20 06:09:20
【问题描述】:
我在 R 中做一个非常简单的线性回归,但计算出来的 R^2 似乎不正确。我所做的回归如下:
data(cats)
fit = lm(Hwts ~ Bwts+0, data = cats)
summary(fit)
我从这个回归中得到的结果如下:
Call:
lm(formula = cats$Hwt ~ cats$Bwt + 0)
Residuals:
Min 1Q Median 3Q Max
-3.4563 -0.9980 -0.1003 1.0044 5.2623
Coefficients:
Estimate Std. Error t value Pr(>|t|)
cats$Bwt 3.90711 0.04364 89.53 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.449 on 143 degrees of freedom
Multiple R-squared: 0.9825, Adjusted R-squared: 0.9823
F-statistic: 8015 on 1 and 143 DF, p-value: < 2.2e-16
计算出的 R-squared 高达 0.9825,但数据上的简单绘图会给您一个直觉,即 R-squared 不可能那么高。如果我使用维基百科给出的公式计算 R 平方,我得到以下结果:
1-sum(residuals(fit1)^2)/sum((cats$Hwt - mean(cats$Hwt))^2)
[1] 0.6459604
这个 0.6459 的 R 平方定义看起来更合理,我发现如果我在回归中允许截距,我会得到一个围绕这个数字的 R 平方:
fit = lm(Hwt ~ Bwt, data = cats)
summary(fit)
Call:
lm(formula = Hwt ~ Bwt, data = cats)
Residuals:
Min 1Q Median 3Q Max
-3.5694 -0.9634 -0.0921 1.0426 5.1238
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.3567 0.6923 -0.515 0.607
Bwt 4.0341 0.2503 16.119 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.452 on 142 degrees of freedom
Multiple R-squared: 0.6466, Adjusted R-squared: 0.6441
F-statistic: 259.8 on 1 and 142 DF, p-value: < 2.2e-16
当我允许或禁止拦截时,为什么 R 平方会变得如此不同?请评论。
【问题讨论】:
标签: r linear-regression