≡ Menu

Convergenza verso una distribuzione gaussiana: un’applicazione pratica del teorema del limite centrale in Python

Il teorema del limite centrale è uno dei concetti fondamentali nella teoria della probabilità e nelle statistiche. Stabilisce che la distribuzione della somma (o della media) di un numero sufficientemente grande di variabili casuali indipendenti e identicamente distribuite tende a una distribuzione normale, anche conosciuta come distribuzione gaussiana. Questo articolo illustra come implementare e dimostrare il teorema del limite centrale utilizzando Python, generando numeri casuali da diverse distribuzioni e sommandoli per creare un istogramma che converge verso una distribuzione gaussiana.

Il teorema del limite centrale ha importanti implicazioni nella pratica, poiché giustifica l’utilizzo della media come stima del valore vero di una misura e mostra che la nostra confidenza nella stima aumenta con l’aumentare del numero di misure. La convergenza verso una distribuzione gaussiana è il risultato dell’effetto combinato di un gran numero di variabili casuali indipendenti, che porta ad una distribuzione simmetrica attorno al valore medio.

Per illustrare il teorema del limite centrale in Python, abbiamo sviluppato un codice che genera numeri casuali da diverse distribuzioni, somma i numeri casuali generati e crea un istogramma dei valori sommati. Con l’aumentare del numero di distribuzioni, l’istogramma diventa sempre più simile a una distribuzione gaussiana.

import numpy as np
import matplotlib.pyplot as plt

def generate_random_numbers(num_distributions, num_samples):
    random_numbers = []
    
    for _ in range(num_distributions):
        distribution = np.random.choice(["uniform", "normal", "exponential"])
        
        if distribution == "uniform":
            numbers = np.random.uniform(-1, 1, num_samples)
        elif distribution == "normal":
            numbers = np.random.normal(0, 1, num_samples)
        elif distribution == "exponential":
            numbers = np.random.exponential(1, num_samples)
        
        random_numbers.append(numbers)
    
    return random_numbers

def sum_random_numbers(random_numbers):
    return np.sum(random_numbers, axis=0)

def plot_histogram(summed_numbers):
    plt.hist(summed_numbers, bins=50, density=True)
    plt.xlabel("Valori sommati")
    plt.ylabel("Densità")
    plt.title("Istogramma della somma di numeri casuali")
    plt.show()

def main():
    num_distributions = 10  # Numero di distribuzioni da sommare
    num_samples = 1000  # Numero di campioni per ciascuna distribuzione

    random_numbers = generate_random_numbers(num_distributions, num_samples)
    summed_numbers = sum_random_numbers(random_numbers)
    plot_histogram(summed_numbers)

if __name__ == "__main__":
    main()

Il codice si basa su due librerie principali: NumPy per la manipolazione dei numeri e la generazione di numeri casuali, e Matplotlib per la creazione dell’istogramma. Il codice è strutturato in quattro funzioni principali: generate_random_numbers, sum_random_numbers, plot_histogram e main.

La funzione generate_random_numbers genera numeri casuali da diverse distribuzioni, quali uniforme, normale ed esponenziale. Questa funzione prende due argomenti: il numero di distribuzioni da sommare e il numero di campioni per ciascuna distribuzione. Restituisce una lista di array NumPy contenente i numeri casuali generati.

La funzione sum_random_numbers somma i numeri casuali generati lungo l’asse 0, ovvero somma i numeri casuali delle diverse distribuzioni. Prende come argomento la lista di array NumPy contenente i numeri casuali generati e restituisce un array NumPy con i numeri sommati.

La funzione plot_histogram crea un istogramma dei numeri sommati utilizzando Matplotlib. Prende come argomento l’array NumPy con i numeri sommati e mostra l’istogramma.

La funzione main gestisce il flusso del programma. Imposta il numero di distribuzioni e il numero di campioni per ciascuna distribuzione, genera i numeri casuali, somma i numeri e crea l’istogramma.

L’esecuzione del codice mostra che, con l’aumentare del numero di distribuzioni sommate, l’istogramma dei valori sommati diventa sempre più simile a una distribuzione gaussiana. Questo risultato è in accordo con il teorema del limite centrale e conferma la sua validità nella pratica.

Questa convergenza verso una distribuzione gaussiana dimostra che la media delle misure è una stima affidabile del valore vero e che la nostra confidenza nella stima aumenta con l’aumentare del numero di misure. Inoltre, l’istogramma simmetrico attorno al valore medio suggerisce che la maggior parte delle misure si trova vicino alla media, il che implica una minore variabilità dei risultati.

L’implementazione del teorema del limite centrale in Python attraverso la generazione di numeri casuali da diverse distribuzioni e la loro somma mostra la convergenza verso una distribuzione gaussiana, confermando l’importanza e l’applicabilità del teorema nella pratica. Questo esempio dimostra l’utilità del teorema per giustificare l’uso della media come stima del valore vero e per mostrare che la nostra confidenza nella stima aumenta con l’aumentare del numero di misure.

{ 0 comments… add one }

Rispondi