social media sharing buttons

Travaux pratiques pour débuter avec le logiciel Air

Le but de cet enseignement est de se familiariser avec le logiciel RR et d’apprendre à utiliser les outils de gestion de données ainsi que les outils

Amazon.fr - Le logiciel R : Maîtriser le langage, effectuer des ...
Travaux pratiques pour débuter avec le logiciel Air

Objectifs

Le but de cet enseignement est de se familiariser avec le logiciel R et d’apprendre à utiliser les outils de gestion de données ainsi que les outils statistiques de base du logiciel  .

Contenu des travaux pratiques

  • Découverte du logiciel 
  • Études descriptives de données enregistrées dans un data frame
  • Représentations graphiques
  • Importation, exportation et manipulation de données

Approche et supports pédagogiques

L’enseignement est composé de 2 séances d’une heure de cours magistral et de 5 séances de travaux pratiques de 2h. Il n’y a pas de séances toutes les semaines, surveillez votre emploi du temps.

Les sujets de TP, ainsi que des corrections partielles, sont disponibles sur mon site perso (https:\juliescholler.gitlab.io) et via l’ENT sur la page Célène du cours.

Modalités d’évaluation

  • Session 1 : contrôle continu
  • Session 2 : examen sous forme d’un exercice sur ordinateur

La note de contrôle continu prendra en compte l’évaluation d’exercices à effectuer en dehors des heures de TP et d’une épreuve sur poste informatique en fin de semestre.

Présence

La présence en TP est obligatoire. En cas d’absence, vous devez présenter un justificatif ou une justification au chargé de TP dans les 8 jours.

Bibliographie

Il s’agit de lectures complémentaires aux travaux pratiques. On trouve également de nombreuses ressources sur internet.

  • Statistiques avec R, Cornillon Pierre-André et Autres (519.5 STA)
  • Le logiciel R , Lafaye de Micheaux Pierre et Autres (519.5 LAF)
  • Comprendre et réaliser les tests statistiques à l’aide de R , Millot (519.5 MIL)
  • Initiation à la statistique avec R, Frédéric Bertrand et Myriam Maumy-Bertrand (519.5 BER)

TP 1. Présentation générale du logiciel R

Démarrage :

  • lancer R avec RStudio ;

  • créer un script qui contiendra vos commandes ;

  • penser à structurer votre script en mettant les numéros des parties et des exercices en commentaire.

Principes généraux du logiciel R

Commençons par reprendre les commandes vues en cours magistral et dans le polycopié de cours.

R est une calculatrice

Effectuer les commandes suivantes :

2*4
3, 5 - 8
3.5 - 8
2.3 + 9 - 5.1
3*2 - 5*(2-4)/6.03
3^2
sqrt(2)
log(2)
round(pi, 2)

Si vous ne comprenez pas bien les commandes, utilisez l’aide en tapant help(sqrt)help(log) ou help(round). Vous pouvez également accéder à l’aide par l’onglet help de la partie en bas à droite de RStudio.

Mise en pratique 1.
Calculer avec R l’expression e0+sin(π/2)4.

Création d’objets

On peut stocker en mémoire des données, des résultats, etc. Pour cela, on définit des objets R (on reviendra sur les différents types d’objets), à l’aide du symbole <- qui permet d’assigner une valeur à un objet.
Par exemple, taper les commandes suivantes.

a <- 5
b <- a+1
a
b

Mise en pratique 2.
Affecter la valeur 27 à l’objet nommé x.
Affecter la valeur 9 à l’objet nommé X.
Visualiser les valeurs de x et de X.
Que constatez-vous ?
Affecter la valeur 5 à l’objet x. Que constatez-vous ?

Certains objets existent déjà dans R. Taper state.area.
Pour comprendre ces données, utiliser l’aide help(state.area).

Les vecteurs

C’est un objet composé d’un ensemble de valeurs toutes du même mode (numérique, logique, etc.). Le nombre d’éléments constitue l’attribut longueur.

Construction

Différentes méthodes sont possibles.

  • Construction par la fonction collecteur c() :

v <- c(10, 4, 5, 8, 3, 2.1, 15, 789, 63, -2)
c(v, 12)
c(TRUE, TRUE, FALSE)
c(1>0, 1 == 1, T, 1<0.5)

  • Création par l’opérateur séquence seq() :

seq(1, 8, by = 0.5)
seq(1, 2, length = 5)

  • Création par la fonction répétition rep :

rep(1, 4)
rep("A", 10)

  • encore une :
    1:5

Calculs

Voici quelques exemples de manipulation de vecteurs. Les effectuer.

v0 <- 1:5
v0 > 4
sqrt(v0)
sum(v0)
sum(v0 >= 4)
cumsum(v0)
v1 <- c(-3, 1.2, NA, 5, NA)
mode(v1)
is.na(v1)
sum(is.na(v1))
sum(v1)
v1^2
v2 <- c(10, 8, 11, 7, 12)
sort(v2)
v0 + v2
v1 + v2
v0*v2

Sélection d’une partie d’un vecteur

On peut sélectionner une partie des éléments d’un vecteur en spécifiant les indices des termes nous intéressant. Voici quelques exemples de sélection d’une partie d’un vecteur. Les exécuter et les commenter dans le script.

v3 <- seq(0.1, 1, 0.1)
v3[6]
v3[6:8]
v3[c(1, 8, 3, 1)]
v3[-2]
v3[-c(2, 3, 5:8)]

On peut également sélectionner une partie d’un vecteur à l’aide d’un vecteur de valeurs logiques.

v3[v3>0.5]
v3[(v3>0.5)&(v3<1)]
v3[(v3<0.5)|(v3 == 0.9)]

Autres manipulations

Recherche d’indice d’un élément :

v4 <- c(5, 1, 9, 7, 3, 4, 2.5, 6.32, 8)
which(v4 == 9)
which(v4 > 6)
which(is.na(v1))

Substitution :

v0[1:2] <- -3
v0
v3[v3<0.5] <- 0
v3
v1[is.na(v1)] <- 1000
v1
v2[v2> = 10] <- v2[v2> = 10]/10
v2

Mise en pratique 3.
Dans le script, noter les commandes répondant aux questions.

  1. Créer le vecteur u composé de 5000 uns.
  2. Créer le vecteur v suivant : (1.3,2,5.2,4.3,2).
  3. Créer le vecteur A=(10,9,,9,10) que vous nommerez vecA, à l’aide de la commande :.
    Donner sa longueur directement à partir d’une commande sans calcul.
  4. Créer le vecteur B=(1.5,1.4,,0.5) que vous nommerez vecB, à l’aide de la commande seq().
  5. Créer le vecteur C=(c1,,cn) à partir de vecA tel que ci=1si ai<0 et ci=ai si ai0,

Mise en pratique 4.
Dans le script, noter les commandes répondant aux questions. Pour la dernière question, répondre sous forme de commentaires.

  1. Créer un vecteur à 20 éléments, nommé alea, composé de nombres aléatoires extraits d’une loi normale d’espérance 3 et d’écart type 1, en tapant la commande rnorm(20, mean = 3, sd = 1) (consulter l’aide help(rnorm).
  2. Afficher la valeur du cinquième élément.
  3. Afficher les valeurs des 5 derniers éléments.
  4. Afficher les valeurs des éléments 1, 4, 8, 12 et 18.
  5. Afficher les valeurs inférieures à 2.
  6. Créer un nouveau vecteur aleabis qui est une copie du vecteur alea, puis affecter la valeur 0 aux éléments inférieurs à 3 et la valeur 1 aux éléments supérieurs à 3.
  7. Proposer une autre façon de répondre à la question précédente à l’aide de la fonction ifelse() (utiliser l’aide help(ifelse)).
  8. Combien d’éléments de alea sont supérieurs à 3 ? Répéter la commande création du vecteur alea. Avez-vous obtenu le même nombre d’éléments supérieurs à 3 ? Pourquoi ?

Les facteurs

Création :

  • directement par la fonction factor :
factor(c(1, 22, 1, 1, 2, 2))
s <- factor(c("m", "f", "f", "m", "m", NA, "f", "f"))
s
  • par conversion d’un vecteur :
as.factor(c(1, 22, 1, 1, 2, 2))

Un attribut des facteurs est level.

Exemples de commandes :

levels(s)
table(s)
prop.table(table(s))

s2 <- factor(c(1, 0, 0, 2, 1, 0, NA, 1, 1, 2))
levels(s2)
nlevels(s2)
table(s2)

Mise en pratique 5.
On collecte la couleur des yeux de 12 personnes.

  1. Créer un facteur couleurs regroupant les 12 valeurs obtenues qui sont les suivantes : bleu, marron, vert, marron, marron, bleu, marron, marron, vert, vert, marron, vert.
  2. Donner les commandes renvoyant le nombre de modalités de la variable étudiée et l’effectif total.
  3. Donner le tableau des effectifs correspondant aux données.
  4. Donner une commande renvoyant le tableau des fréquences, à l’aide des fonctions précédentes et d’un calcul.
  5. Donner la commande arrondissant le tableau des fréquences au centième.

Exercice à rendre

(inspiré de Kelly Bodwin)

Enregistrer chaque commande utilisée dans un script nommé VotreNom-TP1-CR.R qu’il faudra déposer sur Célène.

Très vite vous allez rencontrer des erreurs dans R. Bien que ce soit frustrant, il ne faut pas en avoir peur. Vous devez juste apprendre dès le début à lire les messages d’erreurs renvoyés par R et repérer les erreurs classiques (fautes de frappe, oubli de virgule, de parenthèse, de guillemets, etc.).

Attention ce n’est pas parce qu’une commande se déroule sans erreur qu’elle a effectué ce que vous souhaitiez. À l’aide de la sortie dans la console et de l’environnement, vérifiez régulièrement que vous avez accompli ce que vous souhaitiez (ce qui vous est demandé).

Chacun des groupes de commandes suivantes cause des erreurs ou ne fait pas ce qui est demandé. Corrigez-les afin qu’elles réalisent les actions demandées.

  1. Créer des vecteurs contenant les lettres capitales, minuscules, les lettres accentuées ou particulières et les signes de ponctuation.
minuscules <- c("a", "b", "c", "d", "e" "f", "g", "h", "i", "j", "k",
                "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
                "w", "x", "y", "z")

capitales <- c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
               "L", "M", "N", "O", "P", "Q", "R", "S, "T", "U", "V",
               "W", "X", "Y", "Z")

speciales <- c(é, è, ê, à, ù, â, î, ô, ç)

ponctuation <- c(".", ",", "!", "?", "'", '"', "(", ")", " ", "-", ";", ":"
  1. Créer un vecteur contenant les entiers consécutifs de 1 à 200.
nombres <- 1;200
  1. Créer un long vecteur contenant tous les symboles.
symboles <- c(minuscules, Capitales, spéciales, PONCTUATION)
  1. Vérifier qu’il n’y a pas de valeurs manquantes dans le vecteur symboles créé.
sum(isna(symboles))
  1. J’ai codé un message dans le vecteur mot_code. Le décoder en corrigeant les commandes suivantes.
mot_code <- c(28, 9, 5, 14, 70, 10, 15, 21, 5, 70, 64)
paste(symboles(mot_code), collapse = "")

TP 2. Data frames et statistiques univariées quantitatives

Objectifs du TP :

  • découvrir la classe data.frame ;

  • réaliser des graphiques simples ;

  • soigner la présentation de graphiques ;

  • déterminer les paramètres d’une série statistique.

Exercice 1.

La création d’un data frame peut s’effectuer en combinant des vecteurs.

  1. Créer le data frame concernant 4 individus contenant leur sexe, leur taille en cm et leur poids en pounds avec les commandes suivantes :
s <- c("M", "F", "F", "F")
t <- c(182, 165, 159, 171)
p <- c(164, 115, 140, 147)
df <- data.frame(sexe = s, taille = t, poids = p)
  1. Observer le tableau de données construit avec les commandes suivantes :
df
str(df)
dim(df)
nrow(df)
ncol(df)
colnames(df)
  1. Construire un tableau de données nommé data concernant les individus précédents contenant leur sexe, leur taille en m, leur poids en kg et leur IMC (arrondi à un chiffre après la virgule). L’indice corporel s’obtient de la façon suivante :
    IMC=Poids en kgTaille en m2

Exercice 2.

On va travailler sur l’objet InsectSprays déjà existant dans R. Il contient une variable quantitative discrète que nous allons étudier.

  1. Avant de manipuler cet objet, consultons sa description dans l’aide fournie par R. Pour cela, vous pouvez aller dans l’onglet Help de RStudio ou taper l’une des commandes suivantes (observez leurs différences).
??insectspray
help(InsectSprays)
?InsectSprays
  1. Observer l’objet InsectSprays avec les commandes suivantes:
df <- InsectSprays
str(df)
head(df)

Quelle est l’utilité de la commande head ?

  1. Effectuer les commandes suivantes.
count
df$count
  1. Tableaux des effectifs, des fréquences et des fréquences cumulées de la variable quantitative discrète count.
  • Réaliser le tableau des effectifs de la variable count avec la commande suivante.
table(df$count)
  • Réaliser le tableau des fréquences en consultant l’aide de la fonction prop.table. Pour plus de lisibilité, arrondir à 3 chiffres après la virgule.

  • Construire le tableau des fréquences cumulées.

  1. Représentations graphiques.
  • Réaliser un premier graphique grâce à la commande suivante.
plot(df$count)

Essayer la commande suivante. Que permet l’argument pch ?

plot(df$count, pch = 4)
  • Représenter graphiquement les effectifs par modalité avec la commande suivante.
plot(table(df$count), main = "Effectifs", xlab = "Nombre d'insectes sur chaque parcelle",
 ylab = "Nombre de parcelles")
  • Représenter la courbe des fréquences cumulées. Utiliser l’argument type afin d’obtenir le graphique approprié. Faire attention aux abcisses.

  • On peut ajouter des droites et du texte sur un graphique. Essayer les commandes suivantes.

plot(df$count, pch = 4, main = "Nombre d'insectes sur chaque parcelle",
 xlab = "Numéro de parcelle", ylab = "Effectif")
abline(h = 10, col = "red")
text(x = 30, y = 10, "seuil")
  • Consulter l’aide de la commande text et utiliser l’argument adéquat pour que le mot seuil ne soit plus placé sur la droite sans modifier les coordonnées (30,10).

  • (plus dur) On peut tracer plusieurs droites d’un coup avec la commande abline. Effectuer les commandes suivantes et essayer de les comprendre.

plot(df$count, pch = 4, main = "Nombre d'insectes sur chaque parcelle",
 xlab = "Numéro de parcelle", ylab = "Effectif")
abline(h = 10, col = "red")
text(x = 30, y = 10, pos = 3, "seuil", col = "darkred")
abline(v = 12*1:5+0.5, col = "blue")
text(x = 12*0:5+5.25, y = rep(25, 6), c("A", "B", "C", "D", "E", "F"), col = "blue")

Exercice 3.

Dans cet exercice, nous allons travailler avec le tableau de données trees concernant des cerisiers noirs. Il contient les informations suivantes : Girth (circonférence), Height (hauteur) et Volume. Les unités sont anglo-saxonnes, mais cela n’a aucune incidence pour la suite.

  1. Commencer par affecter trees dans un nouvel objet nommé data et observer son contenu à l’aide de commandes déjà rencontrées.

  2. Effectuer les commandes ci-dessous et les décrire en commentaire.

summary(data)
mean(data)
mean(data$Height)
quantile(data$Height, 0.25)
IQR(data$Girth)
  1. Trouver une commande permettant d’obtenir d’un coup tous les quartiles, puis une autre permettant d’obtenir tous les déciles.

  2. Réaliser un histogramme avec la commande suivante.

hist(data$Height)

Mettre un titre principal et modifier les titres des axes.

  1. Observer les différentes informations contenues dans l’objet Histo.
Histo <- hist(data$Height, plot = FALSE)
Histo

Que contiennent Histo$breaks et Histo$counts ?

  1. Déterminer la commande qui permet d’obtenir la représentation graphique ci-contre :

  1. Effectuer les commandes ci-dessous et ajouter le bon titre pour l’axe des ordonnées.
bornes <- c(60, 70, 75, 80, 90)
hist(data$Height, main = "Répartition des arbres \n en fonction de leur hauteur",
 xlab = "Hauteur", ylab = "", breaks = bornes)

Exercice 4 (pour évaluation).

Enregistrer chaque commande utilisée dans un script nommé VotreNom-TP2-CR.R qu’il faudra déposer sur Célène. Les questions commençant par (*) sont un peu plus dures. Vous pouvez les laisser de côté lors du première tentative ou si vous avez des difficultées.

Vous allez travailler sur les données contenues dans la base de données ToothGrowth, existante par défaut dans R.
Dans cette base de données sont contenues des informations sur 60 cochons d’Inde ayant reçu de la vitamine C par administration journalière. Les variables présentes sont :

  • len : la longueur de leurs odontoblastes (cellules responsables de la croissance des dents) ;
  • dose : la dose journalière reçue en mg/jour ;
  • supp : la méthode d’administration qui est soit via du jus d’orange codé OJ, soit via de l’acide ascorbique, une forme de vitamine C, codée VC.
  1. Affecter les données dans un objet nommé data.

  2. Donner l’étendue de la longueur des odontoblastes des cochons d’Inde.

  3. Effectuer un histogramme de la longueur des odontoblastes des cochons d’Inde, soigné (titre, couleurs).

  4. Réaliser un tableau des effectifs du dosage de vitamine C reçu.

  5. Représenter graphiquement et de façon soignée et adaptée la courbe des fréquences cumulées du dosage de vitamine C reçu par jour.
    (*) Travailler le graphique pour que l’on voit la courbe commencer à 0 et continuer après 1.

  6. Représenter graphiquement la longueur des ondoblastes en fonction du dosage journalier en vitamine C. Pour améliorer la lisibilité du graphique, changer le type de point.
    (*) Vous pouvez aussi chercher comment faire pour les points soient colorés en fonction du type de supplémentation.

  7. Ajouter sur le graphique précédent deux droites horizontales une au niveau de la longueur moyenne des ondoblastes et l’autre au niveau de la valeur médiane des ondoblastes. Bien distinguer les droites par des couleurs différentes et du texte.


TP 3. Calcul matriciel et tableaux de contingence

Objectifs du TP :

  • découverte de la classe matrix ;

  • calcul matriciel ;

  • manipulation de tableaux de contingence ;

  • représentations graphiques de la distribution d’une variable qualitative.

Exercice 5.

Comme un vecteur, une matrice est un objet composé d’un ensemble de valeurs toutes du même mode (numérique, logique, etc.). Mais les éléments sont organisés en lignes et en colonnes.

  1. La création peut se faire à l’aide de la fonction matrix.
    Créer et observer les matrices AB et C avec les commandes suivantes.
A <- matrix(1:6, nrow = 2)
A
B <- matrix(1:6, ncol = 2)
B
C <- matrix(1:6, ncol = 2, byrow = T)
C
  1. Tester les commandes suivantes. Que renvoient-elles ?
length(A)
dim(A)
length(B)
dim(B)
  1. On peut également construire des matrices en combinant des vecteurs.
    Tester les commandes suivantes.
v1 <- c(25, -12, 8)
v2 <- c(4.5, 87, -3.2)
cbind(v1, v2)
  1. Trouver la commande permettant de combiner v1 et v2 afin d’obtenir la matrice (4.5873.225128).

  2. Réaliser les calculs suivants et noter en commentaire leurs actions.

A+10
A-20
A*10
A/10
A+B
B+C
A*B
B*C
A%*%B
B%*%C
A%*%t(A)
A%*%A
A^2
sqrt(A)

Exercice 6.

  1. Créer la matrice A à l’aide de la commande suivante.
A <- matrix(c(23, 34, 31, 46), ncol = 2)
  1. Vérifier que la matrice A est inversible en calculant son déterminant. Calculer son inverse à l’aide de la commande solve().

  2. Vérifier que le produit A×A1 est égal à la matrice identité.

  3. Créer la matrice B égale à (342132121) et calculer le produit de B avec son inverse. Commenter.

  4. À l’aide des commandes vues précédemment, résoudre le système suivant {23x+31y=134x+46y=2.

  5. Résoudre directement l’équation de la question précédente en une seule commande à l’aide de la fonction solve (consulter l’aide).

Exercice 7.

On souhaite étudier le lien entre la couleur des cheveux et le sexe à partir d’un exemple historique dû à Fisher. Il a répertorié la couleur des cheveux de garçons et de filles d’un district écossais.

BlondRouxChâtainBrunNoir
Garcon59211984950436
Fille5449767745114
  1. Construire une matrice, nommée tab, contenant les effectifs de la même forme que le tableau précédent. Puis ajouter des noms aux lignes et aux colonnes avec les commandes suivantes.
rownames(tab) <- c("Garcon", "Fille")
colnames(tab) <- c("Blond", "Roux", "Châtain", "Brun", "Noir")
  1. Sélection de parties.
  • Tester les deux commandes suivantes.
tab[2, 1]
tab[1, 2]
  • Extraire de tab un vecteur contant les effectifs des garçons roux et bruns et un autre contenant les effectifs des roux et des rousses.
  1. Utiliser la commande margin.table pour fournir les distributions marginales en effectifs.
tab[2, 1]
tab[1, 2]
  1. Construire le tableau des fréquences arrondies à 3 chiffres après la virgule.
    Ajouter les marges et changer les titres des marges de Sum en Total.

  2. Donner les fréquences conditionnelles des couleurs de cheveux pour chacun des sexes.

  3. Représentations graphiques.

  • Représenter la répartition des couleurs de cheveux des garçons avec la fonction plot en utilisant l’argument lwd pour élargir les bâtons. Utiliser également le vecteur défini ci-dessous pour colorer les différents bâtons.
couleur <- c("Gold", "OrangeRed", "Goldenrod", "Brown", "Black")
  • On peut également utiliser la commande barplot pour ce type de graphique. L’utiliser pour la répartition des couleurs de cheveux des filles, faire intervenir l’argument space pour espacer un peu plus les rectangles produits.

  • Quel est le principal avantage de la commande barplot ?

  • Une autre représentation graphique est le diagramme circulaire (il y a quasiment toujours mieux à faire qu’un diagramme circulaire mais il faut quand même savoir en faire un si on ne nous laisse pas le choix).
    Essayer la commande suivante.

pie(tab[1, ])

Travailler ce graphique en modifiant les couleurs. Essayer de trouver une façon d’ajouter les pourcentage sur le graphique.

Exercice 8 (à rendre).

(inspiré de Kelly Bodwin)

L’objectif de cet exercice est de décoder un message codé que je vous adresse.

Commencer par charger le message codé avec cette ligne de code. Attention vous devez être connecté à internet pour que cette commande fonctionne.

top_secret <- read.csv("https://juliescholler.gitlab.io/publication/l2r1-2122/message_code.csv",
              header = FALSE)$V1

Pour décoder le message, vous devez effectuer correctement les instructions ci-dessous.

  1. Ajouter 14 à chacun des nombres
  2. Multipler tous les nombres par 18, puis soustraire 257 à tous les nombres.
  3. Appliquer la fonction exponentielle à tous les nombres.
  4. Mettre tous les nombres au carré.

Vérification : à ce niveau vous devriez avoir 237 nombres strictement inférieurs à 20.

  1. Transformer votre vecteur en une matrice à 5 colonnes remplies colonne par colonne.
  2. Indépendamment du message codé, créer un vecteur nommé pairs contenant les entiers pairs compris entre 1 et 2*(length(top_secret)/5).
  3. Soustraire le vecteur pairs à la première colonne de la matrice.
  4. Soustraire 100 à tous les nombres de la troisième colonne situés entre la 18ème et la 24ème lignes (comprises).
  5. Multiplier par 2 tous les nombres des colonnes 2 et 4.
  6. Retransformer votre matrice en vecteur en lisant les valeurs colonne par colonne.

Vérification : à ce moment, tous les nombres d’indice supérieur à 250 devraient être inférieurs à 80.

  1. Prendre la racine carrée de tous les nombres d’indice entre 57 et 240 (inclus).
  2. Arrondir tous les nombres à l’entier le plus proche.
  3. Remplacer toutes les occurrences du nombre 77 par 12.

Vous être presque prêt·e à décoder le message.

  1. Avant cela, créer le vecteur suivant contenant les symboles possibles.
accents <- c("à", "é", "è", "ê", "î", "ù", "À", "É", "È", "Ê", "Î", "Ù")
ponctuation <- c(".", ",", "!", "?", "'", '"', "(", ")", " ", "-", ";", ":")
symboles <- c(letters, LETTERS, accents, ponctuation)
  1. Et maintenant décoder avec la commande suivante.
msg <- paste(symboles[top_secret4], sep = "", collapse = "")
msg

TP 4. Importation de données et variables qualitatives

Objectifs du TP :

  • manipulation des objets de type factor ;

  • construction et exportation de graphiques adaptés aux données qualitatives.

Exercice 9.

  1. Créer et manipuler les facteurs suivants (levels, tableaux d’effectifs).
f1 <- factor(c(1, 22, 1, 1, 2, 2))
f2 <- factor(c("m", "f", "f", "m", "m", NA, "f", "f"))
  1. On collecte l’information sur la couleur des yeux de 12 personnes.
  • Créer un facteur couleurs regroupant les 12 valeurs obtenues : bleu, marron, vert, marron, marron, bleu, marron, marron, vert, vert, marron, vert.

  • Donner les commandes renvoyant le nombre de modalités de la variable étudiée et l’effectif total.

  • Construire le tableau des fréquences arrondies au centième.

Exercice 10.

Dans cet exercice, on va travailler les représentations graphiques adaptées aux situations où des variables qualitatives interviennent.

On va utiliser les données euc2. Les données contiennent la hauteur (hauteur) et la circonférence (circ) de différents types d’eucalyptus (clone) plantés dans différents sols (bloc).

  1. Importer les données dans une data frame nommé df.

  2. Donner la structure et un résumé (moyenne, etc.) des différentes données. Commenter.

  3. Modifier la commande d’importation pour que la variable clone soit directement considérée comme un facteur.

  4. Représenter la hauteur en fonction du sol avec la commande plot(df$hauteur~df$bloc). Que pensez-vous de cette représentation graphique ?

  5. Les variables type de sol et clone sont-elles qualitatives ou quantitatives ? Quel est leur mode dans R ?

  6. Quand on souhaite représenter une variable quantitative en fonction d’une variable qualitative, une série de diagrammes en boîte est bien adaptée. Cela se fait automatiquement avec la fonction plot quand la variable explicative est considérée comme un facteur.
    Effectuer la commande suivante.

plot(df$hauteur~df$clone)

On peut forcer la représentation en diagramme en boîte avec la fonction boxplot ou faire en sorte que R considère la variable en tant que facteur.

  • Effectuer des diagrammes en boîte de la hauteur en fonction du type de sol à l’aide de la fonction boxplot.

  • Rajouter à la commande boxplot précédente les options suivantes : range = 0 et boxwex = 0.5.
    Que font ces deux options ?

  • Changer le type de la variable bloc de numeric à factor avec la commande suivante.

df$bloc <- as.factor(df$bloc)
  • Renommer les levels de la nouvelle variable bloc avec la commande suivante.
levels(df$bloc) <- c("sol_A", "sol_B", "sol_C")
  • Représenter la circonférence en fonction du type de sol avec la commande plot.
  1. Afin de visualiser la proportion de chaque clone et de chaque type de sol, réaliser deux diagrammes.

  2. Comme les clones autres que DH ne sont pas beaucoup représentés, nous allons fusionner tous les levels de clones autres que le level DH avec les commandes suivantes.

levels(df$clone)
levels(df$clone) <- c("autres", "DH", "autres", "autres", "autres")
str(df$clone)
  1. Représenter uniquement les hauteurs pour les clones qui ne sont pas du type DH avec les commandes suivantes.
filtre_autre <- df$clone == "autres"
plot(df$hauteur[filtre_autre]~df$bloc[filtre_autre], xlab = "Type de sol",
 ylab = "Hauteur des clones de type non DH")
  1. Créer un nouveau data frame intitulé eucAB ne contenant que les individus des sols A et B et observer le nombre de levels de la variable bloc ainsi que son tableau d’effectifs.

  2. Utiliser la commande droplevels pour améliorer la variable bloc.

  3. Utiliser la commande table pour construire le tableau de contingence des types de sols en fonction des différents clones.

Exercice 11 (pour évaluation).

Vous allez travailler sur des données de dépenses de clients dans un supermarché. Elles sont contenues dans le fichier clients-supermarche.csv sur Celene. Ce jeu de données contient les informations suivantes :

  • Gender : le genre de l’individu ;
  • Age : son âge ;
  • AnnualIncome : son revenu annuel en millier de dollars ;
  • SpendingScore : son niveau de dépenses codé entre 0 et 100.
  1. Importer les données dans un data frame intitulé dep, en faisant en sorte que la variable Gender soit considérée comme un facteur.

  2. Pour combien d’individus la variable SpendingScore est mal codée ? Supprimer ces individus de la base de données.

  3. Ajouter une nouvelle variable NiveauDep, au data fame dep qui vaut :

  • peu si les dépenses du client correspondent à un score inférieur strictement à 25 ;
  • moyen si les dépenses du client correspondent à un score entre 25 et 70 ;
  • beaucoup si les dépenses du client correspondent à un score supérieur ou égal à 70.
  1. Donner le tableau de contingence avec marges des niveaux de dépenses et du genre des individus.

  2. Représenter sous forme de diagramme en bâtons la répartition des âges des clients.

  3. Représenter trois graphiques, un en-dessous de l’autre,représentant pour le premier la distribution des revenus des clients de genre féminin, pour le second la distribution de revenus des clients de genre masculins et pour le dernier ces deux distributions mais sur un même graphique.
    Enregistrer, via des lignes de commandes, l’ensemble de graphiques produit dans un document pdf au format A4 portrait, nommé VotreNom-genre.pdf.
    Utiliser un maximum de paramètres pour soigner l’image produite.

  4. Réaliser un nuage de points du niveau de dépenses en fonction du revenu.
    Enregistrer, via des lignes de commandes, ce graphique produit dans un document jpeg, nommé VotreNom-revenu.jpg.
    Utiliser un maximum de paramètres pour soigner l’image produite.

  5. Créer un nouveau data frame intutilé clientes ne contenant que les données des clients s’étant déclarés de genre féminin et enlever les variables et modalités inutiles.

  6. Exporter le tableau de données ainsi créé dans un fichier nommé clientes.csv contenant les noms des variables, ne contenant pas les noms des individus et dont le séparateur de colonnes est la virgule.

  7. Déposer sur Célène –uniquement– le script, intitulé VotreNom-TP4.R contenant toutes les commandes, y compris celles de créations des fichiers pdf, jpeg et csv à exporter.


TP 5. Manipulations avancées de data frame

Objectifs du TP :

  • extraire des individus et/ou des variables ;

  • modifier/créer des variables ;

  • déterminer les paramètres de sous-groupes.

Exercice 12.

Les données étudiées sont issues d’une enquête réalisée au début des années 80, concernant les étudiants américains. Elles ont été utilisées pour étudier l’effet des universités communautaires sur le niveau scolaire. Les données sont contenues dans le fichier student.txt qui contient les informations suivantes :

  • female : 1 = female / 0 = male ;

  • black : 1 = black / 0 = not black ;

  • hispanic : 1 = hispanic / 0 = not hispanic ;

  • dadcoll : 1 = père diplômé du supérieur / 0 = père non diplômé du supérieur ;

  • momcoll : 1 = mère diplômée du supérieur / 0 = mère non diplômée du supérieur ;

  • ownhome : 1 = famille propriétaire de son logement / 0 = famille non propriétaire ;

  • urban : 1 = école en zone urbaine / 0 = école en zone rurale ;

  • dist : distance université-domicile en dizaine de miles ;

  • tuition : frais de scolarité en milliers de $ ;

  • ed : nombre d’années de scolarisation ;

  • incomehi : 1 = revenu familial annuel > $25, 000 / 0 = revenu familial annuel  $25, 000 ;

  • county : numéro de code du comté ;

  • state : numéro de code de l’état.

  1. Importer les données du fichier student.txt dans un data frame intitulé stu et l’observer.

  2. Effectuer les commandes ci-dessous et les décrire.

mean(stu$tuition)
mean(stu$tuition[stu$female == 1])
mean(stu$tuition[stu$ed >= 14])
mean(stu$tuition[!(stu$ed < 14)])
quantile(stu$dist[stu$urban == 1], 0.25)
sd(stu$dist[stu$hispanic == 1&stu$tuition > 1])
  1. Déterminer la médiane du nombre d’années d’étude des femmes dont la mère est diplômée du supérieur ainsi que le troisième quartile du nombre d’années d’étude des hispaniques dont les frais de scolarité sont supérieurs à 1000 $.

  2. Créer une commande qui permet de vérifier qu’aucun étudiant n’ait été codé simultanément black et hispanic.

  3. Effectuer les commandes suivantes et expliquer ce qu’elles produisent.

tab1 <- stu[, c(8:10)]
head(tab1)
tab2 <- stu[-c(1, 3), ]
head(tab2)
tab3 <- stu[stu$female == 1, ]
head(tab3)
tab4 <- tab3[, -1]
head(tab4)
tab5 <- stu[stu$female == 1, -1]
head(tab5)
tab6 <- stu[stu$county == 28 & stu$tuition >= 1.2, -(1:3)]
head(tab6)
  1. Extraire dans un data frame intitulé tab7 les étudiants hispaniques dont le revenu familial est supérieur à 25.000 $ et supprimer les variables hispanicblack et incomehi. Combien y a-t-il d’individus ?

  2. Convertir la distance université-domicile en kilomètres.

  3. On souhaite créer une variable simplifiée sous forme d’un facteur codant les frais de scolarité de la façon suivante :

  • faible : si les frais de scolarité sont inférieurs ou égaux à 600 $ ;
  • moyen : s’ils sont compris strictement entre 600 $ et 1000 $ ;
  • eleve : s’ils sont supérieurs ou égaux à 1000 $.

Pour cela, commencer par créer un vecteur tuition.fees, en répétant la modalité moyen, puis corriger (en deux temps) les modalités correspondant aux autres situations.
Terminer en donnant le tableau des effectifs correspondant.

  1. On souhaite ajouter au data frame les résultats de ces étudiants au Base Year Composite Test Score, un test évaluant le niveau de l’étudiant. Pour cela, importer les données du fichier bytest.txt et créer un nouveau data frame intitulé stubis contenant les données de stu et celle de bytest.

  2. Construire un vecteur intitulé commu permettant d’identifier la communauté à laquelle appartient l’étudiant, en codant Hispanic pour hispanicBlack pour black et White pour ni black, ni hispanic. L’ajouter au data frame.

  3. Pour chacune des communautés, déterminer la moyenne du bytest avec la commande suivante.

by(stubis$score, commu, mean)
  1. En utilisant la commande by et son aide, renvoyer les quartiles des bytest par sexe.

  2. On souhaite obtenir les écarts type des bytest par sexe. Cependant la commande sd renvoie l’écart type corrigé. On peut créer la fonction et calculant l’écart type avec le commande suivante.

  et <- function(x) {sqrt( (length(x)-1)/length(x) )*sd(x)}
  et(stubis$score)

L’utiliser pour renvoyer les écarts type des bytest par sexe.

  1. Construire une nouvelle variable intitulée par.sup qui vaut 0 si aucun parent n’est diplômé du supérieur et 1 sinon. Renvoyer les déciles du bytest pour ces deux groupes.

Exercices d’annales

Voici quelques extraits de contrôle sur poste ou de session 2. Il n’y a et n’aura pas de correction. Par contre, vous avez bien sûr le droit de nous poser des questions et de nous montrer votre travail sur ces exercices d’annales pour voir si cela correspond bien à ce qui est attendu.

Exercice 13 (Extrait de l’examen de session 2 - 2014-2015)

Le fichier de données se nomme session2-1415.txt et se trouve sur Celene. Il contient les données brutes d’un sondage réalisé auprès d’individus regardant quotidiennement la télévision. On a répertorié :

  • le genre de l’individu Genre ;
  • le nombre de personnes dans le foyer Foyer ;
  • le diplôme obtenu Diplome (SupBac+2 signifie supérieur à Bac +2) ;
  • la durée moyenne quotidienne devant la télévision, Duree, en minutes.
  1. Importer les données dans un data frame intitulé data.

  2. Déterminer la taille de l’échantillon et la structure de data. Préciser les types des variables.

  3. Donner un résumé des variables. Donner la liste des diplômes par une commande spécifique.

  4. Effectuer l’histogramme représentant la durée quotidienne devant la télévision.

  5. Calculer le nombre de personnes qui regardent 2h ou plus par jour en moyenne la télévision.

  6. Extraire dans un data frame intitulé dataF les données concernant les femmes.

  7. Supprimer la colonne Genre de dataF.

  8. Effectuer les diagrammes en boîte de la durée quotidienne devant la TV en fonction du nombre de personnes dans le foyer. Soigner le graphique.

  9. Déterminer la moyenne arrondi au dixième de la durée quotidienne devant la TV pour les individus appartenant à un foyer comportant 4 personnes.

  10. Créer un vecteur intitulé Vec qui prend la valeur 1 si l’individu possède le bac ou un diplôme supérieur, et qui prend 0 sinon.

  11. Calculer la proportion, arrondie au millième, d’hommes qui ont le bac ou plus dans l’échantillon .

  12. Déterminer le tableau de contingence du couple de variables Genre et Diplome.

Exercice 14 (Extrait de l’examen de session 2 - 2016-2017)

Vous allez travailler sur des données concernant des maladies cardiaques. Elles sont contenues dans le fichier maladiecardiaque_homme.csv présent sur Celene. Ce tableau de données contient les variables suivantes :

  • age : l’âge du patient ;
  • chest_pain : le type de douleur à la poitrine ;
  • rest_bpress : la pression sanguine au repos ;
  • blood_sugar : la présence d’un taux élevé de sucre dans le sang ;
  • rest_electro : les anormalités détectées lors de la réalisation d’un électrocardiogramme au repos ;
  • max_heart_rate : le rythme cardiaque maximal ;
  • exercice_angina : la présence d’une angine de poitrine suite à un effort ;
  • disease : présence d’une maladie cardiaque.
  1. Importer les données dans un data frame intitulé maladie.

  2. Représenter graphiquement les proportions des différents types de douleurs à la poitrine.

  3. Représenter graphiquement le rythme cardiaque maximal en fonction de l’âge.

  4. Réaliser un histogramme des rythmes cardiaques maximums pour les patients ayant eu une angine de poitrine et un autre pour ceux n’en ayant pas eu.
    Veiller à réaliser ces histogrammes de façon à ce qu’ils soient facilement comparable (échelles).

  5. Quel est le rythme cardiaque moyen des personnes malades ?

  6. Donner en une unique commande les différents quartiles de la pression sanguine des personnes non malades.

  7. Déterminer le nombre de patients ayant un taux de sucre dans le sang élevé.

  8. Créer la variable high_rate valant oui si le rythme cardiaque maximal est supérieur à 150 et non sinon.

  9. Extraire dans un data frame intitulé malade les données des individus malades (sans la variable disease).

Exercice 15 (Examen de session 1 - 2019-2020)

Vous allez travailler sur des données concernant des logements vendus, au cours de 8 années, dans Saragota County dans l’État de New York.

Elles sont contenues dans le fichier saragotaA.csv sur Celene. Dans ce fichier, on a les informations suivantes :

  • prix : prix de vente en dollars ;
  • bord_mer s’il est ou non en bordure de mer ;
  • age : l’âge du logement au moment de la vente ;
  • chauffage : le type de chauffage ;
  • superficie : la superficie habitable en square foot ;
  • chambres : le nombre de chambres du logement ;
  • cheminees : le nombre de cheminées ;
  • sdb : le nombre de salle d’eau ou de bain ;
  • pieces : le nombre de pièces ;
  • psce_cheminee : la présence de cheminées.
  1. Importer les données du fichier saragotaA.csv dans un data frame intitulé df.
  2. Quel est le prix moyen des logements vendus ?
  3. Transformer la surface habitable actuellement en square foot en mètre carré, arrondi à l’unité : 1 mètre carré =10.76 sq ft.
  4. Représenter par des diagrammes en boîte la répartition des âges des logements selon qu’ils soient en bordure de mer ou non, et ajouter sur le graphique une droite horizontale colorée au niveau de l’âge moyen de tous les logements ainsi qu’un texte de la même couleur spécifiant de quoi il s’agit.
  5. Ajouter au data frame une variable nommée neuf qui vaut Oui si l’âge du logement est 0 et Non sinon.
  6. Donner le tableau de contingence entre la présence de cheminée et le fait que le logement soit neuf.
  7. Donner le premier quartile de la surface habitable des logements en bordure de mer.
  8. Vérifier que pour tous les logements, il y a plus de pièces que de chambres de renseignées, en donnant le nombre de logements qui ne vérifient pas cela.
  9. Créer un document pdf, au format A4, intitulé Nom-graph.pdf, contenant deux histogrammes un au-dessus de l’autre de la répartition des prix des logements : un pour ceux possédant un chauffage électrique et le second pour ceux ne possédant pas un chauffage électrique. La comparaison des prix entre les deux graphiques doit être aisée.
  10. Combien de logements vendus à moins de 150 000 dollars ne possèdent pas de cheminée ?
  11. Vérifier que les variables concernant la présence de cheminée sont cohérentes, en donnant le nombre de logements pour lesquels le codage n’est éventuellement pas correct.
  12. Extraire un data frame ne contenant que les logements neufs et supprimer de ce data frame toutes les variables et/ou levels devenus inutiles.
  13. Sauvegarder ce data frame dans un fichier nommé Nom-Neuf.csv. Ce document doit contenir les noms de variables mais non les numéros d’individus.

Exercice 16 (Extrait du contrôle sur poste de session 1 - 2017-2018)

Vous allez travailler sur les données des employés et services d’une entreprise. Elles sont contenues dans les fichiers company.csv et info_unit.csv sur Celene. Ces tableaux de données contient les informations suivantes.
Dans le fichier company.csv, on a les informations suivantes concernant 14999 employés :

  • satisfaction_level : niveau de satisfaction de l’employé ;
  • last_evaluation : dernière évaluation ;
  • number_project : nombre de projets ;
  • average_monthly_hours : nombre moyen d’heures par mois ;
  • time_spent_company : temps passé dans l’entreprise ;
  • Work_accident : s’il a déjà eu un accident de travail ;
  • left : si l’employé a quitté l’entreprise ;
  • promotion_last_5years : s’il a eu une promotion au cours des 5 dernières années ;
  • unit : département ;
  • salary : niveau de salaire.

Dans le fichier info_unit.csv, on a des informations concernant les départements :

  • unit : département ;
  • effectif_serv : effectif du département ;
  • nb_accident_serv : nombre de personnes du département ayant déjà eu des accidents de travail ;
  • nb_left_serv : nombre de personnes du service ayant quitté l’entreprise.
  1. Importer les données du fichier info_unit.csv dans un data frame intitulé unit.

  2. Créer un vecteur contenant les taux de départ par département arrondis à 2 chiffres après la virgule.

  3. Ajouter ce vecteur au data frame unit et en supprimer la variable nb_left_serv.

  4. Importer les données du fichier company.csv dans un data frame intitulé comp.

  5. Déterminer le nombre d’employés du département IT ayant déjà eu un accident du travail.

  6. Créer un document pdf intitulé Nom-graph.pdf comprenant un histogramme des niveaux de satisfaction des employés ayant quitté l’entreprise.

  7. Représenter par des diagrammes en boîte la répartition des niveaux de satisfaction selon que l’employé a quitté ou non l’entreprise.

  8. Ajouter sur le graphique une droite horizontale colorée au niveau du troisième quartile des niveaux de satisfaction globaux ainsi qu’un texte de la même couleur spécifiant qu’elle correspond au troisième quartile.

  9. Créer le tableau de contingence des variables unit et salary. Ajouter les marges et renommer les titres des colonnes et ligne de marges.

  10. Effectuer le tableau des proportions des différents départements arrondis à 3 chiffres après la virgule.

  11. Modifier les levels de la variable unit afin de fusionner les départements dont les effectifs représentent moins de 7% des effectifs de l’entreprise en une modalité autres. Puis réaliser un graphique représentant les proportions des différents départements.

Télécharger Travaux pratiques pour débuter avec le logiciel Air
Ads
Nom

Android,2,Annonces Utiles,5,ARTICLES,5,BASE DE DONNEES,19,C et Génie logiciel,14,COMPARATEUR DE VOYAGES,2,CONCOURS,1,ECONOMIE,40,FINANCE,27,JAVA,12,Linux,2,LOGICIELS,24,MANAGEMENT,17,MARKETING,22,MATHEMATHIQUE,12,MEDECINE,12,METHODES QUANTITATIVE,46,PHYSIQUE,26,RESEAU ENTREPRISE,4,Sciences/Tech,5,SYSTEME D'EXPLOITATION,4,
ltr
item
FSEG Tunis El MANAR cours gratuits de comptabilité Partage gratuit de cours. FSEGT El MANAR: Travaux pratiques pour débuter avec le logiciel Air
Travaux pratiques pour débuter avec le logiciel Air
Le but de cet enseignement est de se familiariser avec le logiciel RR et d’apprendre à utiliser les outils de gestion de données ainsi que les outils
https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcS8xgRVvhHLFPFQvXDnDHLm7MwaZTkzTrrla4H2a-gxNkosL3Ks&usqp=CAU
FSEG Tunis El MANAR cours gratuits de comptabilité Partage gratuit de cours. FSEGT El MANAR
https://fsegt.blogspot.com/2020/04/travaux-pratiques-pour-debuter-avec-le.html
https://fsegt.blogspot.com/
http://fsegt.blogspot.com/
http://fsegt.blogspot.com/2020/04/travaux-pratiques-pour-debuter-avec-le.html
true
8879729861973223190
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy