Giới thiệu về Phân tích Suy luận với BootStraps trong Python

Jan 07 2023
Phân tích suy luận khởi động có thể dành cho bạn nếu bạn xử lý các mẫu dữ liệu lớn và mang tính đại diện. Tháng trước, sếp của tôi đã hỏi: liệu chúng tôi có thể tìm thấy số lượt xem video trung bình thực sự của Câu chuyện trên Instagram cho các thương hiệu HÀNG ĐẦU ở Bắc Mỹ không? Tôi sẽ sai khi báo cáo lại cho cô ấy số lượt xem video trung bình của một mẫu Câu chuyện duy nhất.

Phân tích suy luận khởi động có thể dành cho bạn nếu bạn xử lý các mẫu dữ liệu lớn và mang tính đại diện .

Tháng trước, sếp của tôi đã hỏi: liệu chúng tôi có thể tìm thấy số lượt xem video trung bình thực sự của Câu chuyện trên Instagram cho các thương hiệu HÀNG ĐẦU ở Bắc Mỹ không?

Tôi sẽ sai khi báo cáo lại cho cô ấy số lượt xem video trung bình của một mẫu Câu chuyện duy nhất. Để giải quyết những vấn đề này, chúng ta cần suy nghĩ theo xác suất…

Bootstraps để giải cứu! Kỹ thuật này tạo ra một số lượng mẫu hữu hạn; tính toán thống kê tóm tắt (chẳng hạn như giá trị trung bình) cho từng mẫu; và tìm thấy một khoảng cho giải pháp. Trước đây, việc lấy 10.000 mẫu có vẻ như là một nhiệm vụ bất khả thi, nhưng với Python, chúng ta có thể hack theo cách của mình.

Ngoài khoảng tin cậy , chúng ta có thể sử dụng Bootstraps để chạy các bài kiểm tra ý nghĩa . Bài đăng này là về việc hiểu bootstraps và tạo khoảng tin cậy.

Tại sao Bootstrapping?

Nếu sếp của bạn hỏi bạn tại sao Bootstraps, hãy nói với họ điều này:

  • Đây là một kỹ thuật phi tham số , có nghĩa là nó không giả định một phân phối cơ bản
  • Chúng tôi không cần phải đối phó với tính quy tắc của dữ liệu hoặc phương sai tương tự

Bootstrap là gì?

“Bootstrapping là việc sử dụng dữ liệu được lấy mẫu lại — có thay thế — để thực hiện suy luận thống kê”

Một ví dụ nhanh về Python sẽ giải thích khái niệm này tốt hơn tôi:

import numpy as np
reel_views = [191, 145]
bootstrapped_video_views = np.random.choice(
    reel_views
    , size=len(reel_views)
)

print(f`the first sample: {bootstrapped_video_views}`)
--> the first sample: [191, 191]
print(f`the second sample: {bootstrapped_video_views}`)
--> the second sample: [145, 145]
print(f`the third sample: {bootstrapped_video_views}`)
--> the third sample: [191, 145]

Làm cách nào để tạo khoảng tin cậy Bootstrapped?

Chúng tôi có thể ước tính độ không đảm bảo với Bootstraps bằng cách sử dụng khoảng tin cậy. Ý tưởng là tìm khoảng cho thống kê tóm tắt ( giá trị trung bình ) chứa giá trị trung bình thực của tập hợp mẫu.

Chúng tôi tạo một bản sao bootstrap bằng cách lấy mẫu lại dữ liệu của mình (lượt xem video) và tính toán thống kê tóm tắt được quan tâm (lượt xem video trung bình) . Đoạn mã dưới đây đọc như thế này:

  1. Nó tạo một mẫu mới bằng cách chọn ngẫu nhiên có thay thế từ dữ liệu của chúng tôi
  2. Nó tính toán thống kê tóm tắt ( giá trị trung bình ) từ mẫu mới này và lưu trữ nó. Đây được gọi là bản sao bootstrap
  3. Nó lặp lại các bước 1 và 2 với số lần hữu hạn (10.000 là tiêu chuẩn)
  4. Nó tính toán phần trăm 2,5 và 97,5 của 10.000 thống kê tóm tắt được lưu trữ
  5. def draw_bs_reps(data: list, func: Callable, size: int = 10000) -> np.array:
        """
        Draw bootstrap replicates. Generate n 1d bootstrap replicates. Typical size = 5 - 10K repetitions
        """
        rng = np.random.default_rng(seed=42)
        bs_sample = rng.choice(data, size=(size, len(data)))
        bs_replicates = np.apply_along_axis(func, arr=bs_sample, axis=1)
        return bs_replicates
    
    
    reel_views = [191, 145, 198, 192, 1022, ...] # Big Representative Sample
    bootstrap_replicates = draw_bs_reps(reel_views, np.mean)
    conf_int = np.percentile(bootstrap_replicates, [2.5, 97.5])
    print(f'95% Confidence Interval: {conf_int}')
    --> `95% Confidence Interval: [137.9, 150.3]`
    

Vẽ kết quả của bạn không bao giờ đau. Khi vẽ các bản sao bootstrap, chúng ta có thể vẽ các ECDF, sơ đồ KDE hoặc biểu đồ. Đối với tôi, biểu đồ ECDF và KDE vượt trội hơn biểu đồ vì chúng biểu thị tất cả các điểm dữ liệu mà không cần tạo hộp. Dưới đây là KDE vẽ sơ đồ tất cả 10.000 bản sao bootstrap:

95% các bản sao trung bình bootstrap nằm trong các đường màu tím.

Nếu bạn kết thúc với một khoảng thời gian rộng, hãy nhớ rằng việc tăng số lượng bản sao bootstrap (ví dụ: 20.000) sẽ không thu hẹp nó. Nếu bạn muốn có một khoảng thời gian chặt chẽ hơn, lựa chọn duy nhất của bạn là thu thập một mẫu dữ liệu lớn hơn.

Bootstraps thật tuyệt vời nhưng cách duy nhất để giảm bớt ảnh hưởng của các giá trị ngoại lệ và tạo ra một khoảng thời gian hẹp hơn là thu thập một mẫu dữ liệu lớn hơn

mang đi

  • Khoảng tin cậy bootstrapping giúp chúng tôi ước tính độ không đảm bảo
  • Để sử dụng kỹ thuật này, chúng ta cần một mẫu lớn và đại diện
  • Bootstraps không thể nén thêm dữ liệu vào một mẫu một cách kỳ diệu
  • Để tạo ra các khoảng thời gian chặt chẽ hơn, chúng ta cần tăng kích thước mẫu