Menu

Intervalli di confidenza in R: t.test(), confint() e prop.test()

Ottieni intervalli di confidenza per medie, proporzioni e coefficienti di modelli con t.test(), prop.test() e confint(), e scopri cosa significa davvero "confidenza al 95%" e come la dimensione del campione determina l'ampiezza.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

Cosa significa davvero "confidenza al 95%"

Un intervallo di confidenza trasforma una stima puntuale ("la media campionaria è 5.61") in un intervallo onesto ("la media vera è plausibilmente tra 5.29 e 5.93"). Ma l'espressione confidenza al 95% è una delle più fraintese della statistica, quindi chiariamola subito.

Il 95% descrive la procedura, non l'intervallo. Immagina di ripetere il tuo studio più e più volte, con un nuovo campione e un nuovo intervallo ogni volta. Gli intervalli si sposterebbero qua e là, e circa il 95% di essi catturerebbe il valore vero; il 5% lo mancherebbe. Il tuo unico intervallo reale è una singola estrazione da quel processo. Ciò che il 95% non significa: "c'è una probabilità del 95% che la media vera sia dentro questi numeri". La media vera è un numero fisso (e sconosciuto): non entra ed esce dagli intervalli; sono gli intervalli a variare.

In pratica la lettura amichevole va bene: l'intervallo è l'insieme dei valori compatibili con i tuoi dati. Sappi solo quale affermazione puoi davvero sostenere quando qualcuno insiste.

IC per una media, la via facile

Ogni t.test() porta con sé un intervallo di confidenza; puoi eseguire il test anche solo per raccoglierlo:

Media 5.61, IC al 95% più o meno da 5.29 a 5.93. L'intervallo fa ciò che una media da sola non può fare: mostra quanta precisione ti comprano davvero dieci osservazioni.

Lo stesso IC a mano

Vale la pena costruire almeno una volta la formula dietro quell'intervallo, perché demistifica ogni IC che leggerai: stima ± valore critico × errore standard.

Confrontalo con l'output di t.test(): stesso intervallo fino all'ultima cifra. Tre ingredienti:

  • L'errore standard sd(x)/sqrt(n) misura quanto oscilla la media campionaria (vedi le statistiche descrittive per la differenza tra sd ed errore standard).
  • qt(0.975, df) è il valore critico della t: per una copertura del 95% lasci il 2.5% in ciascuna coda, da cui 0.975. Con df = 9 vale circa 2.26, più largo dell'1.96 della normale: è la tassa dei piccoli campioni per aver stimato la sd dagli stessi dati.
  • Il margine di errore è il loro prodotto, il numero "±" che si legge nei titoli.

Cambiare il livello: 90%, 99% e il compromesso

conf.level controlla la copertura e, con essa, l'ampiezza:

Più confidenza costa più ampiezza: un intervallo al 99% deve essere abbastanza largo da avere ragione 99 volte su 100, quindi si allunga; un intervallo al 90% è più stretto ma sbaglia il doppio delle volte rispetto al 95%. Non ci sono pasti gratis, solo una manopola. Il 95% è pura convenzione: un valore predefinito da tenere a meno che tu non abbia un motivo, non una legge di natura.

IC per una proporzione: prop.test()

Supponi che 47 utenti su 120 intervistati adottino una nuova funzionalità. Qual è l'intervallo plausibile per il vero tasso di adozione?

Proporzione campionaria 0.39, IC al 95% più o meno da 0.30 a 0.49: dire "circa il 40% di adozione" è onesto solo con quell'alone di ±9 punti. prop.test() usa un'approssimazione migliore della formula da manuale p ± 1.96 × sqrt(p(1−p)/n) (è un intervallo di tipo Wilson con correzione di continuità), e questo conta soprattutto vicino a 0 o a 1: l'intervallo da manuale può uscire da [0, 1], questo no. Per conteggi molto piccoli, binom.test(47, 120)$conf.int dà la versione esatta.

IC per i coefficienti di un modello: confint()

I modelli stimati ottengono i loro intervalli con un'unica funzione generica:

Ogni riga racchiude un coefficiente della regressione lineare: l'intervallo al 95% della pendenza di wt va da circa −6.5 a −4.2 mpg per 1000 libbre. È più informativo del p-value del riepilogo: dice che l'effetto non è solo diverso da zero, ma vale almeno ~4 mpg e forse ~6.5.

Per un glm() logistico, confint(fit) funziona allo stesso modo ma restituisce limiti in log-odds; applica l'esponenziale per ottenere intervalli per gli odds ratio, exp(confint(fit)), e ricorda che il valore di riferimento "nessun effetto" diventa 1 invece di 0.

Dimensione del campione: la legge della radice quadrata

L'ampiezza si riduce con sqrt(n), e questo ha una conseguenza facile da ricordare: quadruplica i dati, dimezza l'intervallo. Guardalo succedere con dati simulati: stessa distribuzione, un campione 4 volte più grande (il seed rende tutto riproducibile; vedi i numeri casuali):

Le ampiezze finiscono vicine a un rapporto di 2 a 1 (il rumore di campionamento impedisce che sia esatto). La radice quadrata spiega perché la precisione diventa costosa: le prime 100 osservazioni restringono l'intervallo più delle 300 successive messe insieme, e dimezzare un intervallo già stretto costa sempre 4 volte quanto hai speso finora.

IC e p-value: due facce dello stesso test

Un intervallo di confidenza e un test d'ipotesi sono la stessa informazione con vestiti diversi. L'IC al 95% contiene esattamente i valori del parametro che un test bilaterale al livello 0.05 non rifiuterebbe. Quindi:

  • IC per una differenza di medie che esclude 0 ⇔ il t-test dà p < 0.05.
  • IC per un odds ratio che esclude 1 ⇔ il p del coefficiente è < 0.05.

Quando hai l'intervallo, di solito hai il riepilogo migliore: ti dà lo stesso verdetto di significatività più la dimensione dell'effetto in unità reali. "p = 0.03" dice che una differenza esiste; "IC al 95%: da 0.2 a 7.6" dice che esiste e che potrebbe essere trascurabile oppure enorme, ed è spesso questo il risultato che conta.

Cosa ti porti a casa

  • Il 95% descrive il tasso di successo della procedura nel lungo periodo, non la probabilità che questo singolo intervallo abbia catturato il valore vero.
  • Media: t.test(x)$conf.int, oppure a mano come media ± qt(0.975, n−1) × errore standard.
  • Proporzione: prop.test(x, n)$conf.int; coefficienti di un modello: confint(fit) (applica l'esponenziale per gli odds ratio dei glm).
  • Più confidenza = intervallo più largo; il 95% è una convenzione, non una legge.
  • L'ampiezza si riduce con sqrt(n): 4 volte i dati dimezzano l'intervallo.
  • L'IC contiene ogni valore che un test al livello 0.05 non rifiuterebbe e, a differenza del p-value, mostra la dimensione dell'effetto.

Prossimo passo: il kit di simulazione dietro a tutto questo, i numeri casuali con rnorm, runif, sample e set.seed.

Domande frequenti

Come si calcola un intervallo di confidenza al 95% in R?

Per una media, la strada più rapida è t.test(x)$conf.int. Per una proporzione, prop.test(successes, trials)$conf.int. Per i coefficienti di un modello lm() o glm() stimato, confint(fit). Tutti e tre usano il 95% come valore predefinito; cambialo con conf.level = 0.90 (o 0.99).

Cosa significa davvero un intervallo di confidenza al 95%?

È un'affermazione sulla procedura: se ripetessi lo studio molte volte e costruissi ogni volta un intervallo, circa il 95% di quegli intervalli conterrebbe il valore vero. Non significa "95% di probabilità che il parametro sia dentro questo intervallo specifico": il parametro è un numero fisso, e ogni singolo intervallo o l'ha catturato o no.

Come si calcola a mano un intervallo di confidenza in R?

Media ± valore critico × errore standard. Per una media: m <- mean(x); se <- sd(x)/sqrt(length(x)); m + c(-1, 1) * qt(0.975, df = length(x) - 1) * se. La chiamata qt(0.975, df) è il valore critico della t che lascia il 2.5% in ciascuna coda.

Come influisce la dimensione del campione su un intervallo di confidenza?

L'ampiezza si riduce con la radice quadrata di n: quadruplica il campione e l'intervallo si dimezza. Quella radice quadrata spiega perché l'ultimo pezzo di precisione è costoso: passare da ±2 a ±1 richiede quattro volte i dati, non il doppio.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA