Pengambilan sampel bertingkat pada panda (dengan contoh)


Peneliti sering kali mengambil sampel dari suatu populasi dan menggunakan data dari sampel tersebut untuk menarik kesimpulan tentang populasi secara keseluruhan.

Metode pengambilan sampel yang umum digunakan adalah stratified random sampling , yaitu suatu populasi dibagi menjadi beberapa kelompok dan sejumlah anggota dari setiap kelompok dipilih secara acak untuk dimasukkan ke dalam sampel.

Tutorial ini menjelaskan dua metode untuk melakukan pengambilan sampel acak bertingkat dengan Python.

Contoh 1: Pengambilan sampel bertingkat menggunakan penghitungan

Misalkan kita memiliki pandas DataFrame berikut yang berisi data 8 pemain bola basket dari 2 tim berbeda:

 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

Kode berikut menunjukkan cara melakukan pengambilan sampel acak bertingkat dengan memilih secara acak 2 pemain dari setiap tim untuk dimasukkan ke dalam sampel:

 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

Perhatikan bahwa dua pemain dari masing-masing tim dimasukkan dalam sampel bertingkat.

Contoh 2: Pengambilan Sampel Berstrata Menggunakan Proporsi

Mari kita asumsikan lagi bahwa kita memiliki pandas DataFrame berikut yang berisi data 8 pemain bola basket dari 2 tim berbeda:

 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

Perhatikan bahwa 6 dari 8 pemain (75%) di DataFrame berada di Tim A dan 2 dari 8 pemain (25%) berada di Tim B.

Kode berikut menunjukkan cara melakukan pengambilan sampel acak bertingkat sehingga proporsi pemain dalam sampel dari setiap tim cocok dengan proporsi pemain dari setiap tim di DataFrame yang lebih besar:

 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

Perhatikan bahwa proporsi pemain Tim A dalam sampel bertingkat (25%) cocok dengan proporsi pemain Tim A di DataFrame yang lebih besar.

Demikian pula, proporsi pemain Tim B dalam sampel bertingkat (75%) cocok dengan proporsi pemain Tim B di DataFrame yang lebih besar.

Sumber daya tambahan

Tutorial berikut menjelaskan cara memilih tipe sampel lain menggunakan panda:

Cara melakukan pengambilan sampel cluster di Pandas
Bagaimana melakukan pengambilan sampel sistematis pada panda

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *