0% ont trouvé ce document utile (0 vote)
37 vues59 pages

Statistiques Univariées avec R

Ce document présente un TP sur l'introduction à la statistique avec R, en se concentrant sur la statistique univariée et l'analyse de données à partir de l'enquête Histoire de vie 2003. Il décrit les fonctions R pour l'inspection des données, les représentations graphiques, et l'importation de fichiers, ainsi que des exercices pratiques. Les étudiants doivent exécuter des commandes R et commenter les résultats dans un compte rendu formaté.

Transféré par

Fedi Mouelhi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
37 vues59 pages

Statistiques Univariées avec R

Ce document présente un TP sur l'introduction à la statistique avec R, en se concentrant sur la statistique univariée et l'analyse de données à partir de l'enquête Histoire de vie 2003. Il décrit les fonctions R pour l'inspection des données, les représentations graphiques, et l'importation de fichiers, ainsi que des exercices pratiques. Les étudiants doivent exécuter des commandes R et commenter les résultats dans un compte rendu formaté.

Transféré par

Fedi Mouelhi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

UNIVERSITE DE Octobre

CARTHAGE ISTEUB 2024


Master

TP N° 1
Introduction à la statistique avec R
On entend par statistique univariée l’étude d’une seule variable, que celle-ci soit
quantitative ou qualitative. La statistique univariée fait partie de la statistique descriptive.

Nous utiliserons dans ce chapitre les données de l’enquête Histoire de vie 2003 fournies
avec l’extension questionr. [Link]

```{r}

[Link]("dplyr")
[Link]("questionr", repos=c("[Link]
"[Link]
[Link]('questionr')

library(questionr)
data("hdv2003")
d <- hdv2003

```

Inspection visuelle des données


 summary
summary La fonction summary permet d’avoir une vue résumée d’une variable. Elle
s’applique à tout type d’objets (y compris un tableau de données entier) et s’adapte à celui-
ci.
summary(hdv2003$age)
summary(hdv2003$qualif)
summary(hdv2003)

 str
str La fonction str est plus complète que names . Elle liste les différentes variables, indique
leur type et donne le cas échéant des informations supplémentaires ainsi qu’un échantillon
des premières valeurs prises par cette variable :
str(hdv2003)

1. Variable quantitative
a. Principaux indicateurs
Comme la fonction str nous l’a indiqué, notre tableau d contient plusieurs variables
numériques ou variables quantitatives, dont la variable [Link] qui représente le nombre
moyen passé par les enquêtés à regarder la télévision quotidiennement. On peut essayer de
déterminer quelques caractéristiques de cette variable, en utilisant les
fonctions mean (moyenne), sd (écart-type), min (minimum), max (maximum)
et range (étendue) :
Exemple :
mean(d$[Link])
mean(d$[Link], [Link] = TRUE) 2
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2024
Master

Refaire la même chose avec les autres commandes.

2
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2024
Master
On peut lui ajouter la fonction median qui donne la valeur médiane, quantile qui calcule
plus généralement tout type de quantiles.

b. Histogramme
Tout cela est bien pratique, mais pour pouvoir observer la distribution des valeurs d’une
variable quantitative, il n’y a quand même rien de mieux qu’un bon graphique.
On peut commencer par un histogramme de la répartition des valeurs. Celui-ci peut être
généré très facilement avec la fonction hist :
hist(d$[Link], main = "Heures de télé en 7 classes", breaks = 7, xlab
= "Heures", ylab = "Proportion", probability = TRUE, col = "orange")

hist(d$[Link], main = "Heures de télé avec classes spécifiées", breaks


= c(0, 1, 4, 9, 12), xlab = "Heures", ylab = "Proportion", col = "red")

c.répartition cumulée
on peut calculer la fonction de répartition empirique ou empirical cumulative distribution
function en anglais avec la fonction ecdf. Le résultat obtenu peut, une fois encore, être
représenté sur un graphique à l’aide de la fonction plot.
plot(ecdf(d$[Link]))

d. Boîtes à moustaches
Les boîtes à moustaches, ou boxplots en anglais, sont une autre représentation graphique
de la répartition des valeurs d’une variable quantitative. Elles sont particulièrement utiles
pour comparer les distributions de plusieurs variables ou d’une même variable entre
différents groupes, mais peuvent aussi être utilisées pour représenter la dispersion d’une
unique variable. La fonction qui produit ces graphiques est la fonction boxplot.
boxplot(d$[Link], main = "Nombre d'heures passées devant la télé par
jour", ylab = "Heures")

boxplot(d$[Link], col = grey(0.8), main = "Nombre d'heures passées


devant la télé par jour", ylab = "Heures")
abline(h = median(d$[Link], [Link] = TRUE), col = "navy", lty = 2)
text(1.35, median(d$[Link], [Link] = TRUE) + 0.15, "Médiane", col =
"navy")
Q1 <- quantile(d$[Link], probs = 0.25, [Link] = TRUE)
abline(h = Q1, col = "darkred")
text(1.35, Q1 + 0.15, "Q1 : premier quartile", col = "darkred", lty = 2)
Q3 <- quantile(d$[Link], probs = 0.75, [Link] = TRUE)
abline(h = Q3, col = "darkred")
text(1.35, Q3 + 0.15, "Q3 : troisième quartile", col = "darkred", lty =
2)
arrows(x0 = 0.7, y0 = quantile(d$[Link], probs = 0.75, [Link] = TRUE),
x1 = 0.7, y1 = quantile(d$[Link], probs = 0.25, [Link] = TRUE), length
= 0.1, code = 3)
text(0.7, Q1 + (Q3 - Q1) / 2 + 0.15, "h", pos = 2)
mtext("L'écart inter-quartile h contient 50 % des individus", side = 1)
abline(h = Q1 - 1.5 * (Q3 - Q1), col = "darkgreen")
text(1.35, Q1 - 1.5 * (Q3 - Q1) + 0.15, "Q1 -1.5 h", col = "darkgreen", 2
lty = 2)
abline(h = Q3 + 1.5 * (Q3 - Q1), col = "darkgreen")
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

text(1.35, Q3 + 1.5 * (Q3 - Q1) + 0.15, "Q3 +1.5 h", col = "darkgreen",
lty = 2)

2. Variable qualitative :
a. Tris à plat
La fonction la plus utilisée pour le traitement et l’analyse des variables
qualitatives (variable prenant ses valeurs dans un ensemble de modalités)
est sans aucun doute la fonction table, qui donne les effectifs de chaque
modalité de la
variable, ce qu’on appelle un tri à plat ou tableau de fréquences.
table(d$qualif)

Quand le nombre de modalités est élevé, on peut ordonner le tri à plat selon les
effectifs à l’aide de la fonction sort.

sort(table(d$qualif))
sort(table(d$qualif), decreasing = TRUE)

À noter que la fonction table exclut par défaut les non-réponses du tableau résultat.
L’utilisation de summary permet également l’affichage du tri à plat et du nombre de
non- réponses :
summary(d$qualif)

Pour obtenir un tableau avec la répartition en pourcentages, on peut utiliser la


fonction freq de l’extension questionr
freq(d$qualif)

b. Représentation graphique
Les représentations graphiques utilisées pour une variable qualitative sont les
diagrammes en bâtons et les diagrammes en secteurs :
barplot(table(d$qualif))
pie(table(d$qualif))

Travail demandé :

1. Exécuter les commandes ci-dessus sur Rstudio et commenter les résultats.


2. Le compte rendu doit être au format html, Word ou PDF

1
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

TP 2 : Importation et création d’un [Link]


Présentation :
Les [Link] sont les objets les plus importants dans R, du point de vue du statisticien.
Il s’agit d’un tableau à deux dimensions, dont les colonnes, à l’inverse des matrices,
peuvent être de différents types. Cela permet donc de pouvoir disposer, dans un seul
objet, des observations sur de nombreux individus de variables quantitatives et
qualitatives, formes habituelles d’un jeu de données. On partira du principe que la
dimension des lignes correspond aux n observations et les colonnes correspondent aux p
variables. [Link]éer un [Link] : Si l’on considère les vecteurs suivants correspondant à
des caractéristiques observées sur 6 étudiants :
age <- c(20, 21, 20, 25, 29, 22)
taille <- c(165, 155, 150, 170, 175,
180) sexe <- c("F", "F", "F", "M", "M",
"M")
On créé un [Link] avec l’instruction suivante :
don <- [Link](age, taille,
sexe) don

Parmi les caractéristiques d’un [Link] : • sa dimension (nombre de lignes × nombre


de colonnes)
dim(don)

équivalent à utiliser les fonctions nrow() et ncol() :


nrow(don)

ncol(don)
• les noms des lignes et colonnes données par les fonctions [Link]() et
colnames() (ou names() comme pour les list) :
[Link](don)

colnames(don)
Remarque : par défaut, il est donné un nom à chaque ligne qui correspond aux numéros
de lignes exprimés en chaînes de caractères. Pour changer le nom des lignes, on fait :
[Link](don) <- c("sonia", "maud", "iris", "mathieu", "amin",
"gregory")
2
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

• le type des colonnes donné par la fonction str() :


str(don)

3
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

2. Comment importer un fichier csv


** Il faut déterminer l’emplacement du fichier [Link] sur votre machine. ** Ensuite, on
peut soit importer directement le fichier
smp <- read.csv2("~/Dropbox/cours statistiques inférentielle/R tp +
cours/[Link]")

(remplacer les antislashs () par des slashs (/) ou doubler les antislashs (\).) ** soit définir le
répertoire de travail pour pouvoir appeler directement le fichier.
setwd("~/Dropbox/cours statistiques inférentielle/R tp +
cours") smp <- read.csv2("[Link]")

Il est aussi possible de définir le répertoire de travail à l’aide des menus : - sous R : Menu
File / Change dir - sous RStudio : Menu Session / Set working directory / Choose directory
Erreurs les plus fréquentes: • Erreur dans file(file, “rt”) : impossible d’ouvrir la connexion
Vérifiez l’emplacement du fichier. • Error: ‘’ used without hex digits in character string
starting "“C:” Pensez à remplacer les antislashs () par des slashs (/) ou doubler les
antislashs (\). \ • Il y a une seule variable dans le fichier importée
str(smp)

Soit vous avez utilisé la fonction [Link]() au lieu de la fonction read.csv2() ; Soit vous
avez modifié le fichier en le téléchargeant. Téléchargez le à nouveau avec le bouton droit de
la souris / “Enregistrer la cible du lien sous”.

3. Importation/Exportation de fichiers issus


d’autres logiciels
3.1 Fichiers Excel (“.xls” ou “.xlsx”)
Pour importer un fichier au format Excel, il y a deux possibilités. La première est de
convertir les fichiers .xls et .xlsx au format .csv (avec le délimiteur point virgule) depuis
Office et de les importer en utilisant les fonctions vues ci-dessus. Le logiciel Excel étant un
logiciel propriétaire, il existe une alternative provenant du monde du libre LibreOffice qui
permet de faire ce type de conversion. La deuxième solution est d’utiliser une librairie
spécialisée. Il en existe plusieurs et on recommande pour l’instant la librairie readxl. La
fonction read_xls() permet ainsi d’importer directement des fichiers de données au format
Excel
[Link]("cellranger")
[Link]("readxl")
library("readxl")
f <- "[Link]
[Link](f, destfile =paste0(getwd(), "/[Link]"))
1
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

2
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

TP 3: Révision des commandes


relatives à la statistique
descriptive
04/11/2024

1. Rappel de quelques fonctions statistiques


sous R
Fonction Description

summary() Donner divers paramètres statistiques


cumsum() Calculer les effectifs cumulés
sum() Calculer l’effectif total
mean() Calculer la moyenne
max() Calculer la valeur maximum
min() Calculer la valeur minimum
range() Calculer les valeurs minimum et maximum
median() Calculer la médiane
var() Calculer la variance
sd() Calculer l’écart-type

2. Données quantitatives discrètes


On a compté le nombre d’arbres plantés sur les parcelles d’un lotissement. On a obtenu les
données suivantes : 1, 2, 4, 1, 6, 3, 2, 1, 2, 0, 1, 2, 2, 1, 3, 0, 3, 2, 1, 2, 2, 3, 2, 3.
1. Rentrer ces données sous la forme d’un vecteur nommé arbres et afficher ce vecteur.
2. Trier les valeurs de ce vecteur par ordre croissant.
arbres<-c(1, 2, 4, 1, 6, 3, 2, 1, 2, 0, 1, 2, 2, 1, 3, 0, 3,
2, 1, 2, 2, 3, 2, 3)
sort(arbres, decreasing = FALSE)

3
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

2.1 Effectifs et effectifs cumulés


Donner la taille de l’échantillon (c’est-à-dire le nombre de composantes du vecteur) en la
notant n et afficher sa valeur. Dans le cas d’une variable quantitative discrète, on peut
construire le tableau des effectifs. La fonction unique permet d’afficher les modalités (ou
valeurs possibles) de la variable étudiée :

4
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master
unique(arbres)

La fonction table fournit le tableau des effectifs (modalités de la variable et effectifs de


chaque modalité) :
effectif<-table(arbres)
effectif

On obtient la séquence des modalités et la séquence des effectifs correspondants : 2


parcelles n’ont aucun arbre, 6 parcelles ont un arbre,· · ·. Le tableau des fréquences (en
pourcentage) s’obtient en divisant les effectifs par la taille de l’échantillon :
frequence <- effectif*100/length(arbres)
frequence

On peut compléter ce tableau des effectifs par les effectifs cumulés que l’on peut obtenir
par la fonction cumsum :
effcum <- cumsum(effectif)
effcum

On obtient la séquence des effectifs cumulés de chaque modalité : 8 parcelles ont un arbre
ou moins, 17 parcelles ont au maximum 2 arbres,. . . De la même façon que pour les
fréquences, on peut obtenir les fréquences cumulées (en %) :
effcum*100/length(arbres)

cumsum(frequence)
La fonction sum calcule la somme des valeurs, c’est-à-dire le nombre total d’arbres plantés
sur les 24 parcelles :
sum(arbres)

2.2 Indicateurs de tendance centrale


On peut obtenir quelques indicateurs de tendance tels que la moyenne, le maximum, le
minimum ou le range (minimum, maximum), la médiane par les fonctions mean, max, min,
range, median :
a. Appliquer ces commandes à la table arbres.
b. Utiliser la fonction summary et donner le premier et le troisième quartile.

2.3 Indicateurs de dispersion


On peut calculer la variance et l’écart-type par les fonctions var et sd : Déterminer la variance
et l’écart type de la table arbres.

5
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master
2.4 Représentations graphiques

6
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master
a. La fontion plot affiche un nuage de points avec en asbcisse le numéro de l’observation et en
ordonnée le nombre d’arbres: appliquer cette fonction sur la table arbre, et tracer la
courbe des effectifs cumulés, avec en abscisse le nombre d’arbres par parcelles et en
ordonnée les effectifs cumulés.
b. Tracer un diagramme en bâtons par la fonction barplot à partir du tableau des effectifs ou
des fréquences :
barplot(effectif, xlab="nombre d’arbres", ylab="effectif")

3. Données issues d’un caractère


quantitatif continu
Une des principales caractéristiques des données continues réside dans le fait qu’elles sont
pratiquement toutes différentes (les égalités sont dues à la nécessité d’arrondir et/ou au
fait que les instruments de mesure sont gradués) ; les effectifs des modalités sont alors
pratiquement tous égaux à 1. Pour tracer un histogramme de ces données, on procède à un
regroupement de ces données en classes. Les raisons du choix du nombre de classes, de leurs
amplitudes ou de leurs effectifs ne seront pas abordées ici. On a relevé les poids (en
grammes) de souris soumises à une expérience de supplémentation en vitamines : 74, 85, 95,
84, 68, 93, 84, 87, 78, 72, 81, 91, 80, 65, 76, 81, 97, 69, 70, 98.

3.1 Description des données


1. Créer la séquence souris et l’afficher.
2. Vérifier que les effectifs des modalités sont pratiquement tous égaux à 1 en affichant le
tableau des effectifs.
3. Combien de souris ont subi l’expérience ?
4. Donner les indicateurs de tendance centrale de ce jeu de données.

3.2 Représentations graphiques


Sur des données quantitatives, on représente la ”boîte à moustaches” que l’on obtient avec
la fonction boxplot.
On peut également représenter les données continues en traçant un histogramme. Le
problème de l’histogramme est la définition des classes. Voyons ce que R nous trace si on ne
spécifie aucune option :
hist(souris)

Il y a ici plusieurs remarques à faire. D’abord, on voit que R a choisi, par défaut, de
regrouper les données par classes d’amplitude 5, soit 7 classes : la première étant [65,70] et
ensuite du type ]a,b]. Si on souhaite obtenir des classes ouvertes à droite, il suffit de le
7
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master
préciser :
hist(souris,right=FALSE)

8
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master
On peut modifier le nombre de classes par l’option nclass(…) de la façon suivante (en 4
classes par exemple) :
hist(souris, nclass=4)

3.3 Décomposition d’un vecteur selon des


groupes
L’expérience à laquelle on s’intéresse porte sur des souris soumises à une supplémentation
en vitamines. On sait finalement que les 10 premières données concernent des souris
effectivement soumises à cette supplémentation et les 10 dernières données
correspondent aux souris non supplémentées en vitamines. Il peut donc être intéressant de
décomposer les données en deux groupes selon la présence ou l’absence de cette
supplémentation. Dans un premier temps, on crée un vecteur vitamine de 20 composantes :
les 10 premières prenant la valeur s (comme supplémentée) et les 10 suivantes, la valeur ns
(comme non supplémentée) :
vitamine<-c(rep('s',10),rep('ns',10))

Pour pouvoir comparer les résultats de l’expérience sur les souris supplémentées et sur les
souris non supplémentées, on décompose le vecteur souris en deux listes par la fonction
split :
split(souris,vitamine)

Pour analyser les données en fonction de la supplémentation, on conserve les résultats de la


fonction split sous le nom [Link] :
[Link] <- split(souris,vitamine)

R crée alors automatique deux nouveaux vecteurs : l’un pour les souris supplémentées,
[Link]. On peut étudier ces deux vecteurs :
summary([Link]$s)
summary([Link]$ns)

On observe qu’en moyenne et en médiane, le poids des souris supplémentées en vitamines


est légèrement plus élevé que le poids des souris non supplémentées. Représenter
l’histogramme du poids des souris supplémentées et non supplémentées :
hist([Link]$s, main="Histogramme du poids des souris supplementees
en vitamine", xlab="poids", br=c(60,70,80,90,100))

hist([Link]$ns, main=" Histogramme du poids des souris non


supplementees",xlab="poids", br=c(60,70,80,90,100))

9
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

Exercice 3:

Le gérant d’un magasin vendant des articles de consommation courante a relevé pour un
article particulier qui semble connaître une très forte popularité, le nombre d’articles
vendus par jour.

Son relevé a porté sur les ventes des mois de Mars et Avril, ce qui correspond à 52 jours
de vente. Le relevé des observations se présente comme suit :

7 13 8 10 9 12 10 8 9 10 6 14 7 15 9 11 12 11 12 5 14 11 8 10 14 12 8

5 7 13 12 16 11 9 11 11 12 12 15 14 5 14 9 9 14 13 11 10 11 12 9 15.

1. Déterminer le tableau statistique en fonction des effectifs, des fréquences,


des effectifs cumulés et des fréquences cumulés.
2. Tracer le diagramme des bâtonnés associé à la variable X.
3. Calculer le mode Mo et la moyenne arithmétique x.
4. Déterminer à partir du tableau puis à partir du graphe, la valeur de la médiane Me.
5. Calculer la variance et l’écart-type.

Exercice :

Les valeurs suivantes sont les poids d’un échantillon de 20 enfants :

27.4 46.76 38.2 41.76 33.4 29.1 36.09 41.7 32.08 43.87

28 36.3 40.9 31.6 27.8 44.5 34.2 31.6 43.1 47

1
0
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

Dans l’exemple ci-dessus, la fonction [Link]() a permis de télécharger depuis un


site extérieur un fichier de données sur le disque local. L’argument destfile indique le
chemin où est sauvegardé le fichier. Dans un deuxième temps, si on importe le fichiers
de données sans préciser aucun argument, on va rencontrer un problème qui s’explique
par le fait que les premières lignes du fichier Excel contiennent des Métadonnée:
don_xls <-

readxl::read_xls("[Link]") #

Lecture d’un fichier en local:

3.2 Importation de données d’un autre


logiciel statistique
(SAS/STATA/SPSS)
Un module a été spécialement conçu pour pouvoir importer des fichiers de données
produit par d’autres logiciels statistiques. Il s’agit de la librairie foreign, librairie intégrée
à la version de base de R. Noter toutefois qu’il faudra la charger avant chaque utilisation
par :
library("foreign")

a. Un fichier de données SAS porte


l’extension .sas7bdat.
Le package sas7bdat permet l’importation d’un jeu de données au format .sas7bdat à
l’aide de la fonction read.sas7bdat(). Si l’on prend la table de données baseball.sas7bdat
et qu’on la copie dans le répertoire du tp , cela donne :

[Link]("sas7bdat")
library("sas7bdat")
require("sas7bdat")

## Loading required package: sas7bdat

[Link] <- read.sas7bdat("baseball.sas7bdat")


head([Link])

1
1
UNIVERSITE DE Octobre
CARTHAGE ISTEUB 2023
Master

b. STATA
Si l’on considère les données contenues dans le fichier [Link] (extrait du site de
Stata), l’importation se réalise avec la fonction [Link]() comme suit :
automiss <- [Link]("[Link]")
head(automiss)

c. SPSS
SPSS, comme Stata, ne pose aucun problème d’importation. Pour la table [Link], le
code est :

1
2
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

[Link] <- [Link]("[Link]", [Link] = T)


head([Link])

Remarque: Comment installer et utiliser un


package ?
• Pour télécharger un package, il faut passer par “Installer un package” ou
la ligne de commande correspondante :
[Link]("gplots", dep=TRUE)

• Ensuite, il faut “charger le package” à chaque session de R pour avoir accès


aux fonctions qui le composent. Dans la pratique, on le fait par ligne de commande,
ce qui permet de
l’enregistrer dans un script R.
library(gplots)

1
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

TP N°4
Régression linéaire
Partie I. Travail guidé :

Les composantes chimiques d'un fromage jouent un rôle dans le goût du produit final.
Une expérience a été mise en place sur 30 échantillons de fromage. Le fichier texte
[Link] contient 30 observations et 4 variables quantitatives :

 taste : une mesure subjective du goût (plus elle est élevée, plus le fromage
est goûteux).
 aa : la concentration en acide acétique,
 sh : le log de la concentration en sulfate d'hydrogène,
 al : la concentration en acide lactique,

L'objectif de cette expérience est d'étudier l'effet éventuel de ces trois composantes sur la
mesure du goût. Quel(s) composant(s) a(ont) un effet sur le goût ? Pour obtenir un
fromage le plus goûteux possible, de quel(s) composant(s) faudrait-il augmenter et/ou
diminuer la concentration ? et ceci dans quel ordre de grandeur ?

a. Lecture et exploration du tableau de données

1. Importer la table [Link] :


fromage <-[Link]('[Link]',header = TRUE, sep =" " )
2. Etudiez rapidement les variables dont vous disposez. Vous porterez votre
attention sur la variable réponse.
 summary(fromage)
 [Link](taste)
 par(mfrow=c(2,2))
 for (j in 1:4) boxplot(fromage[,j],main=names(fromage)[j])
 par(mfrow=c(2,2)) > for (j in 1:4) hist(fromage[,j],main=names(fromage)[j])

Indications : Ces fonctions et procédures permettent de décrire les variables


quantitatives par les moyennes, médianes, écart-types, minimum, maximum, ....
et de tracer les histogrammes et boîtes à moustaches.

2
On peut vérifer que la distribution d'une variable est normale par les tests de
normalité (par la fonction [Link] de R) ; des p-values largement
supérieures à 5% indiquent que l'on ne rejette pas la normalité.
Toutefois, dans le cas de grands échantillons (plus de 30 observations), la
normalité de la variable réponse n'est pas une obligation car le modèle linéaire
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
est robuste vis-à-vis de l'hypothèse de normalité des résidus. Dans le cas des
petits échantillons, la vérifcation des ces hypothèses est plus importante.

b. Analyse des corrélations

On affiche la matrice des corrélations pour explorer les corrélations entre les 4
variables disponibles. Cette matrice contient les cofficients de corrélation entre tous
les couples de variables et les p-values associées à chaque cofficient permettant de
conclure si le cofficient de corrélation est significativement différent de 0 (p-
value≤0.05) ou non (p-value>0.05). Cette matrice des cor rélations peut être
également complétée par les nuages de points entre variables, permettant de vérifier
le caractère linéaire ou non-linéaire des relations.

 cor(hemo[,c("aa","sh","al","taste")])
 [Link](aa, taste, alternative="[Link]", method="pearson")
 library(Hmisc)
 rcorr([Link](fromage))
 pairs(hemo[,c("aa","sh","al","taste")])

Remarque : Utilisez de préférence la fonction rcorr de la librarie Hmisc qui permet


d'obtenir la matrice des corrélations, plutôt que les fonctions cor et [Link] dont les
sorties sont moins synthétiques.
Commentaires : Les nuages de points et les cofficients de corrélation linéaire
montrent que la mesure du goût est fortement corrélée à la concentration en sulfate
d'hydrogène (avec un cofficient de corrélation linéaire égal à 0.755), assez fortement
à la concentration en acide lactique (0.704) et de façon un peu moins importante à
l'acide acétique (0.549). Ces cofficients de corrélation sont tous significativement non
nuls (p < 0.002). Ces corrélations sont toutes positives : plus la concentration est
élevée, plus le goût du fromage est fort. Il peut être également intéressant d'étudier
les corrélations entre les trois concentrations. On observe que les trois
concentrations sont corrélées positivement, comme le confirment les cofficients de
corrélations correspondants significativement différents de 0 (avec des p-values
toutes inférieures à 0.0005) :
 r(aa, al) = 0.604
 r(aa, sh) = 0.618
 r(al, sh) = 0.645
3 c. Régression linéaire simple
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
On réalise une régression linéaire simple de taste en fonction de la variable
explicative sh :
 ?lm * pour consulter l'aide sur la fonction lm *
 reg1=lm(taste ∼ sh)
 reg1 > summary(reg1) * pour a-cher le nuage de points et la droite de régression
 plot(sh,taste,col="blue",pch=20)
 abline(reg1)

Cette première régression linéaire simple montre que sh explique de façon significative
taste. Le test d'ajustement global (F-statistic) ou le test de nullité du paramètre associé
à sh (t value dans le tableau des paramètres) donnent les mêmes résultats, à savoir
une p-value inférieure à 0.0001, comme pour le c÷-cient de corrélation, ce qui normal
en régression simple puisque quelque soit le test, l'hypothèse nulle est toujours
l'absence d'effet de sh sur taste. Le modèle estimé est de la forme :

i = −9.78 + 5.77 ℎi
indiquant que l'augmentation d'une unité du log de la concentration en sulfate
d'hydrogène entraîne une augmentation moyenne de 5.8 de la mesure du goût. Ce
modèle permet d'expliquer 57% de la variabilité de la mesure du goût (on peut vérifier
que
2
= r(taste, sh)2).

Les deux autres régressions simples (en fonction de aa et al) montrent, en accord avec
les coefficients de corrélation significatifs, une relation significative positive entre le
goût et les concentrations de chaque composant chimique.

d. Première régression linéaire multiple


On réalise maintenant la régression linéaire multiple de taste en fonction des 3
variables explicatives
 reg2 = lm(taste ∼ aa+sh+al)
 summary(reg2)
Commentaires : On observe que l'ajustement du modèle aux données est assez bon,
puisque ce modèle explique près des deux tiers de la variabilité totale du goût (R2 =
0.65) et le test
d'ajustement global est largement significatif (p < 0.0001). On obtient l'équation de la
régression :

i = −28.9 + 0.33 i + 3.91 ℎi + 19.67 i + i


4
L'effet de la concentration en acide acétique n'est pas significatif (p = 0.94), alors que
l'effet des concentrations en sulfate d'hydrogène et en acide lactique sont significatifs
(p < 0.005 et p < 0.05, respectivement). Au vu de ces p-values, l'effet de sh est plus
prononcé que l'effet
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
de al. Pourtant, le paramètre estimé associé à la concentration en acide lactique est
plus important, mais cela est logique puisque l'ordre de grandeur de al est plus
faible que les deux autres concentrations. On observe également que les cofficients
associés à chaque concentration sont positifs, indiquant une relation positive entre
les concentrations et la
mesure du goût, comme nous avions pu le commenter à partir des cofficients de
corrélation.

e. Sélection des variables explicatives


i) On veut maintenant sélectionner les variables explicatives ayant un effet
significatif sur la variable réponse. Pour cela, R propose des algorithmes de
sélection automatique des variables. Utilisez la méthode de sélection
descendante : à partir du modèle complet (contenant toutes les variables
explicatives spécifiées dans le code de la procédure), sont supprimées une à
une les variables explicatives les moins significatives. L'algorithme de
sélection s'arrête quand toutes les variables restantes dans le modèle ont
des p-values inférieures à 5.
 step(reg2, direction = c("backward"))
A partir du modèle complet contenant les 3 variables explicatives, la variable aa
est supprimée à la première étape (avec un AIC qui passe de 142 pour le modèle
complet à 140 pour le modèle sans aa). Les deux variables restant dans le
modèle (sh et al) sont significatives (avec des p-values respectives de 0.0017 et
0.018)
ii) Mettez en œuvre la méthode de sélection ascendante : dans cette
démarche ascendante, le logiciel ajoute une à une les variables les plus
significatives (celles dont les p -values sont les plus faibles et inférieures à
0.05, ou celles dont l'introduction entraîne la plus grande diminution du
critère AIC).
 reg0 = lm(y ∼ 1)
 step(reg0, scope = list(upper = ∼ aa+sh+al, lower = ∼1), direction =
c("forward")) Commentaire : A la première étape de la sélection ascendante,
c'est la variable sh qui est introduite dans le modèle (avec une p-value inférieure
à 0.0001), puis la variable al est introduite à la seconde étape. Le critère AIC
passe de 168 pour le
modèle blanc à 140 pour le modèle contenant les variables sh et al. L'algorithme
de sélection s'arrête à cette étape puisque la variable aa est associée à une p-
value supérieure à 5% quand le modèle contient déjà sh et al.
5
f. Etude du modèle final :
Les démarches de sélection ont donné le même modèle final contenant les deux
variables sh et al. On estime donc ce modèle pour en contrôler la qualité et la
validité, et pour commenter les effets de ces deux variables sur le goût du fromage.
L'expérience réalisée sur ces 30 échantillons de fromage montre que la concentration
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
en acide acé tique n'intervient pas (ou très peu) dans le goût du produit nal,
comparativement aux concentra tions en sulfate d'hydrogène et en acide lactique.

6
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

En effet, en augmentant ces deux concentrations d'une unité chacune, on estime


qu'on augmenterait la mesure du goût de 23.8. Toutefois, il faut voir quelles seraient
les autres implications d'une telle augmentation sur les caractéristiques du fromage,
en terme par exemple d'onctuosité ou de fraîcheur.

Partie II. Travail personnel


Dans cette partie de travail personnel, un autre jeu de données est à votre disposition pour
vous entraîner sur cette méthode. Vous pouvez suivre la démarche suivante :

1. Décrire rapidement les données. Etudier les corrélations deux-à-deux entre les variables.

2. Réaliser le modèle complet expliquant la variable réponse en fonction des autres variables
proposées (bien choisir les variables selon leur nature et la méthode à utiliser).

3. Sélectionner les variables explicatives significatives.

4. Choisir le meilleur modèle, le valider et étudier sa qualité.

5. Interpréter les résultats de ce modèle.

Un nouveau produit a été lancé sur le marché en janvier 2011. Une entreprise du secteur
entreprend en mars 2014 une étude de marché pour déterminer les caractéristiques les
plus influentes sur le volume des ventes.
Pour cette étude, l'entreprise dispose des données mensuelles suivantes (de Janvier 2011
à Février 2014, soit 38 observations) :
 mois : le mois et l'année (que l'on peut considérer comme un identifiant),
 marche : le marché total du secteur,
 remise : la remise aux grossistes,
 prix : le prix du produit,
 rec : le montant allouée à la recherche,
 inv : le montant des investissements,
 pub : le montant allouée à la publicité du produit,
 frais : frais de vente,
 totpub : budget total du secteur allouée à la publicité,
 volume : le volume des ventes du produit.
Les données sont disponibles dans le fichier [Link] avec le nom des variables en
première ligne et un espace entre chaque colonne.
L'objectif de cette étude est de modéliser le volume des ventes en fonction des 8 autres
variables disponibles et de déterminer celles qui ont l'impact le plus important sur le
volume des ventes.

7
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

[Link]('[Link]',header = TRUE, sep ="," )

Corrigé Travail personnel TP1 :


Etude de marché sur la vente
d’un produit
Un nouveau produit a e+te+ l a nc e+ sur le marche+ en janvier 2011. Une entreprise
du secteur entreprend en mars 2014 une e+ tude de marche+ pour de+terminer les
caracte+ ristiques les plus influentes sur le volume des ventes.

Pour cette e+tude, l'entreprise dispose des donne+ es mensuelles suivantes (de Janvier 2011
a! Fe+ vrier 2014, soit 38 observations) :
• mois : le mois et l'anne+ e (que l'on peut conside+ rer comme un identifiant),
• marche : le marche+ total du secteur,
• remise : la remise aux grossistes,
• prix : le prix du produit,
• rec : le montant alloue+ e a! la recherche,
• inv : le montant des investissements,
• pub : le montant alloue+e a! la publicite+ du produit,
• frais : les frais de vente,
• totpub : le budget total du secteur alloue+ e a! la publicite+,
• volume : le volume des ventes du produit.

L’objectif de cette e+tude est de mode+liser le volume des ventes en fonction des 8
autres variables disponibles et de de+terminer celles qui ont l’impact le plus important
sur le volume des ventes. Dans cette optique, nous allons d’abord r e + aliser une
analyse descriptive des donne+es ainsi qu’une analyse des corre+lations. Dans un 2e!
me temps, nous mettrons en oeuvre un mode!le de re+ gression l i n e+ aire complet,
suivie si besoin d’une se+lection des variables explicatives, sans oublier d ’ e+ tudier la
validite+ du mode!le se+lectionne+ . Pour terminer, nous interpre+ terons les effets mis

8
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

en e+ vidence dans le mode!le final.

I. Analyse descriptive
summary(ventes[,2:10])
# marche remise prix rec
# Min. :268.0 Min. :104.0 Min. :56.00 Min. : 8.00
#
#
# 1st Qu.:359.8 1st Qu.:120.0 1st Qu.:63.25 1st Qu.:13.00
#
# Median :416.0 Median :130.0 Median :69.00 Median :20.00
#
# Mean :408.2 Mean :129.1 Mean :69.18 Mean :19.42
#
# 3rd Qu.:455.8 3rd Qu.:138.0 3rd Qu.:74.75 3rd Qu.:24.75
#
# Max. :554.0 Max. :152.0 Max. :82.00 Max. :36.00
#
# inv pub frais totpub
#
# Min. :-50.00 Min. :12.00 Min. :154.0 Min. : 60.0
#
# 1st Qu.: 5.00 1st Qu.:40.00 1st Qu.:202.5 1st Qu.:128.2
#
# Median : 60.00 Median :62.50 Median :224.5 Median :243.0
#
# Mean : 54.82 Mean :59.08 Mean :232.5 Mean :238.2
#
# 3rd Qu.:116.00 3rd Qu.:81.50 3rd Qu.:264.8 3rd Qu.:313.5
#
# Max. :148.00 Max. :96.00 Max. :328.0 Max. :429.0
#
# volume
#
# Min. :4033
#
# 1st Qu.:4790
#
# Median :5118
#
# Mean :5097
#
# 3rd Qu.:5394
#
# Max. :6180
#

9
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

par(mfrow=c(3,3))
for (j in 2:10) {hist(ventes[,j],main=names(ventes)[j])}

[Link](volume)

##
## Shapiro-Wilk normality
test ##
## data: volume
## W = 0.98112, p-value = 0.757

Le volume moyen des ventes par mois est de 5097 articles vendus, variant de 4033 a!
6180 selon les mois. On peut e+ galement ve+ rifier par le test de normalite+ de
Shapiro que la distribution du volume des ventes est proche d’une loi Normale (dans
l’optique de la re+ gression l i n e+ aire a! mettre en place). C’est le cas avec un test non-
significatif (p-value=0.75) ; on ne rejette donc pas l’hypothe! se de normalite+ .

II. Analyse des corrélations


# installer le package Hmisc
library(Hmisc)

1
0
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
rcorr([Link](ventes[,2:10]))
# march remise prix rec inv pub frais totpub volume
# e
# marche 1.00 -0.13 0.51 0.17 0.05 0.17 0.88 0.00 0.66
#
# remise -0.13 1.00 0.02 0.01 -0.12 -0.12 -0.05 -0.15 -0.08
#
# prix 0.51 0.02 1.00 0.46 -0.07 0.26 0.63 -0.18 0.29
#
# rec 0.17 0.01 0.46 1.00 0.13 0.10 0.36 -0.13 0.08
#
# inv 0.05 -0.12 -0.07 0.13 1.00 0.22 0.17 -0.14 0.39
#
# pub 0.17 -0.12 0.26 0.10 0.22 1.00 0.13 -0.20 0.57
#
# frais 0.88 -0.05 0.63 0.36 0.17 0.13 1.00 -0.02 0.64
#
# totpub 0.00 -0.15 -0.18 -0.13 -0.14 -0.20 -0.02 1.00 -0.10
#
## volume 0.66 -0.08 0.29 0.08 0.39 0.57 0.64 -0.10 1.00
##
# n= 38
#
#
#
# P
#
# march remise prix rec inv pub frais totpub volume
# e
# marche 0.4474 0.0011 0.3122 0.7600 0.3160 0.0000 0.9836 0.0000
#
# remise 0.4474 0.8954 0.9525 0.4854 0.4748 0.7669 0.3832 0.6181
#
# prix 0.0011 0.8954 0.0041 0.6643 0.1220 0.0000 0.2756 0.0804
#
# rec 0.3122 0.9525 0.0041 0.4408 0.5310 0.0247 0.4446 0.6143
#
# inv 0.7600 0.4854 0.6643 0.4408 0.1870 0.3159 0.3852 0.0156
#
# pub 0.3160 0.4748 0.1220 0.5310 0.1870 0.4242 0.2400 0.0002
#
# frais 0.0000 0.7669 0.0000 0.0247 0.3159 0.4242 0.8971 0.0000
#
# totpub 0.9836 0.3832 0.2756 0.4446 0.3852 0.2400 0.8971 0.5666
#
# volume 0.0000 0.6181 0.0804 0.6143 0.0156 0.0002 0.0000 0.5666
#
pairs(ventes[,2:10])

1
1
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

La matrice des c o r r e+ lations contient toutes les corre+lations entre les 9 variables
disponibles, et les p-values associe+es. Dans un premier temps, on observe que le
volume des ventes est fortement co r r e+ le+ positivement a! trois variables : avec le

1
2
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
marche+ total de la branche (r=0.66, p-value<0.0001), la publicite+ (r=0.57, p-
value<0.0001), et les frais de vente (r=0.64, p-value<0.0001), signifiant que plus ces 3
variables ont des valeurs e+ leve+es et plus le volume des ventes est important. On
notera e+ galement que le volume est l i e+ a! l’investissement, mais de façon moins
importante (r=0.39, p-value<0.02).
Dans un deuxie! me temps, on peut relever deux co r r e+ lations positives fortes entre
les frais et le march e+ total (r=0.88, p-value<0.0001), et les frais et le prix du produit
(r=0.63, p-value<0.001).

III. Régression linéaire multiple


On met en oeuvre un mode!le de re+ gression line+aire multiple mode+lisant le
volume des ventes en fonction des 8 variables quantitatives disponibles.

[Link]=lm(volume ~ marche+remise+prix+rec+inv+pub+frais+totpub)
summary([Link])

##
## Call:
## lm(formula = volume ~ marche + remise + prix + rec + inv +
pub + ## frais + totpub)
##
## Residuals:
## Min 1Q Median 3Q
Max ## -591.12 -177.73 1.89 125.69
540.09 ##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
# (Intercept) 3106.16518 743.56002 4.177 0.000247 ***
#
# marche 2.35193 1.51572 1.552 0.131582
#
# remise 2.55417 3.69450 0.691 0.494847
#
# prix -13.80511 9.06952 -1.522 0.138804
#
# rec -7.00568 6.88809 -1.017 0.317530
#
# inv 1.62622 0.83646 1.944 0.061635 .
#
# pub 9.51190 1.96229 4.847 3.88e-05 ***
#
# frais 4.92351 2.74670 1.793 0.083489 .
#
# totpub -0.01686 0.44338 -0.038 0.969922
#
# ---
1 #
3
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' '1
#
#
#
# Residual standard error: 282 on 29 degrees of freedom
Dans ce mode!le complet qui explique 76% de la variabilite+ du volume, seule la
publicite+ explique de façon significative le volume des ventes (p-value<0.0001), les 7
autres variables ayant un effet non-significatif (p-value>0.05). Selon le principe de
parcimonie, nous allons donc pr o c e+ der a! une de+marche de se+ lection des variables
explicatives par les d if f e+ rentes me+ thodes que nous avons vues en cours.

1
4
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
IV. Sélection des variables explicatives
Commencons par la de+ marche pas-a! -pas descendante qui permet d’aboutir a! un
mode!le contenant 5 variables : marche, prix, inv, pub et frais
step([Link], direction = c("backward"))

## Start: AIC=436.51
## volume ~ marche + remise + prix + rec + inv + pub + frais +
totpub ##

## Call:
## lm(formula = volume ~ marche + prix + inv + pub +
frais) ##
## Coefficients:
## (Intercept) march prix inv pub frai
## e - 1.49 9.40 s
2.611 16.185 5 4 4.36
Selon les me+thodes pas-a! -pas ascendante et mixte, on aboutit a! un mode!le
ne contenant que 3 variables : marche + pub + inv
reg0 = lm(volume ~1)
step(reg0, scope = list(upper = ~
marche+remise+prix+rec+inv+pub+frais+totpub, lower = ~1), direction =
c("forward"))


## Call:
## lm(formula = volume ~ marche + pub +
inv) ##
## Coefficients: march pub inv
## (Intercept) e 8.12 2.17
4.172 0 0
step(reg0, scope = list(upper
=~marche+remise+prix+rec+inv+pub+frais+totpub,
lower = ~1), direction = c("both"))


## Call:
## lm(formula = volume ~ marche + pub +
inv) ##
## Coefficients: march pub inv
##
## (Intercept) e 8.12 2.17
4.172 0 0
On peut en comple+ ment o p e+ rer la se+ lection par la de+marche exhaustive selon
3 crie!res : BIC, Cp de Mallows et le R2 ajust e+ . Les 3 graphiques correspondants
montrent que les valeurs optimales pour ces 3 crite! res ne sont pas obtenues pour les
meD mes mode!les :

• R2 ajuste+ maximal pour le mode! le a! 6 variables explicatives


(marche+prix+rec+inv+pub+frais),

1
5
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
• Cp de Mallows minimal pour le mode! le a! 5 variables explicatives
(marche+prix+inv+pub+frais) comme la de+marche descendante,

• BIC minimal pour le mode! le a! 3 variables explicatives (marche+inv+pub)


comme les de+ marches ascendante et mixte.
Quand on met en oeuvre ces trois mode!les, on choisit finalement le mode! le a! 3
variables explicatives (marche+inv+pub) qui est le seul a! ne contenir que des variables
explicatives significatives.
# installer le package leaps
library(leaps)
[Link]<-regsubsets(volume
~marche+remise+prix+rec+inv+pub+frais+totpub,int=T,nbest=1,nvmax=10,meth
od="ex haustive",[Link]=T,data=ventes)
par(mfrow=c(1,3))
plot([Link],scale="bic")
plot([Link],scale="Cp")
plot([Link],scale="adjr2")

summary(lm(volume~marche+prix+rec+inv+pub+frais))

##
## Call:
## lm(formula = volume ~ marche + prix + rec + inv + pub +
frais) ##
## Residuals:
## Min 1Q Median 3Q
Max ## -643.82 -189.47 -4.79 143.79
518.82 ##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3445.3859 459.1576 7.504 1.87e-08 ***
# marche 2.1626 1.4518 1.490 0.1464
#
# prix -13.4539 8.6727 -1.551 0.1310
#
1
6
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
# rec -7.1578 6.7059 -1.067 0.2940
Master
#

1
7
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
# inv 1.5683 0.7972 1.967 0.0582 .
#
# pub 9.4177 1.8965 4.966 2.37e-05 ***
#
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
# Residual standard error: 275.1 on 31 degrees of freedom
#
#
## Multiple R-squared: 0.7608, Adjusted R-squared: 0.7145
## F-statistic: 16.43 on 6 and 31 DF, p-value: 2.036e-08
summary(lm(volume~marche+prix+inv+pub+frais))

##
## Call:
## lm(formula = volume ~ marche + prix + inv + pub + frais) ##
## Residuals:
## Min 1Q Median 3Q Max ## -737.08 -
157.73 15.99 113.91 483.64 ##
##
# Coefficients:
(Intercept) 3499.157 457.378 7.650 1.02e-08 ***
#
## Estimate Std. Error t value Pr(>|t|)
# marche 2.611 1.393 1.875 0.0699 .
#
# prix -16.185 8.305 -1.949 0.0601 .
#
# inv 1.495 0.796 1.879 0.0694 .

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
# Residual standard error: 275.7 on 32 degrees of freedom
#
#
## Multiple R-squared: 0.752, Adjusted R-squared: 0.7133
## F-statistic: 19.41 on 5 and 32 DF, p-value: 7.392e-09
summary(lm(volume~marche+inv+pub))

##
## Call:
## lm(formula = volume ~ marche + inv + pub) ##
## Residuals: Estimate Std. Error t valuePr(>|t|)
## (Intercept)
Min 1Q Median
2794.71413Q 281.4062
Max ## -778.56 - 1.39e-11 ***
9.931
190.76
## marche14.89 183.22 4.1720
639.27 ## 0.6716 6.212 4.57e-07 ***
## Coefficients:
## inv 2.1700 0.7512 2.889 0.006689 **
## pub 8.1203 1.8639 4.357 0.000115 ***

1
8
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#
#
# Residual standard error: 285.6 on 34 degrees of freedom
#

1
9
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
## Multiple R-squared: 0.7172, Adjusted R-squared:
0.6923 ## F-statistic: 28.74 on 3 and 34 DF, p-
value: 1.925e-09

V. Modèle sélectionné
Etudions maintenant la validite+ du mode! le se+lectionne+. Ce mode!le semble de
bonne qualite+ au vu du R2 et 3 variables dont l’effet est fortement significatif.
Toutefois, si on observe les graphiques de diagnostic, on observe que deux points (8 et
29) sont mis en e+ vidence comme mal ajuste+s par le mode! le (re+sidus grands) et tre!
s influents sur les estimations du mode! le (distance de Cook tre!s importante par
rapport aux autres points). Il s’agit des observations de 05/13 (avec un investissement
tre! s faible par rapport au volume) et 08/11 (avec un march e+ total tre! s e+ l e v e+ par
rapport au volume). Dans ce cas, on refait la meD me analyse (mode! le complet puis
de+ marche de se+ lection) sans prendre en compte ces deux observations.
[Link]=lm(volume ~ marche+inv+pub)
summary([Link])

##
## Call:
## lm(formula = volume ~ marche + inv +
pub) ##
## Residuals:
## Min 1Q Median 3Q
Max ## -778.56 -190.76 14.89 183.22
639.27
## ## Estimate Std. Error t value Pr(>|t|)
## Coefficients:
## (Intercept) 2794.7141 281.4062 9.931 1.39e-11 ***
## marche 4.1720 0.6716 6.212 4.57e-07 ***
## inv 2.1700 0.7512 2.889 0.006689 **
## pub 8.1203 1.8639 4.357 0.000115 ***

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ''1
#
# Residual standard error: 285.6 on 34 degrees of freedom
#
#
## Multiple R-squared: 0.7172, Adjusted R-squared: 0.6923
## F-statistic: 28.74 on 3 and 34 DF, p-value: 1.925e-09
par(mfrow=c(2,3))
plot([Link])
plot([Link],4)

2
0
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

VI. Deuxième modélisation


Suite a! la premie! re m o d e+ lisation, on a de+ tecte+ 2 observations tre! s influentes, que
nous choisissons de supprimer.

ventes36 = ventes[!mois==c(513,811),]
attach(ventes36)

## The following objects are masked from


ventes: ##
## frais, inv, marche, mois, prix, pub, rec, remise,
totpub, ## volume

reg.comp36=lm(volume ~ marche+remise+prix+rec+inv+pub+frais+totpub)
summary(reg.comp36)

##
## Call:
## lm(formula = volume ~ marche + remise + prix + rec + inv +
pub + ## frais + totpub)
##
## Residuals:
## Min 1Q Median 3Q
Max ## -334.56 -132.46 -14.01 140.93
387.17 ##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)

# (Intercept) 4103.36886 627.60277 6.538 5.19e-07 ***

2
1
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

#
# marche 5.05620 1.40123 3.608 0.00123 **
#
# remise -2.96402 3.15776 -0.939 0.35623
#
# prix -16.15330 7.63905 -2.115 0.04384 *
#
# rec -0.76940 5.99826 -0.128 0.89889
#
# inv 1.57429 0.72962 2.158 0.04001 *
#
# pub 7.29848 1.62537 4.490 0.00012 ***
#
# frais -0.02755 2.43750 -0.011 0.99106
#
## totpub -0.22616 0.35386 -0.639 0.52813
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ''1
#
# Residual standard error: 221.6 on 27 degrees of freedom
#
#
## Multiple R-squared: 0.8295, Adjusted R-squared: 0.779
## F-statistic: 16.42 on 8 and 27 DF, p-value: 1.565e-08

step(reg.comp36, direction =

c("backward")) ## Start: AIC=396.52

...
## Call:
## lm(formula = volume ~ marche + prix + inv +
pub) ##
## Coefficients:
## (Intercept) marche prix inv
pub ## 3599.727 5.082 -16.058
1.660 7.700

reg0.36 = lm(volume ~1)


step(reg0.36, scope = list(upper
= ~
marche+remise+prix+rec+inv+pub+frais+totpub, lower = ~1),
direction = c("forward"))

...
## Call:
## lm(formula = volume ~ marche + pub + prix +
inv) ##
## Coefficients:
## (Intercept) marche pub prix
inv ## 3599.727 5.082 7.700 -
16.058 1.660
2
2
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

step(reg0.36, scope = list(upper


=~marche+remise+prix+rec+inv+pub+frais+totpub, lower = ~1),
direction = c("both"))

...
## Call:
## lm(formula = volume ~ marche + pub + prix +
inv) ##
## Coefficients:
## (Intercept) marche pub prix
inv ## 3599.727 5.082 7.700 -
16.058 1.660

[Link]<-regsubsets(volume
~marche+remise+prix+rec+inv+pub+frais+totpub,int=T,nbest=1,nvmax=10,method=
"ex haustive",[Link]=T,data=ventes36)
par(mfrow=c(1,3))
plot([Link],scale="bic")
plot([Link],scale="Cp")
plot([Link],scale="adjr2")

2
3
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master

Quelque soit la me+thode de se+ lection utilise+ e, le mode!le se+lectionne+


contient maintenant 4 variables explicatives significatives : marche, inv, pub et prix
(cette dernie! re n’e+tait pas incluse dans le p r e+c e+ dent mode!le).
reg.sel36=lm(volume ~ marche+inv+pub+prix)
par(mfrow=c(2,3))
plot(reg.sel36)
plot(reg.sel36,4)
hist(rstudent(reg.sel36))

[Link](residuals(reg.sel36))

2
4
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
##
## Shapiro-Wilk normality
test ##
## data:
residuals(reg.sel36) ## W =
0.98638, p-value = 0.9283

# installer le package car


library(car)

vif([Link])
## inv pub
## 1.028962 1.050514
1.077850
D’apre!s les re+ sultats fournis ci-dessous concernant la qualite+ de ce nouveau mode!
le, on observe que toutes les observations sont correctement ajuste+es par le mode! le
et qu’elles ont toutes une influence raisonnable sur les estimations (pas de distances de
Cook trop e+l e v e+ es). On observe e+ galement que les hypothe!ses de normalite+ des
re+sidus (graphiques 2 et 6) et d’homosce+ dasticite+ (graphique 3) sont ve+ rifi e+ es.
De plus, on ne de+ tecte pas de proble! me de multicoline+arite+ entre les variables
explicatives, selon le crie!re VIF. On peut donc maintenant interpre+ ter les estimations
du mode! les et les effets mis en e+ vidence.

VII. Interprétation du modèle final


Notre analyse a donc abouti au mode! le contenant les variables Marche, Inv, Pub et prix,
dont les estimations sont do nn e+ es ci-dessous :

summary(reg.sel36)

##
## Call:
## lm(formula = volume ~ marche + inv + pub + prix) ##
## Residuals:
## Min 1Q Median 3Q Max ## -420.42 -
114.70 1.33 150.81 393.15 ##
## Coefficients:

# Estimate Std. Error t value Pr(>|t|)


#
# (Intercept) 3599.7268 332.4710 10.827 4.64e-12 ***
#
# marche 5.0821 0.6331 8.027 4.60e-09 ***
#
# inv 1.6601 0.6231 2.665 0.01213 *
#

2
5
UNIVERSITE DE Novembre
CARTHAGE ISTEUB 2024
Master
# pub 7.7004 1.4322 5.377 7.29e-06 ***
#
## prix -16.0585 5.8466 -2.747 0.00994 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
# Residual standard error: 211.1 on 31 degrees of freedom
#
#
# Multiple R-squared: 0.8225, Adjusted R-squared: 0.7996
#
# F-statistic: 35.91 on 4 and 31 DF, p-value: 3.174e-11
#

2
6
UNIVERSITE DE CARTHAGE Novembre 2023
ISTEUB Master EEC

confint(reg.sel36)

# 2.5 % 97.5 %
#
# (Intercept) 2921.6477088 4277.805855
#
# marche 3.7908033 6.373310
#
# inv 0.3894078 2.930878
#
# pub 4.7793899 10.621335
#
# prix -27.9827504 -4.134248
#

Le mode! le est de tre! s bonne qualite+ puisqu’il explique 82% de la variabilite+ totale
du volume des ventes. Les 4 variables retenues sont :
• le marche+ total : son effet sur le volume des ventes est tre! s significatif (p-
value<0.0001) avec une augmentation de 5 produits vendus en plus (IC95% = [3.8 ;
6.4]) quand le marche+ total augmente de 1 uni t e+ en moyenne, toutes choses e+
gales par ailleurs (c’est-a! -dire quand les 3 autres variables explicatives restent
stables)
• la publicite+ a e+ galement un effet positif tre!s significatif (p-value<0.0001) :
quand la publicite+ augmente d’une uni t e+ , le volume des ventes augmente de 7.7
en moyenne (IC95% = [4.8 ; 10.6])
• a contrario (et logiquement), quand le prix baisse (de 1 euro), le volume des ventes
augmente de 16 en moyenne (p-value<0.01, IC95% = [-28 ; -4.1])
• l’effet de l’investissement est un peu moins fort (p-value=0.012) avec une
augmentation moyenne de 1.7 (IC95% = [0.4 ; 2.9]) du volume des ventes par unit e+
supple+ mentaire de l’investissement.

En conclusion, si le march e+ total est en progression, cela aura un impact positif sur
les ventes du produit, mais ce n’est pas une variable sur laquelle l’entreprise peut
agir. En revanche, l’entreprise peut agir sur la baisse du prix du produit,
l’augmentation de la publicite+ et dans une moindre mesure, l’augmentation des
investissements qui permettent de stimuler les ventes.

1
UNIVERSITE DE CARTHAGE Novembre 2023
ISTEUB Master EEC

TP N° 5
Probabilités et intervalles de confiance

1. Calculs de probabilité
a. Calculs basés sur des données
L'exemple porte sur la taille des arbres dans une forêt de séquoias.
Chargez le fichier sé[Link] avec la commande [Link] dans une
variable sequoia, puis utilisez la commande attach pour accéder directement aux noms
des colonnes. Utilisez également la commande names pour connaître le nom des colonnes
dans le fichier.

b. Représentation graphique des données:

hist(taille_arbre)
Quelle est la probabilité qu'un arbre mesure 80m ?

length(taille_arbre[taille_arbre==80])/length(taille_arbre)

ou mieux :
length( which(taille_arbre==80) ) / length(taille_arbre)

Quelle est la probabilité qu'un arbre mesure plus de 100 ?


length( which(taille_arbre>100) ) / length(taille_arbre)

c. Calculs basés sur des lois (ou distributions) de


probabilité
Différentes lois sont programmées (binomiale, Poisson, normale, chi2 ou χ2, ...) Il y a
plusieurs fonctions pour chaque loi. Par exemple, pour la loi normale :

 dnorm() : fonction densité (density)

 pnorm() : fonction de répartition (probability)

2
UNIVERSITE DE CARTHAGE Novembre 2023
ISTEUB Master EEC

 qnorm() : fonction quantile (quantile)

 rnorm() : générateur aléatoire (random)

d. Calculs basés sur une loi normale centrée réduite N(0,1)


Rappels : On dit qu'une variable aléatoire X suit la loi
normale centrée réduite, ce que
l'on note X↪N(0,1) si elle est continue et admet pour densité :

3
UNIVERSITE DE CARTHAGE Novembre 2023
ISTEUB Master EEC

 Une loi normale est définie par 2 paramètres : la moyenne et l'écart-type.


 La loi normale centrée réduite est la loi normale dont la moyenne est 0 et l'écart-type 1. Elle
est notée généralement N(0,1) (0 pour la moyenne et 1 pour l'écart-type de la variable X).

Fonction de densité de la loi normale centrée réduite N(0,1)


dnorm(0,0,1) donne la densité de probabilité associée à la
:

pnorm(0,0,1) donne la probabilité cumulative associée à une


P(X > 0) :

1-pnorm(0,0,1) # ou pnorm(0,0,1, [Link]=F)

Histogramme pour 100 valeurs échantillonnées aléatoirement suivant une N(0,1) :


hist(rnorm(100,0,1))

e. Application à la forêt de séquoias

Utilisez la moyenne et l'écart-type des tailles des séquoias chargées précédemment pour
calculer la probabilité qu'un arbre mesure 80m selon la loi normale paramétrée ainsi.

Quelle est la probabilité qu'un séquoia mesure plus de 110m ?

f. Calculs basés sur une loi Binomiale B(n,p)


Exemple : pour un lot de n=100 graines d'Arabidopsis ayant chacune une probabilité de
germination p=0.8 donc selon B(100,0.8)

La probabilité que k=80 graines germent (k=nombre de succès)


dbinom(80,100,prob=0.8)

La probabilité qu’au maximum 80 graines germent


pbinom(80,100,prob=0.8)

4
UNIVERSITE DE CARTHAGE Novembre 2023
ISTEUB Master EEC

La probabilité que plus de 80 graines germent


pbinom(80,100,prob=0.8, [Link]=F)

En moyenne, combien de graines devraient germer ?

5
UNIVERSITE DE CARTHAGE Novembre 2023
ISTEUB Master EEC

La distribution Binomiale B(100,0.8):


k=seq(0,100,1) # k=nombre de graines qui germent
plot(dbinom(k,100,prob=0.8),xlab="k",ylab="Prob(X=k)")

[Link] un intervalle de confiance


(IC) d'un paramètre populationnel (µ,
p,...) à partir d'un échantillon
Intervalle de confiance de la moyenne théorique µ de la
population, à partir de la moyenne m calculée sur un
échantillon
Calculer l'intervalle de confiance (IC) du poids moyen théorique d'une récolte de tomates
cerises, à partir d'un échantillon.

Chargez le fichier tomates_cerises.txt avec la commande [Link] dans une variable


tomates, puis utilisez la commande attach pour accéder directement aux noms des
colonnes. Utilisez également la commande names pour connaître le nom des colonnes
dans le fichier. Affichez le contenu de la colonne poids_tomate.

Script pour calculer l'IC:


m = mean(poids_tomate) # moyenne calculée sur l'échantillon
s = sd(poids_tomate)# écart-type calculé sur
l'échantillon n = length(poids_tomate)# taille de

Si n≤100, on utilise la distribution de Student pour calculer la marge d'erreur. Ici, nous allons
calculer l'intervalle ayant 95% de chance de contenir la vraie moyenne de la population (et
pas celle de l'échantillon).

error <- qt(0.975,df=n-1)*s/sqrt(n) # qt(0.975) = quantile


97,5% de la distribution de Student ; s/sqrt(n) = erreur
standard de la moyenne
left <- m-error
L'intervalle ayant 95% de chance de contenir la vraie moyenne µ de la population est:
left;right
6
UNIVERSITE DE CARTHAGE Novembre 2023
ISTEUB Master EEC

Si n>100 on utilise la distribution normale pour calculer l'erreur.


error <- qnorm(0.975)*s/sqrt(n) # qnorm(0.975) = quantile
97,5% de la distribution normale
left <- m-error
right <- m+error
L'intervalle ayant 95% de chance de contenir la vraie moyenne µ de la population est alors:
left;right

7
UNIVERSITE DE CARTHAGE Décembre 2023
ISTEUB Master EEC

REMARQUE IMPORTANTE : si l'on veut un IC à 99% ==> remplacer 0.975 par 0.995.

IC de la proportion théorique p d'un caractère dans la population,

à partir de la fréquence f calculée sur un échantillon


Calcul de l'IC de la proportion théorique de pommes rouges dans une récolte comportant des pommes
rouges et vertes, à partir d'un échantillon de n=125 pommes contenant f=0.4 de pommes rouges
(40%). On utilise une approximation normale de la distribution d'une proportion :
f <- 0.4 # fréquence de pommes rouges dans l'échantillon
n <- 125 # taille de l'échantillon
error <- qnorm(0.975)*sqrt(f*(1-f)/n)
left <- f-error
right <- f+error

1
UNIVERSITE DE CARTHAGE Décembre 2023
ISTEUB Master EEC

TP 7
RStudio peut être utilisé pour réaliser des études en hydrologie grâce à divers packages spécialisés.
Voici quelques étapes et outils pour débuter :

1. Packages utiles pour l'hydrologie :


 hydroTSM : Pour l'analyse de séries temporelles hydrologiques (débit,
précipitations, etc.).

 hydroGOF : Pour évaluer les performances des modèles hydrologiques.

 SWATmodel : Interface pour utiliser le modèle SWAT (utilisé pour simuler les
processus hydrologiques).

 topmodel : Implémente le modèle TOPMODEL, un modèle conceptuel basé sur les


bassins versants.

 raster et terra : Pour manipuler des données spatiales (cartes d'altitude, zones
inondables, etc.).

 sf et sp : Pour travailler avec des données géospatiales et des formats vectoriels.

 dplyr et tidyr : Pour le nettoyage et la manipulation de données.

2. Exemples d’applications :
 Analyse des précipitations : Charger des données météorologiques et analyser leur
distribution dans le temps ou l'espace.
 Modélisation des bassins versants : Simuler l'écoulement dans un bassin versant en
fonction des précipitations.
 Cartographie des zones inondables : Utiliser des données d'altitude et de débit pour
identifier les zones à risque.

3. Données et Préparation

2
UNIVERSITE DE CARTHAGE Décembre 2023
ISTEUB Master EEC

 Données utilisées :
o
Séries temporelles de débits (ex. débit d’une rivière sur 10 ans).
o
Précipitations journalières/mensuelles.
o
Modèles d’altitude numériques (MNT) pour analyser les flux.

3
UNIVERSITE DE CARTHAGE Décembre 2023
ISTEUB Master EEC

4. Exemple d’importation:

library(readr)
debits <- [Link]("debits_riviere.csv", sep = ";")

head(debits)

 Analyse exploratoire des données


 Calcul des statistiques descriptives

summary(debits)

attach(debits)

 Visualisation des données :

library(ggplot2)

## Warning: le package 'ggplot2' a été compilé avec la version R 4.4.2


ggplot(debits, aes(x = Date, y =
debit)) +
geom_line()
+ "Évolution du débit de la rivière",
xlabs(title
= "Date", y = "debit (m³/s)")

4
UNIVERSITE DE CARTHAGE Décembre 2023
ISTEUB Master EEC

Analyse hydraulique

 Calcul des débits moyens mensuels :

library(hydroTSM)

[Link]("zoo")

[Link]("hydroTSM

") library(hydroTSM)
library(zoo)

debits$Date <- [Link](debits$Date, format = "%Y-%m-%d")


# Remplacez le format selon vos données

# Conversion en objet zoo


debits_zoo <- zoo(debits$debit, [Link] = debits$Date)

## Warning in zoo(debits$debit, [Link] = debits$Date): some methods


for "zoo"
## objects do not work if the index entries in '[Link]' are not unique

5
UNIVERSITE DE CARTHAGE Décembre 2023
ISTEUB Master EEC

# Vérifiez la classe
class(debits_zoo) # Doit renvoyer "zoo"

library(zoo)

debit_mensuel <- monthlyfunction(debits_zoo, FUN = mean)


plot(debit_mensuel, type = "o", main = "Debits moyens mensuels",
xlab = "Mois", ylab = "Debit moyen")

barplot(debit_mensuel, main = "Motyenne Mensuelle", ylab = "mm", xlab = "Mois")

Exportation des résultats


Exportez les résultats pour un rapport ou une présentation : #
Sauvegarde des résultats mensuels
[Link](monthly_avg, "monthly_average.csv")

Visualisation spatiale des données hydrauliques

6
UNIVERSITE DE CARTHAGE Décembre 2023
ISTEUB Master EEC

 Chargement d’un modèle d’altitude numérique (MNT)

#[Link]("raster"

#[Link]("terra")

library(raster)

## Warning: le package
Le chargement 'raster'
a nécessité le a été compilé
package : sp avec la version R 4.4.2
## Warning: le package 'sp' a été compilé avec la version R 4.4.2

mnt <- raster("FRA_wind-speed_100m.tif")


plot(mnt, main = "Modèle Numérique de Terrain")

# Exemple de données synthétiques


dates <- [Link](from = [Link]("2023-01-01"), to = [Link]("2023-
12-31"), by = "day")
debit <- runif(length(dates), min = 5, max = 50) # Génération de
débits aléatoires

7
UNIVERSITE DE CARTHAGE Décembre 2023
ISTEUB Master EEC

# Création d'une série temporelle


debit_ts <- ts(debit, start = c(2023, 1), frequency = 365)

# Visualisation
ggplot(data = [Link](Date = dates, Debit = debit), aes(x = Date, y
= Debit)) +
geom_line(color = "blue") +
labs(title = "Débit fluvial quotidien", x = "Date", y = "Débit
(m³/s)")

Vous aimerez peut-être aussi