# Importe les donnéeslibrary(readxl)don<-read_xlsx(path ="data/TUN-CLIMAT/tun_climat.xlsx",sheet ="data")kable(don, caption ="Tableau de données")
Tableau de données
code
nom
reg_code
reg_nom
lat
lon
alt
tmin
tmax
tmoy
prec
vent
rosee
BJ
Beja
NO
Nord-ouest
36.73333
9.183333
159.00
11.45894
24.62033
18.55692
590.000
6.436291
10.881502
BZ
Bizerte
NE
Nord-est
37.24545
9.791453
6.09
13.36735
23.96475
18.73467
639.000
13.080826
13.507263
GB
Gabes
SE
Sud-est
33.87692
10.103333
7.92
15.62121
25.44585
20.64563
192.000
11.564158
12.396331
GF
Gafsa
SO
Sud-ouest
34.42202
8.822503
323.08
13.73596
26.88865
20.42736
163.000
12.759514
7.894512
JE
Jendouba
NO
Nord-ouest
36.48333
8.800000
144.00
12.03502
25.75739
19.17381
458.000
8.187385
11.549468
KR
Kairouan
CO
Centre-ouest
35.66667
10.100000
68.00
15.05704
27.37991
20.88537
303.000
5.826256
10.894726
KS
Kasserine
CO
Centre-ouest
35.16667
8.833333
707.00
11.47720
24.13852
18.46683
340.000
12.853035
8.366253
KB
Kebili
SO
Sud-ouest
33.70000
8.966667
46.00
15.34825
28.66706
22.71979
89.000
14.061362
10.373775
KF
Le Kef
NO
Nord-ouest
36.13333
8.700000
518.00
10.30506
23.19958
17.24170
528.000
8.246948
8.059934
MH
Mahdia
CE
Centre-est
35.50000
11.066667
12.00
16.50674
23.29379
20.16491
290.000
10.854368
14.624500
ME
Medenine
SE
Sud-est
33.35000
10.483333
117.00
16.17117
27.56439
22.57362
159.000
8.743863
11.404804
MS
Monastir
CE
Centre-est
35.66667
10.750000
2.00
15.64783
24.26410
19.76152
322.062
13.888661
13.587094
NB
Nabeul
NE
Nord-est
36.46667
10.700000
78.00
15.70167
23.43309
19.81197
450.000
12.190401
14.033335
SF
Sfax
CE
Centre-est
34.71795
10.690972
25.90
14.88812
25.24082
20.05744
221.000
11.408961
12.427977
SZ
Sidi Bou Zid
CO
Centre-ouest
35.00000
9.483333
355.00
13.03144
26.20685
20.25616
280.000
8.283933
9.461638
SL
Siliana
NO
Nord-ouest
36.06667
9.366667
445.00
11.36109
24.50220
19.02255
389.000
9.242761
9.455365
SS
Sousse
CE
Centre-est
35.70000
10.600000
5.00
15.70000
24.40000
19.90000
310.000
12.500000
13.600000
TA
Tataouine
SE
Sud-est
32.91667
10.450000
215.00
15.90320
27.20100
21.41218
110.000
10.298155
9.182343
TO
Tozeur
SO
Sud-ouest
33.93972
8.110556
87.47
16.83189
28.64269
22.63410
97.000
14.732460
8.697420
TU
Tunis
NE
Nord-est
36.85103
10.227217
6.70
14.26899
24.61744
19.14238
453.000
13.405618
12.626422
ZA
Zaghouan
NE
Nord-est
36.43333
10.083333
156.00
12.43361
25.06573
18.57657
501.000
10.331711
11.907365
Liste des variables
On charge ensuite le fichier des métadonnées:
# Importe les métadonnéesmeta<-read_xlsx(path ="data/TUN-CLIMAT/tun_climat.xlsx",sheet ="meta")kable(meta, caption ="Tableau de métadonnées")
Tableau de métadonnées
variable
def
code
code de la station
nom
nom de la station
reg_code
code de la région
reg_nom
nom de la region
gouv_nom
nom du gouvernorat
lat
Latitude
lon
Longitude
alt
Altitude (en mètres)
tmin
Moyenne de Tmin
tmax
Moyenne de Tmax
tmoy
Moyenne de Tmoy
prec
Moyenne de précipitations totales
vent
Moyenne de vent km/h
rose
Moyenne de point de rosée
1.2 Choix des deux variables à analyser
On suppose qu’on ne s’intéresse qu’aux variables latitude (lat) et précipitations (prec) que l’on va renommer espectivement X (variable explicative) et Y (variable à expliquer)
Pour pouvoir produire des graphiques en français ou en arabes, on stocke dans des variables le titre, la source et le nom des deux indicateurs.
# Pour la version françaisetitre <-"Température et latitude en Tunisie"nomX <-"Latitude"nomY <-"Température moyenne"
2. EXPLORATION VISUELLE
2.1 Visualisation avec plot(X,Y)
La manière la plus simple d’analyser la relation entre X et Y est d’utiliser un simple plot
plot(don$X,don$Y)
2.1 Visualisation avec plot(X,Y)
La fonction plot() comporte de nombreux paramètres permettant d’améliorer le graphique et de l’habiller. Voici un exemple d’habillage
Commentaire
plot(don$X,don$Y,main = titre, # titrecex.main =1, # police du titrecex.sub =0.6, # police du sous-titrexlab = nomX, # nom de l'axe Xxlim =c(32.7,37.5), # intervalle de l'axe Xylab = nomY, # nom de l'axe Yylim =c(17,24), # intervalle de l'axe Ycex.axis =0.8, # police des gradations d'axescex.lab =0.8, # police des noms d'axescex =0.6, # taille des symbolescol ="blue") # couleur des symboles
2.2 Identification des points avec text(…)
On peut ajouter au graphique généré par plot(X,Y) une couche de labels avec text(X,Y,Code). On précise la position avec pos =, la taille de police avex cex = et la couleur avec col =.
Commentaire
plot(don$X,don$Y,main = titre, # titrecex.main =1, # police du titrecex.sub =0.6, # police du sous-titrexlab = nomX, # nom de l'axe Xxlim =c(32.7,37.5), # intervalle de l'axe Xylab = nomY, # nom de l'axe Yylim =c(17,24), # intervalle de l'axe Ycex.axis =0.8, # police des gradations d'axescex.lab =0.8, # police des noms d'axescex =0.6, # taille des symbolescol ="blue") # couleur des symbolestext(x = don$X,y = don$Y,label = don$code,cex =0.7,pos=3,col ="blue")
2.3 Ajout de lignes horizontales ou verticales avec abline(…)
On peut rajouter à un graphique des lignes horizontales ou verticales avec abline en précisant leur position avec h= ou v=, leur épaisseur avec lwd = , leur style avec lty= et leur couleur avec col=
Commentaire
plot(don$X,don$Y,main = titre, # titrecex.main =1, # police du titrecex.sub =0.6, # police du sous-titrexlab = nomX, # nom de l'axe Xxlim =c(32.7,37.5), # intervalle de l'axe Xylab = nomY, # nom de l'axe Yylim =c(17,24), # intervalle de l'axe Ycex.axis =0.8, # police des gradations d'axescex.lab =0.8, # police des noms d'axescex =0.6, # taille des symbolescol ="blue") # couleur des symboles# Ajout d'une ligne horizontale correspondant à la moyenne de Yabline(h=mean(don$Y),col="red",lwd =1, lty =2)# Ajout d'une ligne verticlae correspondant à la moyenne de Xabline(v=mean(don$X),col="red",lwd =1, lty =2)text(x = don$X,y = don$Y,label = don$code,cex =0.7,pos=3,col ="blue")
La fonction abline() peut servir aussi à tracer la droite de régression Y=aX+b produite par la fonction lm() sur laquelle nous reviendrons plus tard.
2.4 Au delà de R-Base …
Il existe des packages spécialisés permettant de faire des graphiques plus sophistiqués. Mais on les apprendra ultérieuement. Juste un exemple :
library(car)scatterplot(don$X,don$Y)
3. RAPPELS SUR LA CORRELATION
3.1 relation linéaire/monotone/complexe
il existe une relation linéaire entre deux variables quantitatives X et Y si l’on peut prédire leurs valeurs respectives par les fonctions Y = a1.X + b1 et X = a2.X = b2
il existe une relation monotone entre deux variables quantitatives X et Y si l’on peut prédire les valeurs Y en fonction de celle de X far une fonction Y=f(X) qui est strictement croissante ou strictement décroissante.
il existe une relation complexe entre deux variables quantitatives X et Y si l’on peut prédire les valeurs Y en fonction de celle de X par une fonction Y=f(X) qui comporte au moins un point minimum ou maximum de changement de pente (annulation de la dérivée première)
3.1 relation linéaire/monotone/complexe
3.2 relation positive/négative/nulle
Une relation linéaire ou monotone est positive si à un accroissement de X correspond un accroissement de Y
Une relation linéaire ou monotone est négative si à un accroissement de X correspond une diminution de Y
une relation est nulle si une variation de X n’entraine pas de variation de Y
3.2 relation positive/négative/nulle
3.3 : relation forte/faible/nulle
Une relation linéaire est forte si une valeur de X permet de prédire la valeur de Y avec une faible marge d’erreur.
Une relation linéaire ou monotone est faible si une valeur de X permet de prédire la valeur de Y avec une forte marge d’erreur.
une relation linéaire est nulle si une valeur de X ne permet aucunement de prédire la valeur de Y
3.3 : relation forte/faible/nulle
3.4 : relation significative/non siginificative
Une relation linéaire est significative si l’effectif permettant de la mettre en évidence est suffisamment grand pour qu’on puisse exclure qu’elle soit l’effet du hasard.
Une relation linéaire ou monotone est non significative si l’effectif permettant de la mettre en évidence n’est pas suffisamment grand pour qu’on puisse exclure qu’elle soit l’effet du hasard.
On considère traditionnellement qu’une relation est significative s’il y a moins de 5% de chances qu’elle soit l’effet du hasard (p-value < 0.05).
3.4 : relation significative/non siginificative
4. ANALYSE DE CORRELATION DANS R
4.1 Sens de la relation
La fonction cor() permet de mesurer le coefficient de corrélation de deux variable X et Y.
Elle permet de détecter les relations linéaires en choisissant le paramètre (par défaut) method = pearson
Elle permet de détecter les relations non linéaires en choisissant le paramètre method = spearman qui mesure l’existence d’une relation monotone entre les rangs de X et Y
4.1 Sens de la relation
La syntaxe de la fonction cor() est très simple et permet de calculer trois types de corrélation. La méthode par défaut est pearson c’est-à-dire le coefficient de corrélation linéaire
cor(don$X,don$Y)
[1] -0.7966527
cor(don$X,don$Y, method ="spearman")
[1] -0.7779221
4.2 forme de la relation
4.2 forme de la relation
4.3 Intensité de la relation
Pour calculer l’intensité d’une relation, on calcule le carré du coefficient de corrélation appelé coefficient de détermination et noté r2 et souvent exprimé en %. Il permet de connaître le pouvoir explicatif du modèle de régression Y = aX+b
r2 <-100*cor(don$X,don$Y)**2r2
[1] 63.46554
4.3 Intensité de la relation
4.4. significativité de la relation
la fonction cor() permet de savoir si une relation est forte ou faible, positive ou négative, linéaire ou non linéaire. Mais cor() ne permet pas de savoir si une relation est significative ou pas.
En effet une relation peut être forte mais non significative si elle a été calculée sur un échantillon trop petit.
il faut donc effectuer un test pour obtenir une probabilité de rejet de l’hypothèse H0 d’absence de relation entre X et Y.
A gauche : une relation forte mais non significative
A droite : une relation faible mais très significative
4.4. significativité de la relation
C’est la fonction cor.test() qui permet de tester la significativité d’une relation en fournissant un intervalle de confiance du coefficient de corrélation et une probabilité de rejet de H0 appelée p-value.
cor.test(don$Y,don$X)
Pearson's product-moment correlation
data: don$Y and don$X
t = -5.7451, df = 19, p-value = 1.549e-05
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.9140080 -0.5562694
sample estimates:
cor
-0.7966527
3.5 Conclusion
Alors qu’en est-il pour la relation température moyenne / altitude ?