Il modello lineare è scritto come
dove indica il vettore delle risposte, è il vettore dei parametri degli effetti fissi, è la matrice di progettazione corrispondente le cui colonne sono i valori delle variabili esplicative e è il vettore di errori casuali. y β X ϵ
∣∣∣y=Xβ+ϵϵ∼N(0,σ2I),
yβXϵ
È noto che una stima di è data da (fare riferimento, ad esempio, all'articolo di Wikipedia )
Quindi
[promemoria: , per un vettore casuale e una matrice non casuale ]ß = ( X ' X ) - 1 x ' y . Var ( β ) = ( X ' X ) - 1 x 'β
β^=(X′X)−1X′y.
Var ( A X ) = A × Var ( X ) × A ′ X AVar(β^)=(X′X)−1X′σ2IX(X′X)−1=σ2(X′X)−1,
Var(AX)=A×Var(X)×A'XA
in modo che
dove può essere ottenuto con Mean Square Error (MSE) nella tabella ANOVA. σ 2
Varˆ(β^)=σ^2(X′X)−1,
σ^2
Esempio con una semplice regressione lineare in R
#------generate one data set with epsilon ~ N(0, 0.25)------
seed <- 1152 #seed
n <- 100 #nb of observations
a <- 5 #intercept
b <- 2.7 #slope
set.seed(seed)
epsilon <- rnorm(n, mean=0, sd=sqrt(0.25))
x <- sample(x=c(0, 1), size=n, replace=TRUE)
y <- a + b * x + epsilon
#-----------------------------------------------------------
#------using lm------
mod <- lm(y ~ x)
#--------------------
#------using the explicit formulas------
X <- cbind(1, x)
betaHat <- solve(t(X) %*% X) %*% t(X) %*% y
var_betaHat <- anova(mod)[[3]][2] * solve(t(X) %*% X)
#---------------------------------------
#------comparison------
#estimate
> mod$coef
(Intercept) x
5.020261 2.755577
> c(betaHat[1], betaHat[2])
[1] 5.020261 2.755577
#standard error
> summary(mod)$coefficients[, 2]
(Intercept) x
0.06596021 0.09725302
> sqrt(diag(var_betaHat))
x
0.06596021 0.09725302
#----------------------
Quando esiste una singola variabile esplicativa, il modello si riduce a
e
modo che
e le formule diventano più trasparenti. Ad esempio, l'errore standard della pendenza stimata è
yi=a+bxi+ϵi,i=1,…,n
X=⎛⎝⎜⎜⎜⎜11⋮1x1x2⋮xn⎞⎠⎟⎟⎟⎟,β=(ab)
(X′X)−1=1n∑x2i−(∑xi)2(∑x2i−∑xi−∑xin)
Varˆ(b^)−−−−−−√=[σ^2(X′X)−1]22−−−−−−−−−−−√=nσ^2n∑x2i−(∑xi)2−−−−−−−−−−−−−−−√.
> num <- n * anova(mod)[[3]][2]
> denom <- n * sum(x^2) - sum(x)^2
> sqrt(num / denom)
[1] 0.09725302