
Il Metodo Montecarlo si usa seguendo una serie di passaggi logici. Ecco una guida passo a passo su come applicare questo metodo:
👉Metodo Montecarlo: Cos’è, Come Funziona e Applicazioni Pratiche (con Esempi in Python)
1. Definire il Problema:
- Identificare la Quantità di Interesse: Il primo passo è definire chiaramente cosa si vuole calcolare o stimare. Può trattarsi di un integrale, il prezzo di uno strumento finanziario, la probabilità di un evento, o qualsiasi altra quantità che sia difficile da ottenere analiticamente. Il Metodo Montecarlo diventa particolarmente utile quando le soluzioni analitiche sono impraticabili o inesistenti. Questo può accadere a causa della complessità del problema, come nel caso di integrali in molte dimensioni, modelli finanziari con numerose variabili interconnesse, o sistemi fisici con comportamenti non lineari. In tali scenari, la simulazione basata su campioni casuali offre un’alternativa potente per ottenere stime affidabili.
- Formulare il Problema in Termini Probabilistici (se necessario): A volte, il problema non è intrinsecamente probabilistico, ma può essere riformulato in termini di aspettativa di una variabile aleatoria. L’esempio del calcolo di Pi Greco rientra in questa categoria.
2. Identificare le Variabili Aleatorie e le Loro Distribuzioni:
- Individuare le Sorgenti di Incertezza: Determina quali sono le variabili nel tuo problema che sono incerte o casuali.
- Specificare le Distribuzioni di Probabilità: Per ciascuna variabile aleatoria identificata, devi conoscere o ipotizzare la sua distribuzione di probabilità (ad esempio, uniforme, normale, esponenziale, ecc.). Questa distribuzione descrive la gamma di valori possibili per la variabile e la probabilità di ciascun valore. La scelta della distribuzione di probabilità per ciascuna variabile aleatoria è cruciale, poiché influenza direttamente i risultati della simulazione. Una modellazione accurata, basata su dati osservativi o su ipotesi informate, è fondamentale per ottenere stime significative.
3. Costruire un Modello Deterministico:
- Creare una Relazione tra le Variabili Aleatorie e la Quantità di Interesse: Definisci una funzione o un modello matematico che prenda le variabili aleatorie come input e produca come output il valore della quantità che vuoi stimare. Questo modello è deterministico nel senso che, dati specifici valori per le variabili aleatorie, l’output è univocamente determinato. La qualità del modello deterministico che collega le variabili aleatorie alla quantità di interesse è di fondamentale importanza per l’accuratezza della stima ottenuta con il Metodo Montecarlo. Anche se la generazione di campioni casuali è precisa, un modello che non rappresenta fedelmente la realtà del problema porterà a risultati inaffidabili e privi di significato pratico.
4. Generare Campioni Casuali:
- Utilizzare un Generatore di Numeri Casuali: Genera un gran numero di valori casuali (campioni) per ciascuna delle variabili aleatorie, in base alle loro specifiche distribuzioni di probabilità. La qualità del generatore di numeri casuali è fondamentale per l’affidabilità dei risultati. La non-casualità o la presenza di correlazioni significative nei numeri generati possono compromettere la validità dei risultati ottenuti con il Metodo Montecarlo. Se i campioni non sono effettivamente indipendenti e distribuiti secondo le distribuzioni specificate, la convergenza alla vera soluzione potrebbe essere lenta o addirittura errata. Pertanto, la scelta e la verifica del generatore di numeri casuali sono aspetti importanti da considerare nell’applicazione del metodo.
- Creare Scenari (Simulazioni): Ogni insieme di valori casuali generati per tutte le variabili aleatorie costituisce uno “scenario” o una “simulazione”.
5. Eseguire le Simulazioni:
- Alimentare il Modello con i Campioni Casuali: Per ogni scenario generato nel passo precedente, inserisci i valori delle variabili aleatorie nel modello deterministico creato al punto 3.
- Calcolare l’Output per Ogni Simulazione: Il modello produrrà un valore della quantità di interesse per ciascuna simulazione.
6. Aggregare i Risultati:
- Memorizzare i Risultati: Conserva tutti i valori della quantità di interesse ottenuti dalle diverse simulazioni.
7. Stimare la Quantità di Interesse:
- Calcolare la Media Campionaria: La stima più comune della quantità di interesse è la media aritmetica di tutti i risultati ottenuti dalle simulazioni. Secondo la Legge dei Grandi Numeri, questa media dovrebbe approssimare il vero valore atteso all’aumentare del numero di simulazioni.
- Altre Statistiche (se necessario): A seconda del problema, potresti essere interessato anche ad altre statistiche, come la mediana, la deviazione standard, i percentili, o la probabilità che la quantità di interesse superi una certa soglia.
8. Analizzare i Risultati :
- Valutare l’Incertezza: Calcola la varianza o l’errore standard della tua stima per quantificare l’incertezza associata ai risultati.
- Costruire Intervalli di Confidenza: Stima un intervallo di valori entro il quale è probabile che si trovi il vero valore della quantità di interesse, con un certo livello di confidenza.
- Verificare la Convergenza: Assicurati che il numero di simulazioni sia sufficiente per ottenere una stima stabile e precisa. Puoi farlo monitorando come la media campionaria e l’errore standard cambiano all’aumentare del numero di simulazioni.
Esempio Semplice (Stima di un’Area Irregolare):
Supponiamo di voler stimare l’area di una forma irregolare contenuta in un quadrato di lato [math]L[/math].
- Definire il Problema: Vogliamo stimare l’area della forma irregolare.
- Variabili Aleatorie: Generiamo coppie di coordinate casuali [math](x, y)[/math] uniformemente distribuite all’interno del quadrato [math][0, L] \times [0, L][/math].
- Modello: Verifichiamo se il punto [math](x, y)[/math] cade all’interno della forma irregolare. Possiamo definire una funzione [math]I(x, y)[/math] che vale 1 se il punto è dentro la forma e 0 altrimenti.
- Generazione Campioni: Generiamo [math]N[/math] coppie di coordinate casuali uniformemente nel quadrato.
- Simulazioni: Per ogni punto [math](x_i, y_i)[/math], valutiamo [math]I(x_i, y_i)[/math].
- Aggregazione: Contiamo il numero di punti [math]N_{\text{dentro}}[/math] che cadono all’interno della forma (dove [math]I(x_i, y_i) = 1[/math]).
- Stima: L’area della forma irregolare può essere stimata come: [math]\text{Area} \approx L^2 \cdot \frac{N_{\text{dentro}}}{N}[/math]
- Analisi: Possiamo calcolare l’errore standard della stima per valutare la sua precisione.
In sintesi, l’uso del Metodo Montecarlo implica la simulazione di un processo casuale un gran numero di volte per approssimare la soluzione a un problema. La chiave è identificare correttamente le variabili aleatorie, le loro distribuzioni, e costruire un modello appropriato che colleghi queste variabili alla quantità di interesse.
👉Ottimizzazione del Budget Marketing con Simulazione Monte Carlo
Esempio: Stima del Volume di una Sfera in 3D
Supponiamo di voler stimare il volume di una sfera di raggio 1 centrata nell’origine. Sappiamo che il volume analitico è dato da [math]V = \frac{4}{3} \pi r^3 = \frac{4}{3} \pi \approx 4.1888[/math]. Useremo il Metodo Montecarlo per approssimare questo valore.
Passo 1: Definire il Problema
Vogliamo stimare il volume di una sfera di raggio 1.
Passo 2: Identificare le Variabili Aleatorie e le Loro Distribuzioni
Consideriamo un cubo di lato 2 che racchiude la sfera (il cubo va da -1 a 1 su ciascun asse). Generiamo punti casuali all’interno di questo cubo. Le coordinate [math](x, y, z)[/math] di ciascun punto saranno le nostre variabili aleatorie, ciascuna seguendo una distribuzione uniforme nell’intervallo [-1, 1].
Passo 3: Costruire un Modello Deterministico
Per ogni punto [math](x, y, z)[/math] generato, verifichiamo se cade all’interno della sfera di raggio 1 centrata nell’origine. La condizione per essere all’interno della sfera è:
[math]x^2 + y^2 + z^2 \le 1^2[/math]
Passo 4: Generare Campioni Casuali
Generiamo un gran numero di punti casuali [math](x, y, z)[/math] dove [math]x, y, z[/math] sono numeri casuali indipendenti e uniformemente distribuiti tra -1 e 1.
Passo 5: Eseguire le Simulazioni
Per ogni punto generato, verifichiamo se la condizione [math]x^2 + y^2 + z^2 \le 1[/math] è soddisfatta.
Passo 6: Aggregare i Risultati
Contiamo il numero di punti che cadono all’interno della sfera, chiamiamolo [math]N_{\text{dentro}}[/math]. Sia [math]N[/math] il numero totale di punti generati.
Passo 7: Stimare la Quantità di Interesse
Il volume del cubo è [math]2^3 = 8[/math]. La proporzione di punti che cadono all’interno della sfera rispetto al totale dovrebbe essere approssimativamente uguale al rapporto tra il volume della sfera e il volume del cubo:
[math]\frac{N_{\text{dentro}}}{N} \approx \frac{\text{Volume Sfera}}{\text{Volume Cubo}} = \frac{V_{\text{sfera}}}{8}[/math]
Da cui possiamo stimare il volume della sfera come:
[math]V_{\text{sfera}} \approx 8 \cdot \frac{N_{\text{dentro}}}{N}[/math]
Varianza della Stima del Volume:
Usando la proprietà [math]\text{Var}(aX) = a^2 \text{Var}(X)[/math], la varianza della nostra stima del volume è:
[math]\text{Var}(\hat{V}) = \text{Var}(8 \hat{p}) = 8^2 \text{Var}(\hat{p}) \approx 64 \cdot \frac{\hat{p}(1 – \hat{p})}{N}[/math]
Spiegazione della Varianza:
-
Cos’è la Varianza? La varianza è una misura di quanto i valori di un insieme di dati sono dispersi attorno alla loro media. In questo contesto, stiamo considerando la variabilità della nostra stima del volume della sfera che otteniamo attraverso diverse esecuzioni del Metodo Montecarlo (anche se in pratica ne eseguiamo una sola con un numero elevato di punti). Una varianza elevata indica che le stime potrebbero variare molto da un’esecuzione all’altra, suggerendo una maggiore incertezza.
-
La Proprietà [math]\text{Var}(aX) = a^2 \text{Var}(X)[/math]: Questa è una proprietà fondamentale della varianza. Se moltiplichiamo una variabile aleatoria [math]X[/math] per una costante [math]a[/math], la varianza della nuova variabile [math]aX[/math] è uguale al quadrato della costante moltiplicato per la varianza di [math]X[/math]. Nel nostro caso, la nostra stima del volume [math]\hat{V}[/math] è 8 volte la nostra stima della probabilità [math]\hat{p}[/math] (poiché scaliamo la proporzione di punti nel cubo per il volume del cubo, che è 8). Quindi, [math]a = 8[/math] e [math]X = \hat{p}[/math].
-
La Varianza di [math]\hat{p}[/math]: Ricordiamo che per ogni punto generato, abbiamo un esperimento di Bernoulli: il punto cade dentro la sfera (successo) o fuori (fallimento). La probabilità di successo è [math]p[/math] (il vero rapporto tra il volume della sfera e il volume del cubo). Quando eseguiamo [math]N[/math] di questi esperimenti indipendenti, il numero di successi segue una distribuzione binomiale. La proporzione campionaria di successi, [math]\hat{p} = N_{\text{dentro}} / N[/math], è una stima della probabilità [math]p[/math]. La varianza di questa proporzione campionaria è data da [math]\frac{p(1 – p)}{N}[/math]. Poiché non conosciamo il vero valore di [math]p[/math], lo approssimiamo con la nostra stima [math]\hat{p}[/math].
-
Combinazione delle Proprietà:
-
Applicando la proprietà della varianza, otteniamo:
[math]\text{Var}(\hat{V}) = \text{Var}(8 \hat{p}) = 8^2 \cdot \text{Var}(\hat{p}) \approx 64 \cdot \frac{\hat{p}(1 – \hat{p})}{N}[/math]
Questo ci dice che la variabilità della nostra stima del volume dipende dalla proporzione stimata di punti all’interno della sfera, dal numero totale di punti generati e dal fattore di scala (il volume del cubo, 8, elevato al quadrato).
Errore Standard della Stima del Volume:
L’errore standard è la radice quadrata della varianza:
[math]\text{SE}(\hat{V}) = \sqrt{\text{Var}(\hat{V})} \approx \sqrt{64 \cdot \frac{\hat{p}(1 – \hat{p})}{N}} = 8 \sqrt{\frac{\hat{p}(1 – \hat{p})}{N}}[/math]
Spiegazione dell’Errore Standard:
-
Cos’è l’Errore Standard? L’errore standard è una misura della precisione della nostra stima. Rappresenta la deviazione standard della distribuzione campionaria della nostra statistica (in questo caso, la stima del volume). In termini più semplici, ci dice quanto è probabile che la nostra stima si discosti dal vero valore del volume della sfera.
-
Interpretazione dell’Errore Standard: Un errore standard più piccolo indica che la nostra stima è probabilmente più precisa e vicina al vero valore. Un errore standard più grande suggerisce una maggiore incertezza.
-
Uso per gli Intervalli di Confidenza: L’errore standard è fondamentale per costruire intervalli di confidenza. Ad esempio, se assumiamo che la distribuzione delle nostre stime segua approssimativamente una distribuzione normale (cosa che tende a verificarsi per un numero elevato di simulazioni grazie al Teorema del Limite Centrale), possiamo dire che c’è circa il 68% di probabilità che il vero volume della sfera si trovi entro un errore standard dalla nostra stima, e circa il 95% di probabilità che si trovi entro due errori standard.
Un intervallo di confidenza approssimativo al 95% per il volume della sfera sarebbe:
[math]\hat{V} \pm 2 \cdot \text{SE}(\hat{V})[/math]
In sintesi, la varianza e l’errore standard ci forniscono strumenti importanti per quantificare l’incertezza associata alla nostra stima del volume ottenuta con il Metodo Montecarlo. Ci aiutano a capire quanto possiamo fidarci del nostro risultato e come la precisione della nostra stima dipende dal numero di simulazioni effettuate.
Calcolo dell’Errore Standard con il Codice Python:
import random import math def stima_volume_sfera_con_errore(num_punti): dentro_sfera = 0 for _ in range(num_punti): x = random.uniform(-1, 1) y = random.uniform(-1, 1) z = random.uniform(-1, 1) if x**2 + y**2 + z**2 <= 1: dentro_sfera += 1 volume_stimato = 8 * dentro_sfera / num_punti prob_stimata = dentro_sfera / num_punti varianza_prob = prob_stimata * (1 - prob_stimata) / num_punti errore_standard_volume = 8 * math.sqrt(varianza_prob) return volume_stimato, errore_standard_volume num_simulazioni = 100000 volume_stimato, errore_standard = stima_volume_sfera_con_errore(num_simulazioni) print(f"Stima del volume della sfera con {num_simulazioni} punti: {volume_stimato}") print(f"Errore standard della stima: {errore_standard}"))
Stima del volume della sfera con 100000 punti: 4.17848
Errore standard della stima: 0.012636512529016857