StatDescr_avec R

Transcription

StatDescr_avec R
Université de Bourgogne
L3 de mathématiques - Statistique
Année 2016-2017
TD de statistique descriptive sur R
Utilisation de RStudio et R :
1. Créer un répertoire de travail nommé par exemple TD1Stat dans Documents,
2. Ouvrir RStudio et sélectionner ce répertoire de travail dans Session − > Set Working
Directory − > Choose Directory.
3. Créer avec File − > New File − > Rscript un fichier texte à enregistrer sous le nom
par exemple codeTD1 (auquel RStudio mettra l’extension .R). C’est dans ce fichier texte
que vous taperez les instructions R. Pour les exécuter dans R (fenêtre en bas à gauche)
utiliser le bouton Run.
4. Essayer les instructions :
a=c(1,2,3) mean(a)
Les deux structures de données principales dans R sont les vector (structure unidimensionnelle
qui permet de représenter une variable statistique et les data.frame (structure bidimensionnelle
qui permet de représenter (une ou) plusieurs variables statistiques mesurées sur les mêmes
personnes.
A la fin de chaque exercice, penser à nettoyer la mémoire (balayette en haut à gauche).
Exercice 1 : Variable qualitative nominale :
On s’intéresse à la variable état-civil notée X et à la série statistique des valeurs prises par
X sur 20 personnes. La codification est : célibataire (C), divorcé(D), marié (M), veuf (V). En
langage R :
1. Création du vector X dans R :
X=c(’M’,’M’,’D’,’C’,’C’,’M’,’C’,’C’,’C’,’M’,’C’,’M’,’V’,’M’,’V’,’D’,’C’,’C’,’C’,’M’)
2. Vérification
X
3. Tableau statistique :
T1=table(X)
4. T1
5. Effectifs et fréquences :
data.frame(Eff=c(T1),Freq=c(T1)/sum(c(T1)))
6. Diagramme en secteurs :
pie(T1)
7. Plus gros :
pie(T1,radius=1)
1
8. Diagramme en barres :
barplot(T1)
9. Mieux :
barplot(T1, ylim=c(0,max(T1)+1))
Exercice 2 : Variable qualitative ordinale :
On interroge 50 personnes sur leur dernier diplôme obtenu (variable Y ). La codification est :
sans diplôme (Sd), primaire (P), secondaire (S), Supérieur non-universitaire (Su), Universitaire
(U). Les résultats sont donnés dans le fichier ordinale.xlsx. En langage R :
1. Importer le fichier de données ordinale.xlsx (cliquer dessus : import data set). R crée un
dataframe appelé ordinale.
2. Pour rendre accessible les variables dans le data.frame ordinale, on l’attache :
attach(ordinale)
3. Vérification :
Y
4. Tableau statistique :
T2=table(Y)
5.
T2
6.
V2=c(T2)
7. Effectifs, fréquences et fréquences cumulées :
data.frame(Eff=V2,EffCum=cumsum(V2),Freq=V2/sum(V2),FreqCum=cumsum(V2/sum(V2)))
8. Diagramme en secteurs :
pie(T2)
9. Diagramme en barres des effectifs :
barplot(T2)
10. Diagramme en barres des effectifs cumulés :
barplot(cumsum(T2))
11. Penser à détacher le data.frame :
detach(ordinale)
Exercice 3 : Variable quantitative discrète :
Un quartier est composé de 50 ménages et la variable Z représente le nombre de personnes
par ménage. Il y a 5 ménages composés de 1 personnes, 9 ménages composés de 2 personnes, 15
ménanges composés de 3 personnes, 10 ménages composés de 4 personnes, 6 ménages composés
de 5 personnes et 2 ménages composés de 6 personnes. En langage R :
1. Création du vector Z :
Z=c(rep(1,5),rep(2,9),rep(3,15),rep(4,10),rep(5,6),rep(6,3),rep(8,2))
2. Vérification :
Z
2
3. Tableau statistique :
T4=table(Z)
4. Effectifs, fréquences et fréquences cumulées :
V4=c(T4)
data.frame(Eff=V4,EffCum=cumsum(V4),Freq=V4/sum(V4),FreqCum=cumsum(V4/sum(V4)))
5. Diagramme des effectifs en bâtonnets :
plot(T4)
6. Fonction de répartition :
plot(ecdf(Z))
7. Mieux :
plot(ecdf(Z),xlab="",ylab="",main="",frame=0)
Exercice 4 : Variable quantitative continue :
On mesure la taille en centimètres de 50 élèves d’une classe, on note S la variable :
152
156
159
163
168
152
156
160
164
169
152
156
160
164
170
153
156
160
164
171
153
157
161
164
171
154
157
160
165
171
154
157
160
166
171
154
158
161
167
156
155
158
162
168
162
155
159
162
168
169
1. Importer le fichier de données quantitative.xlsx et attacher le dataframe créé.
2. Vérification :
S
3. Tableau statistique
T5=table(cut(S, breaks=c(151,155,159,163,167,171)))
4.
T5
5.
T5c=c(T5)
6. Effectifs, fréquences et fréquences cumulées
data.frame(Eff=T5c,EffCum=cumsum(T5c),Freq=T5c/sum(T5c),FreqCum=cumsum(T5c/sum(T5c)))
7. Histogramme des fréquences :
hist(S,breaks=c(151,155,159,163,167,171),probability=TRUE)
8. Ajout des graduations de l’axe (Ox) :
axis(1, c(151,155,159,163,167,171))
9. Graphe de la fonction des fréquences cumulées :
y=c(0,cumsum(T5c/sum(T5c)))
x=c(151,155,159,163,167,171)
plot(x,y,type="b",xlab="",ylab="",xaxt = "n")
axis(1, c(151,155,159,163,167,171))
3
Exercice 5 : On charge des données déjà présentes dans R, nommées anscombe et on représente
les nuages de points avec les instructions suivantes. Quel est, à votre avis, le couple (xi , yi ) qui
a le plus grand coefficient de corrélation linéaire ? le plus petit ? Le vérifier.
data(anscombe)
attach(anscombe)
par(mfrow=c(2,2))
plot(x1,y1)
plot(x2,y2)
plot(x3,y3)
plot(x4,y4)
Exercice 6 : Régression linéaire simple et liaison entre deux variables quantitatives
On mesure la taille et le poids de 20 individus.
1. Importer le fichier regression.xlsx et l’attacher.
2. Moyennes :
mean(taille);mean(poids)
3. Variances (corrigées) :
var(taille); var(poids)
4. Régression linéaire (on donne le nom m à la sortie) :
m=lm(poids ~ taille)
5. Un résumé des sorties de la fonction lm :
summary(m)
6. Liste des noms des sorties de la fonction lm :
names(m)
7. Ordonnée à l’origine et pente de la droite de régresion :
a=m$coefficients[1];b=m$coefficients[2]
8. Tracé du nuage de point :
plot(taille,poids)
9. Tracé de la droite :
abline(a,b)
Exercice 7 : Liaison entre deux variables qualitatives
Les données proviennent d’une société d’assurance automobile. Les deux variables retenues
pour l’analyse sont :
— Le mode de règlement : annuel, mensuel, semestriel ou trimestriel ;
— La situation maritale : célibataire, concubin, divorcé, marié ou veuf.
En langage R :
1. Création du tableau de contingence :
4
M = matrix(c(209, 1483, 41, 320, 60, 34, 151, 1, 70, 10,
535,2448, 33, 897, 135, 77, 245, 4, 139, 9), byrow = T, ncol = 5)
colnames(M) = c("celibataire", "concubin", "divorce", "marie","veuf")
rownames(M) = c("annuel", "mensuel", "semestriel", "trimestriel")
2. Vérification :
M
3. Profils lignes
profLignes = prop.table(M, 1)
4. Profils colonnes
profCol = prop.table(M, 2)
5. Calcul du χ2 et sortie dans res :
res=chisq.test(M)
6. Liste des noms des sorties de la fonction chisq.test :
names(res)
7. Effectifs théoriques :
res$expected
8. Valeur du χ2 :
chi2=res$statistic
Exercice 8 : Liaison entre une variable quantitative et une variable qualitative
Dans une étude sur l’épuisement professionnel, dans le secteur de l’éducation, on a fait remplir
un questionnaire à des enseignants de collège dans 4 pays européens : A, B, C et D. Ensuite,
on a attribué à chaque enseignant interrogé un score représentant son niveau global de stress
et d’épuisement. Les résultats sont dans le fichier stress.xlsx.
1. Boı̂tes à moustaches :
boxplot(Stress~Pays)
2. Calcul des effectifs :
nA=length(which(Pays=="A"))
nB=length(which(Pays=="B"))
nC=length(which(Pays=="C"))
nD=length(which(Pays=="D"))
n=nA+nB+nC+nD
3. Calcul des moyennes :
moyglobale=mean(Stress)
moyA=mean(Stress[Pays=="A"])
moyB=mean(Stress[Pays=="B"])
moyC=mean(Stress[Pays=="C"])
moyD=mean(Stress[Pays=="D"])
4. Calcul de SCF, SCR et SCT et R2 :
5
moy=c(moyA,moyB,moyC,moyD)
n=c(nA,nB,nC,nD)
SCF=sum(n*(moy-moyglobale)^2)
SCR=SCT-SCF
R2=SCF/SCT
5. R calcule tout cela quand on fait une analyse de la variance :
summary(aov(Stress~Pays))
summary.lm(aov(Stress~Pays))
6