{"id":3377,"date":"2026-02-19T15:39:19","date_gmt":"2026-02-19T14:39:19","guid":{"rendered":"https:\/\/www.gironi.it\/blog\/?p=3377"},"modified":"2026-02-20T11:25:16","modified_gmt":"2026-02-20T10:25:16","slug":"teorema-del-limite-centrale","status":"publish","type":"post","link":"https:\/\/www.gironi.it\/blog\/teorema-del-limite-centrale\/","title":{"rendered":"Il Teorema del Limite Centrale: perch\u00e9 la statistica funziona (anche quando i dati non sono normali)"},"content":{"rendered":"<p>Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, la <a href=\"https:\/\/www.gironi.it\/blog\/la-distribuzione-normale\/\">distribuzione normale<\/a> e le sue propriet\u00e0. E poi siamo andati avanti: abbiamo costruito <a href=\"https:\/\/www.gironi.it\/blog\/intervalli-di-confidenza\/\">intervalli di confidenza<\/a>, condotto <a href=\"https:\/\/www.gironi.it\/blog\/il-test-delle-ipotesi\/\">test delle ipotesi<\/a>, calcolato margini di errore. In tutti questi passaggi, la distribuzione normale era l\u00ec, sempre presente, come un filo conduttore silenzioso.<\/p>\n<p>Ma c&#8217;\u00e8 una domanda che forse ci siamo posti senza trovare ancora una risposta soddisfacente: <strong>perch\u00e9 la distribuzione normale funziona cos\u00ec bene, anche quando i nostri dati non sono affatto normali?<\/strong> Chi ha detto che il traffico organico, i tassi di conversione o le durate delle sessioni seguano una distribuzione a campana? Nella maggior parte dei casi, non la seguono affatto.<\/p>\n<p>La risposta sta in uno dei risultati pi\u00f9 eleganti e potenti di tutta la matematica: il <strong>Teorema del Limite Centrale<\/strong> (in inglese <em>Central Limit Theorem<\/em>, spesso abbreviato in TLC o CLT). \u00c8 il teorema che, in un certo senso, <em>giustifica<\/em> l&#8217;intera statistica inferenziale.<\/p>\n<p><!--more--><\/p>\n<div style=\"border: 1px solid #ccc; padding: 1.2em 1.5em; margin: 1.5em 0; border-radius: 6px;\">\n<h3 style=\"margin-top: 0;\">Di cosa parleremo<\/h3>\n<ul>\n<li><a href=\"#cose-il-teorema\">Cos&#8217;\u00e8 il Teorema del Limite Centrale<\/a><\/li>\n<li><a href=\"#perche-importante\">Perch\u00e9 \u00e8 cos\u00ec importante<\/a><\/li>\n<li><a href=\"#simulazione-r\">Vediamolo con i nostri occhi: una simulazione in R<\/a><\/li>\n<li><a href=\"#regola-pratica\">La regola pratica: quanto deve essere grande n?<\/a><\/li>\n<li><a href=\"#tlc-errore-standard\">Il TLC e l&#8217;errore standard<\/a><\/li>\n<li><a href=\"#esempio-traffico\">Un esempio pratico: il traffico organico giornaliero<\/a><\/li>\n<li><a href=\"#quando-non-basta\">Quando il TLC non basta<\/a><\/li>\n<li><a href=\"#prova-tu\">Prova tu<\/a><\/li>\n<\/ul>\n<\/div>\n<h2 id=\"cose-il-teorema\">Cos&#8217;\u00e8 il Teorema del Limite Centrale<\/h2>\n<p>Partiamo dall&#8217;enunciato, e poi lo tradurremo in parole semplici.<\/p>\n<p>Il Teorema del Limite Centrale afferma che: <strong>se preleviamo campioni sufficientemente grandi da una qualsiasi popolazione con media \\(\\mu\\) e <a href=\"https:\/\/www.gironi.it\/blog\/statistica-descrittiva-misure-di-dispersione-o-variabilita\/\">deviazione standard<\/a> \\(\\sigma\\) finite, la distribuzione delle medie campionarie sar\u00e0 approssimativamente normale<\/strong>, indipendentemente dalla forma della distribuzione originale.<\/p>\n<p>Pi\u00f9 precisamente, la distribuzione delle medie campionarie \\(\\bar{X}\\) tende a:<\/p>\n\\(<br \/>\n\\bar{X} \\sim N\\left(\\mu, \\, \\frac{\\sigma}{\\sqrt{n}}\\right) \\\\<br \/>\n\\)\n<p>dove:<\/p>\n<ul>\n<li>\\(\\mu\\) \u00e8 la media della popolazione<\/li>\n<li>\\(\\sigma\\) \u00e8 la deviazione standard della popolazione<\/li>\n<li>\\(n\\) \u00e8 la dimensione di ciascun campione<\/li>\n<li>\\(\\frac{\\sigma}{\\sqrt{n}}\\) \u00e8 l&#8217;<strong>errore standard<\/strong> della media<\/li>\n<\/ul>\n<p>In termini pi\u00f9 chiari e diretti: non importa quanto strana, asimmetrica o bizzarra sia la distribuzione dei nostri dati originali. Se prendiamo tanti campioni e calcoliamo la media di ciascuno, quelle medie si disporranno a formare una campana. Sempre.<\/p>\n<h2 id=\"perche-importante\">Perch\u00e9 \u00e8 cos\u00ec importante<\/h2>\n<p>Va sempre tenuto bene a mente questo punto, perch\u00e9 \u00e8 la chiave di volta di tutto ci\u00f2 che abbiamo fatto finora.<\/p>\n<p>Quando calcoliamo un intervallo di confidenza o conduciamo un test delle ipotesi, non lavoriamo con i singoli dati: lavoriamo con le <strong>medie campionarie<\/strong>. E il TLC ci garantisce che quelle medie, purch\u00e9 il campione sia abbastanza grande, seguono una distribuzione normale (o approssimativamente tale).<\/p>\n<p>Ecco perch\u00e9 possiamo usare la distribuzione normale e la <a href=\"https:\/\/www.gironi.it\/blog\/la-distribuzione-t-e-il-test-delle-ipotesi\/\">distribuzione t<\/a> anche quando i dati originali non sono normali. Non stiamo facendo un&#8217;assunzione azzardata: stiamo sfruttando un risultato matematico solido.<\/p>\n<p>In pratica, il TLC \u00e8 il motivo per cui:<\/p>\n<ul>\n<li>gli intervalli di confidenza funzionano<\/li>\n<li>i test delle ipotesi sono affidabili<\/li>\n<li>possiamo fare inferenza statistica su praticamente qualsiasi tipo di dato<\/li>\n<\/ul>\n<h2 id=\"simulazione-r\">Vediamolo con i nostri occhi: una simulazione in R<\/h2>\n<p>La teoria \u00e8 bella, ma <em>vedere<\/em> il TLC in azione \u00e8 un&#8217;altra cosa. Costruiamo una simulazione in R che mostra il teorema al lavoro.<\/p>\n<p>Partiamo da una distribuzione decisamente non normale: una distribuzione esponenziale, che \u00e8 fortemente asimmetrica a destra (pensate alla distribuzione dei tempi di permanenza su un sito: molte visite brevissime, poche molto lunghe).<\/p>\n<p>Simuliamo in R il processo di campionamento ripetuto:<\/p>\n<pre><code class=\"language-r\">set.seed(42)\n\n# Popolazione: distribuzione esponenziale (media = 1\/lambda)\nlambda &lt;- 0.5\npop_mean &lt;- 1 \/ lambda  # media vera = 2\n\n# Simuliamo 10000 campioni di dimensione n\nn_campioni &lt;- 10000\n\n# Funzione per calcolare le medie campionarie\nsimula_medie &lt;- function(n) {\n  replicate(n_campioni, mean(rexp(n, rate = lambda)))\n}\n\n# Proviamo con tre dimensioni campionarie diverse\nmedie_n5  &lt;- simula_medie(5)\nmedie_n30 &lt;- simula_medie(30)\nmedie_n100 &lt;- simula_medie(100)\n\n# Visualizziamo\npar(mfrow = c(2, 2))\n\n# La distribuzione originale (esponenziale)\nhist(rexp(10000, rate = lambda), breaks = 50, probability = TRUE,\n     main = \"Popolazione originale\\n(esponenziale)\",\n     col = \"lightcoral\", xlab = \"Valore\", ylab = \"Densit\\u00e0\")\n\n# Medie con n = 5\nhist(medie_n5, breaks = 50, probability = TRUE,\n     main = \"Medie campionarie (n = 5)\",\n     col = \"lightyellow\", xlab = \"Media\", ylab = \"Densit\\u00e0\")\ncurve(dnorm(x, mean = pop_mean, sd = pop_mean \/ sqrt(5)),\n      add = TRUE, col = \"red\", lwd = 2)\n\n# Medie con n = 30\nhist(medie_n30, breaks = 50, probability = TRUE,\n     main = \"Medie campionarie (n = 30)\",\n     col = \"lightgreen\", xlab = \"Media\", ylab = \"Densit\\u00e0\")\ncurve(dnorm(x, mean = pop_mean, sd = pop_mean \/ sqrt(30)),\n      add = TRUE, col = \"red\", lwd = 2)\n\n# Medie con n = 100\nhist(medie_n100, breaks = 50, probability = TRUE,\n     main = \"Medie campionarie (n = 100)\",\n     col = \"lightblue\", xlab = \"Media\", ylab = \"Densit\\u00e0\")\ncurve(dnorm(x, mean = pop_mean, sd = pop_mean \/ sqrt(100)),\n      add = TRUE, col = \"red\", lwd = 2)<\/code><\/pre>\n<p>Come si vede, il risultato \u00e8 spettacolare. La popolazione di partenza \u00e8 completamente asimmetrica (l&#8217;esponenziale non assomiglia neanche lontanamente a una campana), eppure:<\/p>\n<ul>\n<li>Con <strong>n = 5<\/strong>, le medie cominciano gi\u00e0 a somigliare a una normale, anche se resta un po&#8217; di asimmetria<\/li>\n<li>Con <strong>n = 30<\/strong>, la distribuzione delle medie \u00e8 praticamente indistinguibile da una normale<\/li>\n<li>Con <strong>n = 100<\/strong>, la sovrapposizione con la curva teorica \u00e8 quasi perfetta<\/li>\n<\/ul>\n<p>Basta aumentare la dimensione del campione e la normalit\u00e0 emerge da sola.<\/p>\n<h2 id=\"regola-pratica\">La regola pratica: quanto deve essere grande n?<\/h2>\n<p>Una domanda legittima: &#8220;sufficientemente grande&#8221; \u00e8 un termine piuttosto vago. In pratica, quanto deve essere grande il campione perch\u00e9 il TLC faccia il suo lavoro?<\/p>\n<p>La regola pratica pi\u00f9 diffusa \u00e8 <strong>n \u2265 30<\/strong>. Con 30 o pi\u00f9 osservazioni, la distribuzione delle medie campionarie \u00e8 generalmente ben approssimata dalla normale, anche se la distribuzione originale \u00e8 moderatamente asimmetrica.<\/p>\n<p>Ma attenzione: questa regola ha delle eccezioni.<\/p>\n<ul>\n<li>Se la distribuzione originale \u00e8 <strong>gi\u00e0 simmetrica<\/strong> (anche se non normale), bastano campioni pi\u00f9 piccoli (anche n = 10-15 pu\u00f2 essere sufficiente)<\/li>\n<li>Se la distribuzione originale \u00e8 <strong>fortemente asimmetrica<\/strong> (come nel caso di dati con molti outlier, o distribuzioni esponenziali con parametri estremi), possono servire campioni pi\u00f9 grandi (n = 50 o anche di pi\u00f9)<\/li>\n<\/ul>\n<p>Nella pratica quotidiana della SEO e del marketing digitale, di solito lavoriamo con campioni ben superiori a 30 (centinaia o migliaia di sessioni, click, conversioni), quindi il TLC \u00e8 quasi sempre dalla nostra parte.<\/p>\n<h2 id=\"tlc-errore-standard\">Il TLC e l&#8217;errore standard<\/h2>\n<p>Il teorema ci dice anche qualcosa di prezioso sulla <strong>dispersione<\/strong> delle medie campionarie. La deviazione standard della distribuzione delle medie (cio\u00e8 l&#8217;errore standard) \u00e8:<\/p>\n\\(<br \/>\nSE = \\frac{\\sigma}{\\sqrt{n}} \\\\<br \/>\n\\)\n<p>Questo ha due conseguenze pratiche importanti:<\/p>\n<ol>\n<li><strong>All&#8217;aumentare di n, l&#8217;errore standard diminuisce<\/strong>. Pi\u00f9 dati raccogliamo, pi\u00f9 le nostre medie campionarie si concentrano attorno alla media vera. La relazione \u00e8 con \\(\\sqrt{n}\\), il che significa (come abbiamo gi\u00e0 visto con gli intervalli di confidenza) che per dimezzare l&#8217;errore standard dobbiamo quadruplicare il campione.<\/li>\n<li><strong>La variabilit\u00e0 della popolazione conta<\/strong>. Se i nostri dati sono molto dispersi (alto \\(\\sigma\\)), servono campioni pi\u00f9 grandi per ottenere stime precise. Un sito con traffico molto variabile richiede pi\u00f9 giorni di osservazione per una stima affidabile della media giornaliera.<\/li>\n<\/ol>\n<p>Verifichiamo in R che l&#8217;errore standard osservato corrisponda alla formula teorica:<\/p>\n<pre><code class=\"language-r\"># Errore standard teorico per n = 30\nse_teorico &lt;- pop_mean \/ sqrt(30)\n\n# Errore standard osservato dalla simulazione\nse_osservato &lt;- sd(medie_n30)\n\ncat(\"SE teorico:\", round(se_teorico, 4), \"\\n\")\ncat(\"SE osservato:\", round(se_osservato, 4), \"\\n\")\ncat(\"Differenza:\", round(abs(se_teorico - se_osservato), 4), \"\\n\")<\/code><\/pre>\n<p>La corrispondenza \u00e8 notevole: i due valori praticamente coincidono. Il TLC funziona esattamente come promesso.<\/p>\n<h2 id=\"esempio-traffico\">Un esempio pratico: il traffico organico giornaliero<\/h2>\n<p>Applichiamo il TLC a un caso concreto. Supponiamo di monitorare il traffico organico giornaliero di un sito per un anno (365 giorni). I dati di traffico non sono mai normali: sono asimmetrici a destra (giorni feriali vs weekend, picchi stagionali, anomalie).<\/p>\n<p>Simuliamo in R una situazione realistica:<\/p>\n<pre><code class=\"language-r\">set.seed(123)\n\n# Simuliamo 365 giorni di traffico (distribuzione log-normale, tipica del web)\ntraffico &lt;- round(rlnorm(365, meanlog = 6, sdlog = 0.5))\n\ncat(\"Media traffico giornaliero:\", round(mean(traffico)), \"visite\\n\")\ncat(\"Mediana:\", round(median(traffico)), \"visite\\n\")\ncat(\"Dev. standard:\", round(sd(traffico)), \"visite\\n\")\n\n# Prendiamo campioni di 30 giorni e calcoliamo la media di ciascuno\nmedie_mensili &lt;- replicate(5000, mean(sample(traffico, 30, replace = TRUE)))\n\npar(mfrow = c(1, 2))\n\nhist(traffico, breaks = 30, probability = TRUE,\n     main = \"Traffico giornaliero\\n(365 giorni)\",\n     col = \"lightcoral\", xlab = \"Visite\", ylab = \"Densit\\u00e0\")\n\nhist(medie_mensili, breaks = 50, probability = TRUE,\n     main = \"Medie di campioni\\nda 30 giorni\",\n     col = \"lightblue\", xlab = \"Media visite\", ylab = \"Densit\\u00e0\")\ncurve(dnorm(x, mean = mean(traffico), sd = sd(traffico) \/ sqrt(30)),\n      add = TRUE, col = \"red\", lwd = 2)\n\n# Test di normalit\\u00e0 sulle medie\nshapiro.test(sample(medie_mensili, 5000))<\/code><\/pre>\n<p>Il traffico giornaliero \u00e8 chiaramente asimmetrico (la media \u00e8 diversa dalla mediana, la distribuzione ha una coda lunga a destra). Ma le medie di campioni da 30 giorni? Perfettamente normali, come il TLC garantisce.<\/p>\n<p>Questo \u00e8 esattamente il motivo per cui possiamo costruire intervalli di confidenza affidabili per il traffico medio, anche se i singoli giorni hanno una distribuzione tutt&#8217;altro che normale.<\/p>\n<h2 id=\"quando-non-basta\">Quando il TLC non basta<\/h2>\n<p>Sarebbe disonesto non menzionare i casi in cui il TLC ha dei limiti. Il teorema richiede che la popolazione abbia <strong>media e varianza finite<\/strong>. Ci sono distribuzioni (come la distribuzione di Cauchy) che non hanno una varianza finita, e per queste il TLC non vale.<\/p>\n<p>Nella pratica della SEO e del marketing, questo \u00e8 raramente un problema: i nostri dati hanno sempre media e varianza finite. Tuttavia, vale la pena ricordare che:<\/p>\n<ul>\n<li>Con <strong>distribuzioni fortemente asimmetriche<\/strong> e <strong>campioni piccoli<\/strong> (n &lt; 20), l&#8217;approssimazione normale pu\u00f2 essere insufficiente. In questi casi, meglio usare <a href=\"https:\/\/www.gironi.it\/blog\/test-statistici-parametrici-e-non-parametrici\/\">metodi non parametrici<\/a> o tecniche di <em>bootstrap<\/em><\/li>\n<li>Con <strong>proporzioni estreme<\/strong> (molto vicine a 0 o a 1), il TLC per le proporzioni richiede campioni pi\u00f9 grandi perch\u00e9 l&#8217;approssimazione funzioni. Ne abbiamo gi\u00e0 parlato nell&#8217;articolo sugli intervalli di confidenza<\/li>\n<\/ul>\n<h2 id=\"prova-tu\">Prova tu<\/h2>\n<p>Un e-commerce registra i seguenti importi degli ordini (in euro) in un mese:<\/p>\n<pre><code class=\"language-r\">ordini &lt;- c(12, 8, 45, 15, 22, 150, 9, 18, 35, 11,\n            14, 200, 7, 19, 28, 13, 55, 10, 16, 95,\n            8, 21, 42, 12, 17, 310, 9, 14, 25, 11)<\/code><\/pre>\n<ol>\n<li>Calcola media e deviazione standard degli ordini. La distribuzione sembra normale?<\/li>\n<li>Usa <code>replicate()<\/code> e <code>sample()<\/code> per generare 5000 medie campionarie con n = 10 (campionando con reinserimento)<\/li>\n<li>Disegna l&#8217;istogramma delle medie campionarie. Assomiglia a una normale?<\/li>\n<li>Calcola l&#8217;errore standard teorico (\\(\\frac{s}{\\sqrt{n}}\\)) e confrontalo con la deviazione standard delle medie simulate<\/li>\n<\/ol>\n<p>Suggerimento: <code>replicate(5000, mean(sample(ordini, 10, replace = TRUE)))<\/code> fa quasi tutto il lavoro.<\/p>\n<p>Abbiamo visto come il Teorema del Limite Centrale sia il fondamento nascosto di tutta la statistica inferenziale: \u00e8 il motivo per cui possiamo costruire intervalli di confidenza, condurre test delle ipotesi e fare previsioni affidabili, anche quando i nostri dati non sono normali. Ma il TLC ci ha anche insegnato che la dimensione del campione \u00e8 cruciale. Questo ci apre la strada a una domanda molto pratica: <strong>quanti dati ci servono?<\/strong> \u00c8 il problema della <em>dimensione campionaria<\/em> e del <em>campionamento<\/em>, temi che affronteremo in un prossimo articolo.<\/p>\n<hr>\n<h3>Per approfondire<\/h3>\n<p>Se vuoi approfondire il ruolo della distribuzione normale e del Teorema del Limite Centrale nella pratica statistica, <a href=\"https:\/\/www.amazon.it\/dp\/8806246623?tag=consulenzeinf-21\" target=\"_blank\" rel=\"nofollow sponsored noopener\"><em>L&#8217;arte della statistica<\/em><\/a> di David Spiegelhalter \u00e8 un&#8217;ottima compagna di viaggio. Spiegelhalter riesce a spiegare perch\u00e9 la curva a campana compare ovunque \u2014 dalle misurazioni fisiche ai sondaggi elettorali \u2014 con una chiarezza che non sacrifica mai il rigore.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, la distribuzione normale e le sue propriet\u00e0. E poi siamo andati avanti: abbiamo costruito intervalli di confidenza, condotto test delle ipotesi, calcolato margini di errore. In tutti questi passaggi, la distribuzione normale era l\u00ec, sempre presente, come un filo conduttore silenzioso. Ma c&#8217;\u00e8 una domanda &hellip; <a href=\"https:\/\/www.gironi.it\/blog\/teorema-del-limite-centrale\/\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Il Teorema del Limite Centrale: perch\u00e9 la statistica funziona (anche quando i dati non sono normali)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[629],"tags":[],"class_list":["post-3377","post","type-post","status-publish","format-standard","hentry","category-statistica-it"],"lang":"it","translations":{"it":3377,"en":3404},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"paolo","author_link":"https:\/\/www.gironi.it\/blog\/author\/paolo\/"},"uagb_comment_info":2,"uagb_excerpt":"Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, la distribuzione normale e le sue propriet\u00e0. E poi siamo andati avanti: abbiamo costruito intervalli di confidenza, condotto test delle ipotesi, calcolato margini di errore. In tutti questi passaggi, la distribuzione normale era l\u00ec, sempre presente, come un filo conduttore silenzioso. Ma c&#8217;\u00e8 una domanda&hellip;","_links":{"self":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts\/3377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/comments?post=3377"}],"version-history":[{"count":7,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts\/3377\/revisions"}],"predecessor-version":[{"id":3401,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts\/3377\/revisions\/3401"}],"wp:attachment":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/media?parent=3377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/categories?post=3377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/tags?post=3377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}