Site icon Meccanismo Complesso

Calcoliamo la Probability Mass Function (PMF) con Python

Probability Mass Function con Python
Probability Mass Function con Python header

La Probability Mass Function (PMF) è una funzione che associa a ciascun valore di una variabile casuale discreta la probabilità che la variabile assuma quel particolare valore. In altre parole, la PMF fornisce la distribuzione di probabilità di una variabile casuale discreta.

[wpda_org_chart tree_id=6 theme_id=50]

La Probability Mass Function

La PMF è spesso indicata come , dove è la variabile casuale e è un valore specifico che la variabile può assumere. La PMF soddisfa le seguenti proprietà:

  1. La probabilità associata a ciascun valore è non negativa: .
  2. La somma delle probabilità per tutti i possibili valori è uguale a 1: su tutti i valori di .

La PMF fornisce una rappresentazione completa delle probabilità associate ai vari risultati di una variabile casuale discreta. È essenziale per calcolare probabilità di eventi complessi, come eventi congiunti o condizionati, utilizzando regole di probabilità come la regola della somma e la regola del prodotto. La PMF consente anche di fare previsioni e di capire meglio il comportamento di variabili casuali in una vasta gamma di contesti, dalla teoria delle code alla modellizzazione statistica.

In sintesi, la PMF è una funzione fondamentale nelle distribuzioni di probabilità discrete, fornendo una descrizione dettagliata delle probabilità associate a ciascun possibile risultato di un’esperimento casuale discreto.

Esempi di PMF

Il Dado equo

Un esempio comune di PMF è la distribuzione di probabilità di un dado standard a sei facce. Se ( X ) rappresenta il risultato del lancio del dado, la PMF sarebbe:

per ogni .

La Distribuzione Binomiale

La distribuzione binomiale è una distribuzione di probabilità discreta che descrive il numero di successi in una sequenza fissa di tentativi indipendenti, ciascuno con una probabilità di successo costante ( p ).

La Probability Mass Function (PMF) della distribuzione binomiale è data dalla seguente formula:

dove:

La PMF della distribuzione binomiale fornisce la probabilità che si verifichi un numero specifico di successi in una sequenza di tentativi indipendenti con una probabilità di successo ( p ) costante. Questa distribuzione è utile in una varietà di contesti, come ad esempio nel calcolo delle probabilità di successo o insuccesso in esperimenti ripetuti, nel contesto di test di ipotesi o nello studio di processi che coinvolgono risultati binari.

La Distribuzione di Poisson

La distribuzione di Poisson è una distribuzione di probabilità discreta che descrive il numero di eventi rari che si verificano in un certo intervallo di tempo o spazio, dato un tasso medio di occorrenza ( \lambda ).

La Probability Mass Function (PMF) della distribuzione di Poisson è data dalla seguente formula:

dove:

La PMF della distribuzione di Poisson fornisce la probabilità che si verifichi un numero specifico di eventi rari in un determinato intervallo di tempo o spazio, data una certa media di occorrenza ( \lambda ). Questa distribuzione è spesso utilizzata per modellare eventi come arrivi di clienti in un punto vendita, chiamate in un call center, errori in un processo di produzione, e in generale qualsiasi fenomeno che si verifica in modo casuale e raro nel tempo o nello spazio.

Implementiamo le PMF di esempio in Python

Adesso passiamo a vedere i tre esempi di distribuzione discreta visti in precenza e sviluppiamo altrettanti codici di esempio In Python. Potrai utilizzare e modificare tali codici per poter comprendere al meglio il funzionamento delle distribuzioni discrete e delle loro PMF.

Il Dado Equo

Per questo semplice esempio, per generare la PMF è sufficiente utilizzare la libreria NumPy. Vediamo il codice.

import numpy as np
import matplotlib.pyplot as plt

# PMF del dado equo
num_facce_dado = 6
probabilita_dado = np.ones(num_facce_dado) / num_facce_dado
valori_dado = np.arange(1, num_facce_dado + 1)

plt.figure(figsize=(8, 5))
plt.bar(valori_dado, probabilita_dado, color='skyblue')
plt.title('PMF del dado equo')
plt.xlabel('Valore del dado')
plt.ylabel('Probabilità')
plt.xticks(valori_dado)
plt.grid(True)
plt.show()

In questo codice, stiamo considerando un dado equo con 6 facce. La variabile num_facce_dado rappresenta il numero di facce del dado. Inizializziamo un array probabilita_dado con probabilità uniformi 1661​ per ciascuna faccia del dado. L’array valori_dado contiene i valori possibili che il dado può assumere, da 1 a 6. Utilizzando matplotlib, creiamo un grafico a barre che rappresenta la PMF del dado equo, con i valori del dado sull’asse x e le probabilità corrispondenti sull’asse y.

Eseguendo il codice si otterrà un grafico come quello seguente, che corrisponde alla PMF del dado equo.

La distribuzione binomiale

In questo caso, più complesso del precedente, ci avvaloreremo del modulo specifico stats di scipy che ha al suo interno già definiti tutti gli strumenti per lavorare con le distribuzioni binomiali, tra cui il calcolo della PMF tramite la funzione binom.bmf().

from scipy.stats import binom

# PMF della distribuzione binomiale
num_tentativi = 10
probabilita_successo = 0.5
valori_binom = np.arange(0, num_tentativi + 1)
pmf_binom = binom.pmf(valori_binom, num_tentativi, probabilita_successo)

plt.figure(figsize=(8, 5))
plt.bar(valori_binom, pmf_binom, color='lightgreen')
plt.title('PMF della distribuzione binomiale (n=10, p=0.5)')
plt.xlabel('Numero di successi')
plt.ylabel('Probabilità')
plt.xticks(valori_binom)
plt.grid(True)
plt.show()

In questo codice, stiamo considerando una distribuzione binomiale con 10 tentativi e una probabilità di successo del 50% in ciascun tentativo. La variabile num_tentativi rappresenta il numero totale di tentativi. La variabile probabilita_successo rappresenta la probabilità di successo in ciascun tentativo. L’array valori_binom contiene i possibili numeri di successi, da 0 a 10. Utilizziamo la funzione binom.pmf() dal modulo scipy.stats per calcolare la PMF della distribuzione binomiale. Creiamo un grafico a barre utilizzando matplotlib per visualizzare la PMF della distribuzione binomiale, con il numero di successi sull’asse x e le probabilità corrispondenti sull’asse y.

La distribuzione di Poisson

Anche in questo caso, come quello precedente, ci avvaloreremo del modulo specifico stats di scipy che ha al suo interno già definiti tutti gli strumenti per lavorare con le distribuzioni di poisson, tra cui il calcolo della PMF tramite la funzione poisson.bmf.

from scipy.stats import poisson

# PMF della distribuzione di Poisson
tasso_medio = 3
valori_poisson = np.arange(0, 15)
pmf_poisson = poisson.pmf(valori_poisson, tasso_medio)

plt.figure(figsize=(8, 5))
plt.bar(valori_poisson, pmf_poisson, color='salmon')
plt.title('PMF della distribuzione di Poisson (λ=3)')
plt.xlabel('Numero di eventi')
plt.ylabel('Probabilità')
plt.xticks(valori_poisson)
plt.grid(True)
plt.show()

In questo codice, stiamo considerando una distribuzione di Poisson con un tasso medio di 3 eventi. La variabile tasso_medio rappresenta il tasso medio di occorrenza degli eventi. L’array valori_poisson contiene i possibili numeri di eventi, da 0 a 14 (scelto arbitrariamente per la visualizzazione). Utilizziamo la funzione poisson.pmf() dal modulo scipy.stats per calcolare la PMF della distribuzione di Poisson. Creiamo un grafico a barre utilizzando matplotlib per visualizzare la PMF della distribuzione di Poisson, con il numero di eventi sull’asse x e le probabilità corrispondenti sull’asse y.

Exit mobile version