{"id":1622,"date":"2015-10-16T11:37:27","date_gmt":"2015-10-16T15:37:27","guid":{"rendered":"http:\/\/bioinfo.iric.ca\/fr\/?p=1622"},"modified":"2017-04-30T10:07:23","modified_gmt":"2017-04-30T14:07:23","slug":"permutations","status":"publish","type":"post","link":"https:\/\/bioinfo.iric.ca\/fr\/permutations\/","title":{"rendered":"Permutations"},"content":{"rendered":"<p>Supposons que vous ayez ces deux groupes de donn\u00e9es :<\/p>\n<pre ><code class=\"r\"><span style='font-size:11px;'>g1 &lt;- c(55, 65, 58)\r\ng2 &lt;- c(12, 18, 32)<\/span><\/code><\/pre>\n<p>Nous voulons savoir si ces deux groupes appartiennent \u00e0 la m\u00eame distribution ou sont consid\u00e9r\u00e9s comme deux groupes diff\u00e9rents.  Nous serions probablement tent\u00e9, pour \u00e9lucider la question, d&rsquo;appliquer un test de Student, le test-t.<\/p>\n<pre ><code class=\"r\"><span style='font-size:11px;'>t.test(g1, g2)<\/span><\/code><\/pre>\n<pre><code><span style='font-size:11px;'>\r\n##  Welch Two Sample t-test\r\n## \r\n## data:  g1 and g2\r\n## t = 5.8366, df = 2.9412, p-value = 0.01059\r\n## alternative hypothesis: true difference in means is not equal to 0\r\n## 95 percent confidence interval:\r\n##  17.34281 59.99052\r\n## sample estimates:\r\n## mean of x mean of y \r\n##  59.33333  20.66667<\/span><\/code><\/pre>\n<p>Le test t nous retourne un petit un p-value qui indique qu&rsquo;il y a une diff\u00e9rence significative entre les moyennes.  Mais attendez, avons-nous le droit d&rsquo;appliquer ce test statistique?  Une des suppositions sous-jacentes au test de Student est que nos donn\u00e9es suivent une distribution normale.   Avec trois valeurs dans chaque groupe, il est difficile de d\u00e9terminer si c&rsquo;est le cas.  D&rsquo;habitude, le graphe Q-Q pourrait \u00eatre utilis\u00e9 pour d\u00e9terminer si la distribution est normale.   Cette m\u00e9thode visuelle standard compare nos donn\u00e9es aux quantiles th\u00e9oriques de la distribution normale.   Quand tous les points d&rsquo;un ensemble de donn\u00e9es s&rsquo;alignent sur la droite, cela suppose que les donn\u00e9es sont normalement distribu\u00e9es.  Ici, vous avez les graphes Q-Q pour <em>x<\/em>, qui est normalement distribu\u00e9 (puisque nous avons utilis\u00e9 la fonction <em>rnorm<\/em> pour construire ce vecteur) et <em>z<\/em> qui est uniform\u00e9ment distribu\u00e9.<\/p>\n<pre ><code class=\"r\" ><span style='font-size:11px;'>x &lt;- rnorm(1000, mean=50, sd=5) # distribution normale\r\nz &lt;- runif(1000) #distribution uniforme\r\npar(mfrow=c(2,2))\r\nqqnorm(x, pch=20)\r\nqqline(x)\r\nhist(x)\r\nqqnorm(z, pch=20)\r\nqqline(z)\r\nhist(z)<\/span><\/code><\/pre>\n<p><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-1613\" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot.png\" alt=\"qqplot\" width=\"645\" height=\"516\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot-147x118.png 147w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot-177x142.png 177w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot-300x240.png 300w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot.png 645w\" sizes=\"(max-width: 645px) 100vw, 645px\" \/><\/a><\/p>\n<p>Si nous essayons la m\u00eame chose pour nos deux vecteurs <em>g1<\/em> et <em>g2<\/em>, nous n&rsquo;obtenons pas beaucoup d&rsquo;informations sur la distribution car nous n&rsquo;avons pas assez de points.<\/p>\n<pre class=\"r\"><code><span style='font-size:11px;'>par (mfrow=c(2,2))\r\nqqnorm(g1)\r\nqqline(g1)\r\nqqnorm(g2)\r\nqqline(g2)<\/span><\/code><\/pre>\n<p><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot_g1g2.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-1614\" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot_g1g2.png\" alt=\"qqplot_g1g2\" width=\"645\" height=\"370\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot_g1g2-300x172.png 300w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/10\/qqplot_g1g2.png 645w\" sizes=\"(max-width: 645px) 100vw, 645px\" \/><\/a><\/p>\n<p>Sans conna\u00eetre la distribution de notre ensemble de donn\u00e9es, nous pourrions d\u00e9cider de laisser tomber les tests param\u00e9triques et d&rsquo;utiliser un test non param\u00e9trique. Le test U-Mann-Withney-Wilcoxon est un test non param\u00e9trique largement utilis\u00e9.  Il compare le rang des valeurs d&rsquo;un ensemble de donn\u00e9es et non les valeurs comme telles.  J&rsquo;ai d\u00e9j\u00e0 expliqu\u00e9 les premi\u00e8res \u00e9tapes de ce test dans un (<a class=\"uri\" href=\"https:\/\/bioinfo.iric.ca\/dont-ignore-the-warnings\/\">article pr\u00e9c\u00e9dent<\/a>).<\/p>\n<pre ><code class=\"r\"><span style='font-size:11px;'>wilcox.test(g1, g2)<\/span><\/code><\/pre>\n<pre><code class=\"r\"><span style='font-size:11px;'>##  Wilcoxon rank sum test\r\n## \r\n## data:  g1 and g2\r\n## W = 9, p-value = 0.1\r\n## alternative hypothesis: true location shift is not equal to 0<\/span><\/code><\/pre>\n<p>Le p-value obtenu avec wilcox.test est plus \u00e9lev\u00e9 que le p-value que nous avions calcul\u00e9 plus t\u00f4t.<br \/>\nIci, vous devriez \u00eatre conscient que le test t et le test u n&rsquo;utilisent pas les m\u00eames hypoth\u00e8ses <em>NULL<\/em> et alternatives.  Lorsque vous utilisez ces deux tests, vous ne testez pas tout \u00e0 fait la m\u00eame chose.  Le test t v\u00e9rifie si la vraie diff\u00e9rence de moyennes entre les groupes est diff\u00e9rente de z\u00e9ro alors que le test u v\u00e9rifie qu&rsquo;une population particuli\u00e8re pr\u00e9sente des valeurs plus \u00e9lev\u00e9es que l&rsquo;autre, i.e. si les m\u00e9dianes sont \u00e9gales.  Nos donn\u00e9es supportent ce constat.  Pourquoi le test de u nous donne-t-il alors un p-value non significatif de 0.1?  Parce que nous n&rsquo;avons pas assez de valeurs \u00e0 comparer!! Les valeurs de significance (dans la table de valeurs critiques de Mann-Withney U) ne sont m\u00eame pas d\u00e9finies pour une comparaison 3 versus 3.  C&rsquo;est m\u00eame surprenant que R nous retourne un p-value.<\/p>\n<p>Et maintenant?   Quoi faire?  Ma premi\u00e8re r\u00e9ponse est : <strong>obtenir plus de donn\u00e9es<\/strong>!!  Mais si c&rsquo;est impossible, nous pouvons tenter d&rsquo;appliquer un test de permutations.  Quand l&rsquo;ensemble de donn\u00e9es est petit, le test de permutations complet peut \u00eatre appliqu\u00e9 pour obtenir une distribution de permutations compl\u00e8te.  Quand nous avons affaire \u00e0 un plus gros ensemble de donn\u00e9es (quand nous ne pouvons pas \u00e9num\u00e9rer toutes les permutations), un test de permutations avec \u00e9chantillonnage peut \u00eatre utilis\u00e9.  Dans ce cas, il est important de choisir les combinaisons al\u00e9atoirement et avec la m\u00eame probabilit\u00e9.<\/p>\n<p>Comment \u00e7a fonctionne?  D&rsquo;abord, il faut calculer une statistique sur nos deux groupes \u00e0 comparer : une diff\u00e9rence de m\u00e9dianes, de moyennes, de sommes&#8230;  Cette valeur deviendra la valeur observ\u00e9e, <em>T(obs)<\/em>.  Ensuite, nous devons mettre toutes nos donn\u00e9es ensemble et brasser les \u00e9tiquettes associ\u00e9es (groupe1\/groupe2).  Nous calculons la statistique pour toutes les permutations (ou pour<br \/>\n<em>n<\/em> r\u00e9p\u00e9titions).  Lorsque nous avons termin\u00e9, nous pouvons compter le nombre de fois o\u00f9 la statistique \u00ab\u00a0al\u00e9atoire\u00a0\u00bb \u00e9tait meilleure que la statistique observ\u00e9e.  Par d\u00e9finition, le p-value repr\u00e9sente la probabilit\u00e9 qu&rsquo;un test donne un r\u00e9sultat au moins aussi extr\u00eame que la valeur observ\u00e9e sous l&rsquo;hypoth\u00e8se <em>null<\/em> (ou plus simplement exprim\u00e9, la probabilit\u00e9 que la valeur observ\u00e9e ait \u00e9t\u00e9 observ\u00e9e par chance).  Ici, l&rsquo;hypoth\u00e8se <em>null<\/em> devient : les \u00e9tiquettes sont assign\u00e9es al\u00e9atoirement.  Nous obtenons donc la probabilit\u00e9 d&rsquo;observer notre statistique sous l&rsquo;hypoth\u00e8se que les \u00e9tiquettes n&rsquo;ont pas d&rsquo;importance.<\/p>\n<pre ><code class=\"r\"><span style='font-size:11px;'>Tobs &lt;- sum(g1)-sum(g2)\r\ndata &lt;- c(g1, g2)\r\ncombinaisons &lt;- t(combn(data,3, simplify=T))\r\n\r\ndiff &lt;- function(data, combinaison_i=0, combinaisons=NULL) {\r\n  # si nous n'\u00e9num\u00e9rons pas toutes les combinaisons possibles, nous en choisissons au hasard\r\n  if (combinaison_i==0) {\r\n    x1 &lt;- sample(data, 3, replace=F)\r\n  }\r\n  # nous \u00e9num\u00e9rons toutes les combinaisons\r\n  else {\r\n    x1 &lt;- combinaisons[combinaison_i,]\r\n  }\r\n  # La combinaison choisie a \u00e9t\u00e9 attribu\u00e9e au groupe1; les valeurs restantes forment le groupe2 \r\n  x2 &lt;- data[!data%in%x1]\r\n  # Nous calculons et retournons notre statistique\r\n  return (sum(x1)-sum(x2))\r\n}\r\n\r\nTrand &lt;- c()\r\n# Nous \u00e9num\u00e9rons toutes les combinaisons retourn\u00e9es par la fonction combn()\r\nfor (i in 1:nrow(combinaisons)) {\r\n  Trand &lt;- c(Trand, diff(data, combinaison_i=i, combinaisons=combinaisons))\r\n}\r\nsum(Trand&gt;=Tobs)\/nrow(combinaisons)<\/span><\/code><\/pre>\n<pre><code><span style='font-size:11px;'>## [1] 0.05<\/span><\/code><\/pre>\n<p>Pour un test avec \u00e9chantillonnage, la fonction <em>replicate<\/em> est tr\u00e8s utile car elle nous permet de r\u00e9p\u00e9ter une expression plusieurs fois.  Ici, nous avons choisi al\u00e9atoirement 3 valeurs pour faire partie du premier groupe et les valeurs restantes ont \u00e9t\u00e9 mises dans le deuxi\u00e8me groupe.  Nous r\u00e9p\u00e9tons cela 1000 fois.<\/p>\n<p>Puisqu&rsquo;il y a 20 combinaisons pour le groupe 1 (choisir 3 parmi 6=20; <em>n!\/k!(n-k)!<\/em> o\u00f9 <em>n<\/em> est le nombre total de choix et <em>k<\/em> est le nombre \u00e0 choisir), nous s\u00e9lectionnons les m\u00eames combinaisons plusieurs fois.  En fait, une m\u00eame combinaison est choisie en moyenne 50 fois. <\/p>\n<pre ><code class=\"r\"><span style='font-size:11px;'># Nous ne listons pas toutes les combinaisons, nous choisissons une combinaison al\u00e9atoire et faisons cela n fois.\r\n# Nous pouvons utiliser la m\u00eame fonction que pr\u00e9c\u00e9demment\r\nn &lt;- 1000\r\nTrand &lt;- replicate(n, diff(data=data))\r\nsum(Trand&gt;=Tobs)\/n<\/span><\/code><\/pre>\n<pre><code><span style='font-size:11px;'>## [1] 0.065<\/span><\/code><\/pre>\n<p>Le test de permutations compl\u00e8tes est probablement un meilleur choix ici. <\/p>\n<p>Les tests de permutations (et les m\u00e9thodes de r\u00e9-\u00e9chantillonnage, <em>bootstrapping<\/em>) sont utiles dans plusieurs situations.  Ici, j&rsquo;ai illustr\u00e9 le probl\u00e8me des petits (minuscules?) ensemble de donn\u00e9es, mais en r\u00e9alit\u00e9 les tests de permutations ne sont pas limit\u00e9s \u00e0 cette situation.<\/p>\n<p>Je terminerai en disant que 3 \u00e9chantillons, c&rsquo;est souvent trop peu pour effectuer des tests statistiques!  Planifiez votre travail en cons\u00e9quence, car comme on dit : mieux vaut pr\u00e9venir que gu\u00e9rir. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Supposons que vous ayez ces deux groupes de donn\u00e9es : g1 &lt;- c(55, 65, 58) g2 &lt;- c(12, 18, 32) Nous voulons savoir si ces deux groupes appartiennent \u00e0 la m\u00eame distribution ou sont consid\u00e9r\u00e9s comme deux groupes diff\u00e9rents. Nous serions probablement tent\u00e9, pour \u00e9lucider la question, d&rsquo;appliquer un test de Student, le test-t. t.test(g1, g2) ## Welch Two Sample t-test ## ## data: g1 and g2 ## t = 5.8366, df = 2.9412, p-value = 0.01059 ## alternative hypothesis: <a href=\"https:\/\/bioinfo.iric.ca\/fr\/permutations\/\"> [&#8230;]<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[69,24,27],"tags":[],"class_list":["post-1622","post","type-post","status-publish","format-standard","hentry","category-analyse-de-donnees","category-langage-r","category-statistiques"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/1622","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/comments?post=1622"}],"version-history":[{"count":12,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/1622\/revisions"}],"predecessor-version":[{"id":3304,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/1622\/revisions\/3304"}],"wp:attachment":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/media?parent=1622"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/categories?post=1622"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/tags?post=1622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}