Próbkowanie warstwowe u pand (z przykładami)


Naukowcy często pobierają próbki z populacji i wykorzystują dane z próbki do wyciągania wniosków na temat populacji jako całości.

Powszechnie stosowaną metodą doboru próby jest dobór losowy warstwowy , w którym populację dzieli się na grupy, a z każdej grupy wybiera się losowo określoną liczbę członków do włączenia do próby.

W tym samouczku wyjaśniono dwie metody wykonywania losowego próbkowania warstwowego w języku Python.

Przykład 1: Próbkowanie warstwowe przy użyciu zliczeń

Załóżmy, że mamy następującą ramkę danych pand, która zawiera dane dotyczące 8 koszykarzy z 2 różnych drużyn:

 import pandas as pd

#createDataFrame
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]})

#view DataFrame
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

Poniższy kod pokazuje, jak przeprowadzić losowe próbkowanie warstwowe, wybierając losowo 2 graczy z każdej drużyny, którzy zostaną uwzględnieni w próbie:

 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

Należy pamiętać, że w próbie warstwowej znajduje się dwóch graczy z każdej drużyny.

Przykład 2: Próbkowanie warstwowe z wykorzystaniem proporcji

Załóżmy jeszcze raz, że mamy następującą ramkę DataFrame pand, która zawiera dane o 8 koszykarzach z 2 różnych drużyn:

 import pandas as pd

#createDataFrame
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]})

#view DataFrame
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

Należy pamiętać, że 6 z 8 graczy (75%) w DataFrame należy do drużyny A, a 2 z 8 graczy (25%) należy do drużyny B.

Poniższy kod pokazuje, jak przeprowadzić warstwowe próbkowanie losowe, tak aby proporcja graczy w próbie z każdej drużyny odpowiadała proporcji graczy z każdej drużyny w większej ramce danych:

 import numpy as np

#define total sample size desired
N = 4

#perform stratified random sampling
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

Należy zauważyć, że proporcja graczy Zespołu A w próbce warstwowej (25%) odpowiada proporcji graczy Zespołu A w większej ramce DataFrame.

Podobnie odsetek graczy Zespołu B w warstwowej próbie (75%) odpowiada odsetkowi graczy Zespołu B w większej ramce DataFrame.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wybierać inne typy próbek za pomocą pand:

Jak wykonać próbkowanie klastrów w Pandach
Jak przeprowadzać systematyczne pobieranie próbek wśród pand

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *