✏️ Esercizi#
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import arviz as az
from fractions import Fraction
%config InlineBackend.figure_format = 'retina'
RANDOM_SEED = 42
rng = np.random.default_rng(RANDOM_SEED)
az.style.use("arviz-darkgrid")
Esercizio 1#
L’esperimento casuale consiste nel lanciare due monete, e siamo interessati a calcolare la probabilità dell’evento «testa nel primo lancio».
Spazio Campionario#
Lo spazio campionario \( S \) è definito come \( S = \{TT, TC, CT, CC\} \), dove \( T \) rappresenta «Testa» e \( C \) rappresenta «Croce». Gli eventi sono considerati equiprobabili, il che significa che ogni evento ha la stessa probabilità di verificarsi.
Definizione di Probabilità#
La probabilità di un evento \( E \) è definita come il rapporto tra il numero di risultati favorevoli all’evento \( E \) e il numero totale di risultati possibili nello spazio campionario \( S \), cioè:
Calcolare la Probabilità di «Testa nel Primo Lancio»#
Per calcolare la probabilità di ottenere «Testa» nel primo lancio, dobbiamo identificare quali eventi nello spazio campionario soddisfano questa condizione. Gli eventi favorevoli sono:
\( TT \): Testa nel primo lancio e Testa nel secondo lancio.
\( TC \): Testa nel primo lancio e Croce nel secondo lancio.
Quindi, ci sono 2 eventi favorevoli su un totale di 4 eventi possibili.
Il seguente codice Python calcola la probabilità dell’evento «testa nel primo lancio».
# Definizione dello spazio campionario
spazio_campionario = ["TT", "TC", "CT", "CC"]
print(spazio_campionario)
['TT', 'TC', 'CT', 'CC']
# Identificazione degli eventi favorevoli
eventi_favorevoli = [evento for evento in spazio_campionario if evento[0] == "T"]
print(eventi_favorevoli)
['TT', 'TC']
# Calcolo della probabilità
probabilità = len(eventi_favorevoli) / len(spazio_campionario)
print("La probabilità di ottenere 'Testa' nel primo lancio è:", probabilità)
La probabilità di ottenere 'Testa' nel primo lancio è: 0.5
In questo codice:
Creiamo una lista
spazio_campionario
che rappresenta tutti i possibili esiti di due lanci di moneta.Filtriamo questa lista per trovare gli
eventi_favorevoli
, cioè quelli che iniziano con “T”, indicando che la prima moneta mostra «Testa».Calcoliamo la
probabilità
dividendo il numero di eventi favorevoli per il numero totale di eventi nello spazio campionario.
Esercizio 2#
Vengono lanciate due monete equilibrate. Siano A l’evento “croce nel primo lancio” e B l’evento “due volte testa”. Si trovi la probabilità P(A∪B).
Soluzione.
Per risolvere il problema, consideriamo i concetti di evento, unione di eventi e probabilità. Il problema chiede di trovare la probabilità dell’evento \( P(A \cup B) \), ovvero la probabilità che si verifichi «croce nel primo lancio» (evento \( A \)) o «due volte testa» (evento \( B \)), o entrambi.
Definire lo Spazio Campionario: Quando lanciamo due monete, abbiamo quattro possibili esiti che possono essere rappresentati come \( S = \{TT, TC, CT, CC\} \), dove \( T \) sta per Testa e \( C \) per Croce.
Definire gli Eventi:
Evento \( A \): «croce nel primo lancio» \( = \{CT, CC\} \).
Evento \( B \): «due volte testa» \( = \{TT\} \).
Unione degli Eventi \( A \cup B \): L’unione degli eventi \( A \) e \( B \) comprende tutti gli esiti in cui si verifica almeno uno degli eventi \( A \) o \( B \). Questo significa considerare tutti gli esiti unici tra \( A \) e \( B \). Poiché \( TT \) non è incluso in \( A \) ma rappresenta \( B \), l’unione \( A \cup B \) include tutti gli esiti di \( A \) più \( TT \).
Calcolare la Probabilità \( P(A \cup B) \): La probabilità di \( A \cup B \) è data dal numero di esiti favorevoli diviso il numero totale di esiti possibili nello spazio campionario.
Calcolo della Probabilità#
Ora, calcoliamo la probabilità \( P(A \cup B) \) usando Python, seguendo i passaggi descritti:
# Definizione dello spazio campionario
spazio_campionario = ["TT", "TC", "CT", "CC"]
# Definizione dell'evento A: "croce nel primo lancio"
evento_A = ["CT", "CC"]
# Definizione dell'evento B: "due volte testa"
evento_B = ["TT"]
# Unione degli eventi A e B
unione_A_B = set(evento_A).union(set(evento_B))
# Calcolo della probabilità P(A U B)
probabilità_A_union_B = len(unione_A_B) / len(spazio_campionario)
print("La probabilità di P(A U B) è:", probabilità_A_union_B)
La probabilità di P(A U B) è: 0.75
Questo codice identifica prima gli esiti che corrispondono agli eventi \( A \) e \( B \), poi calcola l’unione di questi eventi per determinare il numero totale di esiti favorevoli. Infine, divide questo numero per il numero totale di esiti possibili per ottenere la probabilità dell’evento \( A \cup B \). Eseguiamo questo codice per ottenere il risultato.
La probabilità dell’evento \( P(A \cup B) \), ovvero la probabilità che si verifichi «croce nel primo lancio» oppure «due volte testa» (o entrambi), è \( 0.75 \). Questo significa che, in tre lanci su quattro di due monete equilibrate, ci aspettiamo che si verifichi almeno uno dei due eventi specificati.
Esercizio 3#
Estraendo una carta da un mazzo di 52, qual è la probabilità che esca una figura di cuori? Sapendo che il seme della carta estratta è cuori, qual è la probabilità che il valore numerico della carta sia 7, 8, o 9?
Per risolvere questo problema, suddivideremo l’analisi in due parti. Prima calcoleremo la probabilità di estrarre una figura di cuori da un mazzo di carte da poker standard di 52 carte. Successivamente, calcoleremo la probabilità che il valore numerico della carta sia 7, 8, o 9 dato che sappiamo che il seme della carta estratta è cuori.
Parte 1: Probabilità di Estrarre una Figura di Cuori#
Un mazzo standard di carte da poker contiene 52 carte, divise equamente in 4 semi: cuori, quadri, fiori e picche. Ogni seme contiene 13 carte: numeri da 2 a 10, Jack (Fante), Queen (Regina), King (Re) e Ace (Asso). Le figure in un mazzo di carte sono Jack, Queen e King.
Definire lo Spazio Campionario: Lo spazio campionario è l’insieme di tutte le 52 carte nel mazzo.
Identificare gli Eventi Favorevoli: Gli eventi favorevoli sono le figure di cuori, che sono il Jack, la Queen e il King di cuori. Quindi, ci sono 3 eventi favorevoli.
Calcolare la Probabilità: La probabilità è il numero di eventi favorevoli diviso il numero totale di eventi nello spazio campionario.
Parte 2: Probabilità che il Valore Numerico sia 7, 8, o 9 dato che la Carta è di Cuori#
Se sappiamo che la carta estratta è di cuori, lo spazio campionario si riduce alle 13 carte di cuori.
Definire il Nuovo Spazio Campionario: Con la condizione che la carta è di cuori, abbiamo 13 possibili carte.
Identificare gli Eventi Favorevoli: Gli eventi favorevoli ora sono le carte di cuori con valore 7, 8 o 9. Quindi, ci sono 3 eventi favorevoli.
Calcolare la Probabilità: Ancora una volta, la probabilità è il numero di eventi favorevoli diviso il numero totale di eventi nello spazio campionario ridotto.
Calcoliamo ora queste probabilità.
Calcoli#
Parte 1: Probabilità di Estrarre una Figura di Cuori#
Parte 2: Probabilità di 7, 8, o 9 dato Cuori#
Possiamo calcolare esattamente queste probabilità.
I risultati dei calcoli sono i seguenti:
La probabilità di estrarre una figura di cuori da un mazzo di 52 carte è circa \(0.058\) o \(5.8\%\).
Dato che sappiamo che il seme della carta estratta è cuori, la probabilità che il valore numerico della carta sia 7, 8, o 9 è \(0.231\) o \(23.1\%\).
Questi calcoli mostrano come la conoscenza di un’informazione aggiuntiva (in questo caso, il seme della carta estratta) possa cambiare lo spazio campionario e influenzare la probabilità di eventi specifici.
# Parte 1: Probabilità di estrarre una figura di cuori
P_figura_cuori = 3 / 52
# Parte 2: Probabilità che il valore numerico sia 7, 8, o 9 dato che la carta è di cuori
P_789_dato_cuori = 3 / 13
P_figura_cuori, P_789_dato_cuori
(0.057692307692307696, 0.23076923076923078)
Esercizio 4 (Paradosso dei due bambini)#
Una coppia ha due bambini. Almeno uno dei due è una femmina. Qual è la probabilità che siano entrambe femmine? Qual è la probabilità che siano entrambe femmine, sapendo che il primogenito è una femmina? (Si noti che, nella maggior parte dei paesi, la probabilità che un neonato sia maschio è pari a 0.51)
Soluzione.
Per risolvere il problema considerando che la probabilità che un neonato sia maschio è \(0.51\) (e quindi la probabilità che sia femmina è \(0.49\)), dobbiamo ricalcolare le probabilità indicate nel problema originale, tenendo conto di questa nuova informazione.
Eventi Considerati#
Evento A: Entrambi i bambini sono femmine.
Evento B: Almeno uno dei due bambini è femmina.
Evento C: Il primogenito è femmina.
Con le probabilità reali di nascita di maschi e femmine, lo spazio campionario cambia leggermente rispetto alla situazione ideale dove maschi e femmine hanno la stessa probabilità di nascita.
Probabilità Calcolate#
\(P(A|B)\): La probabilità che entrambi i bambini siano femmine, dato che almeno uno dei due è una femmina.
\(P(A|C)\): La probabilità che entrambi i bambini siano femmine, dato che il primogenito è una femmina.
Calcoli#
Probabilità Assolute:
\(P(\text{femmina}) = 0.49\)
\(P(\text{maschio}) = 0.51\)
\(P(A)\): La probabilità che entrambi i bambini siano femmine è \(P(\text{femmina}) \times P(\text{femmina})\).
\(P(B)\): La probabilità che almeno uno dei bambini sia femmina si calcola come \(1 - P(\text{entrambi maschi})\), dove \(P(\text{entrambi maschi}) = P(\text{maschio}) \times P(\text{maschio})\).
\(P(C)\): La probabilità che il primogenito sia femmina è semplicemente \(P(\text{femmina})\), dato che non dipende dal sesso del secondo bambino.
Usando queste probabilità, possiamo calcolare \(P(A|B)\) e \(P(A|C)\) usando le formule della probabilità condizionata.
Procediamo ora con i calcoli in Python.
# Probabilità di maschio e femmina
P_maschio = 0.51
P_femmina = 0.49
# Calcolo delle probabilità assolute
P_A = P_femmina * P_femmina # Entrambi femmine
P_entrambi_maschi = P_maschio * P_maschio
P_B = 1 - P_entrambi_maschi # Almeno uno femmina
P_C = P_femmina # Primogenito femmina
# Calcolo delle probabilità condizionate
P_A_dato_B = P_A / P_B # Entrambi femmine dato almeno uno femmina
P_A_dato_C = P_A / P_C # Entrambi femmine dato primogenito femmina
P_A_dato_B, P_A_dato_C
(0.32450331125827814, 0.49)
Con la probabilità aggiornata che un neonato sia maschio (\(0.51\)) e femmina (\(0.49\)), otteniamo i seguenti risultati per le probabilità condizionate:
La probabilità che entrambi i bambini siano femmine, dato che almeno uno dei due è una femmina, è circa \(0.325\).
La probabilità che entrambi i bambini siano femmine, sapendo che il primogenito è una femmina, è \(0.49\).
Esercizio 5#
Si consideri l’esperimento casuale che consiste nel lancio di due dadi bilanciati. Definiamo i seguenti eventi: A={esce un 1 o un 2 nel primo lancio} e B={il punteggio totale è 8}. Ci chiediamo: gli eventi A e B sono statisticamente indipendenti?
Soluzione.
Per determinare se gli eventi \(A\) e \(B\) sono statisticamente indipendenti, dobbiamo verificare la definizione di indipendenza statistica. Due eventi, \(A\) e \(B\), sono indipendenti se e solo se:
dove:
\(P(A)\) è la probabilità che si verifichi l’evento \(A\),
\(P(B)\) è la probabilità che si verifichi l’evento \(B\),
\(P(A \cap B)\) è la probabilità che si verifichino sia \(A\) sia \(B\) contemporaneamente.
Definizione degli Eventi#
Evento \(A\): Esce un 1 o un 2 nel primo lancio. Dato che ci sono 6 possibili esiti per ogni lancio di un dado e 2 di questi soddisfano la condizione di \(A\), la probabilità di \(A\) è \(P(A) = \frac{2}{6}\).
Evento \(B\): Il punteggio totale è 8. Per determinare \(P(B)\), dobbiamo contare i modi in cui la somma dei due dadi può essere 8: (2,6), (3,5), (4,4), (5,3), (6,2), per un totale di 5 possibilità su 36 esiti totali possibili (\(6 \times 6\)), quindi \(P(B) = \frac{5}{36}\).
Evento \(A \cap B\): Esce un 1 o un 2 nel primo lancio E il punteggio totale è 8. Questo può succedere solo se il primo dado mostra 2 e il secondo 6, quindi c’è 1 solo esito favorevole, e \(P(A \cap B) = \frac{1}{36}\).
Calcolo delle Probabilità#
Calcoliamo ora \(P(A)\), \(P(B)\), e \(P(A \cap B)\) per verificare l’indipendenza.
Verifica dell’Indipendenza#
Se \(P(A \cap B) = P(A) \times P(B)\), allora gli eventi \(A\) e \(B\) sono indipendenti. Procediamo con i calcoli in Python.
I risultati dei calcoli sono i seguenti:
\(P(A) = \frac{1}{3}\) o circa \(0.333\), che rappresenta la probabilità che esca un 1 o un 2 nel primo lancio.
\(P(B) = \frac{5}{36}\) o circa \(0.139\), che rappresenta la probabilità che il punteggio totale sia 8.
\(P(A \cap B) = \frac{1}{36}\) o circa \(0.028\), che rappresenta la probabilità che si verifichino contemporaneamente \(A\) e \(B\).
# Calcolo delle probabilità
P_A = 2 / 6
P_B = 5 / 36
P_A_cap_B = 1 / 36
# Verifica dell'indipendenza
indipendenza = P_A_cap_B == P_A * P_B
P_A, P_B, P_A_cap_B, indipendenza
(0.3333333333333333, 0.1388888888888889, 0.027777777777777776, False)
Dato che \(P(A \cap B) \neq P(A) \times P(B)\), possiamo concludere che gli eventi \(A\) e \(B\) non sono statisticamente indipendenti. Questo significa che il verificarsi dell’evento \(A\) (un 1 o un 2 nel primo lancio) ha un effetto sulla probabilità che si verifichi l’evento \(B\) (il punteggio totale è 8), e viceversa.
Esercizio 6#
Consideriamo il fenomeno causale consistente nell’osservazione dei punti ottenuti dal lancio di una coppia di dadi a sei facce. Supponiamo che i dadi siano truccati i dadi truccati con la distribuzione di probabilità per ogni faccia data come {0.3,0.3,0.1,0.1,0.1,0.1}, dove i primi due valori (0.3) corrispondono alle probabilità di ottenere 1 o 2, e i restanti valori (0.1) per le facce 3, 4, 5, e 6.
Si trovi una risposta ai seguenti punti.
1. Probabilità che la Somma dei Punti sia Uguale a 7#
Per calcolare questa probabilità, dobbiamo considerare tutte le combinazioni di lanci dei due dadi che danno una somma di 7 e sommare le loro probabilità.
2. Probabilità di «Primo Dado < 3 o Secondo Dado Numero Dispari»#
Questo evento include combinazioni dove il primo dado mostra 1 o 2, oppure il secondo dado mostra un numero dispari (1, 3, o 5). Dobbiamo calcolare la probabilità di queste combinazioni.
3. Probabilità di «Primo Dado < 3 e Secondo Dado Numero Dispari»#
Questo richiede di trovare la probabilità che il primo dado mostri 1 o 2 e contemporaneamente il secondo dado mostri 1, 3, o 5.
4. Probabilità di Ottenere 3 con il Primo Dado#
Dato il dado truccato, la probabilità di ottenere 3 con il primo dado è data direttamente dalla distribuzione di probabilità.
5. Probabilità di Ottenere 3 con il Secondo Dado, Dato che il Primo Dado ha Prodotto l’Esito 4#
Questa probabilità si basa sulla condizione che il primo dado abbia già mostrato 4; cerchiamo la probabilità di ottenere 3 con il secondo dado in queste circostanze.
Cominciamo calcolando queste probabilità una alla volta. Per le prime tre, dobbiamo sommare le probabilità di eventi specifici, tenendo conto della distribuzione di probabilità per ogni dado. Per le ultime due, useremo direttamente la distribuzione di probabilità fornita. Procediamo con i calcoli in Python.
Ecco le probabilità calcolate per ciascuno degli eventi richiesti:
La probabilità che la somma dei punti ottenuti nel lancio dei due dadi sia uguale a 7 è \(0.14\) o \(14\%\).
La probabilità che il lancio del primo dado produca un numero minore di 3 oppure il lancio del secondo dado produca un numero dispari è \(0.8\) o \(80\%\).
La probabilità che il lancio del primo dado produca un numero minore di 3 e il lancio del secondo dado produca un numero dispari è \(0.3\) o \(30\%\).
La probabilità di ottenere 3 con il lancio del primo dado è \(0.1\) o \(10\%\).
La probabilità di ottenere 3 con il secondo dado, dato che il primo dado ha prodotto l’esito 4, è anch’essa \(0.1\) o \(10\%\).
# Probabilità per ogni faccia del dado truccato
prob_faccia = [0.3, 0.3, 0.1, 0.1, 0.1, 0.1]
# 1. Probabilità che la somma dei punti sia uguale a 7
prob_somma_7 = sum(prob_faccia[i - 1] * prob_faccia[6 - i - 1] for i in range(1, 7))
print(prob_somma_7)
0.14
# 2. Probabilità che il primo dado sia < 3 o il secondo dado sia un numero dispari
# Calcoliamo separatamente, poi uniamo le probabilità tenendo conto dell'intersezione
prob_primo_meno_di_3 = prob_faccia[0] + prob_faccia[1]
prob_secondo_dispari = prob_faccia[0] + prob_faccia[2] + prob_faccia[4]
# L'intersezione (primo dado < 3 e secondo dado dispari) è già considerata nei calcoli di prob_secondo_dispari
prob_unione = (
prob_primo_meno_di_3
+ prob_secondo_dispari
- (prob_primo_meno_di_3 * prob_secondo_dispari)
)
print(prob_unione)
0.8
# 3. Probabilità che il primo dado sia < 3 e il secondo dado sia un numero dispari
prob_intersezione = prob_primo_meno_di_3 * prob_secondo_dispari
print(prob_intersezione)
0.3
# 4. Probabilità di ottenere 3 con il primo dado
prob_primo_3 = prob_faccia[2]
print(prob_primo_3)
0.1
# 5. Probabilità di ottenere 3 con il secondo dado, dato che il primo dado ha prodotto 4
# Dato che gli eventi sono indipendenti, la probabilità di ottenere 3 con il secondo dado non cambia
prob_secondo_3_dato_primo_4 = prob_faccia[2]
print(prob_secondo_3_dato_primo_4)
0.1
Questi risultati tengono conto della distribuzione di probabilità specifica dei dadi truccati e mostrano come le probabilità di eventi complessi possono essere calcolate combinando le probabilità degli esiti singoli.
Watermark#
%load_ext watermark
%watermark -n -u -v -iv -w -m
Last updated: Sun Jun 16 2024
Python implementation: CPython
Python version : 3.12.3
IPython version : 8.25.0
Compiler : Clang 16.0.6
OS : Darwin
Release : 23.4.0
Machine : arm64
Processor : arm
CPU cores : 8
Architecture: 64bit
pandas : 2.2.2
arviz : 0.18.0
matplotlib: 3.8.4
numpy : 1.26.4
Watermark: 2.4.3