1 EXERCICE 1R

options(digits = 2)

2 Création et manipulation de vecteurs

2.1 Créons le vecteur (−2, −1, 0, 1, 2, 3) en utilisant la fonction c() puis avec la fonction

seq(). ET assignons ce vecteur à x.

c(-2,-1,0,1,2,3)
## [1] -2 -1  0  1  2  3
seq(from=-2,to=3,by=1)
## [1] -2 -1  0  1  2  3
x=seq(from=-2,to=3,by=1)

2.2 2.2. En appliquant une transformation adéquate (addition) au vecteur x précédent, créons

le vecteur (0, 1, 2, 3, 4, 5).

x+2
## [1] 0 1 2 3 4 5

2.3 2.3. Créons une séquence de 0 à 10 de longueur 10.

seq(from=0,to=10,length=10)
##  [1]  0.0  1.1  2.2  3.3  4.4  5.6  6.7  7.8  8.9 10.0

2.4 Créons les vecteurs y = (5, 5, 5, 5, 5) et z = (−1, −1, 1, 1, 1) à l’aide de la fonction rep (z

se réalise comme la concaténation de 2 vecteurs formés par rep).

y=rep(5,5)
y
## [1] 5 5 5 5 5
z=c(rep(-1,2),rep(1,3))
z
## [1] -1 -1  1  1  1

2.4.1 Calculons y + z.

y+z
## [1] 4 4 6 6 6

2.5 Modifions z comme étant z privé de son dernier élément (i.e. z=(-1,-1,1,1)).

z=z[-5]
z
## [1] -1 -1  1  1
z=z[-length(z)]
z
## [1] -1 -1  1

2.6 Créons le vecteur (−2, −1, 0, 1, 2, 3, 5, 5, 5, 5, 5) à partir de x et de y.

c(x,y)
##  [1] -2 -1  0  1  2  3  5  5  5  5  5

2.7 Additionnons le dernier élément de x avec le premier de y. (solution : 8)

x[6]+y[1]
## [1] 8

2.8 Modifions les 3 premiers éléments de x en une seule instruction pour que x devienne

le vecteur (7, 6, 5, 1, 2, 3).

x=replace(x,1:3,c(7,6,5))
x

2.9 Ordonnons le vecteur x grâce à la fonction sort()

sort(x)
## [1] -2 -1  0  1  2  3

2.10 Calculons en suite order(x).

order(x)
## [1] 1 2 3 4 5 6

2.10.1 ordonnons x en utilisant cette dernière fonction

x[order(x)]
## [1] -2 -1  0  1  2  3

2.11 Créons le vecteur w tel que w contienne les valeurs positives de z à l’aide des deux

méthodes suivantes : la première en utilisant le vecteur c(FALSE,FALSE,TRUE,TRUE)

w=z[c(FALSE,FALSE,TRUE,TRUE)]
w
## [1]  1 NA

2.12 Créons le vecteur w tel que w contienne les valeurs positives de z à l’aide des deux

méthodes suivantes: la seconde en utilisant la condition z > 0

w=z[z>0]
w
## [1] 1

3 EXERCICE 2R

4 Création et manipulation de matrices

4.1 Créer la matrice X a l’aide des fonctions matrix() et rep().

X=matrix(c(1,2,3),ncol = 3,nrow = 3)
X
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    2    2    2
## [3,]    3    3    3
X=matrix(rep(1:3),ncol = 3,nrow = 3)
X
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    2    2    2
## [3,]    3    3    3

4.2 Extraire la première ligne de X

X[1,]
## [1] 1 1 1

4.3 puis extraire les première et dernière lignes de X

X[c(1,3),]
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    3    3    3

##Créer la matrice Y une première fois avec la fonction cbind() et une seconde grâce à rbind.

Y=cbind(1:3,c(4,5,6),7:9)
Y
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
Y=rbind(c(1,4,7),c(2,5,8),c(3,6,9))
Y
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

4.4 Calculer X + Y , le produit élément par élément de X avec Y et le produit matriciel de X

avec Y .

X+Y
##      [,1] [,2] [,3]
## [1,]    2    5    8
## [2,]    4    7   10
## [3,]    6    9   12
X*Y
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    4   10   16
## [3,]    9   18   27
length(X)*length(Y)
## [1] 81

5 EXERCICE 3R

5.1 1- Après l’avoir ouvert pour voir ses caractéristiques, chargez dans RStudio le fichier manitobaLakes.csv. Vérifions que l’importation a bien fonctionné (il y a neuf lacs).

manitobalakes=read.csv("C:/Users/MICROLOGIS/Desktop/FAN CLUB R/manitobaLakes.csv",header = FALSE,sep = ";")
manitobalakes
##               V1    V2  V3
## 1          Cedar  1353 253
## 2          Cross   755 207
## 3           Gods  1151 178
## 4         Island  1223 227
## 5       Manitoba  4624 248
## 6      Playgreen   657 217
## 7 SouthernIndian  2247 254
## 8       Winnipeg 24387 217
## 9   Winnipegosis  5374 254

5.2 Nommons la première colonne Nom, la deuxième Surface et la troisième Altitude.

colnames(manitobalakes)<-c("Nom","Surface","Altitude")
manitobalakes
##              Nom Surface Altitude
## 1          Cedar    1353      253
## 2          Cross     755      207
## 3           Gods    1151      178
## 4         Island    1223      227
## 5       Manitoba    4624      248
## 6      Playgreen     657      217
## 7 SouthernIndian    2247      254
## 8       Winnipeg   24387      217
## 9   Winnipegosis    5374      254

5.3 Représenter graphiquement la surface du lac en fonction de son altitude en donnant un titre par axe et un titre général.

plot(manitobalakes$Surface,manitobalakes$Altitude,xlab = "Altitude",ylab = "Surface",sub = "Représentation graphique de la surface du lac en fonction de son altitude",col=c("red","green","blue"),xlim = c(0,27000),ylim = c(0,300),cex.lab=1.5,cex.axis=1.1,pch=16)
legend("bottomright",legend = c("Surface","Altitude","Nuage"),col=c("red","green","blue"),pch = 16,title = "suface~Altitude")

5.4 Affichons les données en les classant en ordre décroissant de la surface.

manitobalakes[order(manitobalakes$Surface,decreasing = TRUE),]
##              Nom Surface Altitude
## 8       Winnipeg   24387      217
## 9   Winnipegosis    5374      254
## 5       Manitoba    4624      248
## 7 SouthernIndian    2247      254
## 1          Cedar    1353      253
## 4         Island    1223      227
## 3           Gods    1151      178
## 2          Cross     755      207
## 6      Playgreen     657      217

5.5 5- Réaliser un histogramme de la surface des lacs (ne pas hésiter à utiliser l’aide pour connaître le fonctionnement de la fonction hist()) sans oublier de mettre un titre

hist(manitobalakes$Surface,xlab = "Surface",sub="Répresentation de l'histogramme de la surface des lacs",col = c("red","pink"),xlim = c(0,30000),ylim = c(0,8))

5.6 réalisons un boxplot.

boxplot(manitobalakes$Surface,col = "pink",xlab="Surface",sub="boxplot de la surface des lacs",ylim=c(0,25000))

6 EXERCICE 4R

library(BioStatR)
BioStatR::Europe
##           Pays Duree
## 1    Allemagne    42
## 2     Autriche    44
## 3     Belgique    41
## 4       Chypre    42
## 5     Danemark    40
## 6      Espagne    42
## 7      Estonie    42
## 8     Finlande    40
## 9       France    41
## 10       Grece    44
## 11     Hongrie    41
## 12     Irlande    41
## 13      Italie    41
## 14    Lettonie    43
## 15    Lituanie    40
## 16  Luxembourg    41
## 17       Malte    41
## 18    Pays-Bas    41
## 19     Pologne    43
## 20    Portugal    42
## 21  Republique    43
## 22 Royaume-Uni    43
## 23   Slovaquie    42
## 24    Slovenie    42
## 25       Suede    41

6.1 1) Affichons les six première ligne de ce jeu de données qui est disponible dans la bibliothèque BioStatR

head(Europe)
##        Pays Duree
## 1 Allemagne    42
## 2  Autriche    44
## 3  Belgique    41
## 4    Chypre    42
## 5  Danemark    40
## 6   Espagne    42

6.2 2) Disons de quoi est constitué ce jeu de données

str(Europe)
## 'data.frame':    25 obs. of  2 variables:
##  $ Pays : Factor w/ 25 levels "Allemagne","Autriche",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ Duree: num  41.7 44.1 41 41.8 40.5 42.2 41.5 40.5 41 44.1 ...

6.3 3) La classe et la taille de ce jeu de données

class(Europe)
## [1] "data.frame"
dim(Europe)
## [1] 25  2

6.4 4) Donnons la moyenne, la valeur minimale, la valeur maximale, la mediane et la ou classe modale de la variable duree

summary(Europe$Duree)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      40      41      42      42      42      44
effectif=table(Europe$Duree)
sort(effectif)
## 
## 39.8 40.7 40.8 40.9 41.1 41.2 41.3 41.5 41.7 41.8 42.2 42.5 42.7 42.9   43 43.1 
##    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
## 40.5 41.6 44.1   41 
##    2    2    2    3
histo=hist(Europe$Duree,col = "green",xlab = "Durée en heures",ylab = "Nombre de pays",main="Histohramme de la variable",border = "red")

classe=histo$breaks
classe
## [1] 39 40 41 42 43 44 45
which(histo$density==max(histo$density))
## [1] 2 3

La moyenne de la variable Duree est 41.7

La valeur minimale est 39.8

La valeur maximale est 44.1

La mediane es 41.5

La classe modale de la variable Duree est 41

6.5 5) Donnons l’écart type corrigé, le cofficient de la variation et l’etendue de la variable duree

sd(Europe$Duree)
## [1] 1.1
cvar(Europe$Duree)
## [1] 2.7
diff(range(Europe$Duree))
## [1] 4.3

L’écart-type corrigé est 1.11

Le cofficient de variation est 2.67

L’étendue de la variable Duree est 4.3

6.6 Tracons la boîte à moustaches de la variable Duree et celle de la moyenne

boxplot(Europe$Duree,main="BOITE A MOUSTACHE DE LA VARIABLE DUREE",ylab="Durée en heures",col = "green",ylim=c(39,45),border = "red")
points(1,mean(Europe$Duree),pch=16)

7 EXERCICE 5R

options(digits = 2)
par(mfrow=c(1,2))

7.1 1) Créons deux vecteurs: un vecteur Femmes et un vecteur Hommes

Femmes=c(105,110,112,112,118,119,120,125,126,127,128,130,132,133,134,135,138,138,138,138,142,145,148,148,150,151,154,154,158)
Femmes
##  [1] 105 110 112 112 118 119 120 125 126 127 128 130 132 133 134 135 138 138 138
## [20] 138 142 145 148 148 150 151 154 154 158
Hommes=c(141,144,146,148,149,150,150,151,153,153,153,154,155,156,156,160,160,160,163,164,164,165,166,168,168,170,172,172,176,179)
Hommes
##  [1] 141 144 146 148 149 150 150 151 153 153 153 154 155 156 156 160 160 160 163
## [20] 164 164 165 166 168 168 170 172 172 176 179
ensemble=c(Femmes,Hommes)
ensemble
##  [1] 105 110 112 112 118 119 120 125 126 127 128 130 132 133 134 135 138 138 138
## [20] 138 142 145 148 148 150 151 154 154 158 141 144 146 148 149 150 150 151 153
## [39] 153 153 154 155 156 156 160 160 160 163 164 164 165 166 168 168 170 172 172
## [58] 176 179

7.2 2) Regroupement en classe les variables Femmes et Hommes

catFemmes=cut(Femmes,breaks = c(104,114,124,134,144,154,164,174,184),labels = c("[104;114]","]114;124]","]124;134]","]134;144]","]144;154]","]154;164]","]164;174]","]174;184]"))
023
## [1] 23
catHommes=cut(Hommes,breaks = c(104,114,124,134,144,154,164,174,184),labels = c("[104;114]","]114;124]","]124;134]","]134;144]","]144;154]","]154;164]","]164;174]","]174;184]"))

7.3 Déterminons les effectifs et les fréqence de chaque classe

histo.femme=hist(Femmes,breaks = c(104,114,124,134,144,154,164,174,184))

histo.femme$counts
## [1] 4 3 8 6 7 1 0 0
histo.homme=hist(Hommes,breaks = c(104,114,124,134,144,154,164,174,184))

histo.homme$counts
## [1]  0  0  0  2 10  9  7  2
effFem=table(catFemmes)
effFem
## catFemmes
## [104;114] ]114;124] ]124;134] ]134;144] ]144;154] ]154;164] ]164;174] ]174;184] 
##         4         3         8         6         7         1         0         0
prop.table(effFem)
## catFemmes
## [104;114] ]114;124] ]124;134] ]134;144] ]144;154] ]154;164] ]164;174] ]174;184] 
##     0.138     0.103     0.276     0.207     0.241     0.034     0.000     0.000
effHom=table(catHommes)

prop.table(effHom)
## catHommes
## [104;114] ]114;124] ]124;134] ]134;144] ]144;154] ]154;164] ]164;174] ]174;184] 
##     0.000     0.000     0.000     0.067     0.333     0.300     0.233     0.067
effensemble=c(effFem,effHom)
effensemble
## [104;114] ]114;124] ]124;134] ]134;144] ]144;154] ]154;164] ]164;174] ]174;184] 
##         4         3         8         6         7         1         0         0 
## [104;114] ]114;124] ]124;134] ]134;144] ]144;154] ]154;164] ]164;174] ]174;184] 
##         0         0         0         2        10         9         7         2

7.4 3) Effecuons une répresentation graphique adaptées des deux distribution groupées en classe de la question 2

histo.femme=hist(Femmes,breaks = c(104,114,124,134,144,154,164,174,184),labels = c("[104;114]","]114;124]","]124;134]","]134;144]","]144;154]","]154;164]","]164;174]","]174;184]"),main = "Diagramme en bar de la distribution groupée en classe des femmes",ylab = "Effectifs des femmes",col = rainbow(8))

histo.homme=hist(Hommes,breaks = c(104,114,124,134,144,154,164,174,184),labels = c("[104;114]","]114;124]","]124;134]","]134;144]","]144;154]","]154;164]","]164;174]","]174;184]"),main = "Diagramme en bar de la distribution groupée en classe des hommes",ylab = "Effectifs des hommes",col = rainbow(8))

library(lattice)
ensemble.df=make.groups(Femmes,Hommes)
colnames(ensemble.df)=c("Taux","Sexe")
histogram(~Taux|Sexe,xlab = "Taux d'hemoglobine",data = ensemble.df,breaks = c(104,114,124,134,144,154,164,174,184),layout=c(1,2))

7.5 4) CAlculons les moyennes pour chacunes des trois distributions initiales

mean(ensemble)
## [1] 146
mean(Hommes)
## [1] 159
mean(Femmes)
## [1] 133

7.6 5) calculons les moyennes des trois distributions groupées

sum((histo.femme$counts*histo.femme$mids)/length(Femmes))
## [1] 133
sum((histo.homme$counts*histo.homme$mids)/length(Hommes))
## [1] 158

7.7 6) Calculons les médianes pour chacunes des trois distributions initiales

median(ensemble)
## [1] 150
median(Femmes)
## [1] 134
median(Hommes)
## [1] 158

7.8 7) Calculons l’écart interquartile pour chacunes des distributions initiales

IQR(ensemble)
## [1] 24
IQR(Femmes)
## [1] 20
IQR(Hommes)
## [1] 14

7.9 8)- Calculons les variances corrigés des trois distributions initiales

var(ensemble)
## [1] 314
var(Femmes)
## [1] 209
var(Hommes)
## [1] 96

7.10 - Calculons les écarts types corrigés des trois distributions initiales

sd(ensemble)
## [1] 18
sd(Femmes)
## [1] 14
sd(Hommes)
## [1] 9.8

7.11 Partie analyse des données

7.12 Analyse univarié

8 ** Visualisation de la base de donée

library(questionr)
data(hdv2003)
d=hdv2003
View(hdv2003)

8.1 ** Analyser une variable quantitative

summary(d$age)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      18      35      48      48      60      97
diff(range(d$age))
## [1] 79
tab=table(d$qualif,d$sexe)
tab
##                           
##                            Homme Femme
##   Ouvrier specialise          96   107
##   Ouvrier qualifie           229    63
##   Technicien                  66    20
##   Profession intermediaire    88    72
##   Cadre                      145   115
##   Employe                     96   498
##   Autre                       21    37
cprop(tab)
##                           
##                            Homme Femme Ensemble
##   Ouvrier specialise        13.0  11.7  12.3   
##   Ouvrier qualifie          30.9   6.9  17.7   
##   Technicien                 8.9   2.2   5.2   
##   Profession intermediaire  11.9   7.9   9.7   
##   Cadre                     19.6  12.6  15.7   
##   Employe                   13.0  54.6  35.9   
##   Autre                      2.8   4.1   3.5   
##   Total                    100.0 100.0 100.0
lprop(tab)
##                           
##                            Homme Femme Total
##   Ouvrier specialise        47    53   100  
##   Ouvrier qualifie          78    22   100  
##   Technicien                77    23   100  
##   Profession intermediaire  55    45   100  
##   Cadre                     56    44   100  
##   Employe                   16    84   100  
##   Autre                     36    64   100  
##   Ensemble                  45    55   100
chisq.test(tab)
## 
##  Pearson's Chi-squared test
## 
## data:  tab
## X-squared = 388, df = 6, p-value <2e-16
chisq.residuals(tab)
##                           
##                             Homme  Femme
##   Ouvrier specialise         0.52  -0.47
##   Ouvrier qualifie           8.57  -7.73
##   Technicien                 4.42  -3.98
##   Profession intermediaire   1.92  -1.73
##   Cadre                      2.64  -2.38
##   Employe                  -10.43   9.41
##   Autre                     -0.98   0.88
mosaicplot(tab,las = 3,shade = TRUE,main = "Tableau des effectifs ")