Primero que todo, debemos entender lo que el R
el software está haciendo cuando no interceptar
se incluye en el modelo. Recordemos que el habitual de cálculo de $R^2$
cuando una intercepción está presente es
$$
R^2 = \frac{\sum_i (\hat y_i - \bar y)^2}{\sum_i (y_i - \bar
y)^2} = 1 - \frac{\sum_i (y_i - \hat y_i)^2}{\sum_i (y_i - \bar
y)^2} \>.
$$
La primera igualdad sólo se produce debido a la inclusión de la
intercepto en el modelo, aunque este es probablemente el más popular
de las dos formas de escritura. La segunda igualdad en realidad proporciona
más en general, de la interpretación! Este punto es también la dirección en este
relacionados con la pregunta.
Pero, ¿qué sucede si no hay ninguna intercepción en el modelo?
Bueno, en ese
caso, R
(silencio!) utiliza el formulario modificado
$$
R_0^2 = \frac{\sum_i \hat y_i^2}{\sum_i y_i^2} = 1 - \frac{\sum_i (y_i - \hat y_i)^2}{\sum_i y_i^2} \>.
$$
It helps to recall what $R^2$ es tratando de medir. En la antigua
caso, que se está comparando el modelo actual para la referencia
modelo que sólo incluye una intersección (es decir, el término constante). En el
segundo caso, no hay ninguna intercepción, por lo que tiene poco sentido
comparar a un modelo. En vez de eso, $R_0^2$ se calcula, que
implícitamente se utiliza un modelo de referencia correspondiente a sólo ruido.
En lo que sigue a continuación, me voy a centrar en la segunda expresión para ambos $R^2$$R_0^2$, ya que la expresión se generaliza a otros contextos y, por lo general más natural para pensar las cosas en términos de residuos.
Pero, ¿cómo son diferentes, y cuando?
Echemos una breve digresión en algunos de álgebra lineal y a ver si nos vemos
puede averiguar lo que está pasando. Primero de todo, vamos a llamar a la equipada
los valores de la modelo con intercepto $\newcommand{\yhat}{\hat
{\mathbf y}}\newcommand{\ytilde}{\tilde {\mathbf y}}\yhat$ y el
ajustar los valores de la modelo sin intercepto $\ytilde$.
Podemos reescribir
las expresiones para $R^2$ $R_0^2$
$$\newcommand{\y}{\mathbf y}\newcommand {\} {\mathbf 1}
R^2 = 1 - \frac{\|\y \yhat\|_2^2}{\|\y - \bar y \uno\|_2^2} \>,
$$
y
$$
R_0^2 = 1 - \frac{\|\y \ytilde\|_2^2}{\|\y\|_2^2} \>,
$$
respectivamente.
Ahora, desde la $\|\y\|_2^2 = \|\y - \bar y \one\|_2^2 + n \bar y^2$, $R_0^2 > R^2$ si y sólo si
$$
\frac{\|\y \ytilde\|_2^2}{\|\y - \yhat\|_2^2} < 1 + \frac{\bar
y^2}{\frac{1}{n}\|\y - \bar y \uno\|_2^2} \> .
$$
El lado izquierdo es mayor que uno, puesto que el modelo correspondiente
a $\ytilde$ está anidada dentro de la de $\yhat$. El segundo término en la
lado derecho es el cuadrado de la media de las respuestas dividido por el
error cuadrático medio de una intercepción-sólo modelo. Así, el más grande de la media de la respuesta en relación a la otra variación, el más "flojo" que tenemos y a una mayor probabilidad de $R_0^2$ dominando $R^2$.
Observe que todos los
el modelo que dependen de la materia que está en el lado izquierdo y no dependiente del modelo
la materia que está a la derecha.
Ok, así que ¿cómo hacemos para que la relación en el lado izquierdo de la pequeña?
Recordemos que
$\newcommand{\P}{\mathbf P}\ytilde = \P_0 \y$ $\yhat = \P_1 \y$ donde $\P_0$ $\P_1$
matrices de proyección correspondiente a los subespacios $S_0$ $S_1$ tal
que $S_0 \subset S_1$.
Así, con el fin de la relación para estar cerca de uno, necesitamos los subespacios
$S_0$ $S_1$ a ser muy similares. Ahora $S_0$ $S_1$ sólo se diferencian por
si $\one$ es una base de vectores o no, lo que significa que $S_0$
mejor que ser un subespacio que ya se encuentra muy cerca de a $\one$.
En esencia, esto significa que nuestro predictor es mejor tener un fuerte significa
desplazamiento en sí mismo y que este medio de desplazamiento debe dominar la variación
del predictor.
Un ejemplo
Aquí tratamos de generar un ejemplo con una intercepción de forma explícita en el modelo y que se comporta de cerca el caso de la pregunta. A continuación se muestra algunos simple R
código para demostrar.
set.seed(.Random.seed[1])
n <- 220
a <- 0.5
b <- 0.5
se <- 0.25
# Make sure x has a strong mean offset
x <- rnorm(n)/3 + a
y <- a + b*x + se*rnorm(x)
int.lm <- lm(y~x)
noint.lm <- lm(y~x+0) # Intercept be gone!
# For comparison to summary(.) output
rsq.int <- cor(y,x)^2
rsq.noint <- 1-mean((y-noint.lm$fit)^2) / mean(y^2)
Esto da el siguiente resultado. Comenzamos con el modelo con intercepto.
# Include an intercept!
> summary(int.lm)
Call:
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-0.656010 -0.161556 -0.005112 0.178008 0.621790
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.48521 0.02990 16.23 <2e-16 ***
x 0.54239 0.04929 11.00 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.2467 on 218 degrees of freedom
Multiple R-squared: 0.3571, Adjusted R-squared: 0.3541
F-statistic: 121.1 on 1 and 218 DF, p-value: < 2.2e-16
A continuación, veremos lo que pasa cuando se excluye la intersección.
# No intercept!
> summary(noint.lm)
Call:
lm(formula = y ~ x + 0)
Residuals:
Min 1Q Median 3Q Max
-0.62108 -0.08006 0.16295 0.38258 1.02485
Coefficients:
Estimate Std. Error t value Pr(>|t|)
x 1.20712 0.04066 29.69 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.3658 on 219 degrees of freedom
Multiple R-squared: 0.801, Adjusted R-squared: 0.8001
F-statistic: 881.5 on 1 and 219 DF, p-value: < 2.2e-16
Abajo es un dibujo de los datos con el modelo con intercepto en rojo, y el modelo sin intercepto en azul.