R
R2
R2=∑i(y^i−y¯)2∑i(yi−y¯)2=1−∑i(yi−y^i)2∑i(yi−y¯)2.
Ale co się stanie, jeśli w modelu nie ma przechwytywania?
R
R20=∑iy^2i∑iy2i=1−∑i(yi−y^i)2∑iy2i.
R2R20
R2R20
Ale czym się różnią i kiedy?
Weźmy krótką dygresję do jakiejś algebry liniowej i zobaczmy, czy możemy dowiedzieć się, co się dzieje. Po pierwsze, nazwijmy dopasowane wartości z modelu za pomocą intercept i dopasowane wartości z modelu bez przechwytywania . ~ yy^y~
Możemy przepisać wyrażenia dla i jako
a
odpowiednio.R2R20
R2=1−∥y−y^∥22∥y−y¯1∥22,
R20=1−∥y−y~∥22∥y∥22,
Teraz, ponieważ , a następnie jeśli i tylko jeśli
∥y∥22=∥y−y¯1∥22+ny¯2R20>R2
∥y−y~∥22∥y−y^∥22<1+y¯21n∥y−y¯1∥22.
Lewa strona jest większa niż jeden, ponieważ model odpowiadający jest zagnieżdżony w . Drugi termin po prawej stronie to średnia kwadratowa odpowiedzi podzielona przez średni błąd kwadratowy modelu tylko przechwytującego. Tak więc, im większa średnia odpowiedź w stosunku do innej odmiany, tym bardziej „luz” mamy i większa szansa, że zdominuje .y~y^R20R2
Zauważ, że wszystkie rzeczy zależne od modelu znajdują się po lewej stronie, a rzeczy nie zależne od modelu po prawej stronie.
Ok, więc jak sprawić, by stosunek po lewej stronie był mały?
Przypomnijmy, że
i gdzie i są macierzami projekcyjne odpowiadające podprzestrzeni Änd taki sposób, że .y~=P0yy^=P1yP0P1S0S1S0⊂S1
Tak więc, aby stosunek do być blisko do jednego, musimy podprzestrzenie
i być bardzo podobne. Teraz i różnią się tylko czy jest wektorem podstawa czy nie, więc to oznacza, że
lepiej być podprzestrzeń że już leży bardzo blisko .S0S1S0S11S01
Zasadniczo oznacza to, że nasz predyktor powinien sam mieć silne przesunięcie średnie i że to przesunięcie średnie powinno zdominować jego odmianę.
Przykład
W tym przypadku próbujemy wygenerować przykład z przecięciem jawnie w modelu, który zachowuje się blisko przypadku w pytaniu. Poniżej znajduje się prosty R
kod do zademonstrowania.
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)
Daje to następujący wynik. Zaczynamy od modelu z przechwyceniem.
# 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
Następnie zobacz, co się stanie, gdy wykluczymy przechwytywanie.
# 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
Poniżej znajduje się wykres danych z modelem z punktem przecięcia w kolorze czerwonym i modelem bez punktu przecięcia w kolorze niebieskim.