• Le test de Student (significativité d'un coefficient)
Le test de Student (évoqué un peu ici pour les aspects historiques) vise à tester la significativité d'un coefficient (et d'un seul). Significatif veut dire qu'il est (probablement) significativement non nul. On utilise pour cela que si les erreurs sont Gaussiennes, ou si le nombre d'observations est suffisamment grand
http://perso.univ-rennes1.fr/arthur.charpentier/latex/student-1.png
(dans le premier cas, c'est une propriétés des vecteurs Gaussiens et dans le second, c'est le théorème central limite car on a vu que l'estimateur par moindres carrés coïncidait avec l'estimateur de la méthodes des moments). Comme la variance est inconnue, on remplace l'inconnue par un estimateur, et on perd un peu en précision. En fait, on peut montrer (c'est tout les travaux de William Gosset) que
 http://perso.univ-rennes1.fr/arthur.charpentier/latex/student-2.png
Le nombre de degrés de liberté (i.e. le paramètre de la loi de Student) n'est pas indiqué ici. Il est fonction du nombre de variables explicatives dans le modèle (ce qui contraint d'autant le modèle).
Dans le test de Student, on cherche à tester
http://perso.univ-rennes1.fr/arthur.charpentier/latex/student-4.png contre http://perso.univ-rennes1.fr/arthur.charpentier/latex/student-5.png
Pour cela, on pose
http://perso.univ-rennes1.fr/arthur.charpentier/latex/studient-t-1.png
La région d'acceptation du test est alors de la forme suivante
http://perso.univ-rennes1.fr/arthur.charpentier/latex/studient-t-2.png
Graphiquement, on accepte l'hypothèse H0 si T n'est pas trop loin de 0. En particulier, dans la région rouge, on rejette H0 (et le coefficient est alors significativement non nul).

> dodge<-read.table("http://perso.univ-rennes1.fr/arthur.charpentier/dodge.csv",header=TRUE,sep=",")
> REG0=lm(Fire~X_1+X_2+X_3,data=dodge)
> summary(REG0)
Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 22.07525    6.19447   3.564 0.000910 ***
X_1         -0.62764    5.28130  -0.119 0.905953   
X_2          0.22378    0.06161   3.632 0.000744 ***
X_3         -1.55059    0.38195  -4.060 0.000204 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Sur la sortie on note que la statistique de test pour la variable X2 vaut 3.632. On a deux méthodes pour interpréter cette statistique
  • construire la région d'acceptation du test à partir des quantiles théorique de la loi de Student (en lisant dans les tables, ou en demandant les quantiles au logiciel)
  • en calculant la p-value, ie. la probabilité qu'une loi de Student atteigne une telle valeur.
Les bornes de la région de confiance sont ici
> qt(.025,df=43)
[1] -2.016692
> qt(.975,df=43)
[1] 2.016692

Autrement dit, les deux dernières statistiques de Student ne sont pas dans cet intervalle: on rejette l'hypothèse de nullité des deux derniers coefficients. L'autre possibilité est de calculer la probabilité qu'en valeur absolue, une loi de Student dépasse la valeur absolue de la grandeur observée. Ici, ces probabilités sont
> (1-pt(abs(-0.119),df=43))*2
[1] 0.9058296
> (1-pt(abs(3.632),df=43))*2
[1] 0.0007442971

On retrouve les grandeurs données dans la dernière colonne du tableau.
  • Le test de Fisher (significativité de plusieurs coefficients)
Le test de Fisher - tel qu'il apparait sur la sortie de la régression - est un test de significativité total du modèle. Autrement dit, on cherche à tester
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-7.png
contre
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-8.png
Autrement dit, on essaye de choisir (même si je n'aime pas introduire si tôt la terminologie de choix de modèle) entre le modèle général
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-5.png
et la version que nous dirons contrainte,
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-6.png
Formellement, les paramètres n'ont rien à voir, mais je n'ai changé que le nom du bruit car le bruit devrait changer. En fait, c'est cette idée que va exploiter Fisher en se demandant si le bruit du second modèle est vraiment plus grand que le bruit du second. Autrement dit, il s'agit de faire une comparaison entre les variances de deux modèles.
Ce test est en fait un cas très particulier d'un test beaucoup plus général proposé par Fisher. De manière beaucoup plus générale, on se demande si les deux modèles suivants sont vraiment différents, entre
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-2.png
et sa version contrainte
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-1.png
On cherche alors à tester l'hypothèse
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-3.png
contre l'hypothèse alternative
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-4.png
Pour ça, on peut utiliser ce qu'a proposé Fisher, à savoir d'utiliser la somme des carrés des résidus (qui correspondent à un facteur multiplicatif près à l'estimateur de la variance du bruit), et il a posé
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-9.png
Je parlais tout à l'heure de choix de modèle... on notera que l'on en est pas très loin car on peut réécrire cette expression en faisant apparaître le R2 des régression, contraintes et noncontraintes.
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-10.png
Fisher a montré que sous l'hypothèse H0,
http://perso.univ-rennes1.fr/arthur.charpentier/latex/fisher-11.png
i.e. la loi de la statistique de Fisher est précisément une loi de Fisher.
Pour le test de Fisher global, le résultat figure dans le tableau de la régression
F-statistic: 11.34 on 3 and 43 DF,  p-value: 1.314e-05

Mais il est possible de retrouver cette grandeur en utilisant la fonction anova(),
> REG0=lm(Fire~X_1+X_2+X_3,data=dodge)
> REG0c=lm(Fire~1,data=dodge)
> anova(REG0,REG0c)
Analysis of Variance Table
Model 1: Fire ~ X_1 + X_2 + X_3
Model 2: Fire ~ 1
  Res.Df     RSS Df Sum of Sq      F    Pr(>F)   
1     43  1831.8                                 
2     46  3280.8 -3   -1449.0 11.339 1.314e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

On peut aussi faire des tests de modèles contraints. Le plus simple est d'enlever une variable explicative dans le modèle, par exemple la troisième
> REG0c=lm(Fire~X_1+X_2,data=dodge)
> anova(REG0,REG0c)
Analysis of Variance Table
Model 1: Fire ~ X_1 + X_2 + X_3
Model 2: Fire ~ X_1 + X_2
  Res.Df     RSS Df Sum of Sq      F    Pr(>F)   
1     43 1831.75                                 
2     44 2533.84 -1   -702.09 16.481 0.0002039 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

On retrouve que cette variable est significative dans le modèle (ce qui confirme la conclusion du test de Student). Pour des tests avec des contraintes plus complexes, on peut utiliser library(lmtest), ou library(AER). En particulier, on peut se demander si les coefficients associés aux variables X2 et X3 sont identiques.
> linear.hypothesis(REG0,"X_2=X_3")
Linear hypothesis test
Hypothesis:
X_2 - X_3 = 0
Model 1: Fire ~ X_1 + X_2 + X_3
Model 2: restricted model
  Res.Df     RSS Df Sum of Sq      F    Pr(>F)   
1     43 1831.75                                 
2     44 2652.77 -1   -821.01 19.273 7.245e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Ce test peut se faire de manière équivalente en faisant directement une anova,
> REG0c=lm(Fire~X_1+I(X_2+X_3),data=dodge)
> anova(REG0,REG0c)
Analysis of Variance Table
Model 1: Fire ~ X_1 + X_2 + X_3
Model 2: Fire ~ X_1 + I(X_2 + X_3)
  Res.Df     RSS Df Sum of Sq      F    Pr(>F)   
1     43 1831.75                                 
2     44 2652.77 -1   -821.01 19.273 7.245e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

ce qui donne (tout naturellement) la même chose.
  • Tests de normalités (des résidus)
Pour les tests de normalité, essentiels si l'on n'a pas beaucoup d'observations, je renvoie à un vieux billet sur le sujet, ici. Pour le code R, on pourra utiliser
> source("http://blogperso.univ-rennes1.fr/arthur.charpentier/public/R/fonctions-nortest.R")