Metodi di Campionamento in Python

Metodi di campionamento con Python header

Il campionamento è un processo fondamentale nella ricerca e nella statistica, consentendo di trarre conclusioni significative da un sottoinsieme rappresentativo di una popolazione più ampia. In questo articolo, esamineremo il concetto di campionamento e i principali metodi utilizzati per selezionare campioni rappresentativi. Attraverso esempi pratici in codice Python e considerazioni teoriche, illustreremo l’importanza di una selezione accurata del campione e le applicazioni dei diversi metodi di campionamento.

Il Campionamento

Il campionamento è il processo di selezione di un sottoinsieme rappresentativo di una popolazione più ampia per condurre un’analisi statistica o una ricerca. Piuttosto che raccogliere dati da un’intera popolazione, che potrebbe essere costosa, impegnativa o addirittura impossibile, i ricercatori selezionano un campione di individui o elementi che riflettono le caratteristiche della popolazione nel suo complesso.

Il campionamento è fondamentale in statistica perché permette di fare inferenze sulla popolazione più ampia senza la necessità di raccogliere dati da tutti i suoi membri. Tuttavia, è importante che il campione sia selezionato in modo casuale o rappresentativo per evitare bias e garantire che le conclusioni tratte siano valide per l’intera popolazione.

Il Campione e la Popolazione

Si usano spesso i termini campione e popolazione, è importante ben puntualizzare questi due concetti prima di andare avanti, dato che si tratta, nel contesto della statistica, di due concetti ben distinti.

La popolazione rappresenta l’intero gruppo di individui, oggetti, eventi o altre entità che si vogliono studiare o analizzare. È l’insieme completo e definito di elementi su cui si intendono fare inferenze statistiche. Ad esempio, se si sta studiando l’altezza degli studenti di una scuola, la popolazione sarebbero tutti gli studenti di quella scuola.

Un campione è un sottoinsieme selezionato dalla popolazione. È un gruppo di individui estratti dalla popolazione che vengono utilizzati per condurre un’analisi statistica. L’obiettivo del campionamento è quello di ottenere un gruppo rappresentativo della popolazione, in modo da poter fare inferenze valide sull’intera popolazione. Ad esempio, se si vuole studiare l’altezza degli studenti di una scuola, un campione potrebbe essere costituito da 100 studenti selezionati casualmente dalla lista completa degli studenti della scuola.

In breve, la principale differenza tra popolazione e campione è che la popolazione rappresenta l’intero gruppo di interesse, mentre il campione è un sottoinsieme selezionato dalla popolazione che viene studiato o analizzato per fare inferenze sulla popolazione stessa.

Ma come si fa a sapere se il campione è rappresentativo della popolazione?

Determinare se un campione è veramente rappresentativo di una popolazione è fondamentale per garantire che le conclusioni tratte dall’analisi del campione siano valide per l’intera popolazione. Ci sono diversi metodi e criteri che possono essere utilizzati per valutare se un campione è rappresentativo:

  • Casualità nel Campionamento: Il campione deve essere selezionato in modo casuale dalla popolazione. Questo significa che ogni individuo o elemento della popolazione ha una probabilità conosciuta e uguale di essere selezionato per far parte del campione. L’uso di tecniche di campionamento casuale, come il campionamento casuale semplice o il campionamento sistematico, può aiutare a garantire la casualità nella selezione del campione.
  • Ampiezza del Campione: Il campione dovrebbe essere sufficientemente ampio da catturare la variabilità presente nella popolazione. Un campione troppo piccolo potrebbe non essere rappresentativo della diversità della popolazione, mentre un campione più grande offre una migliore probabilità di rappresentatività.
  • Rappresentatività delle Caratteristiche: Il campione dovrebbe riflettere le caratteristiche chiave della popolazione. Ad esempio, se la popolazione è composta per il 60% da donne e per il 40% da uomini, il campione dovrebbe riflettere proporzionalmente questa suddivisione per genere.
  • Assenza di Bias nel Campionamento: È importante evitare bias nel processo di campionamento che potrebbero influenzare i risultati. Ad esempio, il campionamento per convenienza, dove si selezionano individui in base alla loro disponibilità o accessibilità, potrebbe introdurre un bias nella composizione del campione.
  • Valutazione Statistica: Possono essere utilizzate analisi statistiche per valutare se il campione è rappresentativo della popolazione. Ad esempio, confrontando le caratteristiche demografiche o altre variabili chiave del campione con quelle della popolazione.
  • Confronto con la Letteratura Esistente: Quando possibile, confrontare le caratteristiche del campione con quelle di altre ricerche o studi precedentemente condotti sulla stessa popolazione può aiutare a valutare la rappresentatività del campione.

Nel complesso, una combinazione di metodi e criteri può essere utilizzata per valutare se un campione è veramente rappresentativo di una popolazione. È importante prestare attenzione a questi aspetti durante la progettazione dello studio e l’analisi dei dati al fine di garantire l’affidabilità e la validità delle conclusioni tratte dall’analisi del campione.

Metodi di Campionamento

I metodi di campionamento sono progettati per garantire che il campione sia rappresentativo della popolazione di interesse, e la scelta del metodo dipende dalla natura della ricerca, dalle risorse disponibili e da altri fattori rilevanti. Un campionamento accurato è essenziale per garantire che i risultati ottenuti dagli studi siano affidabili e generalizzabili alla popolazione di riferimento.

Ci sono diversi metodi di campionamento, e la scelta del metodo dipende dall’obiettivo dello studio e dalle caratteristiche della popolazione. Ecco alcuni dei principali metodi di campionamento:

  • Campionamento casuale semplice
  • Campionamento sistematico
  • Campionamento stratificato
  • Campionamento per cluster
  • Campionamento conveniente
  • Campionamento per quote

La scelta del metodo dipende dalla natura della ricerca e dalle risorse disponibili. È importante selezionare un metodo che minimizzi il rischio di bias e fornisca risultati rappresentativi della popolazione di interesse. Vediamo adesso con dei semplici esempi implementati in Python i diversi metodi di campionamento.

Implementiamo in Python alcuni metodi di campionamento : definizione di una popolazione di prova

Per poter implementare dei metodi di campionamento con Python, sarà necessario dapprima creare una popolazione che simuli il più possibile una reale, a tal proposito genereremo dei valori casuali descriveranno le caratteristiche di ciascun elemento della popolazione. Il numero di elementi dovrebbe essere enorme, però per semplicità di esempio ci limiteremo a 100 soggetti. In Python, un buon modo per contenere una definizione è tramite un DataFrame di pandas.

import numpy as np
import pandas as pd

# Creazione di una popolazione di esempio
popolazione = pd.DataFrame({
    'ID': range(1, 101),  # Identificatori univoci per gli individui
    'Età': np.random.randint(18, 70, size=100),  # Età casuale tra 18 e 70 anni
    'Genere': np.random.choice(['Maschio', 'Femmina'], size=100),  # Genere casuale
    'Reddito': np.random.normal(50000, 10000, size=100)  # Reddito casuale con media 50000 e deviazione standard 10000
})

popolazione

La variabile popolazione è un dataframe e rappresenta una popolazione immaginaria composta da 100 individui, ognuno con un identificatore unico, un’età casuale, un genere casuale e un reddito casuale. Questo è solo un esempio sintetico di una popolazione che potrebbe essere utilizzata per scopi di analisi statistica o di simulazione. Eseguendo il frammento di codice precedente, otterremo infatti un dataframe con 100 diversi individui distribuiti in maniera uniforme tra le varie età possibili (tra 18 e 70 anni) e con un valore di reddito distribuito “normalmente”. I valori contenuti all’interno varieranno di esecuzione in esecuzione. Nel mio caso ho ottenuto il seguene risultato.

Campionamento di una popolazione - Dataframe della popolazione

Possiamo anche usare un grafico di visualizzazione della popolazione, mediante un istogramma a barre per vedere come questa sia distribuita tra le varie fasce di età:

import matplotlib.pyplot as plt
import seaborn as sns

# Grafico dell'istogramma per visualizzare la distribuzione dell'età
plt.figure(figsize=(10, 6))
sns.histplot(popolazione['Età'], bins=10, kde=True, color='skyblue')
plt.title('Distribuzione dell\'età nella popolazione')
plt.xlabel('Età')
plt.ylabel('Frequenza')
plt.grid(True)
plt.show()

Eseguendo otterrete un grafico simile al seguente (la popolazione è casuale e varia di esecuzione in esecuzione):

Campionamento di una popolazione - distirbuzione della popolazione

Adesso che abbiamo a disposizione una popolazione da campionare, possiamo passare ad analizzare i vari metodi di campionamento con un esempio specifico per ciascuno di essi.

Campionamento Casuale Semplice

Il campionamento casuale semplice è uno dei metodi di campionamento più semplici e fondamentali in statistica. Consiste nel selezionare casualmente un campione di individui dalla popolazione senza alcun tipo di stratificazione o suddivisione. In altre parole, ogni individuo della popolazione ha la stessa probabilità di essere selezionato per far parte del campione. Questo metodo è ampiamente utilizzato perché è facile da implementare e fornisce una stima non distorta delle caratteristiche della popolazione.

# Campionamento Casuale Semplice
def campionamento_casuale_semplice(popolazione, n):
    return popolazione.sample(n)

# Esempio di utilizzo del campionamento casuale semplice per selezionare 10 individui
campione_casuale = campionamento_casuale_semplice(popolazione, 10)
print("Campionamento Casuale Semplice:")
print(campione_casuale)

Eseguendo il codice si ottiene il seguente risultato:

Campionamento Casuale Semplice:
    ID  Età   Genere       Reddito
23  24   40  Maschio  47057.493589
53  54   30  Femmina  43314.519576
22  23   54  Maschio  55331.285750
64  65   33  Femmina  37930.508571
8    9   50  Maschio  52217.491928
94  95   56  Femmina  53533.749445
42  43   35  Maschio  56122.820007
72  73   20  Femmina  48841.169206
93  94   32  Maschio  44026.799018
0    1   45  Maschio  31610.923128

Un buon metodo per vedere la bontà del campione rispetto alla popolazione è per via grafica. Attraverso la sovrapposizione del campione sulla popolazione si possono intuire molte cose. Implementiamo quindi il codice necessario.

import matplotlib.pyplot as plt
import seaborn as sns

# Grafico dell'istogramma sovrapposto per visualizzare la distribuzione dell'età nella popolazione e nel campione casuale
plt.figure(figsize=(10, 6))

# Distribuzione dell'età nella popolazione
sns.histplot(popolazione['Età'], bins=10, kde=True, color='skyblue', label='Popolazione')

# Distribuzione dell'età nel campione casuale
sns.histplot(campione_casuale['Età'], bins=10, kde=True, color='salmon', label='Campione Casuale')

plt.title('Distribuzione dell\'età: Popolazione vs Campione Casuale')
plt.xlabel('Età')
plt.ylabel('Densità')
plt.legend()

plt.show()

Eseguendolo si ottiene un grafico simile al seguente:

Campionamento di una popolazione - campionamento casuale semplice

Campionamento Stratificato

Il campionamento stratificato è una tecnica di campionamento che suddivide la popolazione in gruppi omogenei chiamati “strati“, e quindi seleziona un campione casuale da ciascuno di questi strati. Questo metodo è utilizzato quando la popolazione presenta eterogeneità in alcune caratteristiche chiave, e l’obiettivo è quello di garantire che il campione rifletta accuratamente questa eterogeneità.

Inizialmente, la popolazione viene divisa in gruppi omogenei o strati in base a una caratteristica o variabile di interesse. Ad esempio, se stiamo studiando il reddito degli individui, possiamo suddividere la popolazione in strati basati su fasce di reddito come basso, medio e alto. Dopo aver definito gli strati, un campione casuale viene selezionato da ciascuno di essi. È importante che la selezione dei campioni all’interno di ogni strato avvenga in modo casuale, per garantire la rappresentatività del campione complessivo. Una volta selezionati i campioni da ciascuno strato, questi vengono combinati per formare il campione stratificato complessivo.

Il campionamento stratificato è utile quando la popolazione presenta variazioni significative nelle caratteristiche di interesse e quando si desidera assicurare che il campione rifletta accuratamente questa diversità. È particolarmente efficace nel ridurre la varianza stimata e migliorare l’accuratezza delle stime statistiche rispetto al campionamento casuale semplice, specialmente quando gli strati sono omogenei all’interno ma eterogenei tra di loro.

Ad esempio, se stiamo conducendo uno studio sulla soddisfazione lavorativa degli impiegati di un’azienda, potremmo suddividere la popolazione in strati basati sul livello di anzianità (ad esempio, neo-assunti, impiegati di lungo corso, dirigenti) e quindi selezionare un campione casuale da ciascuno di questi gruppi per formare un campione stratificato.

Passiamo ora alla nostra popolazione di esempio e vediamo come applicare in Python il campionamento stratificato. In questo caso utilizzeremo l’età come elemento per identificare gli strati.

# Campionamento Stratificato per età
def campionamento_stratificato(popolazione, n, stratificazione):
    campione = pd.DataFrame()
    for valore, proporzione in stratificazione.items():
        strato = popolazione[popolazione['Età'] == valore]
        if strato.empty:  # Verifica se ci sono individui nel dato strato
            print("Non ci sono elementi della popolazione con ", valore, " anni");
            print("Modifica la popolazione o cambia l'età.")
            return campione
        else:
            #Verifica se ci sono abbastanza individui nel dato strato
            if len(strato) < int (n* proporzione) :
                print("Non ci sono sufficienti elementi della popolazione con ", valore, " anni");
                return campione
            else:
                campione_strato = strato.sample(int(n * proporzione))
                campione = pd.concat([campione, campione_strato])
    return campione

# Esempio di utilizzo del campionamento stratificato per et&agrave; per selezionare 20 individui
stratificazione_et&agrave; = {20: 0.2, 30: 0.3, 40: 0.2, 50: 0.3}  # Proporzioni per ciascun strato di et&agrave;
campione_stratificato_et&agrave; = campionamento_stratificato(popolazione, 10, stratificazione_et&agrave;)
print("\nCampionamento Stratificato per Et&agrave;:")
print(campione_stratificato_et&agrave;)

Eseguendo si ottiene il seguente risultato:

Campionamento Stratificato per Età:
    ID  Età   Genere       Reddito
72  73   20  Femmina  48841.169206
19  20   20  Maschio  27652.171738
60  61   30  Femmina  47997.253246
29  30   30  Femmina  57350.430925
53  54   30  Femmina  43314.519576
23  24   40  Maschio  47057.493589
68  69   40  Maschio  71418.672209
8    9   50  Maschio  52217.491928
6    7   50  Femmina  52083.648955
76  77   50  Femmina  56092.811905

Quando si utilizza il campionamento stratificato, l’obiettivo principale è quello di garantire che il campione rifletta accuratamente la distribuzione delle caratteristiche chiave presenti nella popolazione. Sebbene la visualizzazione diretta di un campione stratificato rispetto alla popolazione intera possa non essere sempre utile, ci sono altre visualizzazioni che possono essere utili per analizzare e interpretare i risultati del campionamento stratificato.

Per esempio, la più semplice sarà quella di estrarre dalla popolazione gli strati presi in considerazione nel campionamento e confrontarli direttamente con il campione. In questo caso, possiamo confrontare elementi simili.

import matplotlib.pyplot as plt

# Calcola le proporzioni nella popolazione
proporzioni_popolazione = {eta: len(popolazione[popolazione['Et&agrave;'] == eta]) / len(popolazione) for eta in stratificazione_et&agrave;.keys()}

# Calcola le proporzioni nel campione
proporzioni_campione = {eta: len(campione_stratificato_et&agrave;[campione_stratificato_et&agrave;['Et&agrave;'] == eta]) / len(campione_stratificato_et&agrave;) for eta in stratificazione_et&agrave;.keys()}

# Et&agrave; e valori delle proporzioni
eta = list(stratificazione_et&agrave;.keys())
proporzioni_pop = list(proporzioni_popolazione.values())
proporzioni_camp = list(proporzioni_campione.values())

# larghezza delle barre
larghezza_barra = 0.35

# Posizione delle barre sul grafico
posizioni = range(len(eta))

# Creazione del grafico a barre
plt.figure(figsize=(10, 6))
plt.bar(posizioni, proporzioni_pop, larghezza_barra, label='Popolazione', color='skyblue')
plt.bar([p + larghezza_barra for p in posizioni], proporzioni_camp, larghezza_barra, label='Campione', color='salmon')

# Etichette e titolo
plt.xlabel('Et&agrave;')
plt.ylabel('Proporzione')
plt.title('Confronto delle proporzioni tra popolazione e campione per et&agrave;')
plt.xticks([p + larghezza_barra / 2 for p in posizioni], eta)
plt.legend()

plt.show()

Eseguendo si ottiene:

Campionamento di una popolazione - campionamento stratificato

Campionamento Sistematico

Il campionamento sistematico è una tecnica di campionamento in cui gli individui della popolazione vengono selezionati a intervalli regolari, utilizzando un processo sistematico. Questo metodo coinvolge la divisione della popolazione in una lista ordinata e la selezione di ogni k-esimo elemento da questa lista, dove k è il cosiddetto “intervallo di campionamento“.

L’intervallo di campionamento, indicato con k, rappresenta il numero di elementi della popolazione tra ciascuna selezione. Ad esempio, se abbiamo una popolazione di 1000 individui e scegliamo un intervallo di campionamento di 10, selezioneremo ogni 10-esimo individuo per far parte del campione. La popolazione viene ordinata in base a una caratteristica di interesse. Questa caratteristica può essere qualsiasi variabile che consenta di assegnare un ordine agli individui della popolazione, come un identificatore univoco o una caratteristica numerica. Dopo aver definito l’intervallo di campionamento e ordinato la popolazione, il campione viene selezionato selezionando ogni k-esimo elemento dalla lista ordinata. Ad esempio, se l’intervallo di campionamento è 10, verrà selezionato il primo, l’undicesimo, il ventunesimo e così via fino a completare il campione desiderato.

Il campionamento sistematico è spesso utilizzato quando la popolazione è già ordinata o quando è difficile ottenere un campione casuale completo. Questa tecnica è relativamente semplice da implementare e può essere efficiente quando la popolazione è grande e la distribuzione degli individui è uniforme. Tuttavia, è importante notare che il campionamento sistematico può portare a una potenziale introduzione di bias se l’ordine della popolazione segue un modello che non rappresenta accuratamente la variazione nella caratteristica di interesse. Pertanto, è consigliabile eseguire un’analisi critica dei risultati ottenuti tramite il campionamento sistematico.

Anche in questo caso implementiamo tale metodo di campionamento sulla nostra popolazione mediante codice Python.

# Campionamento Sistematico
def campionamento_sistematico(popolazione, n):
    k = len(popolazione) // n  # Numero di individui in ciascun intervallo
    start = np.random.randint(0, k)  # Punto di partenza casuale
    indici_campionati = np.arange(start, len(popolazione), step=k)
    return popolazione.iloc[indici_campionati]

# Esempio di utilizzo del campionamento sistematico per selezionare 15 individui
campione_sistematico = campionamento_sistematico(popolazione, 15)
print("\nCampionamento Sistematico:")
print(campione_sistematico)

Eseguendo il codice otterremo un risultato simile a quello seguente:

Campionamento Sistematico:
    ID  Età   Genere       Reddito
2    3   66  Maschio  36209.708795
8    9   50  Maschio  52217.491928
14  15   19  Maschio  59488.020354
20  21   59  Maschio  52281.092250
26  27   41  Femmina  45637.428874
32  33   59  Maschio  56938.093466
38  39   55  Femmina  48112.279971
44  45   22  Maschio  43064.521536
50  51   58  Femmina  45626.053208
56  57   29  Maschio  44075.861492
62  63   45  Femmina  37632.610395
68  69   40  Maschio  71418.672209
74  75   33  Femmina  57040.608872
80  81   31  Femmina  60087.206583
86  87   35  Femmina  57539.632811
92  93   58  Maschio  56846.637925
98  99   55  Femmina  58269.081870

In questo caso, graficamente è possibile seguire lo stesso approccio che avevamo fatto con il campionamento casuale semplice paragonando direttamente il campione con la popolazione di riferimento. Il codice sarà quindi lo stesso:

import matplotlib.pyplot as plt
import seaborn as sns

# Grafico dell'istogramma sovrapposto per visualizzare la distribuzione dell'et&agrave; nella popolazione e nel campione casuale
plt.figure(figsize=(10, 6))

# Distribuzione dell'et&agrave; nella popolazione
sns.histplot(popolazione['Et&agrave;'], bins=10, kde=True, color='skyblue', label='Popolazione')

# Distribuzione dell'et&agrave; nel campione casuale
sns.histplot(campione_sistematico['Et&agrave;'], bins=10, kde=True, color='salmon', label='Campione Sistematico')

plt.title('Distribuzione dell\'et&agrave;: Popolazione vs Campione Sistematico')
plt.xlabel('Et&agrave;')
plt.ylabel('Densit&agrave;')
plt.legend()

plt.show()

Eseguendo si otterrà un risultato simile al seguente:

Campionamento di una popolazione - campionamento sistematico

Campionamento per Conglomerati

Il campionamento per conglomerati è una tecnica di campionamento in cui la popolazione è divisa in gruppi, chiamati “conglomerati“, e viene selezionato casualmente un sottoinsieme di questi conglomerati per formare il campione. Questa tecnica è utile quando la popolazione è naturalmente organizzata in gruppi o cluster e quando non è pratico o possibile selezionare individualmente gli elementi della popolazione.

I conglomerati sono gruppi omogenei di individui all’interno della popolazione. Possono essere definiti in base a criteri geografici, sociali, o altri fattori che riflettono la struttura naturale della popolazione. Ad esempio, se stiamo studiando l’istruzione primaria in una determinata area geografica, i conglomerati potrebbero essere le scuole presenti in quella zona. Dopo aver definito i conglomerati, viene selezionato casualmente un sottoinsieme di essi per formare il campione. Questa selezione avviene utilizzando una tecnica di campionamento casuale, come il campionamento casuale semplice o il campionamento sistematico. Una volta selezionati i conglomerati, è possibile eseguire ulteriori campionamenti all’interno di ciascun conglomerato per selezionare gli individui o gli elementi specifici da includere nel campione. Questo può essere fatto utilizzando altre tecniche di campionamento, come il campionamento casuale semplice o stratificato.

Il campionamento per conglomerati è particolarmente utile quando la popolazione è estesa e dispersa su un’ampia area geografica o quando è costosa o difficile selezionare individualmente gli elementi della popolazione. Questa tecnica consente di semplificare il processo di campionamento, concentrandosi sulla selezione di gruppi rappresentativi della popolazione anziché singoli individui. Tuttavia, è importante tenere presente che il campionamento per conglomerati può portare a una minore precisione rispetto ad altre tecniche di campionamento, poiché gli individui all’interno di ciascun conglomerato potrebbero non essere completamente rappresentativi della popolazione complessiva. Pertanto, è importante valutare attentamente i trade-off tra efficienza e precisione quando si utilizza questa tecnica di campionamento.

Utilizziamo tale metodo di campionamento sulla nostra popolazione:

# Campionamento per Conglomerati
def campionamento_conglomerati(popolazione, n, num_conglomerati):
    conglomerati = np.array_split(popolazione, num_conglomerati)
    campione = pd.concat([cong.sample(1) for cong in conglomerati], axis=0)
    return campione.head(n)

# Esempio di utilizzo del campionamento per conglomerati per selezionare 10 individui
campione_conglomerati = campionamento_conglomerati(popolazione, 10, 5)
print("\nCampionamento per Conglomerati:")
print(campione_conglomerati)

Eseguendo si ottiene il seguente risultato:

Campionamento per Conglomerati:
    ID  Età   Genere       Reddito
13  14   38  Maschio  54431.923830
23  24   40  Maschio  47057.493589
42  43   35  Maschio  56122.820007
75  76   68  Femmina  46846.543534
97  98   68  Femmina  65424.049687

Anche qui si segue lo stesso approccio grafico precedente:

Campionamento di una popolazione - campionamento conglomerati

Campionamento per Quote

Il campionamento per quote è una tecnica di campionamento non probabilistico in cui la popolazione viene suddivisa in gruppi, chiamati “quote“, in base a determinate caratteristiche di interesse. Successivamente, vengono selezionati individui da ciascuna quota fino a quando non viene raggiunto un numero predeterminato per quota. Questo metodo è utilizzato per garantire che il campione rifletta le proporzioni specificate delle caratteristiche di interesse presenti nella popolazione, ma non garantisce la casualità nella selezione degli individui.

Le quote sono suddivisioni della popolazione in base a specifiche caratteristiche demografiche o socio-economiche, come età, genere, livello di istruzione, reddito, ecc. Queste quote sono selezionate in modo che riflettano le proporzioni desiderate di ciascuna caratteristica all’interno della popolazione. Dopo aver definito le quote, gli individui vengono selezionati in modo non casuale da ciascuna quota fino a quando non viene raggiunto il numero predeterminato di individui per quota. La selezione degli individui può essere effettuata in vari modi, ad esempio utilizzando elenchi di contatti, interviste in strada o tramite telefonate. Una volta selezionati gli individui da ogni quota, essi vengono combinati per formare il campione complessivo. Poiché gli individui sono stati selezionati da ciascuna quota per garantire che il campione rifletta le proporzioni desiderate delle caratteristiche di interesse, si spera che il campione sia rappresentativo della popolazione complessiva.

Il campionamento per quote è spesso utilizzato quando non è possibile utilizzare tecniche di campionamento probabilistico, come il campionamento casuale semplice, e quando è necessario garantire che il campione rifletta determinate caratteristiche della popolazione. Tuttavia, è importante notare che il campionamento per quote può introdurre bias se le quote non sono selezionate in modo accurato o se la selezione degli individui all’interno di ciascuna quota non è casuale. Pertanto, è fondamentale prestare attenzione alla progettazione e all’implementazione del campionamento per quote per garantire la rappresentatività e l’affidabilità del campione ottenuto.

Vediamo applicato sulla nostra popolazione:

# Campionamento per Quote
def campionamento_per_quote(popolazione, quote):
    campione = pd.DataFrame()
    for caratteristica, valore in quote.items():
        subset = popolazione[popolazione[caratteristica] == valore]
        campione = pd.concat([campione, subset.sample(frac=0.5)])  # Esempio: selezioniamo il 50% dei casi per ogni quota
    return campione

# Esempio di utilizzo del campionamento per quote per selezionare 15 individui
quote_selezionate = {'Genere': 'Maschio', 'Et&agrave;': 30}  # Esempio di quote selezionate
campione_per_quote = campionamento_per_quote(popolazione, quote_selezionate)
print("\nCampionamento per Quote:")
print(campione_per_quote)

Eseguendo si ottiene il seguente risultato:

Campionamento per Quote:
     ID  Età   Genere       Reddito
12   13   47  Maschio  50494.805745
42   43   35  Maschio  56122.820007
89   90   47  Maschio  54316.737208
19   20   20  Maschio  27652.171738
0     1   45  Maschio  31610.923128
1     2   23  Maschio  48628.544758
4     5   59  Maschio  54784.751412
40   41   47  Maschio  54137.476921
21   22   36  Maschio  50930.358974
57   58   62  Maschio  49578.663366
32   33   59  Maschio  56938.093466
17   18   44  Maschio  52603.519321
49   50   25  Maschio  29760.793004
18   19   31  Maschio  44897.492406
99  100   59  Maschio  50753.883077
56   57   29  Maschio  44075.861492
44   45   22  Maschio  43064.521536
16   17   38  Maschio  53294.428008
11   12   61  Maschio  51187.683528
61   62   37  Maschio  48465.486961
55   56   43  Maschio  65461.395936
43   44   43  Maschio  42726.482913
20   21   59  Maschio  52281.092250
91   92   39  Maschio  45134.680573
35   36   25  Maschio  54373.659220
47   48   62  Maschio  51030.227021
53   54   30  Femmina  43314.519576
15   16   30  Femmina  54783.609752

Anche in questo caso si può seguire lo stesso approccio grafico.

Campionamento di una popolazione - Campionamento per quote

Campionamento Opportunistico o di Convenienza

Il campionamento opportunistico, anche noto come campionamento di convenienza, è una tecnica di campionamento non probabilistico in cui gli individui vengono selezionati in base alla loro disponibilità e accessibilità. In questo tipo di campionamento, non vi è alcuna preoccupazione per garantire una rappresentazione casuale o statistica della popolazione, ma piuttosto si selezionano gli individui che sono facilmente accessibili o disponibili per lo studio.

Gli individui sono selezionati in base alla loro disponibilità e accessibilità al ricercatore o all’organizzazione che sta conducendo lo studio. Questo può includere persone che sono facili da contattare, raggiungere o coinvolgere nel processo di ricerca. Poiché la selezione degli individui avviene in base alla loro disponibilità e accessibilità, il campionamento opportunistico non segue un processo casuale. Di conseguenza, i risultati ottenuti da questo tipo di campionamento potrebbero non essere rappresentativi della popolazione più ampia. Il campionamento opportunistico è spesso utilizzato quando è difficile o costoso eseguire un campionamento casuale o quando non è possibile ottenere un campione rappresentativo della popolazione. Questa tecnica è comune nelle situazioni in cui i ricercatori hanno accesso solo a una piccola parte della popolazione o quando si studiano gruppi specifici di individui all’interno di una popolazione più ampia.

Il campionamento opportunistico può essere utile quando si desidera ottenere informazioni preliminari su un argomento o quando si vuole esplorare rapidamente un fenomeno senza impegnarsi in un campionamento più rigoroso. Tuttavia, è importante notare che i risultati ottenuti da questo tipo di campionamento possono essere influenzati da variabili non controllate e potrebbero non essere generalizzabili alla popolazione più ampia. Pertanto, è fondamentale interpretare i risultati del campionamento opportunistico con cautela e considerare le sue limitazioni nel contesto dell’analisi condotta.

# Campionamento Opportunistico o di Convenienza
def campionamento_opportunistico(popolazione, n):
    return popolazione.sample(n)

# Esempio di utilizzo del campionamento opportunistico per selezionare 12 individui
campione_opportunistico = campionamento_opportunistico(popolazione, 12)
print("\nCampionamento Opportunistico:")
print(campione_opportunistico)

Eseguendo si ottiene il seguente risultato:

Campionamento Opportunistico:
    ID  Età   Genere       Reddito
38  39   55  Femmina  48112.279971
76  77   50  Femmina  56092.811905
58  59   55  Femmina  48248.155652
17  18   44  Maschio  52603.519321
16  17   38  Maschio  53294.428008
12  13   47  Maschio  50494.805745
77  78   64  Femmina  50534.615248
59  60   62  Femmina  48844.506631
31  32   53  Femmina  46028.730966
15  16   30  Femmina  54783.609752
85  86   42  Femmina  34303.037721
55  56   43  Maschio  65461.395936

Graficamente possiamo avere una situazione come la seguente:

Campionamento di una popolazione - Campionamento opportunistico o di convenienza

Lascia un commento