I. Hypothèses sur le modèle

1) Cas général

Un modèle de régression linéaire est défini par : \(Y=X\beta + \varepsilon\)

  • \(Y\) est un vecteur aléatoire de dimension \(n\) appelé variable à expliquer
  • \(X\) est une matrice (non-aléatoire) de taille \(n\times p\) appelée matrice du plan d’expérience
  • \(\beta\) est le vecteur de dimension \(p\) des paramètres inconnus du modèle
  • \(\varepsilon\) est le vecteur aléatoire de dimension \(n\) des erreurs (ou bruits)

Remarque : Les colonnes de \(X\) sont aussi appelées variables explicatives du modèle.

De plus, il y a des hypothèses additionnelles au modèle : \[ \begin{cases} \text{rg}(X)=p \\ \mathbb{E}[\varepsilon]=0 \\ \mathbb{V}(\varepsilon)=\sigma ^2I_n\\ \end{cases} \] Si le rang de \(X\) est inférieur à \(p\) alors il y a des vecteurs de la matrice qui sont combinaisons linéaires des autres et donc il y a une redondance de l’information. On peut expliquer un vecteur avec les autres. Les erreurs respectent la propriété d’homoscédasticité : \(\forall i \;\; \mathbb{V}(\varepsilon_i)=\sigma^2\) et elles sont également centrées.

2) Cas où \(p=2\)

Supposons que l’intercepte est dans le modèle. Alors la matrice \(X\) et \(\beta\) s’écrivent :

\[ \left(\begin{matrix} 1 & x_1 \\ 1 & x_2 \\ . & . \\ . & . \\ 1 & x_n \\ \end{matrix}\right) \;\;\; \text{et} \;\;\; \left(\begin{matrix} \beta_1 \\ \beta_2 \\ \end{matrix}\right) \] Et pour tout \(i\) on a \(y_i= \beta_1 +\beta_2 x_i + \varepsilon_i\).

Remarque : Comme rg\((X)=2\), la variable explicative n’est pas constante.

3) Exemple

n <- 100
beta_1 <- 4
beta_2 <- 8
X <- runif(n, -4, 4)
eps <- rnorm(n, 0, 5)
y <- beta_1 + beta_2*X + eps
plot(X, y, type='p', main='Exemple')

Dans cet exemple, \(\beta_1=4\) et \(\beta_2=8\). La variable \(X\) explicative est de taille \(100\) et est modélisée par une loi uniforme \(\mathcal{U}[-4,4]\). Les erreurs, eps, sont modélisées par une loi normale de moyenne \(0\) et de variance \(25\). Ensuite, on trace \(Y=\beta_1 + \beta_2X+\varepsilon\).

II. Estimateurs OLS

1) Définition et expression

On définit l’estimateur des moindres carrés ordinaires (OLS = Ordinary Least Squared) comme : \[\hat{\beta}=\underset{\beta \in \mathbb{R}^p}{\text{argmin}} ||Y-X\beta||^2\] Si on note \(\mathcal{M}(X)\) l’espace engendré par les colonnes de \(X\), \(X\hat{\beta}\) est la projection orthogonale de \(Y\) sur \(\mathcal{M}(X)\) et on note \(\hat{Y}=X\hat{\beta}\). Donc, \(Y-X\hat{\beta}\) est orthogonal à \(\mathcal{M}(X)\) et on a :

\[ \forall i \in \{1,..,p\},~~<Y-X\hat{\beta},X_i>=0 \\ \Leftrightarrow \forall i \in \{1,..,p\},~~ X_i'(Y-X\hat{\beta})=0 \\ \Leftrightarrow X'Y=X'X\hat{\beta} \\ \Leftrightarrow (X'X)^{-1}X'Y=\hat{\beta} \]

On obtient alors l’expression suivante : \[\hat{\beta}= (X'X)^{-1}X'Y\] On remarque bien que cet estimateur est linéaire en \(Y\) car de la forme \(AY\) avec \(A\) une matrice.

Rappel : On note la matrice de projection orthogonale sur \(\mathcal{M}(X)\) : \[P_X=X(X'X)^{-1}X'\] Et on a alors que \(\hat{Y}=P_XY\)

2) Moments

L’espérance et la matrice de variance de \(\hat{\beta}\) sont :

\[ \mathbb{E}[\hat{\beta}]=\beta \;\;\;\;\;\;\;\;\;\;\;\;\;\;\; \mathbb{V}[\hat{\beta}]=\sigma^2(X'X)^{-1} \]

De plus, l’estimateur OLS est de variance minimale parmi les estimateurs sans biais, linéaires en \(Y\) (Théorème de Gauss-Markov).

Note : Il existe un ordre partiel dans l’ensemble des matrices symétriques \(\mathcal{S}_n(\mathbb{R})\) défini par : \[ \forall S_1, S_2 \in \mathcal{S}_n(\mathbb{R}), \;\;S_1\le S_2 \Leftrightarrow S=S_2-S_1 \;\; \text{semi-définie positive} \] Cet ordre est utilisé dans le théorème de Gauss-Markov.

3) Expressions pour le cas \(p=2\)

En utilisant les formules précédentes, on retrouve facilement le cas de la régression linéaire simple :

\[ \hat{\beta}_1=\bar{y}-\hat{\beta}_2\bar{x} \;\;\;\;\; \text{et} \;\;\;\;\; \hat{\beta}_2=\frac{s_{X,Y}^{2}}{s_X^2} \]\(s_{X,Y}^{2}=\frac{1}{n}\underset{i=1}{\overset{n}{\sum}}(x_i-\bar{x})(y_i-\bar{y})\) et \(s_X^2=\frac{1}{n}\underset{i=1}{\overset{n}{\sum}}(x_i-\bar{x})^2\)

De plus, \(\hat{\beta}_1\) et \(\hat{\beta}_2\) sont des estimateurs sans biais de \(\beta_1\) et \(\beta_2\) respectivement. Donc : \[ \mathbb{E}[\hat{\beta}_1]=\beta_1 \;\;\;\; \text{et} \;\;\;\; \mathbb{E}[\hat{\beta}_2]=\beta_2 \] On retrouve également les résultats des variances : \[ \mathbb{V}[\hat{\beta}_1]=\sigma^2\bigg(\frac{1}{n}+\frac{\bar{x}^2}{\underset{i=1}{\overset{n}{\sum}}(x_i-\bar{x})^2}\bigg) \;\;\;\;\; \text{et} \;\;\;\;\; \mathbb{V}[\hat{\beta}_2]=\frac{\sigma^2}{\underset{i=1}{\overset{n}{\sum}}(x_i-\bar{x})^2} \] Puis la covariance : \[ \mathbb{C}ov(\hat{\beta}_1,\hat{\beta}_2)=\frac{-\sigma^2\bar{x}}{\underset{i=1}{\overset{n}{\sum}}(x_i-\bar{x})^2} \]

4) Exemple

# On utilise pour cet exemple les données de la partie précédente
S_X <- sum((X-mean(X))^2)
S_XY <- sum((X-mean(X))*y)
h_beta2 <- S_XY/S_X
h_beta1 <- mean(y)-h_beta2*mean(X)
plot(X,y, main ="Régression linéaire")
points(X,h_beta1+h_beta2*X,type='l',col='red')
legend("topleft",legend = c("Droite de régression", "y"), col = c("red", "black"),
       lty = c(1,0), pch = c(-1,1))

Sous R, il y a la fonction lm() qui donne plusieurs informations sur la régression, permettant notamment de tracer la droite :

model <- lm(y~X)
plot(X,y, main='Regression linéaire avec lm')
abline(model, col='blue')
legend("topleft",legend = c("Droite de régression", "y"), col = c("blue", "black"),
       lty = c(1,0), pch = c(-1,1))

De plus, on voit que les coefficients correspondent :

print(c(h_beta1,model$coefficients[1]))
##             (Intercept) 
##     4.07389     4.07389
print(c(h_beta2,model$coefficients[2]))
##                 X 
## 8.220286 8.220286

III. Résidus et prédictions

1) Résidus et propriétés

Les résidus sont définis par : \[ \hat{\varepsilon}=\left(\begin{matrix} \hat{\varepsilon}_1\\ \hat{\varepsilon}_2\\ ...\\ \hat{\varepsilon}_n\\ \end{matrix}\right) = Y-\hat{Y} = P_{X^\perp}Y=P_{X^\perp}\varepsilon \] Les résidus ne sont donc rien d’autres que la projection du vecteur d’erreur \(\varepsilon\) sur l’orthogonal de \(\mathcal{M}(X)\).

\(\hat{\varepsilon}\) et \(\hat{Y}\) possèdent les propriétés suivantes :

  • \(\mathbb{E}[\hat{\varepsilon}]=0\), en moyenne l’erreur est nulle.
  • \(\mathbb{V}[\hat{\varepsilon}]=\sigma^2P_{X^\perp}\)
  • \(\mathbb{E}[\hat{Y}]=X\beta\)
  • \(\mathbb{V}[\hat{Y}]=\sigma^2P_X\)
  • \(\mathbb{C}ov(\hat{\varepsilon},\hat{Y})=0\)

2) Estimation de \(\sigma ^2\)

On peut donner un estimateur non biaisé naturel de la variance \(\sigma ^2\) qui s’exprime :

\[ \hat{\sigma}^2 = \frac{1}{n-p}||\hat{\varepsilon}||^2 = \frac{1}{n-p} \sum_{i=1}^n \hat{\varepsilon}_i^2=\frac{RSS}{n-p} \]\(RSS=\) Residual Sum of Squares.

3) Prévision

Si on se donne une nouvelle observation \(x^{n+1}\), il est possible d’utiliser le modèle de régression dans le but de faire une prédiction sur la valeur de la variable \(y\) correspondante. Si on note \(y_{n+1}\) la vraie valeur de cette variable, et \(\hat{y}_{n+1} = x^{n+1} \hat{\beta}\) la valeur approchée prédite par le modèle, on peut définir alors l’erreur de prévision :

\[ \hat{\varepsilon}_{n+1}= y_{n+1} - \hat{y}_{n+1} \] Si on peut écrire le modèle : \[ y_{n+1} = x^{n+1}\beta+ \varepsilon_{n+1} \] avec \(\mathbb{E}[\varepsilon_{n+1}] = 0\), \(\mathbb{V}[\varepsilon_{n+1}] =\sigma^2\) et pour tout \(j \in \{1,...,n\}, \mathbb{C}ov(\varepsilon_j,\varepsilon_{n+1})=0\), la variable aléatoire \(\hat{\varepsilon}_{n+1}\) possède les propriétés suivantes :

  • \(\mathbb{E}[\hat{\varepsilon}_{n+1}] = 0\)
  • \(\mathbb{V}[\hat{\varepsilon}_{n+1}] = \sigma^2(1+x^{n+1}(X'X)^{-1}(x^{n+1})')\)

Lorsque \(p=2\), on en déduit la formule suivante :

\[ \mathbb{V}[\hat{\varepsilon}_{n+1}] = \sigma^2\bigg(1+ \frac{1}{n} + \frac{(x_{n+1} - \bar{x})^2}{\underset{i=1}{\overset{n}{\sum}}(x_i-\bar{x})^2}\bigg) \] Illustrons cela en utilisant notre exemple précédent :

new <- data.frame(X = 3)
P <- predict(model, new, interval='none')
print(P)
##        1 
## 28.73475
plot(X,y)
points(new$X,P,pch = 7, col='red')

Il est aussi possible (en faisant une hypothèse gaussienne sur le modèle), de pouvoir construire des intervalles de prédiction !

new <- data.frame(X = 3)
P <- predict(model, new, interval='prediction', level = 0.95)
print(P)
##        fit      lwr      upr
## 1 28.73475 19.89144 37.57805
library(ggplot2)
data <- data.frame(y=y, x=X)

ggplot(data=data,aes(x=x, y=y))+
  geom_point()+
  geom_point(aes(x=3, y=P[1]), shape=7, col='red')+
  geom_smooth(method='lm', se=F)+
  geom_segment(aes(x=3, y=P[2], xend=3, yend=P[3]), 
               color='red', linetype="twodash", show.legend=TRUE)+
  labs(title="Régression avec intervalle de prédiction pour x=3")+
  scale_linetype_manual("", values=c("Intervalle de prédiction"=2))+
  theme(plot.title=element_text(hjust=0.5, face="bold"))

4) Interprétation géométrique : vers le \(R^2\)

Si la constante fait partie du modèle, en utilisant le théorème de Pythagore sur la figure suivante on obtient : \[ ||Y-\bar{Y}\mathbb{1}||^2=||\hat{Y}-\bar{Y}\mathbb{1}||^2+||\hat{\varepsilon}||^2 \] \[ \Leftrightarrow TSS = ESS + RSS \]\(TSS=\) Total Sum of Squares, \(ESS=\) Explained Sum of Squares et \(RSS=\) Residual Sum of Squares.

De cette remarque nous pouvons en déduire le coefficient de détermination, noté \(R^2\), défini par :

\[ R^2 = cos^2(\theta) = \frac{||\hat{Y}-\bar{Y}\mathbb{1}||^2}{||Y-\bar{Y}\mathbb{1}||^2} = \frac{ESS}{TSS} = 1 - \frac{RSS}{TSS} \]

  • Si le \(R^2=1\), alors \(Y\) est dans \(\mathcal{M}(X))\) c’est-à-dire \(y_i=\beta_1+\beta_2x_i \;\; \forall i\)

  • Si le \(R^2=0\), cela veut dire que \(\hat{y}_i=\bar{y} \;\; \forall i\), par conséquent le modèle de régression linéaire est alors inadapté.

Ce coefficient peut être ajusté à l’aide du coefficient de détermination ajusté, noté \(R_{a}^2\), défini par :

\[ R_{a}^2 = 1-\frac{RSS/(n-p)}{TSS/(n-1)} =1-\frac{n-1}{n-p}(1-R^2) \] Le \(R^2\) augmente lorsqu’on ajoute des variables ne décrivant pas le modèle c’est pourquoi on utilise le \(R^2_a\) qui, lui, pénalise les points de données qui ne correspondent pas au modèle de régression et n’augmente donc pas.

On regardera donc principalement le \(R_{a}^2\). Sous R, il suffit d’utiliser la fonction summary sur notre modèle pour avoir accès à cette quantité :

summary(model)
## 
## Call:
## lm(formula = y ~ X)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10.8545  -2.7869  -0.7722   2.8166  11.5458 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   4.0739     0.4396   9.266 4.73e-15 ***
## X             8.2203     0.1941  42.354  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.396 on 98 degrees of freedom
## Multiple R-squared:  0.9482, Adjusted R-squared:  0.9477 
## F-statistic:  1794 on 1 and 98 DF,  p-value: < 2.2e-16

Ici, le \(R_{a}^2\) est représenté par la valeur de “Adjusted R-squared”.