{"id":417,"date":"2015-03-18T17:27:37","date_gmt":"2015-03-18T16:27:37","guid":{"rendered":"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/?p=417"},"modified":"2021-12-13T10:15:28","modified_gmt":"2021-12-13T09:15:28","slug":"realiser-une-regression-logistique-avec-r","status":"publish","type":"post","link":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/realiser-une-regression-logistique-avec-r\/","title":{"rendered":"R\u00e9aliser une r\u00e9gression logistique avec R"},"content":{"rendered":"<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/regression_logistique\/Lise_Vaudor_headband-1.png\" alt=\"\" \/><\/p>\n<p>Pour analyser une variable binaire (dont les valeurs seraient VRAI\/FAUX, 0\/1, ou encore OUI\/NON) en fonction d&rsquo;une variable explicative quantitative, on peut utiliser une <strong>r\u00e9gression logistique<\/strong>.<\/p>\n<p>Consid\u00e9rons par exemple les <a href=\"..\/..\/lise.vaudor\/Rdata\/regression_logistique\/data_reglog.csv\">donn\u00e9es suivantes<\/a>, o\u00f9 <em>x<\/em> est l&rsquo;\u00e2ge de 40 personnes, et <em>y<\/em> la variable indiquant s&rsquo;ils ont achet\u00e9 un album de death metal au cours des 5 derni\u00e8res ann\u00e9es (1 si \u00ab\u00a0oui\u00a0\u00bb, 0 si \u00ab\u00a0non\u00a0\u00bb)<\/p>\n<p>Graphiquement, on constate que vraisemblablement, plus les personnes sont \u00e2g\u00e9es, moins elle ach\u00e8tent de death metal.<\/p>\n<pre><code>plot(x,y)                                                                                                                                                                                                      \n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/regression_logistique\/scatterplot-1.png\" alt=\"\" \/><\/p>\n<p>V\u00e9rifions cela \u00e0 l&rsquo;aide d&rsquo;un mod\u00e8le&#8230;<\/p>\n<p>La r\u00e9gression logistique est un cas particulier de <strong>Mod\u00e8le Lin\u00e9aire G\u00e9n\u00e9ralis\u00e9 (GLM)<\/strong>.<\/p>\n<p>Avec un mod\u00e8le de r\u00e9gression lin\u00e9aire classique, on consid\u00e8re le mod\u00e8le suivant:<\/p>\n<pre><code>    $$ Y=\\alpha X+\\beta $$\n<\/code><\/pre>\n<p>On pr\u00e9dit donc l&rsquo;esp\u00e9rance de Y de la mani\u00e8re suivante :<\/p>\n<pre><code>    $$ E(Y)=\\alpha E(X)+ \\beta $$\n<\/code><\/pre>\n<p>Ici, du fait de la distribution binaire de Y, les relations ci-dessus ne peuvent pas s&rsquo;appliquer. Pour \u00ab\u00a0g\u00e9n\u00e9raliser\u00a0\u00bb le mod\u00e8le lin\u00e9aire, on consid\u00e8re donc que<\/p>\n<pre><code>    $$ g(E(Y)) =\\alpha E(X)+ \\beta $$\n<\/code><\/pre>\n<p>o\u00f9 <em>g<\/em> est une <strong>fonction de lien<\/strong>.<\/p>\n<p>En l&rsquo;occurence, pour une r\u00e9gression logistique, la fonction de lien correspond \u00e0 la fonction logit:<\/p>\n<pre><code>    $$ logit(p)=log(\\frac{p}{1-p})$$\n<\/code><\/pre>\n<p>Notez que cette fonction logit transforme une valeur (<em>p<\/em>) comprise entre 0 et 1 (comme une <em>probabilit\u00e9<\/em> par exemple) en une valeur comprise entre \u2005\u2212\u2005\u221e et \u2005+\u2005\u221e.<\/p>\n<p>Voici comment r\u00e9aliser la r\u00e9gression logistique sous R:<\/p>\n<pre><code>myreg=glm(y~x, family=binomial(link=logit))\nsummary(myreg)\n\n## \n## Call:\n## glm(formula = y ~ x, family = binomial(link = logit))\n## \n## Deviance Residuals: \n##     Min       1Q   Median       3Q      Max  \n## -1.8686  -0.7764   0.3801   0.8814   2.0253  \n## \n## Coefficients:\n##             Estimate Std. Error z value Pr(&gt;|z|)   \n## (Intercept)   5.9462     1.9599   3.034  0.00241 **\n## x            -0.1156     0.0397  -2.912  0.00360 **\n## ---\n## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n## \n## (Dispersion parameter for binomial family taken to be 1)\n## \n##     Null deviance: 52.925  on 39  degrees of freedom\n## Residual deviance: 39.617  on 38  degrees of freedom\n## AIC: 43.617\n## \n## Number of Fisher Scoring iterations: 5\n<\/code><\/pre>\n<p>On obtient donc le mod\u00e8le suivant:<\/p>\n<pre><code>    $$ logit(E(Y))=-0.12 X + 5.95 $$\n<\/code><\/pre>\n<p>et l&rsquo;on constate que l&rsquo;influence (n\u00e9gative) de l&rsquo;\u00e2ge sur l&rsquo;achat d&rsquo;albums de death metal est bien significative au seuil de 5%.<\/p>\n<p>Si l&rsquo;on repr\u00e9sente cette relation entre logit(E(Y) et <em>X<\/em>, on retrouve bien une relation lin\u00e9aire. En revanche, l&rsquo;\u00e9chelle des ordonn\u00e9es n&rsquo;est pas ais\u00e9e \u00e0 interpr\u00e9ter&#8230; On proc\u00e8de donc \u00e0 une transformation inverse de la relation:<\/p>\n<pre><code>logit_ypredit=-0.12*x+5.95\nypredit=exp(logit_ypredit)\/(1+ exp(logit_ypredit)) # transfo inverse de logit\n\nplot(x,y)\npoints(x,ypredit, col=\"red\")\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/regression_logistique\/regression_logistique_1-1.png\" alt=\"\" \/><\/p>\n<p>Pour tracer la courbe:<\/p>\n<pre><code>plot(x,y)\no=order(x)\npoints(x[o],ypredit[o], col=\"red\", type=\"l\", lwd=2)\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/regression_logistique\/regression_logistique_2-1.png\" alt=\"\" \/><\/p>\n<p>Enfin, pour se simplifier la vie, il est aussi possible de r\u00e9cup\u00e9rer les valeurs pr\u00e9dites de y directement :<\/p>\n<pre><code>plot(x,y)\nmyreg=glm(y~x, family=binomial(link=logit))\nypredit=myreg$fitted\no=order(x)\npoints(x[o],ypredit[o], col=\"red\", type=\"l\", lwd=2)\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/regression_logistique\/regression_logistique_3-1.png\" alt=\"\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour analyser une variable binaire (dont les valeurs seraient VRAI\/FAUX, 0\/1, ou encore OUI\/NON) en fonction d&rsquo;une variable explicative quantitative, on peut utiliser une r\u00e9gression logistique. Consid\u00e9rons par exemple les donn\u00e9es suivantes, o\u00f9 x est l&rsquo;\u00e2ge de 40 personnes, et y la variable indiquant s&rsquo;ils ont achet\u00e9 un album de death metal au cours des 5 derni\u00e8res ann\u00e9es (1 si \u00ab\u00a0oui\u00a0\u00bb, 0 si \u00ab\u00a0non\u00a0\u00bb) Graphiquement, on constate que vraisemblablement, plus.. <a href=\"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/realiser-une-regression-logistique-avec-r\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-417","post","type-post","status-publish","format-standard","hentry","category-tous-les-posts"],"_links":{"self":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/comments?post=417"}],"version-history":[{"count":7,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/417\/revisions"}],"predecessor-version":[{"id":1338,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/417\/revisions\/1338"}],"wp:attachment":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/media?parent=417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/categories?post=417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/tags?post=417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}