Charger les packages nécessaires

library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(readxl)
library(dplyr)             

library(ISLR)
data("Auto")
?Auto
## starting httpd help server ...
##  done

Importation des données:

ind<-read.table("https://chesneau.users.lmno.cnrs.fr/profs.txt",header = T)
attach(ind)
head(ind)
##     Y  X1  X2    X3    X4 X5
## 1 489  81 151 45.50 43.61  1
## 2 423  68 156 46.45 44.69  1
## 3 507  80 165 76.50 54.57  1
## 4 467 107 149 55.50 43.27  1
## 5 340  43 134 49.40 49.21  1
## 6 524 129 163 72.00 49.96  1
reg<-lm(Y~X1+X2+X3+X4+X5)

Afficher un résumé de l’estimation à l’aide de la fonction summary, puis extraire uniquement le tableau des coefficients;

summary(reg)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4 + X5)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -129.715  -26.069   -2.958   24.385   99.147 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept) -272.0388   184.3865  -1.475  0.15839   
## X1             0.7913     0.5363   1.476  0.15834   
## X2             2.6828     0.9216   2.911  0.00973 **
## X3            -1.4434     0.8217  -1.757  0.09697 . 
## X4             6.8308     1.8192   3.755  0.00158 **
## X5            14.9008    27.3134   0.546  0.59246   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 55.06 on 17 degrees of freedom
## Multiple R-squared:  0.6834, Adjusted R-squared:  0.5903 
## F-statistic:  7.34 on 5 and 17 DF,  p-value: 0.0007887

Uniquement les coefficients

reg$coefficients
##  (Intercept)           X1           X2           X3           X4           X5 
## -272.0388302    0.7913127    2.6828217   -1.4433759    6.8308063   14.9008181

Les coefficients estimés, l’écart-type la valeur du t de Student ainsi que la p-value associée au test de nullité du coefficient

summary(reg)$coefficients
##                 Estimate  Std. Error    t value    Pr(>|t|)
## (Intercept) -272.0388302 184.3864705 -1.4753731 0.158393132
## X1             0.7913127   0.5362797  1.4755597 0.158343514
## X2             2.6828217   0.9215630  2.9111647 0.009729533
## X3            -1.4433759   0.8216504 -1.7566789 0.096968221
## X4             6.8308063   1.8192024  3.7548357 0.001578265
## X5            14.9008181  27.3133610  0.5455505 0.592461950

Observer les graphiques retournés lorsque la fonction plot() est appliquée au résultat de l’estimation;

op<-par(mfrow=c(2,2))
plot(reg)

par(op)

Créer un tableau de donnée scontenant les résidus de la régression, ainsi qu’une colonne indiquant le numéro des lignes de chaque observation (quel’on peut appeler index par exemple);

residus <- residuals(reg)  # Extract residuals
residus_df <- data.frame(residus = residus) %>%  # Create a data frame
  mutate(index = row_number())  # Add an index column

Tracer les résidus àl’aided’un nuage de points(les valeurs de la variable index seront représentées enabscisses). Puis, changer la représentation géométrique pour afficher un histogramme des résidus;

ggplot(data=residus_df,aes(x=index,y=residus))+
  geom_point()

ggplot(data=residus_df,aes(x=residus))+ geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Construire un intervalle de confiance à 95% pour chacun des coefficients de la régression. Pour un paramètre α, l’intervalle de confiance est donné par :

coeffs <- summary(reg)$coef %>% data.frame()
colnames(coeffs) <- c("estimate", "std", "t_value", "p_value")
ddl <- reg$df.residual
coeffs %>%
  mutate(b_inf = estimate- qt(p = 0.975, df = ddl) * std,
         b_sup = estimate + qt(p = 0.975, df = ddl) * std)
##                 estimate         std    t_value     p_value        b_inf
## (Intercept) -272.0388302 184.3864705 -1.4753731 0.158393132 -661.0602779
## X1             0.7913127   0.5362797  1.4755597 0.158343514   -0.3401385
## X2             2.6828217   0.9215630  2.9111647 0.009729533    0.7384937
## X3            -1.4433759   0.8216504 -1.7566789 0.096968221   -3.1769067
## X4             6.8308063   1.8192024  3.7548357 0.001578265    2.9926246
## X5            14.9008181  27.3133610  0.5455505 0.592461950  -42.7253365
##                   b_sup
## (Intercept) 116.9826175
## X1            1.9227639
## X2            4.6271497
## X3            0.2901548
## X4           10.6689880
## X5           72.5269727

Les intervalles de Confiance au seuil de 5%

confint(reg, level = 0.95)
##                    2.5 %      97.5 %
## (Intercept) -661.0602779 116.9826175
## X1            -0.3401385   1.9227639
## X2             0.7384937   4.6271497
## X3            -3.1769067   0.2901548
## X4             2.9926246  10.6689880
## X5           -42.7253365  72.5269727

Les commandes R por calculer un elipsoîde de Confiance pour (B1 et B2) au niveau 95% sont:

library(ellipse)
## 
## Attaching package: 'ellipse'
## The following object is masked from 'package:graphics':
## 
##     pairs
plot(ellipse(reg, c(2,3), level=0.95), type= "l")