Eșantionare aleatoare simplă și sistematică

Eșantionare în Python

James Chapman

Curriculum Manager, DataCamp

Eșantionare aleatoare simplă

O mână care extrage un biletel dintr-un borcan de tombolă.

Bile de loterie în mișcare.

Eșantionare în Python

Eșantionare aleatoare simplă a cafelelor

Boabe de cafea aranjate în rânduri și coloane.

Boabe de cafea aranjate în rânduri și coloane, unele dintre ele estompate.

Eșantionare în Python

Eșantionare aleatoare simplă cu pandas

coffee_ratings.sample(n=5, random_state=19000113)
     total_cup_points         variety country_of_origin  aroma  flavor  \
437             83.25            None          Colombia   7.92    7.75   
285             83.83  Yellow Bourbon            Brazil   7.92    7.50   
784             82.08            None          Colombia   7.50    7.42   
648             82.58         Caturra          Colombia   7.58    7.50   
155             84.58         Caturra          Colombia   7.42    7.67  

     aftertaste  body  balance  
437        7.25  7.83     7.58  
285        7.33  8.17     7.50  
784        7.42  7.67     7.42  
648        7.42  7.67     7.42  
155        7.75  8.08     7.83 
Eșantionare în Python

Eșantionare sistematică

Boabe de cafea aranjate în rânduri și coloane.

Boabe de cafea aranjate în rânduri și coloane, majoritatea estompate, cu excepția celor de pe o diagonală.

Eșantionare în Python

Eșantionare sistematică - definirea intervalului

sample_size = 5

pop_size = len(coffee_ratings)
print(pop_size)
1338
interval = pop_size // sample_size

print(interval)
267
Eșantionare în Python

Eșantionare sistematică - selectarea rândurilor

coffee_ratings.iloc[::interval]
      total_cup_points  variety country_of_origin  aroma  flavor  aftertaste  \
0                90.58     None          Ethiopia   8.67    8.83        8.67   
267              83.92     None          Colombia   7.83    7.75        7.58   
534              82.92  Bourbon       El Salvador   7.50    7.50        7.75   
801              82.00   Typica            Taiwan   7.33    7.50        7.17   
1068             80.50    Other            Taiwan   7.17    7.17        7.17   

      body  balance  
0     8.50     8.42  
267   7.75     7.75  
534   7.92     7.83  
801   7.50     7.33  
1068  7.17     7.25  
Eșantionare în Python

Problema eșantionării sistematice

coffee_ratings_with_id = coffee_ratings.reset_index()
coffee_ratings_with_id.plot(x="index", y="aftertaste", kind="scatter")
plt.show()

Diagramă de dispersie a scorurilor de aftertaste față de indici.

Eșantionarea sistematică este sigură doar dacă nu se observă niciun tipar în această diagramă de dispersie

Eșantionare în Python

Cum se face eșantionarea sistematică sigură

shuffled = coffee_ratings.sample(frac=1)

shuffled = shuffled.reset_index(drop=True).reset_index()
shuffled.plot(x="index", y="aftertaste", kind="scatter") plt.show()

Diagramă de dispersie a scorurilor de aftertaste față de indici după randomizarea setului de date.

Randomizarea rândurilor + eșantionarea sistematică este echivalentă cu eșantionarea aleatoare simplă

Eșantionare în Python

Să exersăm!

Eșantionare în Python

Preparing Video For Download...