Come calcolare gli intervalli di confidenza in python
Un intervallo di confidenza per una media è un intervallo di valori che probabilmente contiene la media della popolazione con un certo livello di confidenza.
Viene calcolato come segue:
Intervallo di confidenza = x +/- t*(s/√n)
Oro:
- x : media campionaria
- t: valore t che corrisponde al livello di confidenza
- s: deviazione standard campionaria
- n: dimensione del campione
Questo tutorial spiega come calcolare gli intervalli di confidenza in Python.
Intervalli di confidenza utilizzando la distribuzione t
Se stiamo lavorando con un campione piccolo (n < 30), possiamo utilizzare la funzione t.interval() della libreria scipy.stats per calcolare un intervallo di confidenza per la media della popolazione.
L’esempio seguente mostra come calcolare un intervallo di confidenza per l’altezza media reale della popolazione (in pollici) di una determinata specie di piante, utilizzando un campione di 15 piante:
import numpy as np import scipy.stats as st #define sample data data = [12, 12, 13, 13, 15, 16, 17, 22, 23, 25, 26, 27, 28, 28, 29] #create 95% confidence interval for population mean weight st.t.interval(alpha=0.95, df=len(data)-1, loc=np.mean(data), scale=st.sem(data)) (16.758, 24.042)
L’intervallo di confidenza al 95% per la dimensione media reale della popolazione è (16.758, 24.042) .
Noterai che maggiore è il livello di confidenza, più ampio è l’intervallo di confidenza. Ad esempio, ecco come calcolare un CI del 99% per gli stessi identici dati:
#create 99% confidence interval for same sample st.t.interval(alpha= 0.99 , df=len(data)-1, loc=np.mean(data), scale=st.sem(data)) (15.348, 25.455)
L’intervallo di confidenza al 99% per la dimensione media reale della popolazione è (15.348, 25.455) . Si noti che questo intervallo è più ampio del precedente intervallo di confidenza del 95%.
Intervalli di confidenza utilizzando la distribuzione normale
Se lavoriamo con campioni più grandi (n≥30), possiamo assumere che la distribuzione campionaria della media campionaria sia normalmente distribuita (grazie al teorema limite centrale ) e possiamo invece utilizzare la funzione norma. interval() dalla libreria scipy .stats.
L’esempio seguente mostra come calcolare un intervallo di confidenza per l’altezza media reale della popolazione (in pollici) di una determinata specie di piante, utilizzando un campione di 50 piante:
import numpy as np import scipy.stats as st #define sample data np.random.seed(0) data = np.random.randint(10, 30, 50) #create 95% confidence interval for population mean weight st.norm.interval(alpha=0.95, loc=np.mean(data), scale=st.sem(data)) (17.40, 21.08)
L’intervallo di confidenza al 95% per la dimensione media reale della popolazione è (17,40, 21,08) .
E come nel caso della distribuzione t, livelli di confidenza più elevati portano a intervalli di confidenza più ampi. Ad esempio, ecco come calcolare un CI del 99% per gli stessi identici dati:
#create 99% confidence interval for same sample st.norm.interval(alpha= 0.99 , loc=np.mean(data), scale=st.sem(data)) (16.82, 21.66)
L’intervallo di confidenza al 95% per la dimensione media reale della popolazione è (17,82, 21,66) .
Come interpretare gli intervalli di confidenza
Supponiamo che il nostro intervallo di confidenza al 95% per la vera altezza media di una specie di pianta sia:
Intervallo di confidenza al 95% = (16.758, 24.042)
Il modo di interpretare questo intervallo di confidenza è il seguente:
Esiste una probabilità del 95% che l’intervallo di confidenza di [16.758, 24.042] contenga la vera altezza media delle piante della popolazione.
Un altro modo per dire la stessa cosa è che c’è solo una probabilità del 5% che la media reale della popolazione si trovi al di fuori dell’intervallo di confidenza del 95%. Cioè, c’è solo una probabilità del 5% che l’altezza media effettiva della pianta sia inferiore a 16,758 pollici o superiore a 24,042 pollici.