Lấy mẫu ngẫu nhiên phân tầng

Phân tích dữ liệu khảo sát bằng Python

EbunOluwa Andrew

Data Scientist

Lấy mẫu ngẫu nhiên phân tầng là gì

  • Lấy mẫu phân tầng phản ánh tổng thể tốt hơn
  • Chia tổng thể thành các đơn vị rời (tầng) theo thuộc tính giống nhau
  • Lấy mẫu lại để tỷ lệ trong mẫu khớp tổng thể

Thay đổi nhân khẩu học khi thành phần đa dạng thay đổi trong một quần thể

Phân tích dữ liệu khảo sát bằng Python

Vì sao dùng lấy mẫu ngẫu nhiên phân tầng?

  • Giảm thiên lệch chọn mẫu
  • Tăng tính đại diện của một số nhóm
  • Ví dụ:
    • Ước tính thu nhập cho các nhóm dân số khác nhau
    • Ước tính kết quả thăm dò bầu cử
    • Ước tính tuổi thọ

Bộ đếm cầm tay đếm số người

Phân tích dữ liệu khảo sát bằng Python

Khi không nên dùng lấy mẫu ngẫu nhiên phân tầng

  • Các nhóm con không được chồng lấp
    • Đối tượng thuộc nhiều nhóm -> sai lệch đại diện
  • Ví dụ câu hỏi khảo sát bị chồng lấp
    • Bạn đã làm công việc hiện tại bao lâu?
      • 1-2 năm
      • 2-4 năm

người phụ nữ đang suy nghĩ

Phân tích dữ liệu khảo sát bằng Python

Kết quả khảo sát làm việc tại chỗ ở công ty ABC

| employee_id | gender | onsite_work |
|-------------|--------|-------------|
|    fffe6838 | Male   | Yes         |
|   fffe12184 | Female | Yes         |
|    fffe9404 | Female | Yes         |
|   fffe17578 | Male   | Yes         |
|   fffe22257 | Female | Yes         |
|    fffe6217 | Male   | Yes         |
|    fffe7828 | Female | Yes         |
|   fffe18192 | Male   | Yes         |
|    fffe2839 | Female | Yes         |
|   fffe16173 | Female | Yes         |

Phân tích dữ liệu khảo sát bằng Python

Kiểm tra tỷ lệ trên tổng thể

survey.gender.value_counts(normalize=True)
Female    0.556
Male      0.444
Name: gender, dtype: float64
Phân tích dữ liệu khảo sát bằng Python

Vẽ tỷ lệ trên tổng thể

import pandas as pd
import matplotlib.pyplot as plt

survey.gender.value_counts().plot.pie()

Tỷ lệ nữ so với nam trong khảo sát

Phân tích dữ liệu khảo sát bằng Python

Ví dụ lấy mẫu phân tầng

strat_sample = 
survey.groupby(
  'gender', group_keys = False).apply(
  lambda x: x.sample(frac = 0.1))
| employee_id | gender | onsite_work |
|-------------|--------|-------------|
|    fffe4934 | Female | Yes         |
|    fffe3958 | Female | Yes         |
|      fffe18 | Female | Yes         |
|     fffe283 | Female | Yes         |
|   fffe20382 | Female | Yes         |
|    fffe8721 | Male   | Yes         |
|    fffe5955 | Male   | Yes         |
|    fffe7081 | Male   | Yes         |
|     fffe353 | Male   | Yes         |
|    fffe1765 | Male   | Yes         |

Phân tích dữ liệu khảo sát bằng Python

Kiểm tra tỷ lệ trên mẫu

Tổng thể gốc

survey.gender.value_counts(normalize=True)

Mẫu phân tầng

strat_sample.gender.value_counts(
  normalize=True))
Female    0.556
Male      0.444
Name: gender, dtype: float64
Female    0.56
Male      0.44
Name: gender, dtype: float64
Phân tích dữ liệu khảo sát bằng Python

Ayo berlatih!

Phân tích dữ liệu khảo sát bằng Python

Preparing Video For Download...