Pengantar Analisis Inferensi dengan BootStraps di Python

Jan 07 2023
Analisis inferensi bootstrap bisa cocok untuk Anda jika Anda berurusan dengan sampel data yang besar dan representatif. Bulan lalu, bos saya bertanya: dapatkah kami menemukan tayangan video Instagram Reels yang sebenarnya untuk merek-merek TOP di Amerika Utara? Saya salah jika melaporkan kembali kepadanya rata-rata tayangan video dari satu sampel Reels.

Analisis inferensi bootstrap bisa cocok untuk Anda jika Anda berurusan dengan sampel data yang besar dan representatif .

Bulan lalu, bos saya bertanya: dapatkah kami menemukan tayangan video Instagram Reels yang sebenarnya untuk merek-merek TOP di Amerika Utara ?

Saya salah jika melaporkan kembali kepadanya rata-rata tayangan video dari satu sampel Reels. Untuk mengatasi masalah ini, kita perlu berpikir secara probabilistik…

Bootstrap untuk menyelamatkan! Teknik ini menciptakan jumlah sampel yang terbatas; menghitung ringkasan statistik (seperti rata-rata) untuk setiap sampel; dan menemukan interval untuk solusi. Di masa lalu, mendapatkan 10.000 sampel terasa seperti tugas yang mustahil, tetapi dengan Python kita dapat meretas jalan kita.

Selain selang kepercayaan , kita dapat menggunakan Bootstraps untuk menjalankan tes signifikansi . Posting ini adalah tentang memahami bootstrap dan menghasilkan interval kepercayaan.

Mengapa Bootstrap?

Jika bos Anda bertanya mengapa Bootstraps, beri tahu mereka ini:

  • Ini adalah teknik non-parametrik , artinya tidak mengasumsikan distribusi yang mendasarinya
  • Kami tidak perlu berurusan dengan normalitas data atau varian serupa

Apa itu Bootstrap?

“Bootstrap adalah penggunaan sampel ulang — dengan penggantian — data untuk melakukan inferensi statistik”

Contoh cepat Python akan menjelaskan konsep dengan lebih baik daripada yang saya lakukan:

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]

Bagaimana Menghasilkan Interval Keyakinan Bootstrap?

Kami dapat memperkirakan ketidakpastian dengan Bootstrap menggunakan interval kepercayaan. Idenya adalah untuk menemukan interval untuk ringkasan statistik ( rata-rata ) yang berisi rata-rata sebenarnya dari populasi sampel.

Kami membuat replika bootstrap dengan melakukan resampling data kami (tampilan video) dan menghitung statistik ringkasan yang diminati (tampilan video rata-rata) . Kode di bawah ini berbunyi seperti ini:

  1. Itu membuat sampel baru dengan memilih secara acak dengan penggantian dari data kami
  2. Ini menghitung statistik ringkasan ( rata-rata ) dari sampel baru ini dan menyimpannya. Ini disebut replikasi bootstrap
  3. Ini mengulangi langkah 1, dan 2 beberapa kali (10.000 adalah standar)
  4. Ini menghitung persentil 2,5 dan 97,5 dari 10.000 ringkasan statistik yang disimpan
  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]`
    

Merencanakan hasil Anda tidak pernah sakit. Saat menggambar replikasi bootstrap, kita dapat menggambar ECDF, plot KDE, atau histogram. Bagi saya, plot ECDF dan KDE lebih unggul dari histogram karena mereka memplot semua titik data tanpa perlu binning. Di bawah ini adalah KDE yang memplot semua 10.000 replika bootstrap:

95% replikasi rata-rata bootstrap berada dalam garis ungu.

Jika Anda berakhir dengan interval yang lebar, ingatlah bahwa menambah jumlah replikasi bootstrap (mis., 20.000) tidak akan mempersempitnya. Jika Anda menginginkan interval yang lebih ketat, satu-satunya pilihan Anda adalah mengumpulkan sampel data yang lebih besar.

Bootstrap luar biasa tetapi satu-satunya cara untuk mengurangi efek outlier dan menghasilkan interval yang lebih sempit adalah dengan mengumpulkan sampel data yang lebih besar

Takeaway

  • Interval kepercayaan bootstrapping membantu kami memperkirakan ketidakpastian
  • Untuk menggunakan teknik ini kita membutuhkan sampel yang besar dan representatif
  • Bootstraps tidak bisa secara ajaib memeras lebih banyak data ke dalam sampel
  • Untuk menghasilkan interval yang lebih ketat, kita perlu meningkatkan ukuran sampel kita