Références
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 Google.↩︎
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}\).↩︎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 intervalles.↩︎
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.↩︎
L’opération effectuée pour passer d’un histogramme à une courbe de densité consiste effectivement à lisser les pics plus ou moins fortement 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 en utilisant l’argument
alpha =
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é en replaçantgeom_point()
pargeom_jitter()
.↩︎La fonction
give_n()
est une fonction personnalisée que nous avons écrite nous-mêmes. Elle positionne du textey =
10% plus haut que lemax(x)
, et ce texte estlength(x)
, la longueur du vecteur qui correspond au nombre d’observations pourx
(x
étant utilisé en interne par le moteur graphique). Il est possible, et même assez facile, dans R d’écrire ses propres fonctions. Néanmoins cela dépasse du cadre du cours pour l’instant. Pour utilisergive_n()
dans vos documents R Markdown, copiez simplement sa définition dans un chunk avant de l’utiliser comme c’est fait ici. Elle est aussi réutilisable plus loin dans le même R Markdown, une fois qu’elle est définie.↩︎Notez que plusieurs thèmes existent dans ggplot2. Il est facile d’en changer et de les personnaliser… mais c’est toujours appréciable d’avoir un rendu impeccable dès le premier essai.↩︎
Étant 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 Biologiques II en dernière année de Bachelier.↩︎
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 qui offre des possibiltiés très intéressantes d’inter-compatibilité de performance.↩︎
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 utilisables avecselect()
.↩︎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 {svFlow} 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
scount()
oucount()
.↩︎Une infection nosocomiale est une infection contractée dans un hôpital.↩︎
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 types 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é.↩︎
Plus la densité de probabilité est élevée, plus les évènements dans cette région du graphique sont probables.↩︎
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%. À 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()
. Leur utilisation est similaire à celle des distributions vues au module 7.↩︎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.↩︎
Pour le lecteur plus avancé, il s’agit en fait de la droite de régression ajustée dans le nuage de points.↩︎
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ée 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 telles 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 ce 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
<q|p|r|d>f()
. En outre,dist_f()
génère un objet permettant d’en tracer facilement le graphique. Leur utilisation est similaire à celle des distributions vues au module 7.↩︎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éplicas 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
valantG
ouH
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é.↩︎Notez toutefois qu’il est conseillé de manière générale de ne pas utiliser les valeurs p du tout, mais de privilégier d’autres approches comme le rapport de la log-vraissemblance entre modèles, voir ici, mais cela sort du cadre de ce cours.↩︎
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.↩︎
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é.↩︎
N’éditer jamais à la main un fichier
.Rproj
. Laisser RStudio s’en occuper !↩︎Notez que sous R, vous devez doubler les backslashs sous Windows (
~\\Documents\\...
). Ce n’est ni très esthétique, ni compatible avec les deux autres systèmes. Heureusement, R comprend aussi le slash comme séparateur sous Windows, de sorte que la même syntaxe peut être utilisée partout ! Nous vous conseillons donc d’utiliser aussi systématiquement les slashs sous Windows dans R ou RStudio.↩︎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.↩︎