Forscher entnehmen häufig Stichproben aus einer Population und verwenden die Daten aus der Stichprobe, um Rückschlüsse auf die Gesamtpopulation zu ziehen.

Eine häufig verwendete Stichprobenmethode ist die stratifizierte Zufallsstichprobe, bei der eine Population in Gruppen aufgeteilt wird und eine bestimmte Anzahl von Mitgliedern aus jeder Gruppe zufällig ausgewählt wird, um in die Stichprobe aufgenommen zu werden.

In diesem Tutorial werden zwei Methoden zum Durchführen einer stratifizierten Zufallsstichprobe in Python erläutert.

Beispiel 1: Stratifizierte Probenahme unter Verwendung der Anzahl

Angenommen, wir haben den folgenden Pandas DataFrame, der Daten über 8 Basketballspieler in 2 verschiedenen Teams enthält:

import pandas as pd

#Dataframe erstellen
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})

#DataFrame anzeigen
df

        team    position assists rebounds
0   A   G    5   11
1   A   G    7   8
2   A   F    7   10
3   A   G    8   6
4   B   F    5   6
5   B   F    7   9
6   B   C    6   6
7   B   C    9   10

Der folgende Code zeigt, wie eine stratifizierte Zufallsstichprobe durchgeführt wird, indem zufällig 2 Spieler aus jedem Team ausgewählt werden, die in die Stichprobe aufgenommen werden sollen:

df.groupby('team', group_keys=False).apply(lambda x: x.sample(2))

        team    position assists rebounds
0   A   G    5   11
3   A   G    8   6
6   B   C    6   6
5   B   F    7   9

Beachten Sie, dass zwei Spieler aus jedem Team in der stratifizierten Stichprobe enthalten sind.

Beispiel 2: stratifizierte Stichprobe unter Verwendung von Proportionen

Nehmen wir noch einmal an, wir haben den folgenden Pandas DataFrame, der Daten über 8 Basketballspieler in 2 verschiedenen Teams enthält:

import pandas as pd

#Dataframe erstellen
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})

#DataFrame anzeigen
df

        team    position assists rebounds
0   A   G    5   11
1   A   G    7   8
2   A   F    7   10
3   A   G    8   6
4   B   F    5   6
5   B   F    7   9
6   B   C    6   6
7   B   C    9   10

Beachten Sie, dass 6 der 8 Spieler (75%) im DataFrame in Team A und 2 der 8 Spieler (25%) in Team B sind.

Der folgende Code zeigt, wie eine stratifizierte Zufallsstichprobe durchgeführt wird, sodass der Anteil der Spieler in der Stichprobe jedes Teams mit dem Anteil der Spieler jedes Teams im größeren DataFrame übereinstimmt:

import numpy as np

# Definieren Sie die gewünschte Gesamtstichprobengröße
N = 4

# stratifizierte Zufallsstichprobe durchführen
df.groupby('team', group_keys=False).apply(lambda x: x.sample(int(np.rint(N*len(x)/len(df))))).sample(frac=1).reset_index(drop=True)

        team    position  assists  rebounds
0   B   F     7    9
1   B   G     8    6
2   B   C     6    6
3   A   G     7    8

Beachten Sie, dass der Anteil der Spieler aus Team A in der stratifizierten Stichprobe (25%) mit dem Anteil der Spieler aus Team A im größeren DataFrame übereinstimmt.

In ähnlicher Weise entspricht der Anteil der Spieler aus Team B in der stratifizierten Stichprobe (75%) dem Anteil der Spieler aus Team B im größeren DataFrame.

Zusätzliche Ressourcen

Arten von Probenahmemethoden
Cluster-Sampling in Pandas
stratifizierte Probenahme in R.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: