-
Notifications
You must be signed in to change notification settings - Fork 0
/
07-regressionlineaire.qmd
2711 lines (2040 loc) · 148 KB
/
07-regressionlineaire.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Régression linéaire multiple {#sec-chap07}
Dans ce chapitre, nous présentons la méthode de régression certainement la plus utilisée en sciences sociales : la régression linéaire multiple. À titre de rappel, dans la [section @sec-044], nous avons vu que la régression linéaire simple, basée sur la méthode des moindres carrés ordinaires (MCO), permet d’expliquer et de prédire une variable continue en fonction d’une autre variable. Toutefois, quel que soit le domaine d’étude, il est rare que le recours à une seule variable explicative (*X*) permette de prédire efficacement une variable continue (*Y*). La régression linéaire multiple est simplement une extension de la régression linéaire simple : elle permet ainsi de prédire et d'expliquer une variable dépendante (*Y*) en fonction de plusieurs variables indépendantes (explicatives).
Plus spécifiquement, nous abordons ici les principes et les hypothèses de la régression linéaire multiple, comment mesurer la qualité d’ajustement du modèle, introduire des variables explicatives particulières (variable qualitative dichotomique ou polytomique, variable d’interaction, etc.), interpréter les sorties d’un modèle de régression et finalement la mettre en œuvre dans R.
::: bloc_package
::: bloc_package-header
::: bloc_package-icon
:::
**Liste des *packages* utilisés dans ce chapitre**
:::
::: bloc_package-body
* Pour créer des graphiques :
- `ggplot2`, le seul, l’unique!
- `ggpubr` pour combiner les graphiques
* Pour obtenir les coefficients standardisés :
- `QuantPsyc` avec la fonction `lm.beta` ([section @sec-0742]).
* Pour les effets marginaux des variables indépendantes :
- `ggeffects` avec la fonction `ggpredict` ([section @sec-0774]).
* Pour vérifier la normalité des résidus :
- `DescTools` avec les fonctions `Skewness` et `Kurtosis` et `JarqueBeraTest` ([section @sec-0762]).
* Pour vérifier l'homoscédasticité des résidus :
- `lmtest` avec la fonction `bptest` pour le test de Breusch-Pagan ([section @sec-07733]).
* Pour vérifier la multicolinéarité excessive :
- `car` avec la fonction `vif` ([section @sec-07734]).
* Autre *package* :
- `foreign` pour importer des fichiers externes.
:::
:::
## Objectifs de la régression linéaire multiple et construction d'un modèle de régression {#sec-071}
Selon Barbara G. Tabachnich et Linda S. Fidell [-@tabachnick2007], un modèle de régression permet de répondre à deux objectifs principaux relevant chacun d'une approche de modélisation particulière.
La première approche a pour objectif d’identifier les relations entre une variable dépendante (VD) et plusieurs variables indépendantes (VI). Il s’agit alors de déterminer si ces relations sont positives ou négatives, significatives ou non et d'évaluer leur ampleur. La construction du modèle de régression repose alors sur un cadre théorique et la formulation d’hypothèses, sur les relations entre chacune des VI et la VD.
La seconde approche est exploratoire et très utilisée en forage ou en fouille de données (*data mining* en anglais). Parmi un grand ensemble de variables disponibles dans un jeu de données, elle vise à identifier la ou les variables permettant de prédire le plus efficacement (précisément) une variable dépendante. Parfois, ce type de démarche ne repose ni sur un cadre théorique ni sur la formulation d’hypothèses entre les VI et la VD. Dans des cas extrêmes, on s’intéresse uniquement à la capacité de prédiction du modèle, et ce, sans analyser les associations entre les VI et la VD. L’objectif étant d’obtenir le modèle le plus efficace possible afin de prédire à l’avenir la valeur de la variable dépendante pour des observations pour lesquelles elle est inconnue. Pour ce faire, nous avons recours à des régressions séquentielles (*stepwise regressions*) dans lesquelles les variables peuvent être ajoutées une à une au modèle ou retirées de celui-ci; nous conserverons dans le modèle final uniquement celles qui ont un apport explicatif significatif. Signalons d’emblée que dans le reste du chapitre, comme du livre, nous ne nous étendons pas plus sur cette approche de modélisation, et ce, pour deux raisons. D’une part, cette approche met souvent en évidence des relations significatives entre des variables sans qu’il y ait une relation de causalité entre elles. D'autre part, en sciences sociales, un modèle de régression doit être basé sur un cadre théorique et conceptuel élaboré à la suite à d'une revue de littérature rigoureuse.
::: bloc_attention
::: bloc_attention-header
::: bloc_attention-icon
:::
**Cadre conceptuel et élaboration d'un modèle de régression**
:::
::: bloc_attention-body
Pour bien construire un modèle de régression, il convient de définir un cadre conceptuel élaboré à la suite à une revue de littérature sur le sujet de recherche. Ce cadre conceptuel permet d’identifier les dimensions et les concepts clefs permettant d’expliquer le phénomène à l’étude. Par la suite, pour chacun de ces concepts ou les dimensions, il est alors possible 1) d’identifier les différentes variables indépendantes qui sont introduites dans le modèle et 2) de formuler une hypothèse pour chacune d’elles. Par exemple, pour telle ou telle variable explicative, on s’attendra à ce qu’elle fasse augmenter ou diminuer significativement la variable dépendante. De nouveau, la formulation de cette hypothèse doit s'appuyer sur une interprétation théorique de la relation entre la VI et la VD.
Prenons en guise d'exemple une étude récente portant sur la multiexposition des cyclistes au bruit et à la pollution atmosphérique [@2020_3]. Dans cet article, les auteurs s’intéressent aux caractéristiques de l’environnement urbain qui contribuent à augmenter ou réduire l’exposition des cyclistes à la pollution de l’air et au bruit routier. Pour ce faire, une collecte de données primaires a été réalisée avec trois cyclistes dans les rues de Paris du 4 au 7 septembre 2017. Au total, 64 heures et 964 kilomètres ont ainsi été parcourus à vélo afin de maximiser la couverture de la ville de Paris et les types d'environnements urbains traversés.
Leur cadre conceptuel est schématisé à la @fig-cadreconcept. Les deux variables indépendantes (à expliquer) sont l'exposition au dioxyde d'azote (NO~2~) et l'exposition au bruit (mesurée en décibel dB(A)). Avant d'identifier les caractéristiques de l'environnement urbain affectant ces deux expositions, plusieurs facteurs, dits **variables de contrôle**, sont considérés. Par exemple, la concentration de NO~2~ varie en fonction des conditions météorologiques (vent, température et humidité) et de la pollution d'arrière-plan (variant selon le moment de la journée, le jour de la semaine et la localisation géographique au sein de la ville). Ces dimensions ne sont pas le centre d'intérêt direct de l'étude. En effet, les auteurs s'intéressent aux impacts des caractéristiques locales de l'environnement urbain. Pour pouvoir les identifier sans biais, il est nécessaire de contrôler (filtrer) l'ensemble de ces autres facteurs.
Dans leur cadre conceptuel, les auteurs regroupent les caractéristiques locales de l'environnement urbain en trois grandes dimensions : les caractéristiques du segment (type de rues ou de voies cyclables empruntés, intersections traversées, pente et vitesse), celles de la forme urbaine (densité résidentielle, végétation, ouverture de la rue et occupations du sol) et celles du trafic (nombre et types de véhicules croisés, congestion et zones 30 km/h). Une fois ce cadre conceptuel construit, il reste alors à identifier les variables qui permettent d'opérationnaliser chacun de concepts retenus.
![Exemple de cadre conceptuel](images/Chap07/CadreTheorique.jpg){#fig-cadreconcept width="80%" fig-align="center"}
**Notion de variables de contrôle *versus* variables explicatives**
Dans un modèle de régression, nous distinguons habituellement trois types de variables : la variable dépendante (*Y*) que nous souhaitons prédire ou expliquer et les variables indépendantes (*X*) qui peuvent être soit des variables de contrôle (*covariates* en anglais), soit des variables explicatives. Les premières sont des facteurs qu'il faut prendre en compte (contrôler) avant d'évaluer nos variables d'intérêt (explicatives).
Dans l'exemple précédent, les chercheurs voulaient évaluer l'impact des caractéristiques de l'environnement urbain (variables explicatives) sur les expositions des cyclistes au dioxyde d'azote et au bruit, et ce, une fois contrôlés les effets de facteurs reconnus comme ayant un impact significatif sur la concentration de ces polluants (conditions météorologiques et la pollution d’arrière-plan). Autrement dit, si les variables de contrôle n'avaient pas été prises en compte, l'étude des variables d'intérêt serait biaisée par les effets de ces facteurs qui n'auraient pas été contrôlés. À titre d'exemple, il est possible que les zones de circulation limitées à 30 km/h soient concentrées dans les quartiers centraux et denses de Paris. Dans ces quartiers, la pollution d'arrière-plan a tendance à être supérieure. Si nous ne tenons pas compte de cette pollution d'arrière-plan, nous pourrions arriver à la conclusion que les zones de 30 km/h sont des milieux dans lesquels les cyclistes sont plus exposés à la pollution atmosphérique.
**Construction de modèles de régression imbriqués, incrémentiels**
En lien avec le cadre conceptuel du modèle, il est fréquent de construire plusieurs modèles emboîtés. Par exemple, à partir du cadre conceptuel (@fig-cadreconcept), les auteurs auraient très bien pu construire quatre modèles :
* un premier avec uniquement les variables de contrôle (modèle A);
* un second incluant les variables de contrôle et les variables explicatives de la dimension des caractéristiques du segment (modèle B);
* un troisième reprenant les variables du modèle B dans lequel sont introduites les variables explicatives relatives à la forme urbaine (modèle C);
* un dernier modèle dans lequel sont ajoutées les variables explicatives relatives aux conditions du trafic (modèle D).
L’intérêt d’une telle approche est qu'elle permet d’évaluer successivement l’apport explicatif de chacune des dimensions du modèle; nous y reviendrons dans la [section @sec-0732].
Nous disons alors que deux modèles sont imbriqués lorsque le modèle avec le plus de variables comprend également **toutes** les variables du modèle avec le moins de variables.
:::
:::
## Principes de base de la régression linéaire multiple {#sec-072}
### Un peu d'équations... {#sec-0721}
La régression linéaire multiple vise à déterminer une équation qui résume le mieux les relations linéaires entre une variable dépendante (*Y*) et un ensemble de variables indépendantes (*X*). L'équation de régression s'écrit alors :
$$
y_i = \beta_{0} + \beta_{1}x_{1i} + \beta_{2}x_{2i} +\ldots+ \beta_{k}x_{ki} + \epsilon_{i}
$$ {#eq-regmultiple1}
avec :
* $y_i$, la valeur de la variable dépendante *Y* pour l'observation *i*
* $\beta_{0}$, la constante, soit la valeur prédite pour *Y* quand toutes les variables indépendantes sont égales à 0
* $k$ le nombre de variables indépendantes
* $\beta_{1}$ à $\beta_{k}$, les coefficients de régression pour les variables indépendantes de 1 à *k* ($X_{1}$ à $X_{k}$)
* $\epsilon_{i}$, le résidu pour l'observation de *i*, soit la partie de la valeur de $y_i$ qui n'est pas expliquée par le modèle de régression.
Notez qu'il existe plusieurs écritures simplifiées de cette équation. D'une part, il est possible de ne pas indiquer l'observation *i* et de remplacer les lettres grecques *bêta* et *epsilon* ($\beta$ et $\epsilon$) par les lettres *b* et *e* :
$$
Y = b_{0} + b_{1}X_{1} + b_{2}X_{2} +\ldots+ b_{k}X_{k} + e
$$ {#eq-regmultiple2}
D'autre part, cette équation peut être présentée sous forme matricielle. Rappelez-vous que, pour chacune des *n* observations de l'échantillon, une équation est formulée :
$$
\left\{\begin{array}{l}
y_{1}=\beta_{0}+\beta_{1} x_{1,1}+\ldots+\beta_{p} x_{1, k}+\varepsilon_{1} \\
y_{2}=\beta_{0}+\beta_{1} x_{2,1}+\ldots+\beta_{p} x_{2, k}+\varepsilon_{2} \\
\cdots \\
y_{n}=\beta_{0}+a_{1} x_{n, 1}+\ldots+\beta_{p} x_{n, k}+\varepsilon_{n}
\end{array}\right.
$$ {#eq-regmultiple3}
Par conséquent, sous forme matricielle, l'équation s'écrit :
$$
\left(\begin{array}{c}
y_{1} \\
\vdots \\
y_{n}
\end{array}\right)=\left(\begin{array}{cccc}
1 & x_{1,1} & \cdots & x_{1, k} \\
\vdots & \vdots & \ddots & \vdots \\
1 & x_{n, 1} & \cdots & x_{n, k}
\end{array}\right)\left(\begin{array}{c}
\beta_{0} \\
\beta_{1} \\
\vdots \\
\beta_{k}
\end{array}\right)+\left(\begin{array}{c}
\varepsilon_{1} \\
\vdots \\
\varepsilon_{n}
\end{array}\right)
$$ {#eq-regmultiple4}
ou tout simplement :
$$
Y = X\beta + \epsilon
$$ {#eq-regmultiple5}
avec :
* $Y$, un vecteur de dimension $n \times 1$ pour la variable dépendante, soit une colonne avec *n* observations
* $X$, une matrice de dimension $n \times (k + 1)$ pour les *k* variables indépendantes, incluant une autre colonne (avec la valeur de 1 pour les *n* observations) pour la constante d'où $k + 1$
* $\beta$, un vecteur de dimension $k + 1$, soit les coefficients de régression pour les *k* variables et la constante
* $\epsilon$, un vecteur de dimension $n \times 1$ pour les résidus.
::: bloc_attention
::: bloc_attention-header
::: bloc_attention-icon
:::
**Parties expliquée et non expliquée de la régression linéaire multiple**
:::
::: bloc_attention-body
Vous aurez compris que, comme pour la régression linéaire simple ([section @sec-044]), l'équation de la régression linéaire multiple comprend aussi une partie expliquée et une autre non expliquée (stochastique) par le modèle :
$$
Y = \underbrace{\beta_{0} + \beta_{1}X_{i} + \beta_{2}X_{i} +\ldots+ \beta_{k}X_{k}}_{\mbox{partie expliquée par le modèle}}+ \underbrace{\epsilon}_{\mbox{partie non expliquée (stochastique)}}
$$ {#eq-regmultiple6}
$$
Y = \underbrace{X\beta}_{\mbox{partie expliquée par le modèle}}+ \underbrace{\epsilon}_{\mbox{partie non expliquée (stochastique)}}
$$ {#eq-regmultiple8}
:::
:::
### Hypothèses de la régression linéaire multiple {#sec-0722}
Un modèle est bien construit s'il respecte plusieurs hypothèses liées à la régression, dont les principales étant :
* **Hypothèse 1**. *La variable dépendante doit être continue et non-bornée*. Quant aux variables indépendantes (VI), elles peuvent être quantitatives (discrètes ou continues) et qualitatives (nominale ou ordinale).
* **Hypothèse 2**. *La variance de chaque VI doit être supérieure à 0*. Autrement dit, toutes les observations ne peuvent avoir la même valeur.
* **Hypothèse 3**. *Indépendance des termes d'erreur*. Les résidus des observations ($\epsilon_{1}, \epsilon_{2}, \ldots, \epsilon_{n}$) ne doivent pas être corrélés entre eux. Autrement dit, les observations doivent être indépendantes les unes des autres, ce qui n'est souvent pas le cas pour des mesures temporelles. Par exemple, l'application du cadre conceptuel sur la modélisation de l'exposition des cyclistes au bruit et à la pollution atmosphérique (@fig-cadreconcept)) est basée sur des données primaires collectées lors de trajets réalisés à vélo dans une ville donnée. Par conséquent, deux observations qui se suivent ont bien plus de chances de se ressembler – du point de vue des mesures de pollution et des caractéristiques de l'environnement urbain – que deux observations tirées au hasard dans le jeu de données. Ce problème d'autocorrélation temporelle doit être contrôlé, sinon, les coefficients de régression seront biaisés.
* **Hypothèse 4**. *Normalité des résidus* avec une moyenne centrée sur zéro.
* **Hypothèse 5**. *Absence de colinéarité parfaite entre les variables explicatives*. Par exemple, dans un modèle, nous ne pouvons pas introduire à la fois les pourcentages de locataires et de propriétaires, car pour chaque observation, la somme des deux donne 100 %. Nous avons donc une corrélation parfaite entre ces deux variables : le coefficient de corrélation de Pearson entre ces deux variables est égal à 1. Par conséquent, le modèle ne peut pas être estimé avec ces deux variables et l'une des deux est automatiquement ôtée.
* **Hypothèse 6**. *Homoscédasticité des erreurs (ou absence d'hétéroscédasticité)*. Les résidus doivent avoir une variance constante, c'est-à-dire qu'elle doit être la même pour chaque observation. Il y a homoscédasticité lorsqu'il y a une absence de corrélation entre les résidus et les valeurs prédites. Si cette condition n'est pas respectée, nous parlons alors d'hétéroscédasticité.
* **Hypothèse 7**. *Le modèle est bien spécifié*. Un modèle est mal spécifié (construit) quand « une ou plusieurs variables non pertinentes sont incluses dans le modèle » ou « qu’une ou plusieurs variables pertinentes sont exclues du modèle » [@bressoux2010, p.138-139]. Concrètement, l'inclusion d'une variable non pertinente ou l'omission d'une variable peut entraîner une mauvaise estimation des effets des variables explicatives du modèle.
Pour connaître les conséquences de la violation de chacune de ces hypothèses, vous pourrez notamment consulter l'excellent ouvrage de Bressoux [-@bressoux2010, p.103-110]. Retenez ici que le non-respect de ces hypothèses produit des coefficients de régression biaisés.
## Évaluation de la qualité d’ajustement du modèle {#sec-073}
Pour illustrer la régression linéaire multiple, nous utilisons un jeu de données tiré d'un article portant sur la distribution spatiale de la végétation sur l'île de Montréal abordée sous l'angle de l'équité environnementale [@apparicio2016spatial]. Dans cette étude, les auteurs veulent vérifier si certains groupes de population (personnes à faible revenu, minorités visibles, personnes âgées et enfants de moins de 15 ans) ont ou non une accessibilité plus limitée à la végétation urbaine. En d’autres termes, cet article tente de répondre à la question suivante : une fois contrôlées les caractéristiques de la forme urbaine (densité de population et âge du bâti), est-ce que les quatre groupes de population résident dans des îlots urbains avec proportionnellement moins ou plus de végétation?
Dans le @tbl-datareg, sont reportées les variables utilisées (calculées au niveau des îlots de l'île de Montréal) introduites dans le modèle de régression :
* le pourcentage de la superficie de l'îlot couverte par de la végétation, soit la variable indépendante (VI);
* deux variables indépendantes de contrôle (VC) relatives à la forme urbaine;
* les pourcentages des quatre groupes de population comme variables indépendantes explicatives (VE).
**Notez que ce jeu de données est utilisé tout au long du chapitre.** L'équation de départ du premier modèle de régression est donc :
`VegPct ~ HABHA + AgeMedian + Pct_014 + Pct_65P + Pct_MV + Pct_FR`
```{r}
#| label: tbl-datareg
#| tbl-cap: Statistiques descriptives pour les variables du modèle
#| echo: false
#| message: false
#| warning: false
source("code_complementaire/JG_helper.R")
load("data/lm/DataVegetation.RData")
vars <- c("VegPct" , "HABHA" , "AgeMedian" , "Pct_014" , "Pct_65P" , "Pct_MV" , "Pct_FR")
intitule <- c("Végétation (%)" , "Habitants au km2" , "Âge médian des bâtiments" , "Moins de 15 ans (%)" , "65 ans et plus (%)" , "Minorités visibles (%)" , "Personnes à faible revenu (%)")
type <- c("VD" , "VC" , "VC" , "VE" , "VE" , "VE" , "VE")
moy <- round(sapply(DataFinal[vars], mean),1)
et <- round(sapply(DataFinal[vars], sd),1)
q1 <- round(sapply(DataFinal[vars], quantile)[2,],1)
q2 <- round(sapply(DataFinal[vars], median),1)
q3 <- round(sapply(DataFinal[vars], quantile)[4,],1)
stats <- data.frame(cbind(moy, et, q1, q2, q3))
stats <- cbind(vars, intitule, type, stats)
knitr::kable(stats,
format.args = list(decimal.mark = ',', big.mark = " "),
digits = 1,
col.names = c("Nom" , "Intitulé" , "Type", "Moy.", "E.-T.", "Q1", "Q2", "Q3"),
align= c("l" , "l" , "c", "r", "r", "r", "r", "r")
)
```
### Mesures de la qualité d'un modèle {#sec-0731}
Comme pour la régression linéaire simple ([section @sec-044]), les trois mesures les plus couramment utilisées pour évaluer la qualité d'un modèle sont :
* Le **coefficient de détermination** (R^2^) qui indique la proportion de la variance de la variable dépendante expliquée par les variables indépendantes du modèle (@eq-regmR2). Il varie ainsi de 0 à 1.
* La **statistique de Fisher** qui permet d'évaluer la significativité globale du modèle (@eq-regmFFisher). Dans le cas d'une régression linéaire multiple, l'hypothèse nulle du test *F* est que toutes les valeurs des coefficients de régression des variables indépendantes sont égales à 0; autrement dit, qu'aucune des variables indépendantes n'a d'effet sur la variable dépendante. Tel que décrit à la [section @sec-0443], il est possible d'obtenir une valeur de *p* rattachée à la statistique *F* avec *k* degrés de liberté au dénominateur et *n-k-1* degrés de liberté au numérateur (*k* et *n* étant respectivement le nombre de variables indépendantes et le nombre d'observations). Lorsque la valeur de *p* est inférieure à 0,05, nous pourrons en conclure que le modèle est globalement significatif, c'est-à-dire qu'au moins un coefficient de régression est significativement différent de zéro. Notez qu'il est plutôt rare qu'un modèle de régression, comprenant plusieurs variables indépendantes, soit globalement non significatif (P > 0,05), et ce, surtout s'il est basé sur un cadre conceptuel et théorique solide. Le test de la statistique de Fisher est donc facile à passer et ne constitue pas une preuve absolue de la pertinence du modèle.
* **L'erreur quadratique moyenne (RMSE)** qui indique l'erreur absolue moyenne du modèle exprimée dans l'unité de mesure de la variable dépendante, autrement dit l'écart absolu moyen entre les valeurs observées et prédites du modèle (@eq-regmRMSE). Une valeur élevée indique que le modèle se trompe largement en moyenne et inversement.
::: bloc_attention
::: bloc_attention-header
::: bloc_attention-icon
:::
**Rappel sur la décomposition de la variance et calcul du R^2^, de la statistique *F* et du RMSE**
:::
::: bloc_attention-body
Rappelez-vous que la variance totale (SCT) est égale à la somme de la variance expliquée (SCE) par le modèle et de la variance non expliquée (SCR) par le modèle.
$$
\underbrace{\sum_{i=1}^n (y_{i}-\bar{y})^2}_{\mbox{variance de Y}} = \underbrace{\sum_{i=1}^n (\widehat{y}_i-\bar{y})^2}_{\mbox{var. expliquée}} + \underbrace{\sum_{i=1}^n (y_{i}-\widehat{y})^2}_{\mbox{var. non expliquée}} \Rightarrow
SCT = SCE + SCR
$$ {#eq-regmVariances}
avec :
* $y_{i}$ est la valeur observée de la variable dépendante pour *i*;
* $\bar{y}$ est la valeur moyenne de la variable dépendante;
* $\widehat{y}_i$ est la valeur prédite de la variable dépendante pour *i*.
À partir des trois variances (totale, expliquée et non expliquée), il est alors possible de calculer les trois mesures de la qualité d'ajustement du modèle.
$$
R^2 = \frac{\sum_{i=1}^n (\widehat{y}_i-\bar{y})^2}{\sum_{i=1}^n (y_{i}-\bar{y})^2} = \frac{SCE}{SCT} \mbox{ avec } R^2 \in \left[0,1\right]
$$ {#eq-regmR2}
$$
F = \frac{\frac{\sum_{i=1}^n (\widehat{y}_i-\bar{y})^2}{k}}{\frac{\sum_{i=1}^n (y_{i}-\widehat{y})^2}{n-k-1}} = \frac{\frac{SCE}{k}}{\frac{SCR}{n-k-1}} = \frac{\frac{R^2}{k}} {\frac{1-R^2}{n-k-1}} = \frac{(n-k-1)R^2}{k(1-R^2)}
$$ {#eq-regmFFisher}
$$
RMSE = \sqrt{\frac{\sum_{i=1}^n (y_{i}-\widehat{y})^2}{n}} = \sqrt{\frac{SCR}{n}}
$$ {#eq-regmRMSE}
:::
:::
Globalement, plus un modèle de régression est efficace, plus les valeurs du R^2^ et de la statistique *F* sont élevées et inversement, plus celle de RMSE est faible. En effet, remarquez qu'à l'@eq-regmFFisher, la statistique *F* peut être obtenue à partir du R^2^; par conséquent, plus la valeur du R^2^ est forte (proche de 1), plus celle de *F* est aussi élevée. Notez aussi que plus un modèle est performant, plus la partie expliquée par le modèle (SCE) est importante et plus celle non expliquée (SCR) est faible; ce qui signifie que plus le R^2^ est proche de 1 (@eq-regmR2), plus le RMSE – calculé à partir du SCR – est faible (@eq-regmRMSE).
La syntaxe R ci-dessous illustre comment calculer les différentes variances (SCT, SCE et SCR) à partir des valeurs observées et prédites par le modèle, puis les valeurs du R^2^, de *F* et du RMSE. Nous verrons par la suite qu'il est possible d'obtenir directement ces valeurs à partir de la fonction `summary(VotreModele)`.
```{r}
#| echo: true
#| message: false
#| warning: false
# Chargement des données
load("data/lm/DataVegetation.RData")
# Construction du modèle de régression
Modele1 <- lm(VegPct ~ HABHA+AgeMedian+Pct_014+Pct_65P+Pct_MV+Pct_FR, data = DataFinal)
# Nombre d'observations
n <- nrow(DataFinal)
# Nombre de variables indépendantes (coefficients moins la constante)
k <- length(Modele1$coefficients)-1
# Vecteur pour les valeurs observées
Yobs <- DataFinal$VegPct
# Vecteur pour les valeurs prédites
Ypredit <- Modele1$fitted.values
# Variance totale
SCT <- sum((Yobs-mean(Yobs))^2)
# Variance expliquée
SCE <- sum((Ypredit-mean(Yobs))^2)
# Variance résidelle
SCR <- sum((Yobs-Ypredit)^2)
# Calcul du coefficient de détermination (R2)
R2 <- SCE / SCT
# Calcul de la valeur de F
valeurF <- (R2 / k) /((1-R2)/(n-k-1))
cat("R2 =", round(SCE / SCT,4),
"\nF de Fisher = ", round(valeurF,0),
"\nRMSE =", round(sqrt(SCR/ n),4)
)
```
### Comparaison des modèles incrémentiels {#sec-0732}
Tel que signalé plus haut, il est fréquent de construire plusieurs modèles de régression imbriqués. Cette démarche est très utile pour évaluer l'apport de l'introduction d'un nouveau bloc de variables dans un modèle. De manière exploratoire, cela permet également de vérifier si l'introduction d'une variable indépendante supplémentaire dans un modèle a ou non un apport significatif et ainsi de décider de la conserver, ou non, dans le modèle final selon le principe de parcimonie.
::: bloc_notes
::: bloc_notes-header
::: bloc_notes-icon
:::
**Le principe de parcimonie**
:::
::: bloc_notes-body
Le principe de parcimonie appliqué aux régressions correspond à l'idée qu'il est préférable de disposer d'un **modèle plus simple** que d'un **modèle compliqué** pour expliquer un phénomène si la qualité de leurs prédictions – qualité d’ajustement des deux modèles – est équivalente.
Une première justification de ce principe trouve son origine dans la philosophie des sciences avec le **rasoir d'Ockham**. Il s'agit d'un principe selon lequel il est préférable de privilégier des théories faisant appel à un plus petit nombre d'hypothèses. L'idée centrale étant d'éviter d'apporter des réponses à une question qui soulèveraient davantage de nouvelles questions. Dans le cas d'une régression, nous pourrions être tenté d'ajouter de nombreuses variables indépendantes pour améliorer la capacité de prédiction du modèle. Cette stratégie conduit généralement à observer des relations contraires à nos connaissances entre les variables du modèle, ce qui soulève de nouvelles questions de recherche (pas toujours judicieuses…). Dans notre quotidien, si une casserole tombe de son support, il est plus raisonnable d'imaginer que nous l'avions mal fixée que d'émettre l'hypothèse qu'un fantôme l'a volontairement fait tomber! Cette seconde hypothèse soulève d’autres questions (pas toujours judicieuses…) sur la nature d'un fantôme, son identité, la raison le poussant à agir, etc.
Une seconde justification de ce principe s'observe dans la pratique statistique : des modèles plus complexes ont souvent une plus faible capacité de généralisation. En effet, un modèle complexe et trop bien ajusté aux données observées est souvent incapable d'effectuer des prédictions justes pour de nouvelles données. Ce phénomène est appelé surajustement ou surinterprétation (*overfitting* en anglais).
Le surajustement résultant de modèles trop complexes entre en conflit direct avec l'enjeu principal de l'inférence en statistique : pouvoir généraliser des observations faites sur un échantillon au reste d'une population.
Notez que ce principe de parcimonie ne signifie pas que vous devez systématiquement retirer toutes les variables non significatives de votre analyse. En effet, il peut y avoir un intérêt théorique à démontrer l'absence de relation entre des variables. Il s'agit plutôt d'une ligne de conduite à garder à l'esprit lors de l'élaboration du cadre théorique et de l'interprétation des résultats.
:::
:::
Mathématiquement, plus nous ajoutons de variables supplémentaires dans un modèle, plus le R^2^ augmente. On ne peut donc pas utiliser directement le R^2^ pour comparer deux modèles de régression ne comprenant pas le même nombre de variables indépendantes. Nous privilégions alors l'utilisation du R^2^ ajusté qui, comme illustré dans l'@eq-R2ajuste, tient compte à la fois des nombres d'observations et des variables indépendantes utilisées pour construire le modèle.
$$
R^2_{\text {ajusté}}= 1 - \frac{(1-R^2)(n-1)}{n-k-1} \mbox{ avec } R^2_{\text {ajusté}} \in \left[0,1\right]
$$ {#eq-R2ajuste}
Si le R^2^ ajusté du second modèle est supérieur au premier modèle, cela signifie qu'il y a un gain de la variance expliquée entre le premier et le second modèle. Ce gain est-il pour autant significatif? Pour y répondre, il convient de comparer les valeurs des statistiques *F* des deux modèles. Pour ce faire, nous calculons le *F* incrémentiel et la valeur de *p* qui lui est associé avec comme degrés de liberté, le nombre de variables indépendantes ajoutées ($k_2-k_1$) et $n-k_2-1$. Si la valeur de *p* < 0,05, nous pouvons conclure que le gain de variance expliquée par le second modèle est significatif comparativement au premier modèle (au seuil de 5 %).
$$
F_{\text {incrémentiel}}= \frac{\frac{R^2_2-R^2_1}{k_2-k_1}} {\frac{1-R^2_2}{n-k_2-1}}
$$ {#eq-Fincrementiel}
avec $R^2_1$ et $R^2_2$ étant les coefficients de détermination des modèles 1 et 2 et $k_1$ et $k_2$ étant les nombres de variables indépendantes qu'ils comprennent ($k_2 > k_1$).
Illustrons le tout avec deux modèles. Dans la syntaxe R ci-dessous, nous avons construit un premier modèle avec uniquement les variables de contrôle (`modele1`), soit deux variables indépendantes (`HABHA` et `AgeMedian`). Puis, dans un second modèle (`modele2`), nous ajoutons comme variables indépendantes les pourcentages des quatre groupes de population (`Pct_014`, `Pct_65P`, `Pct_MV`, `Pct_FR`). Repérez comment sont calculés les R^2^ ajustés pour les modèles et le *F* incrémentiel.
Le R^2^ ajusté passe de 0,269 à 0,418 des modèles 1 à 2 signalant que l'ajout des quatre variables indépendantes augmente considérablement la variance expliquée. Autrement dit, le second modèle est bien plus performant. Le *F* incrémentiel s'élève à 653,8 et est significatif (*p* < 0,001). Notez que la syntaxe ci-dessous illustre comment calculer les valeurs du R^2^ ajusté et du *F* incrémentiel à partir des équations [-@eq-R2ajuste] et [-@eq-Fincrementiel]. Sachez toutefois qu'il est possible d'obtenir directement le R^2^ ajusté avec la fonction `summary(VotreModele)` et le *F* incrémentiel avec la fonction `anova(modele1, modele2)`.
```{r}
#| echo: true
#| message: false
#| warning: false
modele1 <- lm(VegPct ~ HABHA+AgeMedian, data = DataFinal)
modele2 <- lm(VegPct ~ HABHA+AgeMedian+Pct_014+Pct_65P+Pct_MV+Pct_FR, data = DataFinal)
# nombre d'observations pour les deux modèles
n1 <- length(modele1$fitted.values)
n2 <- length(modele2$fitted.values)
# nombre de variables indépendantes
k1 <- length(modele1$coefficients)-1
k2 <- length(modele2$coefficients)-1
# coefficient de détermination
R2m1 <- summary(modele1)$r.squared
R2m2 <- summary(modele2)$r.squared
# coefficient de détermination ajusté
R2ajustm1 <- 1-(((n1-1)*(1-R2m1)) / (n1-k1-1))
R2ajustm2 <- 1-(((n2-1)*(1-R2m2)) / (n2-k2-1))
# Statistique F
Fm1 <- summary(modele1)$fstatistic[1]
Fm2 <- summary(modele2)$fstatistic[1]
# F incrémentiel
Fincrementiel <- ((R2m2-R2m1) / (k2 - k1)) / ( (1-R2m2)/(n2-k2-1))
pFinc <- pf(Fincrementiel, k2-k1, n2-k2-1, lower.tail = FALSE)
cat("\nR2 (modèle 1) =", round(R2m1,4),
"; R2 ajusté = ", round(R2ajustm1,4),
"; F =", round(Fm1, 1),
"\nR2 (modèle 2) =", round(R2m2,4),
"; R2 ajusté = ", round(R2ajustm2,4),
"; F =", round(Fm2, 1),
"\nF incrémentiel =", round(Fincrementiel,1),
"; p = ", round(pFinc,3)
)
# F incrémentiel avec la fonction anova
anova(modele1, modele2)
```
## Différentes mesures pour les coefficients de régression {#sec-074}
La fonction `summary(nom du modèle)` permet d'obtenir les résultats du modèle de régression. D'emblée, signalons que le modèle est globalement significatif (*F*(6, 10203) = 1123, *p* = 0,000) avec un R^2^ de 0,4182 indiquant que les variables indépendantes du modèle expliquent 41,82 % de la variance du pourcentage de végétation dans les îlots de l'île de Montréal.
```{r}
#| echo: true
#| message: false
#| warning: false
modelereg <- lm(VegPct ~ HABHA+AgeMedian+Pct_014+Pct_65P+Pct_MV+Pct_FR, data = DataFinal)
summary(modelereg)
```
### Coefficients de régression : évaluer l'effet des variables indépendantes {#sec-0741}
Les différents résultats pour les coefficients sont reportés au @tbl-dataregmodel2.
**La constante** ($\beta_0$) est la valeur attendue de la variable dépendante (*Y*) quand les valeurs de toutes les variables indépendantes sont égales à 0. Pour ce modèle, quand les variables indépendantes sont égales à 0, plus du quart de la superficie des îlots serait en moyenne couverte par de la végétation ($\beta_0$ = 26,36). Notez que la constante n'a pas toujours une interprétation pratique. Il est par exemple très invraisemblable d'avoir un îlot avec de la population dans lequel il n'y aurait aucune personne à faible revenu, aucune personne ne déclarant appartenir à une minorité visible, aucun enfant de moins de 15 ans et aucune personne âgée de 65 ans et plus. La constante a donc avant tout un rôle mathématique dans le modèle.
**Le coefficient de régression** ($\beta_1$ à $\beta_k$) indique le changement de la variable dépendante (*Y*) lorsque la variable indépendante augmente d'une unité, toutes choses étant égales par ailleurs. Il permet ainsi d'évaluer l'effet d'une augmentation d'une unité dans laquelle est mesurée la VI sur la VD.
::: bloc_attention
::: bloc_attention-header
::: bloc_attention-icon
:::
**Que signifie l'expression *toutes choses étant égales par ailleurs* pour un coefficient de régression?**
:::
::: bloc_attention-body
Après l'apprentissage du grec, grâce aux nombreuses équations intégrées au livre, passons au latin! L'expression *toutes choses étant égales par ailleurs* vient du latin *ceteris paribus*, à ne pas confondre avec *c'est terrible Paris en bus* (petite blague formulée par un étudiant ayant suivi le cours *Méthodes quantitatives appliquées en études urbaines* à l'INRS il y a quelques années)! Certains auteurs emploient encore *ceteris paribus* : il est donc possible que vous la retrouviez dans un article scientifique...
Plus sérieusement, l'expression *toutes choses étant égales par ailleurs* signifie que l'on estime l'effet de la variable indépendante sur la variable dépendante, si toutes les autres variables indépendantes restent constantes ou autrement dit, une fois contrôlés tous les autres prédicteurs.
:::
:::
```{r}
#| label: tbl-dataregmodel2
#| tbl-cap: Différentes mesures pour les coefficients
#| echo: false
#| message: false
#| warning: false
tabreg <- build_table(modelereg, confid = TRUE, std_digits = 3, coef_digits = 3, z_digits = 2, p_digits = 3)
knitr::kable(data.frame(tabreg),
caption = 'Différentes mesures pour les coefficients',
format.args = list(decimal.mark = ',', big.mark = " "),
col.names = c("Variable" , "Coef." , "Erreur type", "Valeur de T", "P", "coef. 2,5 %", "coef. 97,5 %", ""),
align=c("l" , "r" , "r", "r", "r", "r", "r", "r"),
)
```
À partir des coefficients du @tbl-dataregmodel2, l'équation du modèle de régression s'écrit alors comme suit :
`VegPct = 26,356 − 0,070 HABHA + 0,011 AgeMedian + 1,084 Pct_014 + 0,401 Pct_65P −0,031 Pct_MV − 0,348 Pct_FR + e`
**Comment interpréter un coefficient de régression pour une variable indépendante?**
Le signe du coefficient de régression indique si la variable indépendante est associée positivement ou négativement avec la variable dépendante. Par exemple, plus la densité de population est importante à travers les îlots de l'île de Montréal, plus la couverture végétale diminue.
Quant à la valeur absolue du coefficient, elle indique la taille de l'effet du prédicteur. Par exemple, 1,084 signifie que si toutes les autres variables indépendantes restent constantes, alors le pourcentage de végétation dans l'îlot augmente de 1,084 points de pourcentage pour chaque différence d’un point de pourcentage d'enfants de moins de 15 ans. Toutes choses étant égales par ailleurs, une augmentation de 10 % d'enfants dans un îlot entraîne alors une hausse de 10,8 % de la couverture végétale dans l'îlot.
L'analyse des coefficients montre ainsi qu'une fois contrôlées les deux caractéristiques relatives à la forme urbaine (densité de population et âge médian des bâtiments), plus les pourcentages d'enfants et de personnes âgées sont élevés, plus la couverture végétale de l'îlot est importante (B = 1,084 et 0,401), toutes choses étant égales par ailleurs. À l'inverse, de plus grands pourcentages de personnes à faible revenu et de minorités sont associés à une plus faible couverture végétale (B = −0,348 et −0,031).
**L'erreur type du coefficient de régression**
L'erreur type d'un coefficient permet d'évaluer son niveau de précision, soit le degré d'incertitude vis-à-vis du coefficient. Succinctement, elle correspond à l'écart-type de l'estimation (coefficient); elle est ainsi toujours positive. Plus la valeur de l'erreur type est faible, plus l'estimation du coefficient est précise. Notez toutefois qu'il n'est pas judicieux de comparer les erreurs types des coefficients pour des variables exprimées dans des unités de mesure différentes.
Comme nous le verrons plus loin, l'utilité principale de l'erreur type est qu'elle permet de calculer la valeur de *t* et l'intervalle de confiance du coefficient de régression.
### Coefficients de régression standardisés : repérer les variables les plus importantes du modèle {#sec-0742}
Un coefficient de régression est exprimé dans les unités de mesure des variables indépendante (VI) et dépendante (VD) : une augmentation d’une unité de la VI a un effet de $\beta$ (valeur de coefficient) unité de mesure sur la VD, toutes choses étant égales par ailleurs. Prenons l’exemple d’un modèle fictif dans lequel une variable indépendante mesurée en mètres obtient un coefficient de régression de 0,000502. Si cette variable était exprimée en kilomètres et non en mètres, son coefficient serait alors de 0,502 ($0,000502 \times 1000 = 0,502$). Cela explique que pour certaines variables, il est souvent préférable de modifier l'unité de mesure, particulièrement pour les variables de distance ou de revenu. Par exemple, dans un modèle de régression, nous introduisons habituellement une variable de revenu par tranche de mille dollars ou le loyer mensuel par tranche de cent dollars, puisque les coefficients du revenu ou de loyer exprimé en dollars risquent d'être extrêmement faibles. Concrètement, cela signifie que nous divisons la variable *revenu* par 1000 et celle du *loyer* par 100 avant de l'introduire dans le modèle.
Du fait de leur unités de mesure souvent différentes, vous aurez compris que nous ne pouvons pas comparer directement les coefficients de régression afin de repérer la ou les variables indépendantes (*X*) qui ont les effets (impacts) les plus importants sur la variable dépendante (*Y*). Pour remédier à ce problème, nous utilisons les **coefficients de régression standardisés**. Ces coefficients standardisés sont simplement les valeurs de coefficients de régression qui seraient obtenus si toutes les variables du modèle (VD et VI) étaient préalablement centrées réduites (soit avec une moyenne égale à 0 et un écart-type égal à 1; consultez la [section @sec-02552] pour un rappel). Puisque toutes les variables du modèle sont exprimées en écarts-types, les coefficients standardisés permettent ainsi d'évaluer **l'effet relatif** des VI sur la VD. Cela permet ainsi de repérer la ou les variables les plus « importantes » du modèle.
**L'interprétation d'un coefficient de régression standardisé est donc la suivante : il indique le changement en termes d'unités d'écart-type de la variable dépendante (Y) à chaque ajout d'un écart-type de la variable indépendante, toutes choses étant égales par ailleurs**.
Le coefficient de régression standardisé peut être aussi facilement calculé en utilisant les écarts-types des deux variables VI et VD :
$$
\beta_{z}= \beta \frac{s_x}{s_y}
$$ {#eq-CoefStand}
La syntaxe R ci-dessous illustre trois façons d'obtenir les coefficients standardisés :
* en centrant et réduisant préalablement les variables avec la fonction `scale` avant de construire le modèle avec la fonction `lm`;
* en calculant les écarts-types de VD et de VI et en appliquant l'@eq-CoefStand;
* avec la fonction `lm.beta` du *package* `QuantPsyc`. Cette dernière méthode est moins « verbeuse » (deux lignes de code uniquement), mais nécessite de charger un *package* supplémentaire.
```{r}
#| echo: true
#| message: false
#| warning: false
# Modèle de régression
Modele1 <- lm(VegPct ~ HABHA+AgeMedian+Pct_014+Pct_65P+Pct_MV+Pct_FR, data = DataFinal)
# Méthode 1 : lm sur des variables centrées réduites
ModeleZ <- lm(scale(VegPct) ~ scale(HABHA)+scale(AgeMedian)+
scale(Pct_014)+scale(Pct_65P)+
scale(Pct_MV)+scale(Pct_FR), data = DataFinal)
coefs <- ModeleZ$coefficients
coefs[1:length(coefs)]
# Méthode 2 : à partir de l'équation
# Écart-type de la variable dépendante
VDet <- sd(DataFinal$VegPct)
cat("Écart-type de Y =", round(VDet,3))
# Écarts-types des variables indépendantes
VI <- c("HABHA" , "AgeMedian" , "Pct_014" , "Pct_65P" , "Pct_MV" , "Pct_FR")
VIet <- sapply(DataFinal[VI], sd)
# Coefficients de régression du modèle sans la constante
coefs <- Modele1$coefficients[1:length(VIet)+1]
# Coefficients de régression du modèle
coefstand <- coefs * (VIet / VDet)
coefstand
# Méthode 3 : avec la fonction lm.beta du package QuantPsyc
library(QuantPsyc)
lm.beta(lm(VegPct ~ HABHA+AgeMedian+Pct_014+Pct_65P+Pct_MV+Pct_FR, data = DataFinal))
```
```{r}
#| label: tbl-CoefStand2
#| tbl-cap: Calcul des coefficients standardisés
#| echo: false
#| message: false
#| warning: false
# Construction d'un tableau pour les coefficients
TabCoef <- data.frame(V1 = VI, V2 = round(VIet,3), V3 = round(coefs,3), V4 = round(coefstand,3))
knitr::kable(TabCoef,
digits = 3,
format.args = list(decimal.mark = ',', big.mark = " "),
col.names = c("Variable dépendante", "Écart-type" , "Coef.", "Coef. standardisé"),
align=c("l" , "r" , "r" , "r")
)
```
Par exemple, pour la variable `Pct_014`, le coefficient de régression standardisé est égal à :
$$
\beta_{z}= 1,084 \times \frac{5,295}{18,562}=0,309
$$ {#eq-CoefStand2}
avec 1,084 étant le coefficient de régression de `Pct_014`, 5,295 et 18,562 étant respectivement les écarts-types de `Pct_014` (variable indépendante) et de `VegPct` (variable dépendante).
Au @tbl-CoefStand2, nous constatons que la valeur absolue du coefficient de régression pour `HABHA` est inférieure à celle de `Pct_65P` (−0,070 *versus* 0,401), ce qui n'est pas le cas pour leur coefficient standardisé (−0,281 *versus* 0,179). Rappelez-vous aussi que nous ne pouvons pas directement comparer les effets de ces deux variables à partir des coefficients de régression puisqu'elles sont exprimées dans des unités de mesure différentes : `HABHA` est exprimée en habitants par hectare et `Pct_65P` en pourcentage. À la lecture des coefficients standardisés, nous pouvons en conclure que la variable `HABHA` a un effet relatif plus important que `Pct_65P` (−0,281 *versus* 0,179).
### Significativité des coefficients de régression : valeurs de *t* et de *p* {#sec-0743}
Une fois les coefficients de régression obtenus, il convient de vérifier s'ils sont ou non significativement différents de 0. Si le coefficient de régression d'une variable indépendante est significativement différent de 0, nous concluons que la variable a un effet significatif sur la variable dépendante, toutes choses étant égales par ailleurs. Pour ce faire, il suffit de calculer la valeur de *t* qui est simplement le coefficient de régression divisé par son erreur type.
$$
t=\frac{\beta_k - 0}{s(\beta_k)}
$$ {#eq-ValeurT}
avec $s(\beta_k)$ étant l'erreur type du coefficient de régression. Notez que dans l'@eq-ValeurT, nous indiquons habituellement $-0$, pour signaler que l'on veut vérifier si le coefficient est différent de 0. En guise d'exemple, au @tbl-dataregmodel2, la valeur de *t* de la variable `HABHA` est bien égale à :
$\mbox{−0,070401 / 0,002202 = −31,975}$.
::: bloc_attention
::: bloc_attention-header
::: bloc_attention-icon
:::
**Démarche pour vérifier si un coefficient est significativement différent de 0**
:::
::: bloc_attention-body
1. Poser l'hypothèse nulle (*H~0~*) stipulant que le coefficient est égal à 0, soit $H_0 : \beta_k = 0$. L'hypothèse alternative (*H~1~*) est que le coefficient est différent de 0, soit $H_1 : B_k \neq 0$.
2. Calculer la valeur de *t*, soit le coefficient de régression divisé par son erreur type (@eq-ValeurT).
3. Calculer le nombre de degrés de liberté, soit $dl = n − k - 1$, *n* et *k* étant respectivement les nombres d'observations et de variables indépendantes.
4. Choisir un seuil de signification alpha (5 %, 1 % ou 0,1 %, soit *p* = 0,05, 0,01 ou 0,01).
5. Trouver la valeur critique de *t* dans la table T de Student ([section @sec-143]) avec *p* et le nombre de degrés de liberté (*dl*).
6. Valider ou réfuter l'hypothèse nulle (*H~0~*) :
- si la valeur de *t* est inférieure à la valeur critique de *t* avec *dl* et le seuil choisi, nous confirmons *H~0~* : le coefficient n'est pas significativement différent de 0.
- si la valeur de *t* est supérieure à la valeur critique de *t* avec *dl* et le seuil choisi, nous réfutons l'hypothèse nulle, et choisissons l'hypothèse alternative (*H~1~*) stipulant que le coefficient est significativement différent de 0.
**Valeurs critiques de la valeur de *t* à retenir!**
Lorsque le nombre de degrés de liberté (*n − k - 1*) est très important (supérieur à 2500), et donc le nombre d'observations de votre jeu de données, nous retenons habituellement les valeurs critiques suivantes : **1,65 (*p* = 0,10), 1,96 (*p* = 0,05)**, **2,58 (*p* = 0,01)** et **3,29 (*p*=0,001)**. Concrètement, cela signifie que :
* une valeur de *t* supérieure à 1,96 ou inférieure à -1,96 nous informe que la relation entre la variable indépendante et la variable dépendante est significative positivement ou négativement au seuil de 5 %. Autrement dit, vous avez moins de 5 % de chances de vous tromper en affirmant que le coefficient de régression est bien significativement différent de 0.
* une valeur de *t* supérieure à 2,58 ou inférieure à -2,58 nous informe que la relation entre la variable indépendante et la variable dépendante est significative positivement ou négativement au seuil de 5 %. Autrement dit, vous avez moins de 1 % de chances de vous tromper en affirmant que le coefficient de régression est bien significativement différent de 0.
* une valeur de *t* supérieure à 3,29 ou inférieure à -3,29 nous informe que la relation entre la variable indépendante et la variable dépendante est significative positivement ou négativement au seuil de 5 %. Autrement dit, vous avez moins de 0,1 % de chances de vous tromper en affirmant que le coefficient de régression est bien significativement différent de 0.
Concrètement, retenez et utilisez les seuils de $\pm\mbox{1,96}$, $\pm\mbox{2,58}$ et $\pm\mbox{3,29}$ pour repérer les variables significatives positivement ou négativement aux seuils respectifs de 0,5, 0,1 et 0,001.
**Que signifient les seuils 0,10, 0,05 et 0,001?**
L'interprétation exacte des seuils de significativité des coefficients d'une régression est quelque peu alambiquée, mais mérite de s'y attarder. En effet, indiquer qu'un coefficient est significatif est souvent perçu comme un argument fort pour une théorie, il est donc nécessaire d'avoir du recul et de bien comprendre ce que l'on entend par **significatif**.
Si un coefficient est significatif au seuil de 5 % dans notre modèle, cela signifie que si, pour l’ensemble d’une population, la valeur du coefficient est de 0 en réalité, alors nous avions moins de 5 % de chances de collecter un échantillon (pour cette population) ayant produit un coefficient aussi fort que celui que nous observons dans notre propre échantillon. Par conséquent, il serait très invraisemblable que le coefficient soit 0 puisque nous avons effectivement collecté un tel échantillon. Il s'agit d'une forme d'argumentation par l'absurde propre à la statistique fréquentiste.
Notez que si 100 études étaient conduites sur le même sujet et dans les mêmes conditions, nous nous attendrions à ce que 5 d'entre elles trouvent un coefficient significatif, du fait de la variation des échantillons. Ce constat souligne le fait que la recherche est un effort collectif et qu'une seule étude n'est pas suffisante pour trancher sur un sujet. Les revues systématiques de la littérature sont donc des travaux particulièrement importants pour la construction du consensus scientifique.
**Ne pas confondre significativité et effet de la variable indépendante**
Attention, un coefficient significatif n’est pas toujours intéressant! Autrement dit, bien qu’il soit significatif à un seuil donné (par exemple, *p* = 0,05), cela ne veut pas dire pour autant qu’il ait un effet important sur la variable dépendante. Il faut donc analyser simultanément les valeurs de *p* et des coefficients de régression.
Afin de mieux saisir l'effet d'un coefficient significatif, il est intéressant de représenter graphiquement l’effet marginal d’une variable indépendante (VI) sur une variable dépendante (VD), une fois contrôlées les autres VI du modèle de régression ([section @sec-0774]).
:::
:::
Prenons deux variables indépendantes du @tbl-dataregmodel2 – `HABHA` et `AgeMedian` – et vérifions si leurs coefficients de régression respectifs (−0,070 et 0,011) sont significatifs. Appliquons la démarche décrite dans l'encadré ci-dessus :
1. Nous posons l'hypothèse nulle stipulant que la valeur de ces deux coefficients est égale à 0, soit $H_0 : \beta_k = 0$.
2. La valeur de *t* est égale à `−0,070401 / 0,002202 = −31,97139` pour `HABHA` et à `0,010790 / 0,006369 = 1,694144` pour `AgeMedian`.
3. Le nombre de degrés de liberté est égal à $\mbox{dl} = \mbox{n}-\mbox{k}-\mbox{1} = \mbox{10 210} − \mbox{6} - \mbox{1} = \mbox{10 203}$.
4. Nous choisissons respectivement les seuils $\alpha$ de 0,10, 0,05, 0,01 ou 0,001.
5. Avec 10210 degrés de liberté, les valeurs critiques de la table T de Student ([section @sec-133]) sont de 1,65 (*p* = 0,10), 1,96 (*p* = 0,05), 2,58 (*p* = 0,01), 3,29 (*p* = 0,001).
6. Il reste à valider ou réfuter l'hypothèse nulle (*H~0~*) :
- pour `HABHA`, la valeur absolue de *t* (−31,975) est supérieure à la valeur critique de 3,29. Son coefficient de régression est donc significativement différent de 0. Autrement dit, ce prédicteur a un effet significatif et négatif sur la variable dépendante.
- pour `AgeMedian`, la valeur absolue de *t* (1,694) est supérieure à 1,65 (*p* = 0,10), mais inférieure à 1,96 (*p* = 0,05), à 2,58 (*p* = 0,01), à 3,29 (*p* = 0,001). Par conséquent, ce coefficient est différent de 0 uniquement au seuil de *p* = 0,10 et non au seuil de *p* = 0,05. Cela signifie que bous avons un peu moins de 10 % de chances de se tromper en affirmant que cette variable a un effet significatif sur la variable dépendante.
::: bloc_astuce
::: bloc_astuce-header
::: bloc_astuce-icon
:::
**Calculer et obtenir des valeurs de *p* dans R**
:::
::: bloc_astuce-body
Il est très rare d'utiliser la table *T* de Student pour obtenir un seuil de significativité. D'une part, il est possible de calculer directement la valeur de *p* à partir de la valeur de *t* et du nombre de degrés de liberté avec la fonction `pt` avec les paramètres suivants :
`pt(q= abs(valeur de T), df= nombre de degrés de liberté, lower.tail = FALSE) *2`
```{r}
#| echo: true
#| message: false
#| warning: false
# Degrés de liberté
dl <- nrow(DataFinal) - (length(Modele1$coefficients) - 1) + 1
# Valeurs de T
ValeurT <- summary(Modele1)$coefficients[,3]
# Calcul des valeurs de P
ValeurP <- pt(q= abs(ValeurT), df= dl, lower.tail = FALSE) *2
df_tp <- data.frame(
ValeurT = round(ValeurT,3),
ValeurP = round(ValeurP,3)
)
print(df_tp)
```
D'autre part, la fonction `summary` renvoie d'emblée les valeurs de *t* et de *p*. Par convention, R, comme la plupart des logiciels d'analyses statistiques, utilise aussi des symboles pour indiquer le seuil de signification du coefficient (voir @tbl-CoefStand2) :
'***' _p_ <= 0,001
'**' _p_ <= 0,01
'*' _p_ <= 0,05
'.' _p_ <= 0,10
:::
:::
### Intervalle de confiance des coefficients {#sec-0744}
Finalement, il est possible de calculer l'intervalle de confiance d'un coefficient à partir d'un niveau de signification (habituellement 0,95 ou encore 0,99). Pour ce faire, la fonction `confint(nom du modèle, level=.95)` est très utile. L'intérêt de ces intervalles de confiance pour les coefficients de régression est double :
* Il permet de vérifier si le coefficient est ou non significatif au seuil retenu. Pour cela, la borne inférieure et la borne supérieure du coefficient doivent être toutes deux négatives ou positives. À l'inverse, un intervalle à cheval sur 0, soit avec une borne inférieure négative et une borne supérieure positive, n'est pas significatif.
* Il permet d'estimer la précision de l'estimation; plus l'intervalle du coefficient est réduit, plus l'estimation de l'effet de la variable indépendante est précise. Inversement, un intervalle large signale que le coefficient est incertain.
Cela explique que de nombreux auteurs reportent les intervalles de confiance dans les articles scientifiques (habituellement à 95 %). Dans le modèle présenté ici, il est alors possible d'écrire : toutes choses étant égales par ailleurs, le pourcentage d'enfants de moins de 15 ans est positivement et significativement associé avec le pourcentage de la couverture végétale dans l'îlot (B = 1,084; IC 95 % = [1,021 - 1,148], *p* < 0,001).
En guise d'exemple, à la lecture de la sortie R ci-dessous, l'estimation de l'effet de la variable indépendante `AgeMedian` sur la variable `VegPct` se situe dans l'intervalle -0,002 à 0,023 qui est à cheval sur 0. Contrairement aux autres variables, nous ne pouvons donc pas en conclure que cet effet est significatif avec *p* = 0,05.
```{r}
#| echo: true
#| message: false
#| warning: false
# Intervalle de confiance à 95 % des coefficients
round(confint(Modele1, level=.95),3)
```
::: bloc_astuce
::: bloc_astuce-header
::: bloc_astuce-icon
:::
**Comment est calculé un intervalle de confiance?**
:::
::: bloc_astuce-body
L'intervalle du coefficient est obtenu à partir de :
1. la valeur du coefficient ($\beta_k$),
2. la valeur de son erreur type $s(\beta_k)$ et
3. la valeur critique de T ($t_{\alpha/2}$) obtenue avec $n-k-1$ degrés de liberté et le niveau de significativité retenu (95 %, 99 % ou 99,9 %).
$$
IC_{\beta_k}= \left[ \beta_k - t_{\alpha/2} \times s(\beta_k) ; \beta_k + t_{\alpha/2} \times s(\beta_k) \right]
$$ {#eq-ICcoef}
Autrement dit, lorsque vous disposez d'un nombre très important d'observations, les intervalles de confiance s'écrivent simplement avec les fameuses valeurs critiques de T de 1,96, 2,58, 3,29 :
$$
\mbox{Intervalle à 95 \%\: } IC_{\beta_k}= \left[ \beta_k - 1,96 \times s(\beta_k) ; \beta_k + 1,96 \times s(\beta_k) \right]
$$ {#eq-IC95}
$$
\mbox{Intervalle à 99 \%\: } IC_{\beta_k}= \left[ \beta_k - 2,58 \times s(\beta_k) ; \beta_k + 2,58 \times s(\beta_k) \right]
$$ {#eq-IC99}
$$
\mbox{Intervalle à 99,9 \%\: } IC_{\beta_k}= \left[ \beta_k - 3,29 \times s(\beta_k) ; \beta_k + 3,29 \times s(\beta_k) \right]
$$ {#eq-IC999}
La syntaxe R ci-dessous illustre comment calculer les intervalles de confiance à 95 % à partir de l'@eq-ICcoef. Rappelez-vous toutefois qu'il est bien plus simple d'utiliser la fonction `confint`:
* `round(confint(Modele1, level=.95),3) `
* `round(confint(Modele1, level=.99),3)`
* `round(confint(Modele1, level=.999),3)`
```{r}
#| echo: true
#| message: false
#| warning: false
# Coeffients de régression
coefs <- Modele1$coefficients
# Erreur type des coef.
coefs_se <- summary(Modele1)$coefficients[,2]
# Nombre de degrés de liberté
n <- length(Modele1$fitted.values)
k <- length(Modele1$coefficients)-1
dl <- n-k-1
# valeurs critiques de T
t95 <- qt(p=1 - (0.05/2), df=dl)
t99 <- qt(p=1 - (0.01/2), df=dl)
t99.9 <- qt(p=1 - (0.001/2), df=dl)
cat("Valeurs critiques de T en fonction du niveau de confiance",
"\n et du nombre de degrés de liberté",
"\n95 % : ", t95,
"\n99 % : ", t99,
"\n99,9 % : ", t99.9
)
# Intervalle de confiance à 95
data.frame(
IC2.5 = round(coefs-t95*coefs_se,3),
IC97.5 = round(coefs+t95*coefs_se,3)
)
# Intervalle de confiance à 99
data.frame(
IC0.5 = round(coefs-t99*coefs_se,3),
IC99.5 = round(coefs+t99*coefs_se,3)
)
# Intervalle de confiance à 99.9
data.frame(
IC0.05 = round(coefs-t99.9*coefs_se,3),
IC99.95 = round(coefs+t99.9*coefs_se,3)
)
```
:::
:::
## Introduction de variables explicatives particulières {#sec-075}
### Exploration des relations non linéaires {#sec-0751}
#### Variable indépendante avec une fonction polynomiale {#sec-07511}
Dans la [section @sec-041], nous avons vu que la relation entre deux variables continues n'est pas toujours linéaire; elle peut être aussi curvilinéaire. Pour explorer les relations curvilinéaires, nous introduisons la variable indépendante sous la forme polynomiale d'ordre 2 (voir le prochain encadré). L'équation de régression s'écrit alors :
$$
Y = b_{0} + b_{1}X_{1} + b_{11}X_{1}^2 + b_{2}X_{2} +\ldots+ b_{k}X_{k} + e
$$ {#eq-regpolyordre2}
Dans l'@eq-regpolyordre2, la première variable indépendante est introduite dans le modèle de régression à la fois dans sa forme originelle et mise au carré : $b_{1}X_{1} + b_{11}X_{1}^2$. Un coefficient différent est ajusté pour chacune de ces deux versions de la variable $X_{1}$.
La démographie est probablement la discipline des sciences sociales qui a le plus recours aux régressions polynomiales. En effet, la variable `âge` est souvent introduite comme variable explicative dans sa forme originale et mise au carré. L'objectif est de vérifier si l'âge partage ou non une relation curvilinéaire avec un phénomène donné : par exemple, il pourrait y être associé positivement jusqu'à un certain seuil (45 ans par exemple), puis négativement à partir de ce seuil.
::: bloc_aller_loin
::: bloc_aller_loin-header
::: bloc_aller_loin-icon
:::
**Régression polynomiale et nombre d'ordres**
:::
::: bloc_aller_loin-body
Sachez qu'il est aussi possible de construire des régressions polynomiales avec plus de deux ordres. Par exemple, une régression polynomiale d'ordre 3 comprend une variable dans sa forme originelle, puis mise au carré et au cube. Cela a l'inconvénient d'augmenter corollairement le nombre de coefficients. Nous verrons au [chapitre @sec-chap11] qu'il existe une solution plus élégante et efficace : le recours aux modèles de régressions linéaires généralisés additifs avec des *splines*. Dans le cadre de cette section, nous nous limitons à des régressions polynomiales d'ordre 2.
$$
\mbox{Ordre 2 : } Y = b_{0} + b_{1}X_{1} + b_{11}X_{}^2 + b_{2}X_{2} +\ldots+ b_{k}X_{k} + e
$$ {#eq-regpolyordre2b}
$$
\mbox{Ordre 3 : } Y = b_{0} + b_{1}X_{1} + b_{11}X_{}^2 + b_{111}X_{}^3 + b_{2}X_{2} +\ldots+ b_{k}X_{k} + e
$$ {#eq-regpolyordre3}
$$
\mbox{Ordre 4 : } Y = b_{0} + b_{1}X_{1} + b_{11}X_{}^2 + b_{111}X_{}^3 + b_{1111}X_{}^4 + b_{2}X_{2} +\ldots+ b_{k}X_{k} + e
$$ {#eq-regpolyordre4}
:::
:::
Pour construire une régression polynomiale dans R, il est possible d'utiliser deux fonctions de R :
* `I(VI^2)` avec `VI` qui est la variable indépendante sur laquelle est appliquée la mise au carré.
* `poly(VI,2)` qui utilise une forme polynomiale orthogonale pour éviter les problèmes de corrélation entre les deux termes, c'est-à-dire entre **VI** et **VI^2^**.
Ces deux méthodes produisent les mêmes résultats pour les autres variables dépendantes et pour la qualité d'ajustement du modèle (R^2^, F, etc.). Nous privilégions la seconde fonction pour éviter de détecter à tort des problèmes de multicolinéarité excessive.
Appliquons cette démarche à la variable `AgeMedian` (âge médian des bâtiments) afin de vérifier si elle partage ou non une relation curvilinéaire avec la couverture végétale de l'îlot. À la lecture des résultats pour les deux modèles, les constats suivants peuvent être avancés :
* Le R^2^ ajusté passe de 0,4179 à 0,4378 du modèle 1 au modèle 2, ce qui signale un gain de variance expliquée.
* Le *F* incrémentiel entre les deux modèles s'élève à 362,64 et est significatif (*p* < 0,001). Nous pouvons donc en conclure que le second modèle est plus performant que le premier, ce qui signale que la forme curvilinéaire pour `AgeMedian` (modèle 2) est plus efficace que la forme linéaire (modèle 1).
* Dans le premier modèle, le coefficient de régression pour `AgeMedian` n'est pas significatif. L'âge médian des bâtiments n'est donc pas associé linéairement avec la variable dépendante.
* Dans le second modèle, la valeur du coefficient de `poly(AgeMedian, 2)1` est positive et celle de `poly(AgeMedian, 2)2` est négative et significative. Cela indique qu'il existe une relation linéaire en forme de U inversé. Si le premier coefficient avait été négatif et le second positif, nous aurions alors conclu que la forme curvilinéaire prend la forme d'un U.
```{r}
#| echo: true
#| message: false
#| warning: false
# régression linéaire
modele1 <- lm(VegPct ~ HABHA+AgeMedian+Pct_014+Pct_65P+Pct_MV+Pct_FR, data = DataFinal)
# régression polynomiale
modele2 <- lm(VegPct ~ HABHA+poly(AgeMedian,2)+Pct_014+Pct_65P+Pct_MV+Pct_FR, data = DataFinal)
# affichage des résultats du modèle 1
summary(modele1)
# affichage des résultats du modèle 1
summary(modele2)
# test de Fisher pour comparer les modèles
anova(modele1, modele2)
```
**Construction d'un graphique des effets marginaux**
Pour visualiser la relation linéaire et curvilinéaire, nous vous proposons de réaliser un graphique des effets marginaux à partir de la syntaxe ci-dessous.
Les graphiques des effets marginaux permettent de visualiser l'impact d'une variable indépendante sur la variable dépendante d'une régression. Nous nous basons pour cela sur les prédictions effectuées par le modèle. Admettons que nous nous intéressons à l'effet de la variable *X~1~* sur la variable *Y*. Il est possible de créer de nouvelles données fictives pour lesquelles l'ensemble des autres variables *X* sont fixées à leur moyenne respective, et seule *X~1~* est autorisée à varier. En utilisant l'équation de régression du modèle sur ces données fictives, nous pouvons observer l'évolution de la valeur prédite de *Y* quand *X~1~* augmente ou diminue, et ce, toutes choses étant égales par ailleurs (puisque toutes les autres variables ont une valeur fixe). Cette approche est particulièrement intéressante pour décrire des effets non linéaires obtenus avec des polynomiales, mais aussi des interactions comme nous le verrons plus tard. Elle est également utilisée dans les modèles linéaires généralisés (GLM) et additifs (GAM) (chapitres [-@sec-chap08] et [-@sec-chap11]). Notez qu'il est aussi important de représenter, sur ce type de graphique, l'incertitude de la prédiction. Pour cela, il est possible de construire des intervalles de confiance à 95 % autour de la prédiction en utilisant l'erreur standard de la prédiction (renvoyée par la fonction `predict`).
```{r}
#| label: fig-calculRegPoly2
#| fig-align: center
#| fig-cap: Relations linéaire et curvilinéaire
#| out-width: "75%"
#| echo: true
#| message: false
#| warning: false
library(ggplot2)
# Statistique sur la variable AgeMedian qui varie de 0 à 226 ans
summary(DataFinal$AgeMedian)
# Création d'un DataFrame temporaire
# remarquez que les autres variables indépendantes sont constantes :
# nous leur avons attribué leur moyenne correspondante
df <- data.frame(
HABHA = mean(DataFinal$HABHA),
AgeMedian= seq(0,200, by = 2),
AgeMedian2 = seq(0,200, by = 2)**2,
Pct_014= mean(DataFinal$Pct_014),
Pct_65P= mean(DataFinal$Pct_65P),
Pct_MV= mean(DataFinal$Pct_MV),
Pct_FR= mean(DataFinal$Pct_FR)
)
# Calcul de la valeur de t pour un intervalle à 95 %
n <- length(modele1$fitted.values)
k <- length(modele1$coefficients)-1
t95 <- qt(p=1 - (0.05/2), df=n-k-1)
# Calcul des valeurs prédites pour le 1er modèle
# avec l'intervalle de confiance à 95 %
predsM1 <- predict(modele1, se = TRUE, newdata = df)
df$predM1 <- predsM1$fit
df$lowerM1 <- predsM1$fit - t95*predsM1$se.fit
df$upperM1 <- predsM1$fit + t95*predsM1$se.fit
# Calcul des valeurs prédites pour le 2e modèle
# avec l'intervalle de confiance à 95 %
predsM2 <- predict(modele2, se = TRUE, newdata = df)
df$predM2 <- predsM2$fit
df$lowerM2 <- predsM2$fit - t95*predsM2$se.fit
df$upperM2 <- predsM2$fit + t95*predsM2$se.fit
# Graphique
ggplot(data = df) +
geom_ribbon(aes(x = AgeMedian, ymin = lowerM1, ymax = upperM1),
fill = rgb(0.1,0.1,0.1,0.4)) +
geom_path(aes(x = AgeMedian, y = predM1), color = "blue", size = 1)+
geom_ribbon(aes(x = AgeMedian, ymin = lowerM2, ymax = upperM2),
fill = rgb(0.1,0.1,0.1,0.4)) +
geom_path(aes(x = AgeMedian, y = predM2), color = "red", size = 1)+
labs(title = "Effet marginal de l'âge médian des bâtiments sur la",
subtitle = "couverture végétale des îlots de l'île de Montréal",
caption = "bleu : relation linéaire; rouge : curvilinéaire",
x = "Âge médian des bâtiments",
y = "Couverture végétale (%)")
```
La @fig-calculRegPoly2 démontre bien que la relation linéaire n'est pas significative : la pente est extrêmement faible, ce qui signale que l'effet de l'âge médian est presque nul (B = 0,0108, *p* = 0,0902). En revanche, la relation curvilinéaire est plus intéressante : la couverture végétale croît quand l'âge médian des bâtiments dans l'îlot augmente de 0 à 60 ans environ, puis elle décroît.
#### Variable indépendante sous forme logarithmique {#sec-07512}
Une autre manière d'explorer une relation non linéaire est d'intégrer la variable sous forme logarithmique [@hanck2019introduction, p.212-218]. L'interprétation du coefficient de régression est alors plus complexe : 1 % d'augmentation de la variable $X_k$ entraîne un changement de $\mbox{0,01} \times \beta_k$ de la variable dépendante. Autrement dit, il n'est plus exprimé dans les unités de mesure originales des deux variables.
Au @tbl-regmodeleLog, le coefficient de `-6,855` pour la variable `logHABHA` s'interprète alors comme suit : un changement de 1 % de la variable densité de population entraîne une diminution de $\mbox{0,01} \times -\mbox{6,855 =} -\mbox{0,07}$ de la couverture végétale dans l'île, toutes choses étant égales par ailleurs.
```{r}
#| label: tbl-regmodeleLog
#| tbl-cap: Modèle avec une variable indépendante sous forme logarithmique
#| echo: false
#| message: false
#| warning: false
DataFinal$logHABHA <- log(DataFinal$HABHA)
modelelog <- lm(VegPct ~ logHABHA+poly(AgeMedian,2)+
Pct_014+Pct_65P+Pct_MV+Pct_FR, data = DataFinal)
tabreglog <- build_table(modelelog, confid = TRUE, std_digits = 3, coef_digits = 3, z_digits = 2, p_digits = 3)
knitr::kable(data.frame(tabreglog),
format.args = list(decimal.mark = ',', big.mark = " "),
col.names = c("Variable" , "Coef." , "Erreur type", "Valeur de T",
"P", "coef. 2,5 %", "coef. 97,5 %", ""),
align=c("l" , "r" , "r", "r", "r", "r", "r", "r", "r", "r")
)
```
Puisque l'interprétation du coefficient de régression de $log(\beta_k)$ est plus complexe, il convient de s'assurer que son apport au modèle est justifié, et ce, de deux façons :
* **Comparez les mesures d'ajustement des deux modèles (surtout les R^2^ ajustés)**. Si le R^2^ ajusté du modèle avec $log(\beta_k)$ est plus élevé que celui avec $\beta_k$, alors la transformation logarithmique fait de votre variable indépendante un meilleur prédicteur, toutes choses étant égales par ailleurs.
* **Construisez les graphiques des effets marginaux** de votre variable afin de vérifier si la relation qu'elle partage avec votre VD est plutôt logarithmique que linéaire (@fig-EffetMarginalVariableLogEtNon). Notez que cette approche graphique peut aussi ne donner aucune indication lorsque vos données sont très dispersées ou que la relation est faible entre votre variable dépendante et indépendante.
```{r}
#| label: fig-EffetMarginalVariableLogEtNon
#| fig-cap: Effet marginal de la densité de population
#| fig-align: center
#| out-width: "75%"
#| echo: true
#| message: false
#| warning: false
library(ggpubr)
library(ggplot2)
library(ggeffects)
# Modèles
modele1a <- lm(VegPct ~ HABHA+poly(AgeMedian,2)+