Dalla comprensione delle vendite giornaliere di un negozio all’analisi della disuguaglianza di reddito in una società, questi 6 esercizi risolti ti aiuteranno a padroneggiare i concetti chiave. Applicheremo i principi statistici a scenari reali in contesti economici e sociali. Ogni esercizio è corredato da una soluzione dettagliata, spiegazioni teoriche concise e, per gli esempi più complessi, anche il codice Python per permetterti di replicare e sperimentare.
Preparati a calcolare media e deviazione standard, interpretare frequenze relative, individuare mediana e quartili, costruire boxplot, e comprendere a fondo l’Indice di Gini e le curve di concentrazione.
Iniziamo!

Statistica Descrittiva Univariata e Bivariata, Rappresentazioni Grafiche Univariate e Bivariate
Sconto 40% 9,99€
Esercizio 1 (Base): Media e Deviazione Standard – Vendite Mensili
Scenario:
Un negozio di abbigliamento registra le vendite giornaliere (in €) per una settimana: [120, 150, 130, 160, 140, 170, 110].
Domande:
- Calcola la media delle vendite.
- Calcola la deviazione standard.
Soluzione:
Media:
[math]\displaystyle \bar{x} = \frac{120+150+130+160+140+170+110}{7} = \frac{980}{7} = 140 \,€[/math]
Teoria: La media è la somma dei valori divisa per il numero di osservazioni. Misura la tendenza centrale.
Deviazione standard:
Calcola gli scarti quadratici:
[math]\displaystyle (120-140)^2=400, (150-140)^2=100, \dots[/math]
Somma degli scarti quadratici: [math]400+100+100+400+0+900+900=2800[/math].
Varianza: [math]\displaystyle \sigma^2 = \frac{2800}{7} = 400[/math].
Deviazione standard: [math]\sigma = \sqrt{400} = 20 \,€[/math].
Teoria: La deviazione standard misura la dispersione dei dati attorno alla media.
Media e Deviazione Standard – Vendite Mensili
Applicazione: Fondamentale per qualsiasi attività commerciale. La media fornisce un’indicazione rapida della performance tipica (vendite medie settimanali/mensili), utile per stabilire obiettivi o confrontarsi con periodi precedenti. La deviazione standard è cruciale per valutare la volatilità delle vendite. Un’alta deviazione standard indica che le vendite sono molto variabili giorno per giorno, suggerendo che l’azienda potrebbe avere flussi di cassa imprevedibili o che la domanda è instabile. Una bassa deviazione standard, al contrario, indica vendite più stabili e prevedibili, facilitando la gestione delle scorte e la pianificazione finanziaria.
Esercizio 2 (Base-Intermedio): Frequenze Relative – Indagine Sociale
Scenario:
Un sondaggio su 200 cittadini chiede il grado di soddisfazione per un servizio pubblico (1=Insoddisfatto, 5=Molto soddisfatto). Frequenze assolute: [30, 50, 60, 40, 20].
Domanda:
Calcola le frequenze relative e percentuali.
Soluzione:
Frequenze relative:
[math]\displaystyle \frac{30}{200}=0.15, \frac{50}{200}=0.25, \dots[/math]
Risultato: [math][0.15,0.25,0.30,0.20,0.10][/math].
Frequenze percentuali:
Moltiplica per 100: [math][15\%,25\%,30\%,20\%,10\%][/math].
Teoria: Le frequenze relative standardizzano i conteggi per confrontare distribuzioni diverse.
Frequenze Relative – Indagine Sociale
Applicazione: Essenziale nelle indagini sociali, sondaggi d’opinione e studi di mercato. Le frequenze relative e percentuali permettono di trasformare i conteggi grezzi in proporzioni facilmente comprensibili e confrontabili. Ad esempio, sapere che il 30% dei cittadini è “abbastanza soddisfatto” di un servizio pubblico è molto più significativo che sapere che 60 persone lo sono su 200. Questo permette ai decisori politici o ai gestori di servizi di identificare rapidamente le aree di forza e debolezza, orientando le strategie di miglioramento.
Esercizio 3 (Intermedio): Mediana e Quartili – Produzione Industriale
Scenario:
Tempi di produzione (in minuti) per 11 lotti: [22, 25, 19, 30, 21, 23, 28, 18, 27, 24, 20].
Domande:
- Ordina i dati e trova la mediana.
- Calcola il primo e terzo quartile.
Soluzione:
Dati ordinati: [math][18,19,20,21,22,23,24,25,27,28,30][/math].
Mediana (posizione 6): [math]23[/math] minuti.
Quartili:
- [math]Q1[/math] (25° percentile): valore in posizione [math]0.25 \times 11 = 2.75 \to 20.25[/math] minuti.
- [math]Q3[/math] (75° percentile): valore in posizione [math]8.25 \to 26[/math] minuti.
Teoria: La mediana divide i dati in due metà; i quartili segmentano il 25% e 75% dei dati.
Esercizio 4 (Intermedio-Avanzato): Boxplot – Redditi Familiari
Scenario:
Redditi annui (in k€) di 10 famiglie: [25, 35, 30, 40, 22, 50, 28, 45, 32, 60].
Domanda:
Costruisci un boxplot e commenta la distribuzione.
Soluzione:
Ordina i dati: [math][22,25,28,30,32,35,40,45,50,60][/math].
Calcola:
- Mediana: [math]33.5[/math] (media di 32 e 35).
- [math]Q1=28[/math], [math]Q3=45[/math].
- IQR: [math]45-28=17[/math].
Limiti per outliers:
- [math]Q1 – 1.5 \times IQR = -2.5[/math] (nessun outlier inferiore)
- [math]Q3 + 1.5 \times IQR = 70.5[/math] (nessun outlier superiore).
Boxplot: Da 22 a 60, con box tra 28 e 45 e linea a 33.5.
Teoria: Il boxplot visualizza mediana, quartili e dispersione. Qui la distribuzione è leggermente skewed a destra.
Codice Python per il Boxplot:
import matplotlib.pyplot as plt
import numpy as np
# Dati
redditi = [25, 35, 30, 40, 22, 50, 28, 45, 32, 60]
# Boxplot
plt.figure(figsize=(8, 4))
plt.boxplot(redditi, vert=False, patch_artist=True, widths=0.6)
plt.title("Distribuzione dei redditi familiari (k€)")
plt.xlabel("Reddito annuo")
plt.grid(axis='x', linestyle='--')
plt.show()

Spiegazione: boxplot visualizza mediana, quartili e eventuali outlier. vert=False crea un boxplot orizzontale. Il risultato mostra una leggera asimmetria verso destra (coda lunga a valori alti).
Esercizio 5 (Avanzato): Indice di Gini – Disuguaglianza di Reddito
Scenario:
Redditi (in k€) di 5 individui: [math][10,20,30,40,100][/math].
Domanda:
Calcola l’indice di Gini e interpretalo.
Soluzione:
Calcola le proporzioni cumulative di reddito e popolazione (vedi tabella).
Formula:
[math]\displaystyle G = 1 – \sum (p_i – p_{i-1})(q_i + q_{i-1})[/math]
Dove [math]p_i[/math] è la proporzione cumulativa della popolazione, [math]q_i[/math] del reddito.
Risultato: [math]G \approx 0.36[/math].
Teoria: L’indice di Gini varia tra 0 (uguaglianza perfetta) e 1 (disuguaglianza massima). Qui indica una discreta disuguaglianza.
Codice Python per la Curva di Lorenz e Indice di Gini:
from matplotlib import pyplot as plt
import numpy as np
# Dati
redditi = [10, 20, 30, 40, 100]
n = len(redditi)
popolazione = np.arange(1, n+1) / n
redditi_cumulativi = np.cumsum(sorted(redditi)) / sum(redditi)
popolazione = np.insert(popolazione, 0, 0)
redditi_cumulativi = np.insert(redditi_cumulativi, 0, 0)
# Curva di Lorenz
plt.figure(figsize=(8, 6))
plt.plot(popolazione, redditi_cumulativi, marker='o', label='Curva di Lorenz')
plt.plot([0, 1], [0, 1], '--', label='Bisettrice (equità perfetta)')
plt.fill_between(popolazione, popolazione, redditi_cumulativi, alpha=0.2)
plt.title("Curva di Lorenz - Disuguaglianza di reddito")
plt.xlabel("Cumulativo della popolazione")
plt.ylabel("Cumulativo del reddito")
plt.legend()
plt.grid()
plt.show()
# Calcolo indice di Gini
gini = 1 - sum((popolazione[1:] - popolazione[:-1]) * (redditi_cumulativi[1:] + redditi_cumulativi[:-1])) / 1
print(f"Indice di Gini: {gini:.2f}")
Output: Grafico con curva di Lorenz e area di disuguaglianza. Indice di Gini stampato a console (es: 0.36).

Spiegazione: La curva si allontana dalla bisettrice quanto maggiore è la disuguaglianza. L’area tra la curva e la bisettrice è proporzionale all’indice di Gini.
—
Esercizio 6 (Avanzato): Analisi di Concentrazione – Quote di Mercato
Scenario:
5 aziende hanno quote di mercato: [math][50\%,20\%,15\%,10\%,5\%][/math].
Domanda:
Disegna la curva di Lorenz e calcola l’indice di concentrazione.
Soluzione:
Ordina le quote in modo crescente: [math][5\%,10\%,15\%,20\%,50\%][/math].
Calcola le proporzioni cumulative:
- Popolazione cumulativa: [math][20\%,40\%,60\%,80\%,100\%][/math].
- Reddito cumulativo: [math][5\%,15\%,30\%,50\%,100\%][/math].
Indice di concentrazione: Area tra la curva di Lorenz e la bisettrice. [math]C \approx 0.4[/math]
Teoria: La curva di Lorenz mostra la disuguaglianza nella distribuzione; l’indice [math]C[/math] è un derivato del Gini.
Codice Python per la Curva di Concentrazione:
import matplotlib.pyplot as plt
import numpy as np
# Dati
quote = [5, 10, 15, 20, 50] # In %
n = len(quote)
popolazione = np.arange(1, n+1) / n
quote_cumulative = np.cumsum(sorted(quote)) / sum(quote)
popolazione = np.insert(popolazione, 0, 0)
quote_cumulative = np.insert(quote_cumulative, 0, 0)
# Plot
plt.figure(figsize=(8, 6))
plt.plot(popolazione, quote_cumulative, marker='o', label='Curva di Lorenz')
plt.plot([0, 1], [0, 1], '--', label='Equità perfetta')
plt.fill_between(popolazione, popolazione, quote_cumulative, color='skyblue', alpha=0.4)
plt.title("Concentrazione del mercato")
plt.xlabel("Cumulativo delle aziende")
plt.ylabel("Cumulativo delle quote")
plt.legend()
plt.grid()
plt.show()
# Indice di concentrazione (Gini)
C = 1 - sum((popolazione[1:] - popolazione[:-1]) * (quote_cumulative[1:] + quote_cumulative[:-1]))
print(f"Indice di concentrazione: {C:.2f}")
Output: Curva di Lorenz per le quote di mercato. Indice di concentrazione stampato (es: 0.40).

Nota:
Prerequisiti:
Installa le librerie con:
pip install matplotlib numpy
Personalizzazione:
Modifica plt.title(), plt.xlabel(), o i colori per adattare i grafici al tuo stile.
Esercizi 1-3:
Non richiedevano grafici, ma per l’Esercizio 2 (frequenze), puoi usare un bar plot:
import matplotlib.pyplot as plt
categorie = ['1', '2', '3', '4', '5']
frequenze = [15, 25, 30, 20, 10]
plt.bar(categorie, frequenze)
plt.title("Soddisfazione del servizio pubblico")
plt.ylabel("%")
plt.show()






