Distribuzione ipergeometrica: teoria, esercizi svolti e applicazioni in Python

Cerca:

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Distribuzione ipergeometrica – Esercizi

Immagina di pescare dei cioccolatini da una scatola.

Se ne prendi uno al liquore, lo mangi e poi ne cerchi un altro, la probabilità di pescarne un secondo al liquore non è più la stessa di prima.

Il motivo è semplice: nella scatola c’è un cioccolatino in meno.

Questa situazione apparentemente banale contiene una delle idee fondamentali della probabilità: quando campioniamo da una popolazione finita senza reinserimento, le osservazioni successive non sono indipendenti.

Molti modelli probabilistici diventano più semplici quando assumiamo che ogni prova abbia la stessa probabilità di successo e che le prove siano indipendenti. Ma questa assunzione non è sempre appropriata.

Se sottopongo componenti elettronici a un test distruttivo, quelli già testati non possono essere nuovamente estratti dal lotto. Se controllo un campione di prodotti presenti in un magazzino, ogni prodotto estratto modifica ciò che rimane disponibile. Se seleziono persone da una popolazione finita senza reinserimento, la composizione del gruppo rimanente cambia a ogni estrazione.

In tutti questi casi abbiamo bisogno di un modello che tenga conto della dipendenza introdotta dal campionamento senza reinserimento.

È qui che entra in gioco la distribuzione ipergeometrica.

In questo articolo partiremo dall’intuizione e dalla formula matematica, per arrivare progressivamente a probabilità cumulative, valore atteso e varianza, approssimazione binomiale, distribuzione ipergeometrica multivariata e, infine, a un problema di decisione aziendale.

Ogni esercizio sarà accompagnato da codice Python, interpretazione del risultato e osservazioni applicative.

Pubblicità

La distribuzione ipergeometrica: quando usarla

La distribuzione ipergeometrica descrive il numero di successi ottenuti in un campione di dimensione n, estratto senza reinserimento da una popolazione finita di dimensione N.

Nella popolazione:

  • N = numero totale di elementi;
  • K = numero di elementi classificati come “successi”;
  • N-K = numero di insuccessi;
  • n = dimensione del campione;
  • X = numero di successi osservati nel campione.

La notazione può essere sintetizzata come:

[math]\displaystyle X \sim Hypergeom(N,K,n)[/math]

La differenza rispetto alla distribuzione binomiale

La distinzione fondamentale non è semplicemente “reinserimento contro mancato reinserimento”. Dal punto di vista probabilistico, la binomiale richiede un numero fissato di prove indipendenti, ciascuna con la stessa probabilità di successo p.

Nel campionamento senza reinserimento da una popolazione finita, invece, ogni estrazione modifica la composizione della popolazione residua. Le prove sono quindi dipendenti e la probabilità di successo cambia nel corso del campionamento.

La probabilità iniziale di successo è:

[math]\displaystyle p=\frac{K}{N}[/math]

Dopo aver estratto un successo, però, diventa:

[math]\displaystyle \frac{K-1}{N-1}[/math]

Dopo un insuccesso diventa invece:

[math]\displaystyle \frac{K}{N-1}[/math]

Questa variazione è esattamente ciò che la distribuzione ipergeometrica incorpora nel modello.

Quando la incontri nella realtà?

  • Controllo qualità di lotti finiti;
  • campionamento senza reinserimento in popolazioni finite;
  • sondaggi quando si ragiona su una popolazione finita;
  • giochi e lotterie senza reinserimento;
  • genetica, quando si campionano elementi da popolazioni finite;
  • ecologia, quando si seleziona un campione da una popolazione finita.
Attenzione: la distribuzione ipergeometrica può comparire anche in problemi di cattura-ricattura, ma il semplice campionamento senza reinserimento non costituisce di per sé un modello completo di cattura-ricattura.

La formula della distribuzione ipergeometrica

La probabilità di osservare esattamente k successi nel campione è:

[math]\displaystyle \begin{aligned}
P(X=k)=
\frac{\binom{K}{k}\binom{N-K}{n-k}}
{\binom{N}{n}}
\end{aligned}[/math]

La formula può essere letta combinatorialmente.

Il numeratore conta i campioni che contengono:

  • k successi scelti tra i K disponibili;
  • n-k insuccessi scelti tra i N-K disponibili.

Il denominatore conta invece tutti i possibili campioni di dimensione n estraibili dalla popolazione.

Quali valori di k sono possibili?

Un dettaglio importante, spesso trascurato negli esercizi introduttivi, è che non tutti i valori da 0 a n sono necessariamente possibili.

Il supporto della distribuzione è:

[math]\displaystyle
\max(0,n-(N-K))\leq k\leq\min(n,K)
[/math]

Il primo limite deriva dal numero massimo di insuccessi disponibili; il secondo dal numero di successi presenti nella popolazione.

Questo spiega anche perché, utilizzando scipy.stats.hypergeom, alcuni valori di k possono avere probabilità esattamente pari a zero.

📚 Per approfondire: Distribuzione ipergeometrica, binomiale e controllo qualità

Per capire quando utilizzare la distribuzione ipergeometrica e quando invece è più appropriato il modello binomiale, questi articoli approfondiscono teoria, differenze tra le due distribuzioni, esercizi svolti e applicazioni pratiche al controllo qualità:

👉 Distribuzione ipergeometrica: cos’è, come si usa e quando si usa

👉 Binomiale vs ipergeometrica: l’errore che costa caro

👉 Differenze tra distribuzione binomiale e ipergeometrica

👉 Distribuzione ipergeometrica: esercizi risolti e spiegati passo a passo

👉 Statistica per il controllo qualità: quando usare la distribuzione ipergeometrica

 

Esercizio 1 – Controllo qualità base

Difficoltà: facile

Testo

Un’azienda produce componenti elettronici. In un lotto di 20 pezzi, 5 sono difettosi. Viene prelevato un campione casuale di 4 pezzi senza reinserimento.

Calcola la probabilità che nel campione ci siano esattamente 2 pezzi difettosi.

Soluzione

Definiamo i parametri:

  • [math]N=20[/math] = totale dei pezzi;
  • [math]K=5[/math] = pezzi difettosi;
  • [math]n=4[/math] = dimensione del campione;
  • [math]k=2[/math] = difettosi osservati.

La funzione di massa di probabilità è:

[math]\displaystyle \begin{aligned}
P(X=k)=
\frac{\binom{K}{k}\binom{N-K}{n-k}}
{\binom{N}{n}}
\end{aligned}[/math]

Per k=2:

[math]\displaystyle \begin{aligned}
P(X=2)=
\frac{\binom{5}{2}\binom{15}{2}}
{\binom{20}{4}}
\end{aligned}[/math]

I coefficienti binomiali sono:

  • [math]\binom{5}{2}=10[/math]
  • [math]\binom{15}{2}=105[/math]
  • [math]\binom{20}{4}=4845[/math]

Quindi:

[math]\displaystyle \begin{aligned}
P(X=2)
&=\frac{10\cdot105}{4845}\
&=\frac{1050}{4845}\
&\approx0.2167
\end{aligned}[/math]

La probabilità è quindi circa 21,67%.

Grafico della PMF

Distribuzione ipergeometrica per il controllo qualità di un lotto

💡 Osservazione

La distribuzione è leggermente asimmetrica verso destra: nella popolazione i difettosi rappresentano il 25% del totale e il numero di successi possibili nel campione è limitato.

La probabilità massima si verifica in corrispondenza di [math]k=1[/math].

Domanda di riflessione

Quale assunzione sulle estrazioni distingue in questo caso la distribuzione ipergeometrica dalla binomiale?


Esercizio 2 – Probabilità cumulativa: “almeno…”

Difficoltà: medio

Testo

Un’azienda produce batterie. In una scatola da 30 batterie, 6 hanno una durata inferiore a quella dichiarata. Un cliente acquista 5 batterie scelte a caso senza reinserimento.

Qual è la probabilità che almeno 2 delle batterie acquistate siano difettose?

Soluzione

Abbiamo:

  • [math]N=30[/math]
  • [math]K=6[/math]
  • [math]n=5[/math]

Vogliamo calcolare:

[math]\displaystyle
P(X\geq2)
[/math]

È più semplice utilizzare il complemento:

[math]\displaystyle \begin{aligned}
P(X\geq2)
&=1-P(X\leq1)\
&=1-[P(X=0)+P(X=1)]
\end{aligned}[/math]

Per zero difettose:

[math]\displaystyle
P(X=0)=
\frac{\binom{6}{0}\binom{24}{5}}
{\binom{30}{5}}
\approx0.2983
[/math]

Forse potrebbe interessarti anche:  Divergenza e distanza di Jensen-Shannon: teoria, Python e Data Drift

Per una difettosa:

[math]\displaystyle
P(X=1)=
\frac{\binom{6}{1}\binom{24}{4}}
{\binom{30}{5}}
\approx0.4473
[/math]

Quindi:

[math]\displaystyle
P(X\geq2)
=1-(0.2983+0.4473)
\approx0.2544
[/math]

La probabilità è circa 25,44%.

Grafico della PMF e della CDF

PMF e CDF della distribuzione ipergeometrica

Perché usare il complemento?

Quando chiediamo “almeno 2”, sommare direttamente tutte le probabilità

[math]\displaystyle P(X=2)+P(X=3)+\cdots[/math]

è possibile, ma spesso meno conveniente.

Il complemento permette di trasformare:

[math]\displaystyle P(X\geq2)[/math]

in:

[math]\displaystyle 1-P(X\leq1)[/math]

e la CDF di SciPy rende questo calcolo immediato.


Esercizio 3 – Valore atteso e varianza

Difficoltà: medio-alto

Testo

In un allevamento ittico, su 100 pesci presenti in una popolazione, 40 sono stati marcati. Si catturano 12 pesci senza reintroduzione.

  • Calcola il valore atteso e la varianza del numero di pesci marcati nel campione.
  • Calcola la probabilità che il numero di pesci marcati sia compreso tra 3 e 6, estremi inclusi.

Soluzione

I parametri sono:

[math]\displaystyle N=100,\qquad K=40,\qquad n=12
[/math]

Valore atteso

Per la distribuzione ipergeometrica:

[math]\displaystyle
E[X]=n\frac{K}{N}
[/math]

Nel nostro caso:

[math]\displaystyle
E[X]=12\cdot\frac{40}{100}=4.8
[/math]

In media, quindi, ci aspettiamo 4,8 pesci marcati nel campione.

Varianza

La varianza è:

[math]\displaystyle
Var(X)=
n\frac{K}{N}
\frac{N-K}{N}
\frac{N-n}{N-1}
[/math]

L’ultimo fattore:

[math]\displaystyle
\frac{N-n}{N-1}
[/math]

è la correzione per popolazione finita.

Sostituendo:

[math]\displaystyle
Var(X)=
12\cdot0.4\cdot0.6\cdot\frac{88}{99}
\approx2.56
[/math]

Quindi:

[math]\displaystyle
Var(X)\approx2.56
[/math]

e la deviazione standard è:

[math]\displaystyle
\sigma_X=\sqrt{2.56}\approx1.60
[/math]

Probabilità tra 3 e 6 marcati

Vogliamo:

[math]\displaystyle
P(3\leq X\leq6)
[/math]

Possiamo sommare le probabilità della PMF per [math]k=3,4,5,6[/math].

import numpy as np
from scipy.stats import hypergeom

N, K, n = 100, 40, 12

k_vals = np.arange(3, 7)
pmf_vals = hypergeom.pmf(k_vals, N, K, n)

prob = np.sum(pmf_vals)

print(f"P(3 ≤ X ≤ 6) = {prob:.4f}")
P(3 ≤ X ≤ 6) = 0.7865

La probabilità è quindi circa 78,65%.

Grafico della PMF

PMF della distribuzione ipergeometrica nell'esercizio sui pesci marcati

💡 Osservazione

La varianza ipergeometrica contiene il fattore di correzione per popolazione finita:

[math]\displaystyle
\frac{N-n}{N-1}
[/math]

che è inferiore a 1 quando il campione è più piccolo della popolazione.

Questo significa che il campionamento senza reinserimento produce, a parità di

p=K/N

e

n

, una variabilità inferiore rispetto al corrispondente modello binomiale.

Domanda di riflessione

Come cambierebbe la varianza se il campionamento fosse effettuato con reinserimento?

Pubblicità

Esercizio 4 – Quando l’ipergeometrica può essere approssimata dalla binomiale?

Difficoltà: alta

Testo

In una città di 1000 elettori, 400 sono favorevoli a un certo candidato. Si estrae un campione casuale di 50 elettori senza reinserimento.

  • Calcola esattamente la probabilità che nel campione ci siano almeno 20 favorevoli, usando la distribuzione ipergeometrica.
  • Approssima la stessa probabilità con una distribuzione binomiale.
  • Confronta i due risultati.

Soluzione

Per il modello ipergeometrico:

[math]\displaystyle
N=1000,\qquad K=400,\qquad n=50
[/math]

La proporzione di favorevoli nella popolazione è:

[math]\displaystyle
p=\frac{K}{N}=0.4
[/math]

Il modello binomiale approssimante sarà quindi:

[math]\displaystyle
Y\sim Binom(50,0.4)
[/math]

Calcoliamo entrambe le probabilità con Python.

from scipy.stats import hypergeom, binom

N, K, n = 1000, 400, 50
p = K / N

# Ipergeometrica: P(X >= 20)
prob_hyper = 1 - hypergeom.cdf(19, N, K, n)

# Binomiale: P(Y >= 20)
prob_binom = 1 - binom.cdf(19, n, p)

print(f"Ipergeometrica: {prob_hyper:.4f}")
print(f"Binomiale:      {prob_binom:.4f}")
Ipergeometrica: 0.5553
Binomiale:      0.5535

I due valori sono:

  • 55,53% con il modello ipergeometrico;
  • 55,35% con il modello binomiale.

La differenza è quindi molto piccola.

Grafico di confronto delle PMF

Confronto tra distribuzione ipergeometrica e binomiale

Perché l’approssimazione funziona?

La quantità chiave è la frazione di campionamento:

[math]\displaystyle
f=\frac{n}{N}
[/math]

Nel nostro caso:

[math]\displaystyle
f=\frac{50}{1000}=0.05
[/math]

Il campione rappresenta quindi solo il 5% della popolazione.

Quando la frazione di campionamento è piccola, togliere un elemento dalla popolazione modifica molto poco la probabilità di successo. Le estrazioni diventano quindi, dal punto di vista pratico, quasi indipendenti.

Una regola empirica comune è considerare piccola una frazione di campionamento nell’ordine del 5%; in alcuni contesti applicativi viene utilizzato anche il 10% come soglia pratica. Non si tratta però di una legge matematica universale: la bontà dell’approssimazione dipende dal problema e dalla precisione richiesta.

Idea chiave: la binomiale non è “più corretta” o “più moderna”. È un modello più semplice che può diventare un’ottima approssimazione dell’ipergeometrica quando il campione rappresenta una frazione molto piccola della popolazione.

Domanda di riflessione

Come cambierebbe la qualità dell’approssimazione se invece di estrarre 50 elettori ne estraessimo 300 dalla stessa popolazione?


Esercizio 5 – Distribuzione ipergeometrica multivariata

Difficoltà: alta

Testo

Un’urna contiene 10 palline rosse, 15 blu e 5 verdi. Si estraggono 8 palline senza reinserimento.

Calcola la probabilità di ottenere esattamente 3 rosse, 2 blu e 3 verdi.

Soluzione

Qui il risultato non è più semplicemente “successo/insuccesso”. Abbiamo tre categorie:

  • 10 palline rosse;
  • 15 palline blu;
  • 5 palline verdi.

La situazione è descritta dalla distribuzione ipergeometrica multivariata.

La probabilità congiunta è:

[math]\displaystyle
P(R=r,B=b,V=v)=
\frac{
\binom{R_{tot}}{r}
\binom{B_{tot}}{b}
\binom{V_{tot}}{v}
}{
\binom{N}{n}
}
[/math]

Abbiamo:

[math]\displaystyle
N=10+15+5=30
[/math]

e:

[math]\displaystyle
n=8,\qquad r=3,\qquad b=2,\qquad v=3
[/math]

Quindi:

[math]\displaystyle
P=
\frac{
\binom{10}{3}
\binom{15}{2}
\binom{5}{3}
}{
\binom{30}{8}
}
[/math]

Calcoliamo:

  • [math]\binom{10}{3}=120[/math]
  • [math]\binom{15}{2}=105[/math]
  • [math]\binom{5}{3}=10[/math]
  • [math]\binom{30}{8}=5\,852\,925[/math]

Pertanto:

[math]\displaystyle
P=
\frac{120\cdot105\cdot10}{5,852,925}
\approx0.02153
[/math]

La probabilità è circa 2,15%.

Una proprietà interessante: la distribuzione marginale

Possiamo concentrarci soltanto sul numero di palline rosse ignorando, per il momento, la distinzione tra blu e verdi.

Le palline non rosse sono:

[math]\displaystyle
15+5=20
[/math]

Il numero di rosse nel campione segue quindi una normale distribuzione ipergeometrica con:

[math]\displaystyle
N=30,\qquad K=10,\qquad n=8
[/math]

La probabilità di ottenere esattamente 3 rosse è:

[math]\displaystyle
P(R=3)=
\frac{
\binom{10}{3}
\binom{20}{5}
}{
\binom{30}{8}
}
\approx0.3177
[/math]

Questa probabilità è molto più alta della probabilità congiunta del 2,15%, perché “3 rosse” comprende molti possibili risultati per la suddivisione delle altre 5 palline tra blu e verdi.

Grafico della distribuzione marginale per il numero di rosse

Distribuzione marginale del numero di palline rosse

💡 Osservazione

La distribuzione multivariata è utile quando la popolazione contiene più categorie e siamo interessati alla loro composizione congiunta.

Se invece vogliamo conoscere soltanto il numero di elementi appartenenti a una categoria, possiamo spesso utilizzare una distribuzione marginale ipergeometrica.

Domanda di riflessione

Se volessimo calcolare la probabilità di avere almeno 3 palline rosse, perché possiamo ignorare temporaneamente la distinzione tra blu e verdi?


Esercizio 6 – Decisione aziendale: un problema inverso

Difficoltà: sfida

Testo

Un’azienda produce perle per collane. Ogni lotto è composto da 100 perle, di cui un numero sconosciuto [math]K[/math] sono imperfette.

Forse potrebbe interessarti anche:  Statistica per il Controllo Qualità: Quando Usare la Distribuzione Ipergeometrica

Per il controllo qualità viene prelevato un campione casuale di 10 perle senza reinserimento.

Il lotto viene scartato se nel campione si trovano 2 o più perle imperfette.

  • Se il lotto contiene effettivamente 5 perle imperfette, qual è la probabilità che venga scartato?
  • Qual è il massimo numero di perle imperfette che il lotto può contenere affinché la probabilità di scarto sia inferiore al 10%?

Nota metodologica: la soglia del 10% è un valore scelto a scopo didattico. In un processo reale, una soglia di accettazione dovrebbe essere definita considerando costi, rischi, specifiche tecniche e standard applicabili.

Formalizzazione del problema
  • [math]N = 100[/math] = dimensione del lotto;
  • [math]n = 10[/math] = dimensione del campione;
  • [math]K[/math] = numero di perle imperfette nel lotto;
  • [math]X[/math] = numero di imperfette nel campione.

La regola decisionale è:

[math]\displaystyle \begin{aligned}
X \geq 2 \quad \Rightarrow \quad \text{lotto scartato}
\end{aligned}[/math]

La probabilità di scarto è quindi:

[math]\displaystyle \begin{aligned}
P(\text{scarto}) = P(X \geq 2)
\end{aligned}[/math]

Parte 1 – Probabilità di scarto con [math]K = 5[/math]

Utilizziamo ancora il complemento:

[math]\displaystyle \begin{aligned}
P(X \geq 2) = 1 – P(X \leq 1)
\end{aligned}[/math]

Con Python:

from scipy.stats import hypergeom

N, n, K = 100, 10, 5

prob_scarto = 1 - hypergeom.cdf(1, N, K, n)

print(f"P(X ≥ 2) = {prob_scarto:.4f}")

P(X ≥ 2) = 0.0769

Quindi:

Se il lotto contiene 5 perle imperfette, la probabilità che venga scartato è circa 7,69%.

Rispetto alla soglia decisionale del 10%, questo valore è ancora inferiore.

Parte 2 – Quante imperfette possiamo tollerare?

Ora il problema si inverte.

Non conosciamo [math]K[/math] e vogliamo trovare il massimo valore compatibile con:

[math]\displaystyle \begin{aligned}
P(X \geq 2) < 0.10
\end{aligned}[/math]

Possiamo valutare la probabilità per diversi valori di [math]K[/math].

from scipy.stats import hypergeom

N, n = 100, 10

for K in range(1, 10):
    prob = 1 - hypergeom.cdf(1, N, K, n)

    if prob >= 0.10:
        print(f"K={K} -> {prob:.4f} (supera la soglia)")
        break
    else:
        print(f"K={K} -> {prob:.4f} (OK)")

Otteniamo:

[math]K[/math] [math]P(\text{scarto})[/math] Rispetto alla soglia del 10%
1 0,0000 OK
2 0,0091 OK
3 0,0258 OK
4 0,0488 OK
5 0,0769 OK
6 0,1090 Supera il 10%

Il massimo valore di [math]K[/math] che mantiene la probabilità di scarto inferiore al 10% è quindi:

[math]\displaystyle \begin{aligned}
\boxed{K = 5}
\end{aligned}[/math]

Il passaggio decisivo è:

[math]\displaystyle \begin{aligned}
P(\text{scarto} \mid K = 5) = 7.69\%
\end{aligned}[/math]

mentre:

[math]\displaystyle \begin{aligned}
P(\text{scarto} \mid K = 6) = 10.90\%
\end{aligned}[/math]

Il limite viene quindi superato tra 5 e 6 difettose.

Probabilità di scarto in funzione del numero di imperfette

💡 Osservazione

Questo esempio mostra un passaggio importante: non stiamo più soltanto calcolando una probabilità, ma stiamo utilizzando un modello probabilistico per prendere una decisione sotto vincolo.

La domanda aziendale diventa:

“Qual è il massimo livello di difettosità compatibile con il rischio di scarto che abbiamo deciso di accettare?”

È questo il passaggio dalla semplice analisi probabilistica alla decision analytics.


Approfondimento – Cosa succede se il campione passa da 10 a 20?

Aumentiamo la dimensione del campione:

[math]\displaystyle \begin{aligned}
n = 20
\end{aligned}[/math]

e manteniamo:

[math]\displaystyle \begin{aligned}
N = 100
\end{aligned}[/math]

Calcoliamo nuovamente la probabilità di scarto.

N, n = 100, 20

for K in range(1, 10):
    prob = 1 - hypergeom.cdf(1, N, K, n)
    print(f"K={K}: {prob:.4f}")
K=1: 0.0000
K=2: 0.0384
K=3: 0.1011
K=4: 0.1776
K=5: 0.2605
K=6: 0.3446
K=7: 0.4261
K=8: 0.5028
K=9: 0.5733

Ora:

  • con [math]K = 5[/math], la probabilità di scarto è 26,05%;
  • con [math]K = 2[/math], è 3,84%;
  • con [math]K = 3[/math], sale già al 10,11%.

Di conseguenza, per mantenere:

[math]\displaystyle \begin{aligned}
P(\text{scarto}) < 10\%
\end{aligned}[/math]

il massimo valore di [math]K[/math] diventa:

[math]\displaystyle \begin{aligned}
\boxed{K = 2}
\end{aligned}[/math]

Un campione più grande ha una maggiore probabilità di intercettare le imperfezioni presenti nel lotto. Per questo, a parità di soglia di rischio, il massimo numero di imperfette compatibile con il vincolo diminuisce.

Domanda di riflessione

Perché aumentare la dimensione del campione rende il controllo più sensibile alla presenza di difettose?


Da un ciclo Python a una funzione decisionale

Possiamo rendere il codice precedente più riutilizzabile definendo una funzione che calcoli direttamente la probabilità di scarto:

from scipy.stats import hypergeom

def probabilita_scarto(N, n, K, max_difettose=1):
    """
    Probabilità che il campione superi
    il numero massimo di difettose consentito.
    """
    return 1 - hypergeom.cdf(max_difettose, N, K, n)


def massimo_K(N, n, soglia=0.10, max_difettose=1):
    """
    Trova il massimo numero K di difettose nel lotto
    tale che la probabilità di scarto sia inferiore alla soglia.
    """
    valori = []

    for K in range(N + 1):
        prob = probabilita_scarto(
            N, n, K, max_difettose
        )

        if prob < soglia:
            valori.append((K, prob))

    return valori[-1] if valori else None


risultato = massimo_K(
    N=100,
    n=10,
    soglia=0.10,
    max_difettose=1
)

print(risultato)
(5, np.float64(0.07685672207027139))

Il risultato contiene il massimo valore di K compatibile con la soglia e la relativa probabilità di scarto.

Questa piccola trasformazione è interessante perché il codice non è più legato al singolo esercizio: abbiamo costruito un modello parametrico che può essere riutilizzato modificando dimensione del lotto, campione e soglia decisionale.

La correzione per popolazione finita: perché conta?

Uno dei concetti più importanti emersi dagli esercizi è la correzione per popolazione finita:

[math]\displaystyle
FPC=\frac{N-n}{N-1}
[/math]

Nel caso binomiale la varianza è:

[math]\displaystyle
Var(X)=np(1-p)
[/math]

Nel caso ipergeometrico diventa:

[math]\displaystyle
Var(X)=np(1-p)
\frac{N-n}{N-1}
[/math]

Poiché:

[math]\displaystyle
\frac{N-n}{N-1}<1
[/math]

quando [math]n>1[/math] e [math]n<N[/math], la varianza ipergeometrica è inferiore.

Questo non è un dettaglio puramente algebrico: esprime matematicamente il fatto che, quando estraiamo elementi senza reinserimento, conosciamo progressivamente qualcosa in più sulla popolazione residua.

Se abbiamo già estratto molti elementi, rimangono meno possibilità per ciò che può accadere nelle estrazioni successive.

Riepilogo dei principali comandi Python

Con scipy.stats.hypergeom possiamo lavorare direttamente con la distribuzione.

Probabilità puntuale

hypergeom.pmf(k, N, K, n)

calcola:

[math]\displaystyle
P(X=k)
[/math]

Probabilità cumulativa

hypergeom.cdf(k, N, K, n)

calcola:

[math]\displaystyle
P(X\leq k)
[/math]

Probabilità di superamento di una soglia

Per calcolare:

[math]\displaystyle
P(X\geq k)
[/math]

possiamo utilizzare:

1 - hypergeom.cdf(k - 1, N, K, n)

Questo schema è particolarmente utile nei problemi di controllo qualità e decisione.

Forse potrebbe interessarti anche:  Binomiale vs Ipergeometrica: L'Errore che Costa Caro

Risposte alle domande di riflessione

Esercizio 1 – Ipergeometrica o binomiale?

La differenza fondamentale è l’assenza di reinserimento da una popolazione finita. Nella distribuzione ipergeometrica le estrazioni sono dipendenti e la probabilità di successo cambia; nella binomiale le prove sono indipendenti e la probabilità di successo rimane costante.

Esercizio 2 – Perché P(X=0) è circa il 30%?

La proporzione di batterie difettose è del 20%, ma il campione contiene soltanto 5 elementi. È quindi possibile ottenere un campione senza alcuna difettosa con probabilità relativamente elevata:

[math]\displaystyle
P(X=0)\approx0.2983
[/math]

Nel modello binomiale corrispondente avremmo:

[math]\displaystyle
(1-0.2)^5=0.8^5\approx0.3277
[/math]

Il valore ipergeometrico è più basso perché il campionamento avviene senza reinserimento: dopo aver estratto elementi non difettosi, la composizione della popolazione residua cambia.

Esercizio 3 – Cosa succederebbe con la binomiale?

Con:

[math]\displaystyle
p=0.4,\qquad n=12
[/math]

la varianza binomiale sarebbe:

[math]\displaystyle
Var(X)=np(1-p)
=12\cdot0.4\cdot0.6
=2.88
[/math]

La varianza ipergeometrica è invece:

[math]\displaystyle
2.88\cdot\frac{88}{99}
\approx2.56
[/math]

La differenza è prodotta dalla correzione per popolazione finita.

Esercizio 4 – Quando la binomiale è una buona approssimazione?

La condizione principale è che il campione costituisca una piccola frazione della popolazione:

[math]\displaystyle
\frac{n}{N}\ll1
[/math]

Una regola pratica comune considera favorevole una frazione nell’ordine del 5%, anche se il 10% può essere utilizzato in alcuni contesti come criterio approssimativo.

La scelta non dipende invece da una regola del tipo “p deve essere lontano da 0 e 1”: quella condizione è rilevante per altre approssimazioni, ma non costituisce il criterio fondamentale che giustifica l’approssimazione ipergeometrica con la binomiale.

Esercizio 5 – Almeno 3 rosse

Se ci interessa soltanto il numero di rosse, possiamo considerare tutte le palline non rosse come un’unica categoria.

Otteniamo quindi:

[math]\displaystyle
R\sim Hypergeom(30,10,8)
[/math]

e possiamo calcolare:

[math]\displaystyle
P(R\geq3)
=========

1-P(R\leq2)
[/math]

senza dover utilizzare la distribuzione multivariata.

Esercizio 6 – Perché aumentando il campione il valore massimo di K diminuisce?

Con 10 elementi campionati, il massimo numero di imperfette compatibile con una probabilità di scarto inferiore al 10% è:

[math]\displaystyle
K=5
[/math]

Con 20 elementi campionati diventa:

[math]\displaystyle
K=2
[/math]

Il motivo è intuitivo: un campione più grande offre una maggiore possibilità di intercettare almeno 2 elementi imperfetti. Di conseguenza, per mantenere la stessa soglia di rischio, il lotto deve contenere un numero inferiore di imperfette.


Che cosa ci insegna la distribuzione ipergeometrica?

Gli esercizi hanno seguito una progressione precisa:

[math]\displaystyle
\boxed{
\text{intuizione}
\rightarrow
\text{modello}
\rightarrow
\text{probabilità}
\rightarrow
\text{Python}
\rightarrow
\text{decisione}
}
[/math]

Il primo esercizio ci ha mostrato come calcolare una probabilità puntuale.

Il secondo ha introdotto le probabilità cumulative e il principio del complemento.

Il terzo ha mostrato che la distribuzione non descrive soltanto singole probabilità: possiamo studiarne anche media, varianza e deviazione standard.

Il quarto ha evidenziato quando la distribuzione ipergeometrica può essere sostituita, con buona approssimazione, dalla binomiale.

Il quinto ha esteso il modello a più categorie attraverso la distribuzione ipergeometrica multivariata.

Il sesto, infine, ha trasformato il problema probabilistico in un problema decisionale.

Ed è proprio quest’ultimo passaggio a essere particolarmente interessante per chi lavora con i dati.

In un contesto reale, raramente ci viene chiesto soltanto:

“Qual è la probabilità?”

Molto più spesso la domanda è:

“Quale decisione possiamo prendere dato questo livello di rischio?”

La distribuzione ipergeometrica è quindi molto più di una formula da esercizio di probabilità. È uno strumento per modellare correttamente il campionamento da popolazioni finite e trasformare l’incertezza in informazione utile per l’analisi.

⚠️ Modello didattico
Gli esempi di controllo qualità e di decisione aziendale presentati nell’articolo sono costruiti a scopo didattico. Nella pratica, dimensione del campione, soglie di accettazione e livelli di rischio devono essere definiti considerando il processo reale, i costi degli errori, le specifiche tecniche e gli eventuali standard applicabili. La distribuzione ipergeometrica descrive il meccanismo probabilistico del campionamento, ma non determina da sola quale soglia decisionale sia ottimale.

Commento applicativo agli esercizi

Esercizio 1 – Controllo qualità

Il primo esercizio rappresenta uno scenario tipico del controllo di un lotto finito. Quando i componenti vengono estratti dal lotto per essere testati, la composizione della popolazione residua cambia. L’ipergeometrica permette di incorporare questa dipendenza direttamente nel calcolo.

Esercizio 2 – Probabilità cumulative

Nei problemi reali le decisioni sono spesso formulate attraverso soglie: “al massimo un difettoso”, “almeno due anomalie”, “non più di tre elementi fuori specifica”. La capacità di trasformare queste condizioni in probabilità cumulative è quindi essenziale.

Esercizio 3 – Varianza e popolazione finita

Qui emerge una delle caratteristiche più interessanti del modello: il campionamento senza reinserimento riduce la variabilità rispetto al modello binomiale corrispondente. La correzione per popolazione finita rende quantitativo questo effetto.

Esercizio 4 – Ipergeometrica vs binomiale

Un Data Scientist non deve soltanto conoscere molti modelli: deve sapere quando un modello più semplice è sufficientemente accurato. La frazione di campionamento permette di capire quando l’effetto della popolazione finita è trascurabile.

Esercizio 5 – Più categorie

Molti problemi reali non sono binari. Prodotti, clienti, osservazioni biologiche o risposte a un questionario possono appartenere a più categorie. La distribuzione ipergeometrica multivariata estende la stessa logica a questi scenari.

Esercizio 6 – Dal calcolo alla decisione

Il problema inverso è il passaggio più vicino alla pratica aziendale. Non ci limitiamo a misurare il rischio associato a un determinato numero di difettose: cerchiamo il massimo livello di difettosità compatibile con una soglia di rischio.

Questo schema è generale:

[math]\displaystyle
\text{dati}
\rightarrow
\text{modello probabilistico}
\rightarrow
\text{vincolo}
\rightarrow
\text{decisione}
[/math]

Ed è proprio questo uno dei passaggi fondamentali che trasformano la statistica in Data Science applicata.

Pubblicità