{"id":2256,"date":"2023-07-23T01:36:42","date_gmt":"2023-07-23T01:36:42","guid":{"rendered":"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/"},"modified":"2023-07-23T01:36:42","modified_gmt":"2023-07-23T01:36:42","slug":"lalgoritmo-glm-fit-non-converge","status":"publish","type":"post","link":"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/","title":{"rendered":"Come gestire r avviso: glm.fit: l&#39;algoritmo non converge"},"content":{"rendered":"<p><\/p>\n<hr>\n<p><span style=\"color: #000000;\">Un avviso comune che potresti incontrare in R \u00e8:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong>glm.fit: algorithm did not converge\n<\/strong><\/span><\/pre>\n<p> <span style=\"color: #000000;\">Questo avviso si verifica spesso quando si tenta di adattare un modello di regressione logistica in R e si vede <strong>la separazione perfetta<\/strong> , ovvero una variabile predittrice \u00e8 in grado di separare perfettamente la variabile di risposta in 0 e in 1.<\/span><\/p>\n<p> <span style=\"color: #000000;\">L&#8217;esempio seguente mostra come gestire questo avviso nella pratica.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Come riprodurre l&#8217;avviso<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Supponiamo di voler adattare il seguente modello di regressione logistica in R:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\"><span style=\"color: #000000;\"><span style=\"color: #008080;\">#create data frame<\/span>\ndf &lt;- data. <span style=\"color: #3366ff;\">frame<\/span> (x=c(.1, .2, .3, .4, .5, .6, .7, .8, .9, 1, 1, 1.1, 1.3, 1.5, 1.7),\n                 y=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1))\n\n<span style=\"color: #008080;\">#attempt to fit logistic regression model\n<\/span>glm(y~x, data=df, family=\" <span style=\"color: #ff0000;\">binomial<\/span> \")\n\nCall: glm(formula = y ~ x, family = \"binomial\", data = df)\n\nCoefficients:\n(Intercept)x  \n     -409.1 431.1  \n\nDegrees of Freedom: 14 Total (ie Null); 13 Residual\nNull Deviance: 20.19 \nResidual Deviance: 2.468e-09 AIC: 4\nWarning messages:\n1: glm.fit: algorithm did not converge \n2: glm.fit: fitted probabilities numerically 0 or 1 occurred \n<\/span><\/span><\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Tieni presente che riceviamo il messaggio di avviso: <strong>glm.fit: algoritmo non converge<\/strong> .<\/span><\/p>\n<p> <span style=\"color: #000000;\">Riceviamo questo messaggio perch\u00e9 la variabile predittrice x \u00e8 in grado di separare perfettamente la variabile di risposta y in 0 e 1.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Nota che per ogni valore x inferiore a 1, y \u00e8 uguale a 0. E per ogni valore x uguale o maggiore di 1, y \u00e8 uguale a 1.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Il codice seguente mostra uno scenario in cui la variabile predittore non \u00e8 in grado di separare perfettamente la variabile di risposta in 0 e 1:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\"><span style=\"color: #000000;\"><span style=\"color: #008080;\">#create data frame\n<\/span>df &lt;- data. <span style=\"color: #3366ff;\">frame<\/span> (x=c(.1, .2, .3, .4, .5, .6, .7, .8, .9, 1, 1, 1.1, 1.3, 1.5, 1.7),\n                 y=c(0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1))\n\n<span style=\"color: #008080;\">#fit logistic regression model\n<\/span>glm(y~x, data=df, family=\" <span style=\"color: #ff0000;\">binomial<\/span> \")\n\nCall: glm(formula = y ~ x, family = \"binomial\", data = df)\n\nCoefficients:\n(Intercept) x  \n     -2.112 2.886  \n\nDegrees of Freedom: 14 Total (ie Null); 13 Residual\nNull Deviance: 20.73 \nResidual Deviance: 16.31 AIC: 20.31\n<\/span><\/span><\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Non riceviamo alcun messaggio di avviso perch\u00e9 la variabile predittore non \u00e8 in grado di separare perfettamente la variabile di risposta in 0 e 1.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Come gestire l&#8217;avviso<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Se incontriamo uno scenario di separazione perfetta, ci sono due modi per gestirlo:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>Metodo 1: utilizzare la regressione penalizzata.<\/strong><\/span><\/p>\n<p> <span style=\"color: #000000;\">Un&#8217;opzione \u00e8 quella di utilizzare una forma di regressione logistica penalizzata come la regressione logistica lazo o la regolarizzazione della rete elastica.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Fare riferimento al pacchetto <a href=\"https:\/\/cran.r-project.org\/web\/packages\/glmnet\/glmnet.pdf\" target=\"_blank\" rel=\"noopener\">glmnet<\/a> per le opzioni su come implementare la regressione logistica penalizzata in R.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>Metodo 2: utilizzare la variabile predittore per prevedere perfettamente la variabile di risposta.<\/strong><\/span><\/p>\n<p> <span style=\"color: #000000;\">Se sospetti che questa separazione perfetta possa esistere nella popolazione, puoi semplicemente utilizzare questa variabile predittrice per prevedere perfettamente il valore della variabile di risposta.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Ad esempio, nello scenario precedente, abbiamo visto che la variabile di risposta <strong>y<\/strong> era sempre uguale a 0 quando la variabile predittrice <strong>x<\/strong> era inferiore a 1.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Se sospettiamo che questa relazione valga nella popolazione complessiva, possiamo sempre prevedere che il valore di <strong>y<\/strong> sar\u00e0 0 quando <strong>x<\/strong> \u00e8 inferiore a 1 e non preoccuparci di adattare un modello di regressione logistica penalizzato.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Risorse addizionali<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">I seguenti tutorial forniscono informazioni aggiuntive sull&#8217;utilizzo della funzione <strong>glm()<\/strong> in R:<\/span><\/p>\n<p> <a href=\"https:\/\/statorials.org\/it\/glm-vs-lm-in-r\/\" target=\"_blank\" rel=\"noopener\">La differenza tra glm e lm in R<\/a><br \/> <a href=\"https:\/\/statorials.org\/it\/r-glm-predire\/\" target=\"_blank\" rel=\"noopener\">Come utilizzare la funzione di previsione con glm in R<\/a><br \/> <a href=\"https:\/\/statorials.org\/it\/glm-fit-si-sono-verificate-probabilita-adattate-numericamente-0-o-1\/\" target=\"_blank\" rel=\"noopener\">Come gestire: glm.fit: si sono verificate probabilit\u00e0 corrette numericamente 0 o 1<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un avviso comune che potresti incontrare in R \u00e8: glm.fit: algorithm did not converge Questo avviso si verifica spesso quando si tenta di adattare un modello di regressione logistica in R e si vede la separazione perfetta , ovvero una variabile predittrice \u00e8 in grado di separare perfettamente la variabile di risposta in 0 e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Come gestire l&#039;avviso R: glm.fit: L&#039;algoritmo non ha fatto convergenza - Statorials<\/title>\n<meta name=\"description\" content=\"Questo tutorial spiega come gestire il seguente messaggio di avviso in R: glm.fit: L&#039;algoritmo non \u00e8 convergente.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come gestire l&#039;avviso R: glm.fit: L&#039;algoritmo non ha fatto convergenza - Statorials\" \/>\n<meta property=\"og:description\" content=\"Questo tutorial spiega come gestire il seguente messaggio di avviso in R: glm.fit: L&#039;algoritmo non \u00e8 convergente.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/\" \/>\n<meta property=\"og:site_name\" content=\"Statorials\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-23T01:36:42+00:00\" \/>\n<meta name=\"author\" content=\"Benjamin anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/\",\"url\":\"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/\",\"name\":\"Come gestire l&#39;avviso R: glm.fit: L&#39;algoritmo non ha fatto convergenza - Statorials\",\"isPartOf\":{\"@id\":\"https:\/\/statorials.org\/it\/#website\"},\"datePublished\":\"2023-07-23T01:36:42+00:00\",\"dateModified\":\"2023-07-23T01:36:42+00:00\",\"author\":{\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae\"},\"description\":\"Questo tutorial spiega come gestire il seguente messaggio di avviso in R: glm.fit: L&#39;algoritmo non \u00e8 convergente.\",\"breadcrumb\":{\"@id\":\"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Casa\",\"item\":\"https:\/\/statorials.org\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Come gestire r avviso: glm.fit: l&#39;algoritmo non converge\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/statorials.org\/it\/#website\",\"url\":\"https:\/\/statorials.org\/it\/\",\"name\":\"Statorials\",\"description\":\"La tua guida all&#039;alfabetizzazione statistica!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/statorials.org\/it\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae\",\"name\":\"Benjamin anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"contentUrl\":\"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"caption\":\"Benjamin anderson\"},\"description\":\"Ciao, sono Benjamin, un professore di statistica in pensione diventato insegnante dedicato di Statorials. Con una vasta esperienza e competenza nel campo della statistica, sono ansioso di condividere le mie conoscenze per potenziare gli studenti attraverso Statorials. Scopri di pi\u00f9\",\"sameAs\":[\"https:\/\/statorials.org\/it\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Come gestire l&#39;avviso R: glm.fit: L&#39;algoritmo non ha fatto convergenza - Statorials","description":"Questo tutorial spiega come gestire il seguente messaggio di avviso in R: glm.fit: L&#39;algoritmo non \u00e8 convergente.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/","og_locale":"it_IT","og_type":"article","og_title":"Come gestire l&#39;avviso R: glm.fit: L&#39;algoritmo non ha fatto convergenza - Statorials","og_description":"Questo tutorial spiega come gestire il seguente messaggio di avviso in R: glm.fit: L&#39;algoritmo non \u00e8 convergente.","og_url":"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/","og_site_name":"Statorials","article_published_time":"2023-07-23T01:36:42+00:00","author":"Benjamin anderson","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Benjamin anderson","Est. reading time":"2 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/","url":"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/","name":"Come gestire l&#39;avviso R: glm.fit: L&#39;algoritmo non ha fatto convergenza - Statorials","isPartOf":{"@id":"https:\/\/statorials.org\/it\/#website"},"datePublished":"2023-07-23T01:36:42+00:00","dateModified":"2023-07-23T01:36:42+00:00","author":{"@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae"},"description":"Questo tutorial spiega come gestire il seguente messaggio di avviso in R: glm.fit: L&#39;algoritmo non \u00e8 convergente.","breadcrumb":{"@id":"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/statorials.org\/it\/lalgoritmo-glm-fit-non-converge\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Casa","item":"https:\/\/statorials.org\/it\/"},{"@type":"ListItem","position":2,"name":"Come gestire r avviso: glm.fit: l&#39;algoritmo non converge"}]},{"@type":"WebSite","@id":"https:\/\/statorials.org\/it\/#website","url":"https:\/\/statorials.org\/it\/","name":"Statorials","description":"La tua guida all&#039;alfabetizzazione statistica!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/statorials.org\/it\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae","name":"Benjamin anderson","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/image\/","url":"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","contentUrl":"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","caption":"Benjamin anderson"},"description":"Ciao, sono Benjamin, un professore di statistica in pensione diventato insegnante dedicato di Statorials. Con una vasta esperienza e competenza nel campo della statistica, sono ansioso di condividere le mie conoscenze per potenziare gli studenti attraverso Statorials. Scopri di pi\u00f9","sameAs":["https:\/\/statorials.org\/it"]}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts\/2256"}],"collection":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/comments?post=2256"}],"version-history":[{"count":0,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts\/2256\/revisions"}],"wp:attachment":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/media?parent=2256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/categories?post=2256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/tags?post=2256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}