[R] removing intercept from lm() results in oddly high Rsquared
Dieter Menne
dieter.menne at menne-biomed.de
Mon Aug 7 09:38:10 CEST 2006
Joseph LeBouton <lebouton <at> msu.edu> writes:
>
> Can anyone help me understand why an lm model summary would return an
> r.squared of ~0.18 with an intercept term, and an r.squared of ~0.98
> without the intercept? The fit is NOT that much better, according to
> plot.lm: residuals are similar between the two models, and a plot of
> observed x predicted is almost identical.
There are reasons why the standard textbooks and Bill Venables
http://www.stats.ox.ac.uk/pub/MASS3/Exegeses.pdf
tell you that removing Intercepts can be dangerous for your health.
Dieter
##
set.seed(10)
x = runif(20,5,10)
y = 2 * x + rnorm(20,0,0.3)
# a fit with good data
summary(lm(y~x))$r.squared
# 0.98
# add one outlier at 0
x = c(x,0)
y = c(y,20)
summary(lm(y~x))$r.squared
# 0.00008
# removing the intercept: perfect correlation again
summary(lm(y~x-1))$r.squared
# 0.91
#... because it is similar to adding MANY data points
# at (0,0)
x = c(x,rep(0,1000))
y = c(y,rep(0,1000))
summary(lm(y~x))$r.squared
# 0.90
More information about the R-help
mailing list