© 2025 Tous droits réservés
Voici ce qui a retenu mon attention dans les domaines des biostatistiques, de la recherche clinique, de l’analyse de données au sens large, et de l’utilisation de R, durant ce mois de novembre 2021.
Le package vistributions
permet de représenter les principales distributions (Binomiale, Student, Normale, Fisher, Chi2), avec ou sans les quantiles, en bilatéral ou unilatéral. Je trouve que c’est un bon outil pour visualiser les distributions théoriques des tests statistiques, les valeurs critiques, les risques alpha, la notion d’hypothèse alternative uni et bilatéral, etc.
Voici quelques exemples :
#install.packages("vistributions")
library(vistributions)
vdist_normal_plot(mean = 25, sd = 10)
vdist_normal_perc(0.95, mean = 25, sd = 10, type = 'both')
vdist_normal_perc(0.95, mean = 25, sd = 10, type = 'upper')
vdist_normal_perc(0.95, mean = 25, sd = 10, type = 'lower')
Ou encore :
vdist_binom_plot(10, 0.3)
vdist_chisquare_perc(0.10, 8, 'lower')
vdist_f_perc(0.20, 4, 5, 'upper')
vdist_t_perc(0.11, 8, 'lower')
J’ai découvert le site R CHARTS .
Ce site propose des exemples de codes pour réaliser des graphiques vraiment très évolués et élégants avec ggplot 2, en pas à pas.
Par exemple ce type de graph :
Ce site ressemble un peu au site The R Graph Gallery, mais dans une version plus évoluée, mais moins complète. Les graphiques proposés sont vraiment très beaux.
Vous trouverez aussi des infos sur les fonctions graphiques de bases, et sur la création de palettes de couleurs.
Et aussi pleins de tutos sur des thèmes très variés comme l’importation des données, leur manipulation etc…
C’est vraiment une belle découverte !
J’ai découvert une animation de David Robison pour expliquer la régression LOESS. En quelques mots, la régression LOESS est une approche non paramétrique qui permet d’ajuster une courbe lissée à des données, en réalisant des régressions linéaires sur des intervalles de points (des fenêtres de valeurs sur l’axe des x) qui se déplacent. On dit aussi que c’est une régression de voisinage puisqu’on considère uniquement les points voisins (ceux de l’intervalle), avec une pondération plus forte pour les points les plus proches. La taille de la fenêtre correspond au paramètre nommé span.
Et si vous souhaitez en savoir plus sur ces régressions LOESS vous pouvez consulter l’article de Lise Vaudor ici.
Sur Twitter, j’ai découvert le site Omni Calculator statistics qui propose des notices techniques sur une multitude de calculs statistiques.
J’ai particulièrement apprécié les sections :
Par exemple, ici la page sur le test de Mac Nemar :
C’est une publication assez ancienne (2002), cosignée par Douglas Altman (un des papes des biostatistiques), qui pose parfaitement les bases pour concevoir et analyser des expérimentations avec des animaux en laboratoires. Je pense que tous les étudiants qui mènent ce type d’expérimentations devraient en prendre connaissance. Ça leur permettrait d’éviter, ou au moins de prendre conscience des problèmes qui peuvent survenir au niveau du design expérimental et / ou de l’analyse statistique des données.
Il s’agit d’une publication qui liste des pistes de réflexion pour améliorer les pratiques statistiques. Je penses que ces pistes de réflexions dépassent largement les sciences psychologiques, elles sont assez généralistes et assez intéressantes.
Il s’agit d’un article plutôt technique, co signé par Franck Harrel (un autre pape des biostatistiques !).
Ce sujet de la sélection des variables qui m’intéresse beaucoup parce que j’ai appris à faire des sélections descendantes (backward) dans le domaine de la santé. Et dans le domaine environnemental, il me semble que cela se fait moins. Il y a d’ailleurs un très bon article de blog à ce sujet , publié par Florian Hartig “Yes, statistical errors are slowing down scientific progress!” (section Analysis strategies).
Dans ce post, Florian Hartig crée 100 variables explicatives de taille 200, indépendamment les une des autres, ainsi qu’une variable réponse également indépendante des 100 variables explicatives Puis il ajuste un modèle de régression linéaire multiple, expliquant la variable réponse à l’aide des 100 variables prédictives, 2 sont alors significatives (on en attend 5 en moyenne, c’est OK).
Dans un second temps, il réalise une sélection des 100 variables explicatives par une procédure basée sur le critère d’Akaiké (AIC), 28 sont conservées. Puis, il ajuste un nouveau modèle de régression linéaire multiple avec ces 28 variables sélectionnées, et cette fois 15 sont significatives….C’est un peu (beaucoup) problématique !
Voici le code si vous voulez essayer :
# This example shows how AIC selection, followed by a conventional regression analysis of the selected model, massively inflates false positives. CC BY-NC-SA 4.0 Florian Hartig
set.seed(1)
library(MASS)
dat = data.frame(matrix(runif(20000), ncol = 100))
dat$y = rnorm(200)
fullModel = lm(y ~ . , data = dat)
summary(fullModel)
##
## Call:
## lm(formula = y ~ ., data = dat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.95280 -0.39983 -0.01572 0.46104 1.61967
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.19356 1.44518 1.518 0.1322
## X1 0.58079 0.32689 1.777 0.0787 .
## X2 -0.52687 0.32701 -1.611 0.1103
## X3 0.27721 0.33117 0.837 0.4046
## X4 -0.18342 0.30443 -0.602 0.5482
## X5 -0.18544 0.29011 -0.639 0.5242
## X6 -0.18382 0.31406 -0.585 0.5597
## X7 -0.46290 0.28349 -1.633 0.1057
## X8 -0.21527 0.29856 -0.721 0.4726
## X9 0.12216 0.30359 0.402 0.6883
## X10 -0.02594 0.33828 -0.077 0.9390
## X11 0.25669 0.29482 0.871 0.3860
## X12 -0.10183 0.30164 -0.338 0.7364
## X13 0.49507 0.33438 1.481 0.1419
## X14 0.16642 0.33659 0.494 0.6221
## X15 0.11402 0.32964 0.346 0.7302
## X16 -0.17640 0.31619 -0.558 0.5782
## X17 -0.03129 0.31830 -0.098 0.9219
## X18 -0.28201 0.29681 -0.950 0.3444
## X19 0.02209 0.29664 0.074 0.9408
## X20 0.25063 0.29855 0.839 0.4032
## X21 -0.02479 0.30556 -0.081 0.9355
## X22 -0.01187 0.31265 -0.038 0.9698
## X23 -0.58731 0.31491 -1.865 0.0651 .
## X24 -0.27343 0.32894 -0.831 0.4078
## X25 -0.22745 0.29223 -0.778 0.4382
## X26 0.18606 0.35755 0.520 0.6040
## X27 -0.26998 0.33302 -0.811 0.4195
## X28 0.09683 0.32235 0.300 0.7645
## X29 0.36746 0.32915 1.116 0.2670
## X30 -0.26027 0.31335 -0.831 0.4082
## X31 -0.07890 0.28822 -0.274 0.7849
## X32 -0.07879 0.32662 -0.241 0.8099
## X33 -0.27736 0.34542 -0.803 0.4239
## X34 -0.21118 0.34514 -0.612 0.5420
## X35 0.17595 0.30706 0.573 0.5679
## X36 0.17084 0.30423 0.562 0.5757
## X37 0.28246 0.29520 0.957 0.3410
## X38 0.01765 0.32873 0.054 0.9573
## X39 0.07598 0.27484 0.276 0.7828
## X40 0.09714 0.34733 0.280 0.7803
## X41 -0.16985 0.31608 -0.537 0.5922
## X42 -0.25184 0.33203 -0.758 0.4500
## X43 -0.08306 0.29306 -0.283 0.7774
## X44 -0.17389 0.31090 -0.559 0.5772
## X45 -0.30756 0.30995 -0.992 0.3235
## X46 0.61520 0.30961 1.987 0.0497 *
## X47 -0.61994 0.32461 -1.910 0.0591 .
## X48 0.62326 0.33822 1.843 0.0684 .
## X49 0.35504 0.30382 1.169 0.2454
## X50 0.09683 0.31925 0.303 0.7623
## X51 0.17292 0.30770 0.562 0.5754
## X52 -0.06560 0.30549 -0.215 0.8304
## X53 -0.29953 0.32318 -0.927 0.3563
## X54 0.06888 0.32289 0.213 0.8315
## X55 0.05695 0.32103 0.177 0.8596
## X56 0.26284 0.32914 0.799 0.4265
## X57 0.10457 0.29788 0.351 0.7263
## X58 -0.19239 0.30729 -0.626 0.5327
## X59 0.02371 0.29171 0.081 0.9354
## X60 -0.12842 0.32321 -0.397 0.6920
## X61 0.06931 0.30015 0.231 0.8179
## X62 -0.27227 0.31918 -0.853 0.3957
## X63 -0.17359 0.32287 -0.538 0.5920
## X64 -0.41846 0.33808 -1.238 0.2187
## X65 -0.37243 0.31872 -1.169 0.2454
## X66 0.36263 0.33034 1.098 0.2750
## X67 -0.10120 0.30663 -0.330 0.7421
## X68 -0.33790 0.33633 -1.005 0.3175
## X69 -0.05326 0.30171 -0.177 0.8602
## X70 -0.01047 0.33111 -0.032 0.9748
## X71 -0.46896 0.32387 -1.448 0.1508
## X72 -0.29867 0.33543 -0.890 0.3754
## X73 -0.32556 0.33183 -0.981 0.3289
## X74 0.21187 0.31690 0.669 0.5053
## X75 0.63659 0.31144 2.044 0.0436 *
## X76 0.13838 0.31642 0.437 0.6628
## X77 -0.18846 0.29382 -0.641 0.5227
## X78 0.06325 0.29180 0.217 0.8289
## X79 0.07256 0.30145 0.241 0.8103
## X80 0.33483 0.34426 0.973 0.3331
## X81 -0.33944 0.35373 -0.960 0.3396
## X82 -0.01291 0.32483 -0.040 0.9684
## X83 -0.06540 0.27637 -0.237 0.8134
## X84 0.11543 0.32813 0.352 0.7257
## X85 -0.20415 0.31476 -0.649 0.5181
## X86 0.04202 0.33588 0.125 0.9007
## X87 -0.33265 0.29159 -1.141 0.2567
## X88 -0.49522 0.31251 -1.585 0.1162
## X89 -0.39293 0.33358 -1.178 0.2417
## X90 -0.34512 0.31892 -1.082 0.2818
## X91 0.10540 0.28191 0.374 0.7093
## X92 -0.08630 0.30297 -0.285 0.7764
## X93 0.02402 0.32907 0.073 0.9420
## X94 0.51255 0.32139 1.595 0.1139
## X95 -0.19971 0.30634 -0.652 0.5160
## X96 -0.09592 0.34585 -0.277 0.7821
## X97 -0.18862 0.29266 -0.644 0.5207
## X98 0.14997 0.34858 0.430 0.6680
## X99 -0.08061 0.30400 -0.265 0.7914
## X100 -0.34988 0.31664 -1.105 0.2718
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9059 on 99 degrees of freedom
## Multiple R-squared: 0.4387, Adjusted R-squared: -0.1282
## F-statistic: 0.7739 on 100 and 99 DF, p-value: 0.8987
2 predictors out of 100 significant (on average, we expect 5 of 100 to be significant)
selection = stepAIC(fullModel)
selection
##
## Call:
## lm(formula = y ~ X1 + X2 + X3 + X5 + X7 + X13 + X20 + X23 + X30 +
## X37 + X42 + X45 + X46 + X47 + X48 + X64 + X65 + X66 + X71 +
## X75 + X80 + X81 + X87 + X88 + X89 + X90 + X94 + X100, data = dat)
##
## Coefficients:
## (Intercept) X1 X2 X3 X5 X7
## 1.0314 0.4728 -0.3809 0.3954 -0.2742 -0.4442
## X13 X20 X23 X30 X37 X42
## 0.4396 0.3984 -0.4137 -0.3750 0.4006 -0.3934
## X45 X46 X47 X48 X64 X65
## -0.3197 0.3673 -0.4240 0.5130 -0.3676 -0.2887
## X66 X71 X75 X80 X81 X87
## 0.2769 -0.5301 0.5020 0.3722 -0.3731 -0.2684
## X88 X89 X90 X94 X100
## -0.4524 -0.4123 -0.3528 0.3813 -0.4058
summary(selection)
##
## Call:
## lm(formula = y ~ X1 + X2 + X3 + X5 + X7 + X13 + X20 + X23 + X30 +
## X37 + X42 + X45 + X46 + X47 + X48 + X64 + X65 + X66 + X71 +
## X75 + X80 + X81 + X87 + X88 + X89 + X90 + X94 + X100, data = dat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.04660 -0.50885 0.05722 0.49612 1.53704
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.0314 0.5045 2.044 0.04244 *
## X1 0.4728 0.2185 2.164 0.03187 *
## X2 -0.3809 0.2012 -1.893 0.06008 .
## X3 0.3954 0.1973 2.004 0.04668 *
## X5 -0.2742 0.1861 -1.473 0.14251
## X7 -0.4442 0.1945 -2.284 0.02359 *
## X13 0.4396 0.1980 2.220 0.02775 *
## X20 0.3984 0.1918 2.078 0.03924 *
## X23 -0.4137 0.2081 -1.988 0.04836 *
## X30 -0.3750 0.1991 -1.884 0.06125 .
## X37 0.4006 0.1989 2.015 0.04550 *
## X42 -0.3934 0.2021 -1.946 0.05325 .
## X45 -0.3197 0.2063 -1.550 0.12296
## X46 0.3673 0.1992 1.844 0.06690 .
## X47 -0.4240 0.2029 -2.090 0.03811 *
## X48 0.5130 0.1937 2.649 0.00884 **
## X64 -0.3676 0.2094 -1.755 0.08102 .
## X65 -0.2887 0.1975 -1.462 0.14561
## X66 0.2769 0.2107 1.315 0.19039
## X71 -0.5301 0.2003 -2.646 0.00891 **
## X75 0.5020 0.1969 2.550 0.01165 *
## X80 0.3722 0.2058 1.809 0.07224 .
## X81 -0.3731 0.2176 -1.715 0.08820 .
## X87 -0.2684 0.1958 -1.371 0.17225
## X88 -0.4524 0.2069 -2.187 0.03011 *
## X89 -0.4123 0.2060 -2.002 0.04691 *
## X90 -0.3528 0.2067 -1.707 0.08971 .
## X94 0.3813 0.2049 1.861 0.06440 .
## X100 -0.4058 0.2024 -2.005 0.04653 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.76 on 171 degrees of freedom
## Multiple R-squared: 0.3177, Adjusted R-squared: 0.2059
## F-statistic: 2.843 on 28 and 171 DF, p-value: 1.799e-05
# voila, 15 out of 28 (before 100) predictors significant – looks like we could have good fun to discuss / publish these results!
Un excelent papier cosigné par Maarten van Smeden au sujet des problèmes méthodologiques dans la recherche biomédicale. C’est sans concession, très intéressant !
Un répertoire d’une multitudes de datasets inclus dans des package R, avec la description du nombre de lignes, de colonnes, le type de variables et la documentation. Très pratique pour essayer des approches, ou des bouts de codes. Ici !
J’ai déjà eu l’opportunité de travailler sur l’analyse de texte, et cela m’avait beaucoup plu. Je m’étais énormément appuyé sur un précédent ouvrage de Julia Silge (coécrit avec David Robinson, qui a fait la démo sur les régressions loess présenté plus haut) : Text Mining with R.
Ici, avec du Machine Learning, j’imagine que cela doit vraiment être super intéressant ! Ca sera peut être un projet de lecture pour les vacances de Noël 🎄🎄🎄
J’espère que cette récap du mois de décembre vous plaira autant que celle de novembre ! En tout, j’ai beaucoup de plaisir à vous partager ce qui retient mon attention. N’hésitez pas à partager cet article, ou à m’indiquer vos propres découvertes en commentaires !
Si cet article vous a plu, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee.
© 2025 Tous droits réservés
Enregistrez vous pour recevoir gratuitement mes fiches « aide mémoire » (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.
5 réponses
Très intéressant cette récap du mois de novembre
contenu extrêmement intéressant et pertinent ! cela donne en effet envie de faire un don sur Tipeee… après tout, noël n’est plus si éloigné 🙂
Continuez comme ça ! Votre blog enrichi énormément ma pratique de R et des statistiques !
Bonjour David,
Merci pour votre message, ravie que le format de la récap vous plaise.
Bonne idée le don Tipeee 😄
Merci beaucoup Claire pour cette présentation.
Bonjour,
Je tiens à vous remercier infiniment madame,je besoin vraiment votre aide puisque je suis licencié en bioinfortique et biostatistique et pratiquement je suis nul mais grâce à vous je me retrouve un dans mon domaine.
Merci madame !!