Références
Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, and Winston Chang. 2018. Rmarkdown: Dynamic Documents for R. https://CRAN.R-project.org/package=rmarkdown.
R Core Team. 2018. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Il existe tout de même des outils plus pointus pour obtenir de l’aide sur le logiciel R comme rseek.org, rdocumentation.org ou rdrr.io. Rien ne sert de chercher ’R’ dans Goggle.↩
Reportez-vous à l’Appendice C pour apprendre à utiliser ces tutoriels.↩
Dans R, une formule permet de spécifier les variables avec lesquelles on souhaite travailler, et leur rôle. Par exemple ici, la variable x sur l’axe des abscisses et la variable y sur l’axe des ordonnées.↩
Pour les proportions (
prop
) ou les pourcentages (perc
) (valeurs bornées entre 0 et 1 ou 0 et 100%) la transformation arc-sinus est souvent utilisée : \(prop′ = \arcsin \sqrt{prop}\) ou \(perc′ = \arcsin \sqrt{perc / 100}\).↩Le mot zooplancton ne se décline jamais au pluriel. On parle du zooplancton pour désigner une large communauté d’organismes zooplanctoniques, et non pas des zooplanctons.↩
La distribution des données en statistique se réfère à la fréquence avec laquelle les différentes valeurs d’une variable s’observent.↩
Une variable numérique est découpée en classes en spécifiant différents intervalles, et ensuite en dénombrant le nombre de fois que les observations rentrent dans ces classes.↩
Les modes d’un histogramme correspondent à des classes plus abondantes localement, c’est-à-dire que les classes à gauche et à droite du mode comptent moins d’occurrences que lui.↩
Un histogramme est dit symétrique lorsque son profil à gauche est identique ou très similaire à son profil à droite autour d’un mode.↩
Attention : le jeu de donnée
iris
est un grand classique dans R, mais lorsqu’il est chargé à l’aide de la fonctionread()
du package data.io, le nom de ses variables est modifié pour suivre la convention “snake-case” qui veut que seules des lettres minuscules soient utilisées et que les mots soient séparés par un trait souligné_
. Ainsi, dans le jeu de données d’origine, les variables sont nomméesPetal_Length
ouSpecies
. Ici, ces même variables se nommentpetal_length
etspecies
.↩L’opération effectuée pour passer d’un histogramme à une courbe de densité consiste effectivement à lisser les pics plus ou moins fort dans l’histogramme de départ.↩
Notez que, lorsque la coupure tombe entre deux observations, une valeur intermédiaire est utilisée. Ici par exemple, le premier quartile est entre 53 et 55, donc, il vaut 54. Le troisième quartile se situe entre 78 et 82. Il vaut donc 80.↩
Il est possible de modifier la transparence des points et/ou de les déplacer légèrement vers la gauche ou vers la droite de manière aléatoire pour résoudre le problème de chevauchement des points sur un graphique en nuage de points univarié.↩
Notez que plusieurs thèmes existent dans ggplot2. Il est facile d’en changer et des les personnaliser… mais c’est toujours appréciable d’avoir un rendu impeccable dès le premier essai.↩
Etant donné l’abondante littérature écrite sur ggplot2, il est utile de pouvoir convertir des exemples ggplot2 en graphiques
chart()
, si vous êtes convaincu par cette nouvelle interface.↩R permet également d’interroger des bases de données spécialisées, mais nous n’aborderons ce sujet spécifique qu’au cours de Science des Données Biologique 5 en Master 2.↩
Si vous devez aussi accéder à vos données à partir d’autres langages comme Python, Java ou C++, utilisez un format commun reconnu par les différents logiciels. Le CSV fonctionne généralement bien, mais des formats binaires plus performants sont également disponibles. Parmi ces formats “inter-langages”, gardez un œil sur Apache Arrow très prometteur et avec une version pour R qui sera disponible prochainement.↩
Notez que ceci ne constitue pas un échantillonnage correct par rapport à la population générale du Hainaut pour plusieurs raisons. (1) toutes les tranches d’âges ne sont échantillonnées de manière équivalente pour les raisons évoquées, (2) des liens génétiques existent au sein des familles, ce qui résulte en une non indépendance des observations entre elles, et (3) seule une sous-population constituée de personnes fréquentant l’université et de leur entourage a été échantillonnée. Cependant, dans le cadre de l’exercice, nous accepterons ces biais, tout en étant conscients qu’ils existent.↩
Voyez
?select_helpers
pour une panoplie de fonctions supplémentaires qui permettent une sélection “intelligente” des variables.↩L’ordre alphabétique qui fait également intervenir les caractères accentués diffère en fonction de la configuration du système (langue). L’état du système tel que vu par R pour le tri alphabétique est obtenu par
Sys.getlocale("LC_COLLATE")
. Dans la SciViews Box, ceci est toujours"en_US.UTF-8"
, ceci afin de rendre le traitement reproductible d’un PC à l’autre, qu’il soit en anglais, français, espagnol, chinois, ou n’importe quelle autre langue.↩Le lecteur intéressé pourra lire les différents articles suivants : more pipes in R, y compris les liens qui s’y trouvent, permet de se faire une idée de la diversité des opérateurs de chaînage dans R et de leur historique. Dot pipe présente l’opérateur
%.>%
du package wrapr très proche du nôtre et in praise of syntactic sugar explique ses avantages. Nous partageons l’idée que le “pipe de base” ne devrait pas modifier l’instruction de droite contrairement à ce que fait%>%
de magrittr, et notre opérateur%>.%
va en outre plus loin encore que%.>%
dans la facilité de débogage du code chaîne.↩Le chaînage n’est cependant pas forcément plus facile à déboguer que la version avec variables intermédiaires. Le package flow propose la fonction
debug_flow()
à appeler directement après un plantage pour inspecter la dernière instruction qui a causé l’erreur, voir?debug_flow
.↩Utilisez cette option avec parcimonie : il vaut toujours mieux représenter un tableau comme … un tableau plutôt que comme une figure !↩
Notez également que passer d’un tableau cas par variables à un tableau des fréquences d’occurrences se fait à l’aide de
count()
.↩En Europe, les données numériques concernant les personnes sont soumises à des règles strictes édictées dans le Règlement Général pour la Protection des Données ou RGPD en abrégé, en vigueur depuis le 25 mai 2018. Vous devez vous assurer de respecter ce règlement lors de la collecte et de l’utilisation de données relatives à des personnes. Pour les autres type de données, le droit d’auteur ou des copyrights peuvent aussi limiter votre champ d’action. Renseignez-vous !↩
Les analyses métagénomiques coûtent très cher. Il est souvent impossible de faire des réplicats. Un seul échantillon d’ADN a donc été séquencé ici pour chaque communauté.↩
Notez malgré tout que, à condition de bien en comprendre les implications, le format complémentaire peut se justifier dans une publication pour y présenter un tableau le plus lisible possible, ce qui est le cas ici. Mais pour les analyses, c’est le format qui correspond à un tableau cas par variables qui doit être utilisé.↩
Si E1 et E2 sont deux événements non disjoints, la probabilité que l’un de ces deux événements se produise est : \(\mathrm{P}(E1\, ou\, E2) = \mathrm{P}(E1) + \mathrm{P}(E2) - \mathrm{P}(E1\, et\, E2)\).↩
En statistique, on appelle cela un tirage au sort sans remise. Le résultat est très différent si le premier individu tiré au hasard était remis dans la population et pouvait être éventuellement pris à nouveau au second ou troisième tirage (tirage au sort avec remise). Notez aussi que, pour une population de taille infinie ou quasi-infinie, les deux types de tirage au sort sont équivalents à celui avec remise car enlever un individu d’une population infinie ne change pas fondamentalement son effectif, donc les probabilités ultérieures.↩
Plus la densité de probabilité est élevée, plus les événements dans cette région du graphique sont probables.↩
La question n’est pas après environ une minute, mais à exactement 1 min 0 sec, 0 millisec, …, ce qui est alors hautement improbable.↩
Si vous utilisez
set.seed()
prenez soin de spécifier toujours une valeur différente prise au hasard comme argument !↩Le factoriel d’un nombre \(n\), noté \(n!\) est \(1 \times 2 \times 3 \times ... \times n\), avec \(0! = 1\).↩
Comme il y a la même proportion d’hommes et de femmes porteurs, nous avons 1/20 des hommes et 1/20 des femmes qui sont porteurs. Nous formons des couples au hasard en piochant un homme dans la population masculine et une femme dans la population féminine de manière indépendante. Dans ce cas, nous obtenons un couple double porteur à une fréquence de 1/20 * 1/20 = 1/400.↩
Sur 400 couples, 399 ont une probabilité d’engendrer des enfants sains (porteurs hétérozygotes ou non porteurs confondus) de 100%. A cela il faut ajouter un couple sur 400 qui aura une probabilité de 75% de faire des enfants non atteints car non homozygotes.↩
Faites également le calcul manuellement à la calculatrice pour vérifier que vous avez bien compris.↩
Les fonctions qui permettent les calculs relatifs à la distribution \(\chi^2\) dans R sont
<x>chisq()
, et les snippets correspondants dans la SciViews Box sont disponibles à partir de.ic
. Leur utilisation est similaire à celle des distributions vues au module 7.↩Avec
chisq.test()
, l’argumentp =
est la liste des probabilités attendues sous \(H_0\) et dont la somme vaut un. On peut aussi donner les effectifs attendus, mais il faut alors préciserrescale.p = TRUE
.↩Attention ! Vous devez fixer la taille de l’échantillon dès le départ a priori. Vous ne pouvez pas accumuler des données jusqu’à obtenir un rejet de \(H_0\), sans quoi votre analyse sera biaisée.↩
Vous pouvez activer les sous-titres en anglais via la barre de boutons en bas de la vidéo pour vous aider à comprendre l’histoire.↩
L’équation proposée est, en fait, valable pour un échantillon, et est calculé comme tel par R à l’aide des fonctions
sd()
pour l’écart type ouvar()
pour la variance. Pour la population ou pour un échantillon de taille très grande, voire infinie, nous pourrions plutôt diviser par \(n\) au lieu de \(n - 1\), … mais puisque \(n\) est très grand, cela ne change pas grand chose au final.↩Notez que les lettres latines sont utilisées pour se référer aux variables et aux descripteurs statistiques telle que la moyenne pour l’échantillon, alors que les paramètres équivalents de la population, qui sont inconnus, sont représentés par des lettres grecques en statistiques.↩
Nous utilisons pour se faire une boucle
for
dans R qui réitère un calcul sur chaque élément d’un vecteur, ici, une séquence 1, 2, 3, …, 10000 obtenue à l’aide de l’instruction1:10000
.↩Il existe des tests pour le vérifier, comme le test de Bartlett, mais ce n’est pas le propos ici.↩
Pouvez-vous expliquer pourquoi ? Réfléchissez, c’est assez évident.↩
Dans le cas d’un test de Wilcoxon apparié, on a \(H_0: mediane_x = mediane_y\).↩
Attention ! vous savez bien que c’est plus compliqué que cela. D’une part, le risque de se tromper est probablement différent si on rejette \(H_0\) (\(\alpha\)) ou non (\(\beta\)), et ces risques sont encore à moduler en fonction de la probabilité a priori, un cas similaire au dépistage d’une maladie plus ou moins rare, rappelez-vous, au module 7.↩
Dans R, vous pouvez utiliser
choose(n, j)
pour calculer le coefficient binomial. Donc votre calcul du risque de se tromper au moins une fois dans un ensemble den
tests dont le risque individuel estr
sera1 - (1 - r)^choose(n, 2)
.↩Les fonctions qui permettent les calculs relatifs à la distribution F dans R sont
<x>f()
, et les snippets correspondants dans la SciViews Box sont disponibles à partir de.if
. Leur utilisation est similaire à celle des distributions vues au module 7.↩Un snippet dédié est disponible dans le menu
hypothesis tests: means
à partir de.hm
.↩Nous ne détaillons pas le calcul du test de Tukey ici, mais vous pouvez aller voir ici.↩
Notez que si vous incluez le tableau de l’ANOVA dans votre rapport ou dans une publication, il n’est pas nécessaire de répéter les résultats des tests entre parenthèses. Vous pouvez juste vous référer au tableau en question.↩
De plus, nous avons ici un plan balancé puisque le nombre de répliquats pour chaque niveau est le même. C’est une situation optimale qu’il faut toujours chercher à atteindre pour une ANOVA, même si un nombre différent d’observations par niveau est également accepté.↩
La variable
Sample valant
Gou
H` ne sera pas utilisée ici. En fait, au départ, les initiateurs de l’expérience ont fait croire aux laboratoires qu’il s’agissait de deux échantillons différents alors que c’est le même en réalité.↩Historiquement, ce langage s’appelait S à l’origine dans les années 1970 alors qu’il a été inventé par John Chambers et ses collègues aux laboratoires Bell. R est une implémentation open source de S écrite dans les années 1990 par Ross Ihaka et Robert Gentleman. Ensuite R a pris de l’importance à tel point qu’on parle maintenant du langage R (sachant bien qu’il s’agit d’un dialecte du langage S).↩
Cette évaluation particulière s’appelle le “tidyeval”. Son explication est hors de propos dans cette introduction à la science des données mais si vous êtes curieux, vous pouvez toujours lire ceci.↩
La fonction
lapply()
distribue la fonction donnée en argument sur tous les éléments du tableau, et calcule ici la moyenne successivement pour les 4 variables.↩Ici, nous croisons les X et les Y, et extrayons la diagonale de ce tableau qui correspond aux coefficients entre X1 et Y1, entre X2 et Y2, entre X3 et Y3 et entre X4 et Y4, respectivement.↩
Vous pouvez activer les sous-titres en anglais via la barre de boutons en bas de la vidéo.↩
Toutes nos présentations dans le cadre du cours sont au format R Markdown/Beamer avec un template UMONS/SDD fortement personnalisé. Dans le cadre de vos exercices, vous aurez accès à un dépôt GotHub Classroom qui vous prose un template similaire.↩
Renseignez-vous au niveau des services étudiants à l’UMONS et à l’AGE : des aides existent pour les étudiants boursiers qui souhaitent acquérir un ordinateur dans le cadre de leurs études.↩
Ce ne sont que des exemples. Recherchez des configurations équivalentes chez d’autres constructeurs aussi !↩
Si jamais vous voulez retourner plus tard au configurateur de la SciViews Box, vous n’aurez qu’à cliquer sur son icône tout en haut à droite dans la barre supérieure.↩
Le Mac définit ses raccourcis claviers différemment du PC. Outre l’inversion de l’utilisation des touches
Ctrl
etCmd
, le Mac possède deux touchesAlt
, une à gauche et une à droite. Le PC a, par contre, deux touches correspondantes, mais celle de droite est nomméeAlt Gr
. Ces touches jouent des rôles différents: raccourcis claviers pourAlt
et accès aux touches de niveau 3 et 4 pourAlt Gr
. Pour les utilisateurs Mac, notez que vos deux touchesAlt
ont des rôles différents dans la SciViews Box comme pour un clavier PC. Enfin, VirtualBox réserve une touche clavier à son propre usage. Par défaut, c’est la toucheCmd
ouWin
de droite. Il est déconseillé de modifier ce choix car toutes les autres touches sont indispensables dans la SciViews box!↩A la première utilisation de Git à l’intérieur du logiciel RStudio, votre login et votre mot de passe vous seront également redemandés. De même, vous devrez également fournir ces informations dans Github Desktop et la première fois que vous naviguerez vers https://github.com depuis le navigateur Web de votre PC hôte. Mais ensuite, vous accèderez immédiatement au service.↩
Il pourra ainsi être replacé au bon endroit et exécuté dans la Box↩
Le presse-papier est synchronisé entre les deux machines pour le texte qui y est copié.↩
N’éditer jamais à la main un fichier
.Rproj
. Laisser RStudio s’en occuper tout seul.↩Les systèmes d’édition professionnels dissocient en effet le fond de la forme : vous rédiger d’abord le contenu, et ensuite, vous indiquer le style à lui appliquer.↩