Esercizio 3.1 Supponiamo di dover formare una commissione di 5 psicologi su un gruppo di 20 persone (10 psicologi clinici e 10 psicologi del lavoro). Qual è la probabilità che almeno 2 psicologi clinici siano nella commissione? Risolvi il problema usando una simulazione Monte Carlo.
Soluzione. Per calcolare questa probabilità in maniera analitica, utilizziamo la seguente uguaglianza:
Quindi, la probabilità che almeno 2 psicologi clinici siano nella commissione è circa 0.848.
import numpy as npimport scipy.stats as statsimport math# Funzione per calcolare le combinazionidef nCk(n, k):return math.factorial(n) // (math.factorial(k) * math.factorial(n - k))# Calcolo delle probabilità per il problema della commissionetotal_ways = nCk(20, 5)no_clinical = nCk(10, 0) * nCk(10, 5)one_clinical = nCk(10, 1) * nCk(10, 4)p_no_clinical = no_clinical / total_waysp_one_clinical = one_clinical / total_waysp_at_least_two_clinical =1- p_no_clinical - p_one_clinicalprint(f"Probabilità di almeno 2 psicologi clinici: {p_at_least_two_clinical:.3f}")
Probabilità di almeno 2 psicologi clinici: 0.848
In maniera più intuitiva, possiamo risolvere il problema con una simulazione Monte Carlo.
import random# Numero di simulazionisimulations =1000000# Numero di successi (almeno 2 psicologi clinici nella commissione)success_count =0# Creiamo una lista che rappresenta il gruppo di 20 persone# 1 rappresenta un psicologo clinico, 0 rappresenta un psicologo del lavorogroup = [1] *10+ [0] *10# Simulazione Monte Carlofor _ inrange(simulations):# Estrai casualmente 5 persone dal gruppo committee = random.sample(group, 5)# Conta quanti psicologi clinici ci sono nella commissione num_clinical_psychologists =sum(committee)# Verifica se ci sono almeno 2 psicologi cliniciif num_clinical_psychologists >=2: success_count +=1# Calcola la probabilitàprobability = success_count / simulations# Mostra il risultatoprint(f"La probabilità che almeno 2 psicologi clinici siano nella commissione è: {probability:.4f}")
La probabilità che almeno 2 psicologi clinici siano nella commissione è: 0.8472
---title: "Probabilità"format: html: code-tools: truejupyter: python3---::: {#exr-prob-on-general-spaces-1}Supponiamo di dover formare una commissione di 5 psicologi su un gruppo di 20 persone (10 psicologi clinici e 10 psicologi del lavoro). Qual è la probabilità che almeno 2 psicologi clinici siano nella commissione? Risolvi il problema usando una simulazione Monte Carlo.:::<button class="solution-toggle">👀 Visualizza la Soluzione</button><div class="solution">Per calcolare questa probabilità in maniera analitica, utilizziamo la seguente uguaglianza:$$P(\text{almeno 2 psicologi clinici}) = 1 - P(\text{nessun psicologo clinico}) - P(\text{1 psicologo clinico}).$$Il numero totale di modi per selezionare 5 persone dal gruppo di 20 è dato da:$$\binom{20}{5} = \frac{20!}{5!(15!)} = 15,504.$$Il numero di modi per avere nessun psicologo clinico nella commissione (ovvero, selezionare solo psicologi del lavoro) è:$$\binom{10}{0} \times \binom{10}{5} = 1 \times 252 = 252.$$Quindi, la probabilità di avere nessun psicologo clinico è:$$P(\text{nessun psicologo clinico}) = \frac{252}{15,504} \approx 0.016.$$Il numero di modi per avere esattamente 1 psicologo clinico nella commissione è:$$\binom{10}{1} \times \binom{10}{4} = 10 \times 210 = 2,100.$$Quindi, la probabilità di avere esattamente 1 psicologo clinico è:$$P(\text{1 psicologo clinico}) = \frac{2,100}{15,504} \approx 0.135.$$La probabilità di avere almeno 2 psicologi clinici nella commissione è quindi:$$\begin{align}P(\text{almeno 2 psicologi clinici}) &= 1 - P(\text{nessun psicologo clinico}) - P(\text{1 psicologo clinico}) \notag\\&= 1 - 0.016 - 0.135 \notag\\&= 0.848.\notag\end{align}$$Quindi, la probabilità che almeno 2 psicologi clinici siano nella commissione è circa 0.848.```{python}import numpy as npimport scipy.stats as statsimport math# Funzione per calcolare le combinazionidef nCk(n, k):return math.factorial(n) // (math.factorial(k) * math.factorial(n - k))# Calcolo delle probabilità per il problema della commissionetotal_ways = nCk(20, 5)no_clinical = nCk(10, 0) * nCk(10, 5)one_clinical = nCk(10, 1) * nCk(10, 4)p_no_clinical = no_clinical / total_waysp_one_clinical = one_clinical / total_waysp_at_least_two_clinical =1- p_no_clinical - p_one_clinicalprint(f"Probabilità di almeno 2 psicologi clinici: {p_at_least_two_clinical:.3f}")```In maniera più intuitiva, possiamo risolvere il problema con una simulazione Monte Carlo.```{python}import random# Numero di simulazionisimulations =1000000# Numero di successi (almeno 2 psicologi clinici nella commissione)success_count =0# Creiamo una lista che rappresenta il gruppo di 20 persone# 1 rappresenta un psicologo clinico, 0 rappresenta un psicologo del lavorogroup = [1] *10+ [0] *10# Simulazione Monte Carlofor _ inrange(simulations):# Estrai casualmente 5 persone dal gruppo committee = random.sample(group, 5)# Conta quanti psicologi clinici ci sono nella commissione num_clinical_psychologists =sum(committee)# Verifica se ci sono almeno 2 psicologi cliniciif num_clinical_psychologists >=2: success_count +=1# Calcola la probabilitàprobability = success_count / simulations# Mostra il risultatoprint(f"La probabilità che almeno 2 psicologi clinici siano nella commissione è: {probability:.4f}")```</div>