{"id":198,"date":"2015-06-01T13:51:16","date_gmt":"2015-06-01T13:51:16","guid":{"rendered":"http:\/\/cms04397.apps-1and1.net\/?p=198"},"modified":"2017-12-05T14:15:12","modified_gmt":"2017-12-05T13:15:12","slug":"test-t-de-student-avec-r","status":"publish","type":"post","link":"https:\/\/blog.tiran.stream\/?p=198","title":{"rendered":"Test t de Student avec R"},"content":{"rendered":"<p style=\"text-align: justify;\">Dans un <a href=\"http:\/\/blog.tiran.info\/test-t-de-student-avec-oracle\">pr\u00e9c\u00e9dent billet<\/a>, un test de Student a \u00e9t\u00e9 utilis\u00e9 pour v\u00e9rifier que le niveau de pr\u00e9sence d&rsquo;un polluant \u00e9tait en moyenne plus \u00e9lev\u00e9 dans une zone de l&rsquo;agglom\u00e9ration de Tours que dans une autre. L&rsquo;analyse a \u00e9t\u00e9 men\u00e9e directement avec les fonctions statistiques SQL d&rsquo;Oracle 12c.<\/p>\n<p style=\"text-align: justify;\">Dans ce billet, nous allons reproduire les m\u00eames op\u00e9rations en utilisant R. Les \u00e9tapes sont tr\u00e8s similaires.<\/p>\n<p><strong>Chargement des donn\u00e9es<\/strong><\/p>\n<pre>&gt; air &lt;- read.csv2(&quot;C:\/RTI\/Stats\/lig-air-derniere-semaine.csv&quot;, dec=&quot;.&quot;)  \r\n&gt; names(air) &lt;- c(&quot;Date&quot;,&quot;Bruyere&quot;,&quot;Pompidou&quot;) \r\n&gt; summary(air)\r\n               Date        Bruyere         Pompidou    \r\n 19\/05\/2015 17:00:  1   Min.   :-0.20   Min.   : 1.80  \r\n 19\/05\/2015 18:00:  1   1st Qu.: 6.95   1st Qu.: 9.10  \r\n 19\/05\/2015 19:00:  1   Median :10.30   Median :12.60  \r\n 19\/05\/2015 20:00:  1   Mean   :10.76   Mean   :12.77  \r\n 19\/05\/2015 21:00:  1   3rd Qu.:14.15   3rd Qu.:16.70  \r\n 19\/05\/2015 22:00:  1   Max.   :24.30   Max.   :28.80  \r\n (Other)         :160                   NA&#039;s   :1      \r\n&gt;<\/pre>\n<p><strong>V\u00e9rification des conditions d\u2019application du test de Student<\/strong><\/p>\n<ul>\n<li>Normalit\u00e9 des \u00e9chantillons<\/li>\n<\/ul>\n<p>Les capacit\u00e9s graphiques de R permettent d&rsquo;utiliser la technique de la <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Droite_de_Henry\" target=\"_blank\" rel=\"noopener\">droite de Henry<\/a> pour estimer visuellement si la distribution des \u00e9chantillons suit approximativement une loi normale:<\/p>\n<pre>&gt; par(mfrow=c(2,1))\r\n&gt; qqnorm(air[,2], main=&quot;Bruyere&quot;);qqline(air[,2]);\r\n&gt; qqnorm(air[,3], main=&quot;Pompidou&quot;);qqline(air[,3]);\r\n&gt;<\/pre>\n<p><a href=\"https:\/\/blog.tiran.stream\/wp-content\/uploads\/2015\/05\/droite-de-Henry.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-201\" src=\"https:\/\/blog.tiran.stream\/wp-content\/uploads\/2015\/05\/droite-de-Henry.png\" alt=\"droite-de-Henry\" width=\"400\" height=\"335\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">On voit bien ici que sur une \u00e9chelle Gausso-Arithm\u00e9tique, les points sont globalement align\u00e9s.<\/p>\n<p style=\"text-align: justify;\">N\u00e9anmoins, \u00e0 l&rsquo;instar de ce que nous avions r\u00e9alis\u00e9 en SQL, on peut aussi r\u00e9aliser les tests de Shapiro-Wilk et Kolmogorov-Smirnov pour valider l&rsquo;hypoth\u00e8se de normalit\u00e9:<\/p>\n<pre>&gt; shapiro.test(air[,3])\r\n\r\n\tShapiro-Wilk normality test\r\n\r\ndata:  air[, 3]\r\nW = 0.9889, p-value = 0.2197\r\n\r\n&gt;<\/pre>\n<p style=\"text-align: justify;\">On retrouve les m\u00eames valeurs W et p que lors du test men\u00e9 sous Oracle.<\/p>\n<p style=\"text-align: justify;\">L&rsquo;utilisation du test de Kolmogorov-Smirnov sous R pour valider la normalit\u00e9 n\u00e9cessite une op\u00e9ration de <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Variable_centr%C3%A9e_r%C3%A9duite\" target=\"_blank\" rel=\"noopener\">centrage\/r\u00e9duction<\/a> des valeurs \u00e9tudi\u00e9es (dans la mesure ou pnorm correspond \u00e0 une loi normale centr\u00e9e-r\u00e9duite):<\/p>\n<pre>&gt; ks.test((air[,2]-mean(air[,2]))\/sd(air[,2]), &quot;pnorm&quot;)\r\n\r\n\tOne-sample Kolmogorov-Smirnov test\r\n\r\ndata:  (air[, 2] - mean(air[, 2]))\/sd(air[, 2])\r\nD = 0.0834, p-value = 0.198\r\nalternative hypothesis: two-sided\r\n\r\nWarning message:\r\nIn ks.test((air[, 2] - mean(air[, 2]))\/sd(air[, 2]), &quot;pnorm&quot;) :\r\n  aucun ex-aequo ne devrait \u00eatre pr\u00e9sent pour le test de Kolmogorov-Smirnov\r\n&gt;<\/pre>\n<p>On retrouve \u00e0 nouveau les m\u00eames valeurs D et p que lors du test men\u00e9 sous Oracle.<\/p>\n<ul>\n<li>Homosc\u00e9dasticit\u00e9<\/li>\n<\/ul>\n<p>On r\u00e9alise un test de Fisher:<\/p>\n<pre>&gt; var.test(air[,2],air[,3])\r\n\r\n\tF test to compare two variances\r\n\r\ndata:  air[, 2] and air[, 3]\r\nF = 0.9494, num df = 165, denom df = 164, p-value = 0.7393\r\nalternative hypothesis: true ratio of variances is not equal to 1\r\n95 percent confidence interval:\r\n 0.6985702 1.2900302\r\nsample estimates:\r\nratio of variances \r\n          0.949372 \r\n\r\n&gt;<\/pre>\n<p>Les valeurs W et p correspondent au test men\u00e9 sous Oracle.<\/p>\n<p><strong>R\u00e9alisation du test de Student<\/strong><\/p>\n<p style=\"text-align: justify;\">Finalement, le test t de Student est r\u00e9alis\u00e9 (sans l&rsquo;option var.equal=TRUE, c&rsquo;est un test de Welch qui est r\u00e9alis\u00e9).<\/p>\n<p style=\"text-align: justify;\">L&rsquo;argument alternative=\u00a0\u00bbless\u00a0\u00bb permet d&rsquo;indiquer qu&rsquo;il s&rsquo;agit d&rsquo;un test unilat\u00e9ral avec un premier vecteur d&rsquo;esp\u00e9rance inf\u00e9rieure au second.<\/p>\n<pre>&gt; t.test(air[,2], air[,3], var.equal=TRUE, alternative=&quot;less&quot;)\r\n\r\n\tTwo Sample t-test\r\n\r\ndata:  air[, 2] and air[, 3]\r\nt = -3.5688, df = 329, p-value = 0.000206\r\nalternative hypothesis: true difference in means is less than 0\r\n95 percent confidence interval:\r\n      -Inf -1.079376\r\nsample estimates:\r\nmean of x mean of y \r\n 10.75904  12.76606 \r\n\r\n&gt;<\/pre>\n<p>L\u00e0 encore, on retrouve pr\u00e9cis\u00e9ment les m\u00eames valeurs que lors de l&rsquo;analyse men\u00e9e sous Oracle.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans un pr\u00e9c\u00e9dent billet, un test de Student a \u00e9t\u00e9 utilis\u00e9 pour v\u00e9rifier que le niveau de pr\u00e9sence d&rsquo;un polluant<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[12,14,16],"tags":[],"class_list":["post-198","post","type-post","status-publish","format-standard","hentry","category-r","category-statistique","category-tests-dhypotheses"],"_links":{"self":[{"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/posts\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=198"}],"version-history":[{"count":1,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/posts\/198\/revisions"}],"predecessor-version":[{"id":1156,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/posts\/198\/revisions\/1156"}],"wp:attachment":[{"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}