49. Intervallo di confidenza#
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
import scipy.stats as st
import arviz as az
import pymc as pm
from pymc import HalfNormal, Model, Normal, sample
import warnings
warnings.filterwarnings("ignore")
warnings.simplefilter("ignore")
pd.options.mode.chained_assignment = None
# Initialize random number generator
RANDOM_SEED = 8927
rng = np.random.default_rng(RANDOM_SEED)
plt.style.use("bmh")
plt.rcParams["figure.figsize"] = [10, 6]
plt.rcParams["figure.dpi"] = 100
plt.rcParams["figure.facecolor"] = "white"
sns.set_theme(palette="colorblind")
%load_ext autoreload
%autoreload 2
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
%config InlineBackend.figure_format = "svg"
49.1. La variabilità campionaria#
Quando si estrae un campione casuale da una popolazione, la statistica calcolata su quel campione sarà diversa dal parametro della popolazione a causa della variabilità campionaria. Per valutare l’errore che si commette nella stima del parametro, l’approccio frequentista descrive la variazione della stima attorno al parametro della popolazione, ovvero la dispersione della distribuzione campionaria dello stimatore.
Come abbiamo visto in precedenza, possiamo usare la deviazione standard di una variabile casuale per misurare la dispersione della sua distribuzione. Purtroppo, nella maggior parte dei casi non possiamo calcolare direttamente la deviazione standard della distribuzione campionaria di uno stimatore. Ciò richiederebbe di estrarre molteplici campioni dalla popolazione di interesse, ma raramente abbiamo accesso a più di un campione. Invece, dobbiamo stimare la deviazione standard della distribuzione campionaria basandoci sul singolo campione che abbiamo estratto. La stima della deviazione standard della distribuzione campionaria di uno stimatore viene chiamata errore standard dello stimatore.
L’errore standard è la deviazione standard della distribuzione della stima del parametro nell’universo dei campioni e quantifica l’incertezza relativa alla stima del parametro. Mediante l’errore standard, l’approccio frequentista costruisce l’intervallo fiduciale, che fornisce una stima dell’intervallo di valori in cui ci si aspetta che, a lungo termine, il parametro cada con una certa probabilità.
49.2. L’intervallo fiduciale#
Gli statistici frequentisti utilizzano l’errore standard per quantificare l’incertezza associata alle stime campionarie e costruire un intervallo di valori noto come “intervallo di fiducia”. I limiti dell’intervallo di fiducia, chiamati “limiti fiduciari”, possono variare da campione a campione, ma si prevede che contengano il vero valore del parametro con una probabilità \(\gamma\) a lungo termine. In pratica, se il livello di fiducia è del 95%, ci si aspetta che il vero valore del parametro si trovi nel 95% degli intervalli di fiducia costruiti. L’intervallo di fiducia può essere calcolato per vari parametri, come la media, la varianza o la proporzione di una popolazione.
49.3. Calcolo dell’intervallo fiduciale#
In alcune situazioni, la distribuzione delle statistiche ottenute dai campioni si approssima alla distribuzione Normale e, in questi casi, l’intervallo fiduciale al 95% è dato da:
ovvero, è uguale alla stima del parametro più o meno 1.96 volte l’errore standard.
49.3.1. Derivazione#
Possiamo ottenere la formula precedente nel seguente modo. Supponiamo di avere una popolazione normale con media \(\mu\) e varianza \(\sigma^2\) e di estrarre un campione casuale \(X_1, X_2, \dots, X_n\) da essa. Per le proprietà della distribuzione normale, anche la media campionaria seguirà una distribuzione normale: \(\bar{X} \sim \mathcal{N}(\mu, \sigma/n)\). Di conseguenza, la media campionaria standardizzata seguirà una distribuzione normale standard:
Fissato un livello di confidenza \(\gamma = 1 - \alpha\) (tipicamente \(\gamma = 0.95\), corrispondente a \(\alpha = 0.05\)), possiamo trovare il valore di \(z\) corrispondente al quantile di ordine \(1 - \alpha/2\) della distribuzione normale standard (chiamato “coefficiente fiduciario”). In altre parole, \(z\) rappresenta il valore tale che la probabilità che una variabile casuale normale standardizzata assuma un valore compreso tra \(-z\) e \(z\) sia pari a \(1 - \alpha\): \(P(-z \leq Z \leq z) = 1 - \alpha\).
Utilizzando questa informazione, possiamo scrivere l’intervallo di confidenza per la media popolazionale come:
Questo intervallo di confidenza rappresenta l’intervallo in cui ci aspettiamo che la media popolazionale cada con una certa probabilità, basata sul campione casuale estratto. L’intervallo di confidenza per la media popolazionale può essere quindi utilizzato per inferire informazioni sulla popolazione sulla base delle proprietà del campione estratto.
Applicando qualche manipolazione algebrica, la diseguaglianza precedente si può scrivere nel modo seguente:
Possiamo definire l’intervallo di confidenza per una stima della media al livello fiduciario \(\gamma = 1 − \alpha\) come l’intervallo \((\hat{a}, \hat{b})\) dove:
e tale che \(P(\hat{a} \leq \mu \leq \hat{b}) = 1 − \alpha\). In altre parole, l’intervallo di confidenza contiene il vero valore del parametro della media \(\mu\) con probabilità \(\gamma\). Questo tipo di intervallo è comunemente utilizzato nelle applicazioni pratiche dell’inferenza frequentista.
49.3.2. Popolazione con varianza incognita#
In ogni applicazione concreta, lo sperimentatore estrae un solo campione \(x_1, \dots, x_n\) dalla popolazione e la varianza \(\sigma^2\), in aggiunta alla media \(\mu\) da determinare, è sconosciuta. In tal caso, per effettuare una stima intervallare di \(\mu\) ci si basa sulla densità \(t\)-Student.
L’inferenza frequentista per il caso di \(\sigma^2\) ignoto si basa sul Teorema per cui
dove \(s\) è lo stimatore di \(\sigma\) e \(t^{\ast} \triangleq t_{n−1,1−\alpha/2}\) è il quantile di ordine \(1 − \alpha/2\) della distribuzione \(t_{n−1}\). Pertanto, il limite inferiore \(\hat{a}\) e il limite superiore \(\hat{b}\) dell’intervallo di confidenza diventano, rispettivamente, uguali a:
Si noti che, nel caso di una popolazione con varianza sconosciuta, i limiti fiduciari si ottengono come nel caso precedente (\(\sigma^2\) nota) sostituendo \(\sigma\), ora incognito, con \(s\) (per una ampiezza campionaria \(n\) qualsiasi), e il coefficiente \(z\) con \(t_{n−1,1−\alpha/2}\).
La presente derivazione è stata ricavata nella ipotesi che la popolazione sia normalmente distribuita e vale anche per piccoli campioni (\(n < 30\)) estratti casualmente da questa. Se invece, nel caso di piccoli campioni, la popolazione non è normalmente distribuita, non sono soddisfatte le ipotesi che sono state qui presentate e l’intervallo di fiducia non può essere calcolato con la procedura presente.
Per una popolazione con distribuzione diversa da quella normale, le stime intervallari per la media della popolazione si possono ancora ottenere se la numerosità del campione è sufficientemente elevata (\(n \geq 30\)), come conseguenza del teorema del limite centrale.
49.4. Il livello di copertura#
Sebbene calcolare l’intervallo di fiducia per la media della popolazione sia relativamente semplice, la sua interpretazione può risultare meno intuitiva. Per comprendere correttamente l’intervallo di fiducia, è necessario considerare il concetto di livello di copertura. In pratica, il livello di copertura rappresenta la probabilità che l’intervallo di fiducia contenga il valore del parametro sconosciuto a lungo termine. Ad esempio, se il livello di copertura è del 95%, ci aspettiamo che l’intervallo di fiducia contenga il valore del parametro con una probabilità del 95%. Tuttavia, non dobbiamo confondere il livello di copertura con la probabilità che il valore del parametro cada all’interno dell’intervallo di fiducia, poiché il parametro è un valore fisso e non ha una distribuzione di probabilità. Invece, l’intervallo di fiducia è una stima intervallare che può contenere o meno il valore del parametro.
Il livello di copertura di un intervallo di confidenza rappresenta la probabilità a lungo termine che la procedura di costruzione di tale intervallo produca un intervallo che contenga il vero valore del parametro di interesse. Questo concetto è fondamentale nella statistica frequentista, dove la probabilità viene definita come la proporzione di volte in cui un evento si verifica nel caso di molteplici ripetizioni dell’esperimento casuale sotto le medesime condizioni. Nel contesto della costruzione dell’intervallo di confidenza, l’esperimento casuale è l’estrazione di un campione casuale dalla popolazione e il risultato dell’esperimento casuale è l’intervallo di fiducia (che può essere diverso in ciascun campione). Il livello di copertura, solitamente indicato con \(1-\alpha\), rappresenta la probabilità a lungo termine che l’intervallo di fiducia contenga il vero valore del parametro, dove \(\alpha\) rappresenta il livello di significatività scelto per l’intervallo di confidenza.
Per aiutare a comprendere meglio questo concetto, possiamo eseguire una simulazione. Consideriamo la popolazione dell’altezza degli adulti maschi italiani, supponendo che essa segua una distribuzione normale con media di \(175\) cm e varianza di \(49\) cm\(^2\). Successivamente, effettuiamo una simulazione nella quale consideriamo 1000 ripetizioni dell’esperimento casuale, che consiste nell’estrazione di un campione casuale di dimensione \(n=20\) dalla popolazione descritta sopra. Per ogni campione, calcoliamo l’intervallo di confidenza al 95% come segue:
dove \(\bar{X}\) è la media campionaria, \(s\) è la deviazione standard campionaria e \(t\) è il valore critico della distribuzione t di Student con \(n-1\) gradi di libertà e livello di significatività \(\alpha/2=0.025\).
Successivamente, salviamo i limiti inferiori e superiori di ogni intervallo di confidenza così calcolato. Infine, verifichiamo quanti di questi intervalli contengono effettivamente il valore reale del parametro della popolazione.
Partiamo generando 1000 campioni casuali di dimensione \(n=30\) da una distribuzione normale con media \(175\) e deviazione standard \(7\).
mu = 175
sigma = 7
n = 30
n_samples = 1000
samples = np.stack([np.random.normal(loc=mu, scale=sigma, size=n) for i in range(n_samples)])
samples.shape
(1000, 30)
Il primo campione di ampiezza \(n\) = 30 che abbiamo ottenuto è il seguente.
print(*samples[1, :])
175.7663331339195 175.50515817083087 169.05937188831624 184.38556191652395 166.56666399805164 167.07766792968164 188.74609572734363 183.49722190713857 176.86777388683552 173.62530693502245 182.03046948533338 182.95842684131188 183.700963324354 179.5969026149594 164.75840730869996 170.83862668957195 170.88346675951362 169.67746901061165 155.88477867427127 171.36170508202827 179.48865261864816 159.41846873974595 173.15971961823055 175.1373164271856 175.028952408375 169.70519688748587 179.61405011257642 169.8393511593663 174.2862968945672 178.10463325498333
Stampiamo qui di seguito le medie dei primi dieci campioni.
xbar = samples.mean(axis=1)
print(*xbar[0:10])
177.1659197769419 174.21903364684945 172.89877119090974 176.51709027313953 173.93883221835938 175.22419495504485 174.41890792015874 176.5440402091041 175.55987552220694 175.7586964736327
Troviamo ora il valore critico della distribuzione \(t\) di Student con (30-1) gradi di libertà.
alpha = 0.05
t = st.t.ppf(1 - alpha/2, n-1)
t
2.045229642132703
Utilizzando le informazioni precedenti, possiamo calcolare 1000 intervalli di confidenza per la media della popolazione.
interval_width = t * samples.std(axis=1, ddof=1) / np.sqrt(n)
CI_low = samples.mean(axis=1) - interval_width
CI_high = samples.mean(axis=1) + interval_width
Calcoliamo ora il livello di copertura, ovvero il numero di volte in cui l’intervallo di confidenza calcolato contiene il vero valore del parametro.
coverage_p = np.sum(np.logical_and(CI_low < mu, mu < CI_high)) / samples.shape[0]
coverage_p
0.955
In conclusione, ripetendo la simulazione per 1000 volte, abbiamo ottenuto una proporzione di intervalli di confidenza del 95% che contengono il parametro (ovvero il livello di copertura) molto vicino al valore nominale di \(1 - \alpha = 0.95\).
49.5. Interpretazione#
Gli intervalli di confidenza rappresentano un intervallo di valori che, con un determinato livello di confidenza, contiene il parametro di interesse. Tuttavia, è importante fare una distinzione tra il livello di confidenza e la probabilità che il parametro sia contenuto all’interno dell’intervallo. Il livello di confidenza si riferisce alla proporzione di volte in cui l’intervallo di confidenza copre il vero valore del parametro, e non alla probabilità che il parametro cada all’interno dell’intervallo. In altre parole, se l’esperimento venisse ripetuto molte volte, l’intervallo di confidenza conterrà il parametro di interesse nel 95% dei casi, se il livello di confidenza è del 95%.
Definizione
In termini frequentisti, l’intervallo di confidenza va interpretato come la procedura di calcolo che, se ripetuta molte volte, producirà un intervallo che coprirà il valore reale del parametro con una certa probabilità, data dal livello di confidenza scelto. Tuttavia, non possiamo affermare con certezza che un particolare intervallo di confidenza contenga il vero valore del parametro. L’importante distinzione da fare è che il livello di confidenza non è la probabilità che il parametro si trovi nell’intervallo, ma la probabilità che l’intervallo contenga il parametro se l’esperimento viene ripetuto molte volte.
L’interpretazione corretta dell’intervallo di confidenza al livello \(100 (1-\alpha)\)% è quella secondo cui, se ripetessimo l’esperimento di estrazione di un campione casuale e il calcolo dell’intervallo di confidenza molte volte, allora in circa \(100 (1-\alpha)\)% dei casi gli intervalli così calcolati conterranno il vero valore del parametro. Tuttavia, è noto che spesso i ricercatori (e non solo gli studenti) commettono l’errore di attribuire agli intervalli di confidenza un’interpretazione errata, come ad esempio: “la probabilità che la media della popolazione \(\mu\) sia contenuta nell’intervallo \([\hat{a}, \hat{b}]\) è del 95%”. La formulazione corretta sarebbe invece: “la procedura utilizzata per calcolare l’intervallo \([\hat{a}, \hat{b}]\) ha una probabilità del 95% di produrre un intervallo che copre il valore reale del parametro”. In sintesi, l’intervallo di confidenza non fornisce una probabilità sulla posizione del parametro, ma piuttosto una probabilità sulla capacità della procedura utilizzata per calcolare l’intervallo di produrre un intervallo che copre il valore reale del parametro.
49.5.1. Fraintendimenti#
Nel lavoro di [HMRW14] si evidenzia come, dato che i limiti del test di ipotesi nulle sono ampiamente riconosciuti, spesso per l’inferenza statistica venga consigliato l’utilizzo degli intervalli di confidenza. In particolare, il Manuale di Pubblicazione dell’American Psychological Association suggerisce che gli intervalli di confidenza siano “in generale, la migliore strategia di reportistica” (APA, 2001, p. 22; APA, 2009, p. 34). Tuttavia, [HMRW14] mettono in evidenza che tali raccomandazioni presentano dei limiti, in quanto non tengono conto della difficoltà dei ricercatori nel fornire una corretta interpretazione degli intervalli di confidenza. A supporto di questo punto di vista, [HMRW14] hanno condotto uno studio in cui si pongono due domande:
In che misura gli intervalli di confidenza sono interpretati in modo errato da studenti e ricercatori?
Le interpretazioni errate degli intervalli di confidenza diminuiscono con l’esperienza nella ricerca?
Prima di presentare lo studio, [HMRW14] ricordano qual è l’interpretazione corretta degli intervalli di confidenza.
A CI is a numerical interval constructed around the estimate of a parameter. Such an interval does not, however, directly indicate a property of the parameter; instead, it indicates a property of the procedure, as is typical for a frequentist technique. Specifically, we may find that a particular procedure, when used repeatedly across a series of hypothetical data sets (i.e., the sample space), yields intervals that contain the true parameter value in 95% of the cases. When such a procedure is applied to a particular data set, the resulting interval is said to be a 95% CI. The key point is that the CIs do not provide for a statement about the parameter as it relates to the particular sample at hand; instead, they provide for a statement about the performance of the procedure of drawing such intervals in repeated use. Hence, it is incorrect to interpret a CI as the probability that the true value is within the interval (e.g., Berger & Wolpert, 1988). As is the case with \(p\)-values, CIs do not allow one to make probability statements about parameters or hypotheses.
Nel loro studio, Hoekstra et al. [HMRW14] hanno sottoposto il questionario riportato di seguito ad un campione di 596 partecipanti. Il campione includeva 442 studenti di psicologia del primo anno che seguivano un corso introduttivo di statistica presso l’università di Amsterdam, 34 studenti di master e 120 ricercatori (cioè dottorandi e docenti universitari).
Professor Bumbledorf conducts an experiment, analyzes the data, and reports: “The 95% confidence interval for the mean ranges from 0.1 to 0.4.” Please mark each of the statements below as ‘true’ or ‘false’.
The probability that the true mean is greater than 0 is at least 95%.
The probability that the true mean equals 0 is smaller than 5%.
The “null hypothesis” that the true mean equals 0 is likely to be incorrect.
There is a 95% probability that the true mean lies between 0.1 and 0.4.
We can be 95% confident that the true mean lies between 0.1 and 0.4.
If we were to repeat the experiment over and over, then 95% of the time the true mean falls between 0.1 and 0.4.
Le sei affermazioni precedenti sono tutte errate. I risultati dello studio di Hoekstra et al. [HMRW14] mostrano però che i partecipanti si sono dichiarati d’accordo con il seguente numero medio di item (su 6): 3.51 (99% CI = [3.35, 3.68]) per gli studenti del primo anno, 3.24 (99% CI = [2.40, 4.07]) per gli studenti di master e 3.45 (99% CI = [3.08, 3.82]) per i ricercatori. Gli intervalli di fiducia al 95% si sovrappongono per le tre categorie di rispondenti il che significa che, a tale livello di fiducia, non c’è ragione di ritenere che vi siano delle differenze tra i tre gruppi di rispondenti. In altre parole, questi dati suggeriscono che i ricercatori tendono a condividere con gli studenti di psicologia del primo anno le stesse opinioni (errate!) relativamente agli intervallo fiduciali.
Le interpretazioni errate degli intervalli di fiducia sono dunque molto diffuse e l’esperienza pratica nel mondo della ricerca non contribuisce ad una comprensione migliore di tale concetto. In generale, i risultati della ricerca di Hoekstra et al. [HMRW14], e di altre che hanno prodotto risultati simili, mettono in discussione l’utilità degli intervalli fiduciali frequentisti (dato che poche persone hanno una comprensione adeguata di tale concetto), favorendo invece l’uso degli “intervallo di credibilità” Bayesiani ai quali è più facile fornire un’interpretazione corretta, perché tale interpretazione coincide con le nostre intuizioni.
49.6. Confronto tra intervalli frequentisti e bayesiani#
Concludiamo la discussione di questo capitolo presentando un confronto tra l’intervallo di confidenza frequentista e l’intervallo di credibilità bayesiano calcolati a partire dagli stessi dati.
49.6.1. Intervallo di confidenza#
Supponiamo di disporre di un insieme di \(n\) = 20 osservazioni che riguardano la prestazione in un compito cognitivo e di volere stimare la media della popolazione da cui quelle osservazioni sono state estratte. Simuliamo 20 valori a caso dalla popolazione \(\mathcal{N}(50, 10)\).
sample_size = 20
mu = 50
sigma = 10
sample_data = np.random.normal(loc=mu, scale=sigma, size=n)
print(sample_data)
[49.90692326 52.39013916 49.60379796 35.21798163 60.06038263 52.61955467
50.12532734 48.82188231 49.46217725 42.98356734 42.13600726 42.21725638
37.98261022 49.64612455 40.80747708 36.60479073 33.65446636 40.07401429
39.57627665 53.42994328 44.66747187 75.13481513 40.10959963 48.81007597
53.81662987 54.9150626 41.03122661 58.32267765 31.44092666 59.46909934]
_ = plt.hist(sample_data, density=True, alpha=0.5)
Un modo per affrontare il problema della stima di \(\mu\) utilizzando un approccio frequentista è attraverso la stima puntuale. La stima puntuale prevede l’utilizzo di un singolo valore, come ad esempio la media campionaria, per rappresentare il parametro della popolazione sconosciuto.
La media campionaria, \(\hat{\mu}\), è una stima puntuale comunemente usata per la media della popolazione, \(\mu\). Viene calcolata come la somma dei valori campionari, \(x_1, x_2, ..., x_n\), divisa per la dimensione del campione, \(n\):
Per i dati dell’esempio, abbiamo
sample_mean = np.mean(sample_data)
sample_mean
47.16794285611165
Tuttavia, le stime puntuali da sole non forniscono una caratterizzazione completa dell’incertezza relativa alla stima. Per quantificare questa incertezza, l’approccio frequentista utilizza l’intervallo di confidenza. Un intervallo di confidenza è una stima dell’intervallo probabile del vero parametro della popolazione basata sui dati osservati, e viene costruito aggiungendo e sottraendo un margine di errore dalla stima puntuale:
Il margine di errore è determinato dal livello di confidenza desiderato e dalla dimensione del campione, e riflette la variabilità nei dati del campione. Ad esempio, un intervallo di confidenza del 95% indica che la procedura che abbiamo usato produce un risultato corretto (ovvero il fatto che il vero parametro della popolazione si trovi all’interno dell’intervallo) nel 95% dei casi.
Il margine di errore è determinato dal livello di confidenza desiderato, \(1-\alpha\), e dalla dimensione del campione, \(n\). Riflette la variabilità nei dati del campione ed è calcolato tipicamente utilizzando l’errore standard, \(SE\), della stima puntuale:
dove \(t_{1-\frac{\alpha}{2}, n-1}\) è il valore critico della distribuzione \(t\) con \(n-1\) gradi di libertà per il livello di confidenza desiderato.
L’errore standard della media del campione è calcolato come la deviazione standard del campione, \(\sigma\), divisa per la radice quadrata della dimensione del campione:
Per i dati dell’esempio, la deviazione standard del campione è
sample_stddev = np.std(sample_data, ddof=1)
sample_stddev
9.361957956256532
L’errore standard della media è
standard_error = sample_stddev / np.sqrt(sample_size)
print(standard_error)
2.0933974392684607
L’errore standard della media rappresenta una stima della deviazione standard della distribuzione delle medie campionarie per campioni di dimensione \(n\) (in questo caso, \(n\) = 20).
Supponiamo di voler avere un livello di confidenza del 95%. Per trovare il valore critico della distribuzione \(t\) di Student, dobbiamo trovare il valore della statistica \(T\) che lascia il 2.5% dell’area sotto la coda a sinistra e il 2.5% dell’area sotto la coda a destra della distribuzione \(t\) di Student con 19 gradi di libertà.
degrees_of_freedom = sample_size - 1
t_val = st.t.ppf(0.975, degrees_of_freedom)
print(t_val)
2.093024054408263
Il margine d’errore è uguale a
ovvero
margin_of_error = t_val * standard_error
print(margin_of_error)
4.381531195825549
L’intervallo di confidenza frequentista è uguale a
ovvero
Per i dati dell’esempio otteniamo
confidence_interval_lower = sample_mean - margin_of_error
confidence_interval_upper = sample_mean + margin_of_error
confidence_interval = [confidence_interval_lower, confidence_interval_upper]
print(confidence_interval)
[42.7864116602861, 51.5494740519372]
Interpretiamo questo risultato dicendo che la procedura utilizzata per calcolare l’intervallo \([42.99, 53.23]\) include \(\mu\) nel 95% dei casi.
La figura successiva mostra la distribuzione dei dati, la stima di \(\mu\) (ovvero, la media del campione) e l’intervalli di confidenza al 95%.
def visualize_output(sample_data, sample_mean, interval, type_interval):
plt.hist(sample_data, density=True, alpha=0.5)
plt.axvline(x=sample_mean, color='r', linestyle='dashed', linewidth=2)
plt.axvline(x=interval[0], color='g', linewidth=2)
plt.axvline(x=interval[1], color='g', linewidth=2)
plt.legend(['Sample Mean', f'{type_interval} interval'])
plt.show()
visualize_output(sample_data, sample_mean, confidence_interval, 'confidence')
49.6.2. Intervallo di credibilità#
model = pm.Model()
with model:
mu = pm.Normal("mu", mu=sample_mean, sigma=20)
sigma = pm.HalfNormal("sigma", 20)
Y_obs = pm.Normal("Y_obs", mu=mu, sigma=sigma, observed=sample_data)
with model:
idata = pm.sample()
Auto-assigning NUTS sampler...
Initializing NUTS using jitter+adapt_diag...
Multiprocess sampling (4 chains in 4 jobs)
NUTS: [mu, sigma]
Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 22 seconds.
az.summary(idata, hdi_prob=0.95, round_to=2)
mean | sd | hdi_2.5% | hdi_97.5% | mcse_mean | mcse_sd | ess_bulk | ess_tail | r_hat | |
---|---|---|---|---|---|---|---|---|---|
mu | 47.13 | 1.82 | 43.66 | 50.75 | 0.03 | 0.02 | 3741.93 | 2790.20 | 1.0 |
sigma | 9.77 | 1.38 | 7.34 | 12.52 | 0.02 | 0.02 | 3682.89 | 3024.22 | 1.0 |
Si noti che, per i dati considerati e per come il modello bayesiano è stato specificato, l’intervallo di credibilità è molto simile all’intervallo di confidenza frequentista. Tuttavia, l’interpretazione è molto più semplice: con un grado di fiducia soggettivo del 95%, possiamo affermare che la media della popolazione è contenuta nell’intervallo trovato.
49.7. Commenti e considerazioni finali#
Secondo Hoekstra et al. [HMRW14], gli intervalli di fiducia sono spesso mal interpretati. Il livello di confidenza del 95% si riferisce alla certezza che, a lungo termine, il 95% degli intervalli di fiducia includerà il parametro sconosciuto. Non si può dire nulla riguardo ad uno specifico intervallo di fiducia, che potrebbe includere o escludere il parametro sconosciuto, ma il ricercatore non può sapere quale delle due opzioni sia quella corretta. Inoltre, non esiste alcuna relazione tra la varianza e la media di un campione, quindi non possiamo dedurre che un intervallo di fiducia più stretto sia anche più preciso. In un contesto frequentista, la precisione si riferisce solo al livello di copertura a lungo termine fornito dalla procedura di generazione degli intervalli di fiducia e non riguarda il singolo intervallo osservato. Di conseguenza, un intervallo di fiducia molto stretto potrebbe essere anche molto lontano dal vero valore del parametro sconosciuto.
49.8. Watermark#
%load_ext watermark
%watermark -n -u -v -iv -w
Last updated: Sat Jun 17 2023
Python implementation: CPython
Python version : 3.11.3
IPython version : 8.12.0
pymc : 5.5.0
seaborn : 0.12.2
pandas : 1.5.3
numpy : 1.24.3
arviz : 0.15.1
matplotlib: 3.7.1
scipy : 1.10.1
Watermark: 2.3.1