library(sf, quietly= TRUE,warn.conflicts = F)
library(dplyr, quietly = TRUE,warn.conflicts = F)
library(knitr)
library(mapsf)
library(car,warn.conflicts = F,quietly=T)
[MOD4] : Analyse de variance simple et multiple
GEO UNIV’R Tunisie 2024
L’objectif de cet exercice est de fournir une introduction aux modèles d’analyse de variance simple ou multiples dans lesquels une variable Y quantitative est fonction d’une ou plusieurs variables qualitatives X1, X2, X3…
1. Données
Nous allons importer un fichier de données portant sur les revenus de 17000 ménages tunisiens en 2021. Il est tiré de l’enquête consommation et revenu de l’INS dont on trouvera la description détaillée en cliquant ici
On peut télécharger librement les données en cliquant ici. Les fichiers obtenus sont au format stata avec l’extension .dta. Il est toutefois possible de les importer dans R avec le package haven
puis de recoder les variables sous la forme de factors à l’aide du package labelled
.
Importation des données
On commence par charger les données contenues dans le fichier enq_INS_conso_menages_2021.RDS à l’aide de la fonction readRDS()
qui permet de lire les fichiers sauvegardés dans le format interne de R et on affiche les 6 premières lignes :
# Importe les données au format interne de R
<-readRDS("data/ENQ-TUN-2021/enq_INS_conso_menages_2021.RDS")
base
head(base)
id reg mil sex age mat ins csp nbp pvr rev
1 1 GT urbain homme 59 marie primaire retraité 6 FALSE 5103
2 2 GT urbain homme 52 marie primaire employé 5 FALSE 5486
3 3 GT urbain femme 34 divorce secondaire chomeur 2 FALSE 5962
4 4 GT urbain homme 65 marie primaire inactif 2 FALSE 3699
5 5 GT urbain homme 35 marie secondaire ouvrier 4 FALSE 5058
6 6 GT urbain homme 43 marie primaire ouvrier 5 FALSE 3741
Liste des variables
On a légèrement changé le fichier initial de l’INS en simplifiant les noms des variables et en fusionnant certaines modalités. Nous avons décidé de retirer les données incomplètes pour lesquels il manque des informations telles que le sexe, l’âge ou la profession du chef de ménage. Pour cette raison les résultats obtenus seront très légèrement différents de ceux présentés sur le site de l’INS.
Les variables proposées sont les suivantes :
id : identifiant du ménage de 1 à 17114
reg : région de résidence (GT = Grand Tunis, NE = Nord-Est, …)
mil : milieu de résidence (urbain ou rural)
sex : sexe du chef de ménage
age : âge du chef de ménage
mat : situation matrimoniale du chef de ménage (célibataire, marié, veuf, divorcé)
ins : niveau d’instruction du chef de ménage (aucune, primaire, secondaire, supérieur)
csp : catégorie socio-professionnelle du chef de ménage (simplifiée par rapport au fichier de l’INS)
nbp : nombre de personnes composant le ménage
pvr : situation de pauvreté selon les critères de l’INS, c’est-à-dire en tenant compte par exemple du coût de la vie dans la région de résidence (Oui/Non)
rev : revenu annuel moyen divisé par le nombre de personnes du ménage (en DT / an)
Selection du tableau à analyser
On suppose qu’on ne s’intéresse qu’à quelques variables
<-base[,c("reg","mil","sex", "ins", "age","rev")]
donhead(don)
reg mil sex ins age rev
1 GT urbain homme primaire 59 5103
2 GT urbain homme primaire 52 5486
3 GT urbain femme secondaire 34 5962
4 GT urbain homme primaire 65 3699
5 GT urbain homme secondaire 35 5058
6 GT urbain homme primaire 43 3741
Résumé rapide
On effectue un résumé rapide du tableau à l’aide de la fonction summary()
:
summary(don)
reg mil sex ins age
GT:3944 urbain:10836 homme:13996 aucun :3742 Min. : 19.00
NE:2458 rural : 6278 femme: 3118 primaire :6979 1st Qu.: 46.00
NO:2502 secondaire:4647 Median : 56.00
CE:2862 supérieur :1746 Mean : 56.34
CO:2330 3rd Qu.: 66.00
SE:1845 Max. :109.00
SO:1173
rev
Min. : 185
1st Qu.: 3035
Median : 4429
Mean : 5519
3rd Qu.: 6496
Max. :526271
Pour cette enquete l’INS a utilisé la méthode de tirage au sort par région, milieu, sexe et âge qui rend l’échantillon représentatif de la population tunisienne sans qu’il soit nécessaire d’introduire une procédure de redressement. Le fait que nous ayons retiré les quelques individus pour lesquels certaines valeurs étaient manquantes ne change pas fondamentalement les résultats.
2. Variable dépendante (Y)
On se propose d’expliquer la variable revenu annuel moyen par membre du ménage que l’on appellera par la suite de façon abrégée revenu annuel moyen. On va commencer par analyser rapidement les caractéristiques dela distribution statistique de cette variable.
Paramètres principaux
Un résumé rapide est obtenu à l’aide de la fonction summary()
que l’on complète par le calcul de l’écart-type et du coefficient de variation.
<-summary(don$rev)
res<-sd(don$rev)
ect<- 100*sd(don$rev)/mean(don$rev)
cv <-c(res,ect,cv)
resnames(res)<-c("Minimum", "Q1","Médiane","Moyenne","Q3","Maximum", "Ecart-type", "CV (%)")
kable(res, digits=1, caption = "Paramètres principaux des revenus en Tunisie")
x | |
---|---|
Minimum | 185.0 |
Q1 | 3035.0 |
Médiane | 4429.0 |
Moyenne | 5519.4 |
Q3 | 6495.8 |
Maximum | 526271.0 |
Ecart-type | 7036.7 |
CV (%) | 127.5 |
Nous obtenons un revenu annuel moyen de 5519 DT ce qui est un peu plus que la valeur publiée sur le site de l’INS qui est de 5426 DT. La différence s’explique, comme nous l’avons expliqué précédemment, par le fait que nous avons retiré quelques individus ayant des valeurs manquantes.
l’analyse des quantiles de la distribution indique que le revenu médian est de 4429 DT et que 50% des ménages ont des revenus compris entre Q1 = 3035 DT et Q3 = 6495 DT. Il existe toutefois des valeurs extrêmes puisque le minimum est de 185 DT et le maximum de 526271 DT.
La dispersion de la distribution des revenus est donc très forte comme en témoigne l’écart type de 7036 DT et surtout le coefficient de variation qui montre que l’écart-type est égal à 127.5% de la moyenne.
Forme de la distribution
On devine à l’aide des résultats précédents que la distribution comporte des valeurs exceptionnelles et doit être fortement dissymétriques à gauche.
par(mfrow=c(2,1))
hist(don$rev,
main="Histogramme",
col="lightyellow",
xlab="Revenu par habitant·e (log)")
boxplot(don$rev,
main = "Boîte à moustache",
col="lightyellow",
xlab ="Revenu par habitant·e (log)",
horizontal=T)
La distribution est effectivemet fortement dissymétrique à gauche en raison de la présence de valeurs exceptionnelles correspondant aux individus les plus riches. L’histogramme est de ce fait totalement illisible.
Transformation logarithmique
On décide de transformer la variable en son logarithme ce qui est une pratique courante lorsqu’on analyse les revenus des ménages. On espère ainsi que la nouvelle distribution deviendra plus symétrique voire gaussienne ce qui signifierait qu’elle est log-normale.
$logrev<-log(don$rev)
don
par(mfrow=c(2,1))
hist(don$logrev,
main="Histogramme",
col="lightyellow",
xlab="Revenu par habitant·e (log)")
boxplot(don$logrev,
main = "Boîte à moustache",
col="lightyellow",
xlab ="Revenu par habitant·e (log)",
horizontal=T)
La distribution comporte encore des valeurs exceptionnelles à droite comme à gauche mais elle est désormais symétrique. Elle n’est donc pas véritablement log-normale car elle présente une sur-concentration des valeurs au centre. Nous n’allons cependant pas la modifier davantage et utiliser désormais le logarithme du revenu dans la suite des analyses.
3. Analyse de variance simple
On va tester tour à tour chacune des différentes variables qualitatives sélectionnées.
Modèle 1 : Le revenu moyen annuel (log) est-il différent en milieu urbain et en milieu rural ?
Dans le cas d’une variable qualitative à deux modalités, nous pourrions utiliser un test d’égalité des moyennes comme cela a été vu dans le premier cours de statistique bivariée. Mais nous préférons utiliser ici l’analyse de variance afin de pouvoir ensuite appliquer la même méthode avec les autres variables qualitatives ayant plus de deux modalités.
Paramètres principaux
On commence par calculer les paramètres principaux des variables logrev (Y) en fonction de la variable explicative (X).
<- don$logrev
Y <- don$mil
X
# création de 2 objets avec les libellés, pour les mobiliser plus facilement
<- "log. du revenu moyen (en DT/hab.)"
nameY <- "Milieu (Urbain/Rural)"
nameX
# calcul de la moyenne et de l'écart-type de Y selon les 2 modalités de X
<-tapply(Y,X,mean)
moy<- tapply(Y,X,sd)
ect<- 100*ect/moy
cv <-rbind(moy,ect,cv)
tabreskable(tabres, caption = "Paramètres princiapux du revenu moyen annuel ")
urbain | rural | |
---|---|---|
moy | 8.5667253 | 8.1360017 |
ect | 0.5679606 | 0.5558948 |
cv | 6.6298443 | 6.8325299 |
Les deux moyennes sont visiblement différentes et les revenus (en log) plus élevés en milieu urbain (8.57) qu’en milieu rural (8.13). Mais chaque milieu présente un fort écart-type (0.57 et 0.56) de sorte qu’il est difficile d’affirmer avec certitude que la différence entre les deux moyennes est significative si on ne fait pas un test statistique.
Visualisation graphique
Pour mieux apprécier la différence entre les deux distributions on réalise une boxplot permettant de comparer non seulement les moyennes mais aussi les quartiles et ainsi de mieux apprécier visuellement la différence entre les deux distributions.
boxplot(Y~X,
col="lightyellow",
cex.axis=0.6,
xlab=nameX,
ylab= nameY,
horizontal=T)
Il y a effectivement un net décalage entre le centre des deux distributions où se trouvent la médiane et les quartiles Q1 et Q3.
Modélisation linéaire
On réalise le modèle d’analyse de variance en utilisant le modèle linéaire général, c’est-à-dire la fonction lm()
qu’on a utilisé précédemment pour mettre en relation deux variables quantitatives à l’aide de modèles de régression. Puis on résume les parts de variance intra-groupe et inter-groupe à l’aide de la fonction anova()
.
<-lm(Y~X)
modsummary(mod)
Call:
lm(formula = Y ~ X)
Residuals:
Min 1Q Median 3Q Max
-2.9156 -0.3659 -0.0118 0.3454 5.0376
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.566725 0.005414 1582.36 <2e-16 ***
Xrural -0.430724 0.008939 -48.19 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.5636 on 17112 degrees of freedom
Multiple R-squared: 0.1195, Adjusted R-squared: 0.1194
F-statistic: 2322 on 1 and 17112 DF, p-value: < 2.2e-16
anova(mod)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 1 737.5 737.46 2321.9 < 2.2e-16 ***
Residuals 17112 5434.9 0.32
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Interprétation des résultats
Comme nous avons utilisé le logarithme du revenu, il faut utiliser une transformation exponentielle pour analyser correctement les coefficients. En effet on a :
\(log(rev) = a + b\times mil\)
\(rev = exp(a + b\times mil)\)
\(rev = exp(a) \times exp(b)^{mil}\)
exp(mod$coefficients)
(Intercept) Xrural
5253.8967919 0.6500385
Dans cet exemple, les coefficients nous indiquent donc que le revenu moyen en milieu urbain est de 5254 DT/hab. (« (Intercept) »), tandis qu’il n’est que de en milieu rural. Le coefficient du modèle indique que le revenu ruar est égal à 65% de la valeur observée en milieu rural.
Vous avez sans doute remarqué que les valeurs moyennes de revenu en milieu urbain et rural que nous obtenons ici ne correspondant pas à celles fournies par l’INS. La différence s’explique par le fait que nous avons travaillé sur le logarithme des revenus et non pas sur les revenus. En procédant ainsi nous avons en fait comparé la différence entre les moyennes géométriques des individus situés en milieu urbain et rural et non pas la différence entre les moyennes arithmétiques.
\(Moy_{arithmétique} = \sum_{i=1}^{n}{X_i} / n\) \(Moy_{geométrique} = exp(\sum_{i=1}^{n}log({X_i}) / n)\)
Modèle 2 : Le revenu moyen annuel est-il lié au genre du chef de ménage ?
On rassemble nos quatre petits blocs de programme en un seul et on change juste le choix de la variable explicative. Désormais c’est à vous de faire les commentaires !
# Choix des variables
<-don$logrev
Y<- don$sex
X<-"log. du Revenu (en DT/hab.)"
nameY <- "Genre du chef de ménage"
nameX
# Paramètres principaux
tapply(Y,X,mean)
homme femme
8.378079 8.546267
tapply(Y,X,sd)
homme femme
0.5958316 0.6025676
# Visualisation
boxplot(Y~X,
col="lightyellow",
cex.axis=0.6,
xlab=nameX,
ylab= nameY,
horizontal=T)
# Modélisation
<-lm(Y~X)
modsummary(mod)
Call:
lm(formula = Y ~ X)
Residuals:
Min 1Q Median 3Q Max
-3.1577 -0.3861 -0.0128 0.3657 4.7955
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.378079 0.005047 1660.07 <2e-16 ***
Xfemme 0.168188 0.011824 14.22 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.5971 on 17112 degrees of freedom
Multiple R-squared: 0.01169, Adjusted R-squared: 0.01163
F-statistic: 202.3 on 1 and 17112 DF, p-value: < 2.2e-16
anova(mod)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 1 72.1 72.131 202.34 < 2.2e-16 ***
Residuals 17112 6100.2 0.356
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Paramètres
exp(mod$coefficients)
(Intercept) Xfemme
4350.643239 1.183159
Que pouvez-vous dire des résultats ?
Modèle 3 : Le revenu des habitant·es est-il lié au niveau d’instruction du chef de ménage ?
Même programme mais avec une variable qualitative ayant quatre niveaux.
# Choix des variables
<-don$logrev
Y<- don$ins
X<-"log. du Revenu (en DT/hab.)"
nameY <- "Instruction du chef de ménage"
nameX
# Paramètres principaux
tapply(Y,X,mean)
aucun primaire secondaire supérieur
8.288205 8.295452 8.501042 8.874047
tapply(Y,X,sd)
aucun primaire secondaire supérieur
0.5629074 0.5562095 0.5908929 0.6076974
# Visualisation
boxplot(Y~X,
col="lightyellow",
cex.axis=0.6,
xlab=nameX,
ylab= nameY,
horizontal=T)
# Modélisation
<-lm(Y~X)
modsummary(mod)
Call:
lm(formula = Y ~ X)
Residuals:
Min 1Q Median 3Q Max
-3.0751 -0.3714 -0.0042 0.3619 4.8854
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.288205 0.009361 885.374 <2e-16 ***
Xprimaire 0.007247 0.011603 0.625 0.532
Xsecondaire 0.212836 0.012578 16.922 <2e-16 ***
Xsupérieur 0.585841 0.016597 35.299 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.5726 on 17110 degrees of freedom
Multiple R-squared: 0.09098, Adjusted R-squared: 0.09082
F-statistic: 570.8 on 3 and 17110 DF, p-value: < 2.2e-16
anova(mod)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 3 561.6 187.184 570.82 < 2.2e-16 ***
Residuals 17110 5610.8 0.328
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Paramètres
exp(mod$coefficients)
(Intercept) Xprimaire Xsecondaire Xsupérieur
3976.691268 1.007273 1.237182 1.796502
Que pouvez-vous dire des résultats ?
Modèle 4 : Le revenu des habitant·es est-il lié à la région où ils se trouvent ?
Même programme mais avec une variable qualitative ayant cinq niveaux.
# Choix des variables
<-don$logrev
Y<- don$reg
X<-"log. du Revenu (en DT/hab.)"
nameY <- "Région"
nameX
# Paramètres principaux
tapply(Y,X,mean)
GT NE NO CE CO SE SO
8.739277 8.340811 8.231761 8.516970 8.062688 8.312937 8.390937
tapply(Y,X,sd)
GT NE NO CE CO SE SO
0.5414742 0.5446345 0.5585463 0.5891304 0.5630847 0.5684727 0.5301464
# Visualisation
boxplot(Y~X,
col="lightyellow",
cex.axis=0.6,
xlab=nameX,
ylab= nameY,
horizontal=T)
# Modélisation
<-lm(Y~X)
modsummary(mod)
Call:
lm(formula = Y ~ X)
Residuals:
Min 1Q Median 3Q Max
-3.0926 -0.3644 -0.0166 0.3462 5.1109
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.739277 0.008881 984.01 <2e-16 ***
XNE -0.398466 0.014333 -27.80 <2e-16 ***
XNO -0.507516 0.014255 -35.60 <2e-16 ***
XCE -0.222307 0.013696 -16.23 <2e-16 ***
XCO -0.676588 0.014574 -46.42 <2e-16 ***
XSE -0.426340 0.015732 -27.10 <2e-16 ***
XSO -0.348340 0.018550 -18.78 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.5578 on 17107 degrees of freedom
Multiple R-squared: 0.1378, Adjusted R-squared: 0.1375
F-statistic: 455.6 on 6 and 17107 DF, p-value: < 2.2e-16
anova(mod)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 6 850.5 141.743 455.63 < 2.2e-16 ***
Residuals 17107 5321.9 0.311
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Paramètres
exp(mod$coefficients)
(Intercept) XNE XNO XCE XCO XSE
6243.3778591 0.6713493 0.6019892 0.8006695 0.5083484 0.6528945
XSO
0.7058590
Que pouvez-vous dire des résultats ?
Modèle 5 : Le revenu des habitant·es est-il lié à l’âge du chef de ménage ?
Initialement la variable âge est quantitative. On pourrait envisager de construire une régression mais rien de prouve que le revenu augmente avec l’âge.
plot(don$age,don$logrev, pch=20, cex=0.2)
On va donc transformer la variable age
en classes qui doivent être bien réfléchies car elles vont conditionner les résultats. On peut utiliser les quantiles ou bien choisir ses propres classes en fonction de la connaissance que l’on a du phénomène. Par exemple ici on va retenir , 4 classes échelonnées en intervalles de 15 ans
<-c(min(don$age),35,50,65, max(don$age))
classes$age4 <- cut(don$age,classes)
dontable(don$age4)
(19,35] (35,50] (50,65] (65,109]
1075 5042 6478 4517
On peut alors appliquer le même programme que précédemment :
# Choix des variables
<-don$logrev
Y<- don$age4
X<-"log. du Revenu (en DT/hab.)"
nameY <- "Age du chef de ménage"
nameX
# Paramètres principaux
tapply(Y,X,mean)
(19,35] (35,50] (50,65] (65,109]
8.399881 8.216320 8.455677 8.558383
tapply(Y,X,sd)
(19,35] (35,50] (50,65] (65,109]
0.6684426 0.5873870 0.5647931 0.5923722
# Visualisation
boxplot(Y~X,
col="lightyellow",
cex.axis=0.6,
xlab=nameX,
ylab= nameY,
horizontal=T)
# Modélisation
<-lm(Y~X)
modsummary(mod)
Call:
lm(formula = Y ~ X)
Residuals:
Min 1Q Median 3Q Max
-3.0004 -0.3745 -0.0130 0.3539 4.6152
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.39988 0.01787 470.176 < 2e-16 ***
X(35,50] -0.18356 0.01968 -9.328 < 2e-16 ***
X(50,65] 0.05580 0.01929 2.892 0.00383 **
X(65,109] 0.15850 0.01988 7.974 1.64e-15 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.5858 on 17108 degrees of freedom
(2 observations deleted due to missingness)
Multiple R-squared: 0.04896, Adjusted R-squared: 0.04879
F-statistic: 293.6 on 3 and 17108 DF, p-value: < 2.2e-16
anova(mod)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 3 302.2 100.729 293.58 < 2.2e-16 ***
Residuals 17108 5869.9 0.343
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Paramètres
exp(mod$coefficients)
(Intercept) X(35,50] X(50,65] X(65,109]
4446.5360045 0.8323016 1.0573829 1.1717547
Que pouvez-vous dire des résultats ?
4. Analyse de variance multiple
Modèle sans interaction
Si on suppose que toutes les variables explicatives sont indépendantes, on peut construire un modèle décrivant la prévision du revenu en fonction de l’effet des modalités de chacune des variables.
<-lm(formula = logrev~sex+age4+ins+mil+reg, data=don)
modsummary(mod)
Call:
lm(formula = logrev ~ sex + age4 + ins + mil + reg, data = don)
Residuals:
Min 1Q Median 3Q Max
-2.8541 -0.3160 -0.0053 0.2974 5.1697
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.311428 0.021026 395.284 < 2e-16 ***
sexfemme 0.204795 0.010614 19.294 < 2e-16 ***
age4(35,50] -0.073096 0.016830 -4.343 1.41e-05 ***
age4(50,65] 0.201689 0.016787 12.015 < 2e-16 ***
age4(65,109] 0.354050 0.017738 19.960 < 2e-16 ***
insprimaire 0.128949 0.011287 11.425 < 2e-16 ***
inssecondaire 0.330686 0.012744 25.948 < 2e-16 ***
inssupérieur 0.647722 0.016273 39.802 < 2e-16 ***
milrural -0.211446 0.008892 -23.780 < 2e-16 ***
regNE -0.278030 0.013094 -21.234 < 2e-16 ***
regNO -0.296649 0.013478 -22.010 < 2e-16 ***
regCE -0.121768 0.012377 -9.838 < 2e-16 ***
regCO -0.450201 0.013859 -32.484 < 2e-16 ***
regSE -0.322928 0.014129 -22.856 < 2e-16 ***
regSO -0.281712 0.016577 -16.994 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.4967 on 17097 degrees of freedom
(2 observations deleted due to missingness)
Multiple R-squared: 0.3166, Adjusted R-squared: 0.316
F-statistic: 565.7 on 14 and 17097 DF, p-value: < 2.2e-16
Anova(mod,type = "III")
Anova Table (Type III tests)
Response: logrev
Sum Sq Df F value Pr(>F)
(Intercept) 38551 1 156249.64 < 2.2e-16 ***
sex 92 1 372.27 < 2.2e-16 ***
age4 403 3 544.54 < 2.2e-16 ***
ins 474 3 640.78 < 2.2e-16 ***
mil 140 1 565.51 < 2.2e-16 ***
reg 342 6 230.91 < 2.2e-16 ***
Residuals 4218 17097
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Comme on peut le voir, toutes les variables ont des effets significatifs toutes choses égales quant à celui des autres. Mais Le fait de procéder à une estimation simultanée entraîne des modifications des coefficients par rapport à ceux que l’on avait obtenu à l’aide des modèles simples. Ce modèle final résume 31.6% de la variance du logarithme des revenus ((« R-squared »), ce qui est un bon résultat. Mais il demeure évidemment plus de deux-tiers de variance résiduelle imputable à des facteurs non pris en compte.
Interprétation des résultats
Nous construisons un tableau final dans lequel on a indiqué pour chaque modalité le coefficient correspondant et sa transformation exponentielle.
<- mod$coefficients
x <- data.frame(parametre=x, exp_parametre=exp(x))
tabres kable(tabres, digits=3)
parametre | exp_parametre | |
---|---|---|
(Intercept) | 8.311 | 4070.120 |
sexfemme | 0.205 | 1.227 |
age4(35,50] | -0.073 | 0.930 |
age4(50,65] | 0.202 | 1.223 |
age4(65,109] | 0.354 | 1.425 |
insprimaire | 0.129 | 1.138 |
inssecondaire | 0.331 | 1.392 |
inssupérieur | 0.648 | 1.911 |
milrural | -0.211 | 0.809 |
regNE | -0.278 | 0.757 |
regNO | -0.297 | 0.743 |
regCE | -0.122 | 0.885 |
regCO | -0.450 | 0.638 |
regSE | -0.323 | 0.724 |
regSO | -0.282 | 0.754 |
la ligne « (Intercept) » correspond à la situation de référence par laquelle on va calculer l’effet des différentes modalités. Il s’agit ici d’un homme (
*sex*
), de 19-34 ans (*age*
), sans instruction (*ins*
) et résidant en milieu urbain (*mil*
) dans le Grand Tunis (*reg*
). Son revenu par personne sera selon le modèle de 4070 DT/hab.les femmes chefs de ménage ont en moyenne un revenu supérieur de 27% par rapport aux autres chefs de ménage, toutes choses égales quant à leurs caractéristiques.
le revenu varie de façon non linéaire avec l’âge. Les chefs de ménage de 35-50 ans ont en effet un niveau de revenu inférieur de -7% à celui des 19-34 ans. Par contre il est supérieur de +22% pour les 50-64 ans et de +43% pour les 65 ans et plus.
le revenu augmente régulièrement avec le niveau d’instruction des chefs de ménage. Par rapport à un non diplômé, le revenu sera augmenté de +13.8% pour un niveau primaire, +39% pour un niveau secondaire et +91% pour un niveau supérieur.
les ménages ruraux ont des revenus plus faibles que les ménages urbains. La différence est environ de -20% en moyenne.
le revenu varie fortement selon les régions. Ce résultat n’est évidemment pas une surprise, mais les coefficients d’inégalités sont ici calculés toutes choses égales quant aux autres facteurs (milieu, âge, sexe, instruction) ce qui rend l’analyse plus précise. Par rapport à la région du Grand Tunis, les autres régions se classent par ordre décroissant ainsi : Centre Est (-11.5%), Nord Est (-24.3%), Sud-Ouest (-24.6%), Nord Ouest (-25.7%), Sud Est (-27.6%) et surtout Centre-Ouest (-36.2%).