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