1 Données Quantitatives Discrètes TP2: Analyse de Données Quantitatives Avec Le Logiciel R
1 Données Quantitatives Discrètes TP2: Analyse de Données Quantitatives Avec Le Logiciel R
1 Données Quantitatives Discrètes TP2: Analyse de Données Quantitatives Avec Le Logiciel R
L3 SID
TP2 : Analyse de données quantitatives avec le logiciel R
>effectif<-table(arbres)
>effectif
arbres
0 1 2 3 4 6
2 6 9 5 1 1
Vous obtenez la séquence des modalités et la séquence des eectifs correspondants : 2 parcelles n'ont aucun arbre,
6 parcelles ont un arbre. . . Si vous n'aviez pas tapé la deuxième ligne de commande effectif, que se serait-il passé ?
Le tableau des fréquences (en pourcentage) s'obtient en divisant les eectifs par la taille n de l'échantillon :
>frequence<-effectif*100/n
>frequence
>frequence<-effectif*100/24
>frequence
arbres
0 1 2 3 4 6
8.333333 25.000000 37.500000 20.833333 4.166667 4.166667
Vous pouvez obtenir ce tableau des eectifs par les eectifs cumulés que vous pouvez obtenir avec la fonction
cumsum().
>effcum<-cumsum(effectif)
>effcum
0 1 2 3 4 6
2 8 17 22 23 24
Vous obtenez la séquence des eectifs cumulés de chaque modalité : 8 parcelles ont un arbre ou moins, 17 parcelles
ont au maximum 2 arbres,. . .
1/7
De la même façon que pour les fréquences, vous pouvez obtenir les fréquences cumulées (en %) :
>effcum*100/n
>effcum*100/24
0 1 2 3 4 6
8.333333 33.333333 70.833333 91.666667 95.833333 100.000000
La fonction sum() calcule la somme des valeurs.
Retour à l'exemple 1.1 :
>sum(arbres)
[1] 49
Dans l'exemple, cette fonction calcule le nombre total d'arbres plantés sur les 24 parcelles.
Conclusion sommaire sur les résultats produits : vous observez donc près de 2 arbres en moyenne par parcelle,
pouvant aller de 0 à 6 arbres sur une parcelle. Le nombre médian d'arbres est égal à 2, c'est-à-dire que la moitié
des parcelles ont 2 arbres ou plus, et l'autre moitié des parcelles ont 2 arbres ou moins.
La fonction summary() permet d'obtenir un tableau récapitulatif des indicateurs avec en complément les premier
et troisième quartiles.
> summary(arbres)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.000 1.000 2.000 2.042 3.000 6.000
> sum((arbres-mean(arbres))ˆ2)/length(arbres)
[1] 1.623264
2/7
La variance obtenue est diérente de la précédente, pourquoi ?
> ?var
Vous constatez que le logiciel R utilise n − 1 pour le dénominateur dans la dénition de la variance, c'est-à
1 ∑
n
dire (xi − x)2 (d'écart-type noté σn−1 sur les calculettes. Cette quantité est souvent préférée dans les
n − 1 i=1
applications numériques pour des questions d'estimation). Vériez-le :
> (n-1)*var(arbres)/n
[1] 1.623264
Calculez maintenant l'écart-type et vériez que l'écart-type est la racine carrée de la variance :
> sd(arbres)
[1] 1.301476
> (sd(arbres))ˆ2
[1] 1.693841
Vous retrouvez la variance donnée par la fonction var(). Une alternative robuste pour l'estimation de
la dispersion est la fonction mad() :
> mad(arbres)
[1] 1.4826
> plot(arbres)
Vous pouvez aussi demander la courbe des eectifs cumulés, avec en abscisse le nombre d'arbres par parcelles
et en ordonnée les eectifs cumulés :
> plot(effcum)
Vous pouvez également tracer un diagramme en bâtons par la fonction barplot à partir du tableau des ef-
fectifs ou des fréquences :
À noter que l'allure du diagramme n'est pas modiée, seul change l'axe des ordonnées.
3/7
2.1 Un exemple
Nous avons 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.
1. Créez la séquence souris et l'acher.
2. Vériez que les eectifs des modalités sont pratiquement tous égaux à 1 en achant le tableau des eectifs.
3. Combien de souris ont subi l'expérience ?
4. Donnez les indicateurs de tendance centrale de ce jeu de données.
> boxplot(souris)
La boîte à moustaches permet de représenter la distribution d'une variable avec les éléments suivants (de bas
en haut) : le minimum, le 1er quartile, la médiane, le 3ème quartile et le maximum. Plus la boîte est étirée en
hauteur, plus les valeurs de la variable sont dispersées. Vous pouvez également représenter les données continues
en traçant un histogramme. Le problème de l'histogramme est la dénition des classes. Voyons ce que le logiciel
R nous trace si vous ne spéciez aucune option :
> hist(souris)
Il y a ici plusieurs remarques à faire. D'abord, il faut noter que le logiciel R a choisi, par défaut, de regrou-
per 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 sut de le préciser :
> hist(souris,right=FALSE)
Une autre remarque : R a marqué en ordonnée Frequency mais en fait, ce qu'il représente correspond
plutôt aux eectifs. Ceci vient d'une légère diérence de vocabulaire entre pays. Ce que nous appelons nous eec-
tif s'appelle en fait frequency en anglais et nos fréquences françaises s'appellent relative frequencies .
De plus, puisque les classes sont de même amplitude, les densités d'eectif sont proportionnelles aux eectifs,
et R donne alors directement les eectifs en ordonnée. Vous pouvez modier le nombre de classes par l'option
nclass(...) de la façon suivante (en 4 classes par exemple) :
Les classes restent d'amplitude égale. Si on veut maintenant dénir d'autres classes, il sut de spécier dans
la fonction hist, les bornes des classes par l'option br=c(...) sous la forme :
Dans le cas où les classes ont des amplitudes diérentes, il faut noter que le logiciel R choisit par défaut de
représenter les fréquences (et non les eectifs). Notez qu'ici, comme les classes n'ont pas la même amplitude, R a
bien représenté en ordonnée les densités de fréquence.
Pour résumer :
lorsque les classes ont même amplitude, R choisit de représenter les eectifs.
Lorsque les classes ont des amplitudes diérentes, R choisit de représenter les fréquences (à l'aide des densités
de fréquence).
Vous pourrez, si vous le souhaitez, consulter la notice de la commande hist en tapant :
> ?hist
4/7
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).
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)
$ns
[1] 81 91 80 65 76 81 97 69 70 98
$s
[1] 74 85 95 84 68 93 84 87 78 72
Pour analyser les données en fonction de la supplémentation, vous conservez les résultats de la fonction split sous
le nom souris.sup :
> summary(souris.sup$s)
Min. 1st Qu. Median Mean 3rd Qu. Max.
68.0 75.0 84.0 82.0 86.5 95.0
> summary(souris.sup$ns)
Min. 1st Qu. Median Mean 3rd Qu. Max.
65.0 71.5 80.5 80.8 88.5 98.0
Vous observez 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.
Vous pouvez aussi appliquer toutes les autres fonctions vues précédemment. Si vous demandez seulement une ana-
lyse sur souris.sup, R vous ache des informations la composition de cet objet.
À noter qu'il est préférable de dénir des classes pour la construction des 2 histogrammes pour être sûr que
les histogrammes soient comparables. En eet, si on ne spécie pas de classes pour cet exemple, l'échelle de l'axe
des abscisses n'est pas la même sur les deux histogrammes.
2.4 Épilogue
Vous pouvez également utiliser la commande split pour fragmenter une table.
Chargez la table CO2 avec la commande data(CO2) puis copiez la dans un objet appelé tab.
> data(CO2)
> tab<-(CO2)
>summary(tab)
Identiez les vecteurs qui contiennent des données qualitatives, par exemple Type, Treatment.
Fragmentez le vecteur uptakeselon ces deux vecteurs.
ATTENTION ! uptake tout seul n'existe pas.
5/7
> uptake
Error : Object "uptake" not found
> split(tab$uptake,tab$Type)
> split(tab$uptake,tab$Treatment)
>data("Forbes2000", package="HSAUR")
1. Imprimez-le à l'écran.
2. Quelle est la structure de Forbes2000 ?
3. Quelle est la classe ou le type de Forbes2000 ?
4. Combien de lignes comporte ce chier ?
5. Combien de colonnes comporte ce chier ?
6. Quels sont les noms des colonnes et les classes des objets qui les composent ?
7. Quelle est la longueur d'une colonne ?
8. Quelle est le nom de la première entreprise du jeu de données ?
9. Combien il y a-t-il de catégories d'entreprises diérentes ?
10. Quels sont les noms des diérentes catégories d'entreprises ?
11. Donnez le tableau de contingence de ces catégories.
12. Quelle est la classe de la colonne sales ?
13. Donnez la médiane, la moyenne, l'étendue puis un ensemble de statistiques descriptives de la variable Sales .
14. Donnez un ensemble de statistiques descriptives pour l'ensemble du jeu de données.
Nous allons maintenant passer à la représentation graphique du jeu de données.
15. Que font les lignes suivantes ?
6/7