Σ
SDCalc
LanjutanLanjutan·15 min

Kaedah Bootstrap untuk Sisihan Piawai

Kuasai pensampelan semula bootstrap untuk anggaran sisihan piawai. Pelajari kaedah persentil, BCa, dan bootstrap parametrik dengan pelaksanaan Python dan contoh terperinci.

Bootstrap: Revolusi Statistik Era Komputer

Pensampelan semula bootstrap ialah teknik statistik yang berkuasa untuk menganggar taburan pensampelan sebarang statistik dengan melakukan pensampelan berulang daripada data cerapan anda. Diperkenalkan oleh Bradley Efron pada tahun 1979, teknik ini merevolusikan inferens statistik dengan membolehkan analisis statistik yang kompleks tanpa bergantung pada formula matematik atau andaian taburan.

Idea utama di sebalik bootstrap sangat mudah: sampel anda ialah anggaran terbaik bagi populasi. Dengan mengambil sampel semula daripada sampel anda (dengan penggantian), anda mensimulasikan apa yang akan berlaku jika anda boleh mengambil sampel berulang kali daripada populasi. Pendekatan ini sangat bernilai untuk sisihan piawai, kerana formula selang keyakinan tradisional mengandaikan kenormalan—andaian yang sering gagal dalam amalan.

Bootstrap telah menjadi penting dalam sains data moden kerana ia berfungsi dengan sebarang statistik (median, korelasi, pekali regresi, pemberat rangkaian neural) dan tidak membuat sebarang andaian tentang taburan asas data anda.

Mengapa Bootstrap untuk Sisihan Piawai?

Selang keyakinan tradisional untuk sisihan piawai mengandaikan data anda datang daripada taburan normal. Apabila andaian ini gagal (yang sering berlaku), selang ini boleh menjadi sangat tidak tepat. Bootstrap menyediakan alternatif yang bebas taburan.

Bila Kaedah Tradisional Gagal

Selang keyakinan berasaskan khi kuasa dua untuk sisihan piawai mengandaikan kenormalan. Dengan data pencong (pendapatan, masa tindak balas, data kemandirian), selang ini boleh menghasilkan julat yang terlepas parameter sebenar 20-30% daripada masa, bukan 5% yang dijangkakan.

Kelebihan utama bootstrap untuk sisihan piawai:

  • Tiada andaian taburan: Berfungsi sama baik dengan data normal, pencong, atau ekor berat
  • Prestasi sampel kecil: Selalunya lebih tepat daripada kaedah parametrik dengan n < 30
  • Mengendalikan statistik kompleks: Pendekatan yang sama berfungsi untuk SD tercantas, MAD, atau ukuran kebolehubahan tersuai
  • Pandangan visual: Taburan bootstrap menunjukkan apa yang berlaku, bukan sekadar nombor akhir

Prosedur Bootstrap

Algoritma bootstrap sangat mudah. Daripada sampel asal anda yang mengandungi n cerapan:

1

Ambil Sampel Bootstrap

Pilih secara rawak n cerapan dengan penggantian daripada data asal anda. Sesetengah nilai akan muncul beberapa kali, yang lain tidak langsung.
2

Kira Statistik

Hitung sisihan piawai sampel bootstrap ini. Ini ialah satu replikat bootstrap.
3

Ulang Banyak Kali

Ulang langkah 1-2 beribu-ribu kali (biasanya B = 10,000). Setiap ulangan menghasilkan satu SD bootstrap.
4

Analisis Taburan

Koleksi B SD bootstrap menganggarkan taburan pensampelan. Gunakannya untuk selang keyakinan dan ujian hipotesis.

Mengapa Dengan Penggantian?

Pensampelan dengan penggantian adalah penting. Ia mencipta sampel yang berbeza komposisi, meniru kebolehubahan yang anda akan lihat merentasi sampel berbeza daripada populasi. Tanpa penggantian, setiap sampel akan sama dengan yang asal.

Berapa banyak sampel bootstrap? B = 1,000 selalunya mencukupi untuk anggaran kasar dan ujian hipotesis. Untuk selang keyakinan, B = 10,000 menyediakan persentil yang stabil. Untuk selang BCa berkualiti penerbitan, B = 15,000+ disyorkan.

Kaedah Selang Keyakinan Bootstrap

Beberapa kaedah wujud untuk membina selang keyakinan daripada sampel bootstrap, setiap satu dengan pertukaran tersendiri:

1. Kaedah Persentil (Paling Mudah)

Pendekatan paling intuitif: ambil persentil taburan bootstrap secara terus.

Percentile CI

95% CI = [θ*₂.₅, θ*₉₇.₅]

Untuk 10,000 sampel bootstrap, ini ialah nilai ke-250 dan ke-9,750 yang ditertibkan. Mudah tetapi boleh menjadi bias apabila taburan bootstrap pencong.

2. Bootstrap Asas (Pivotal)

Menggunakan hubungan antara statistik sampel dan statistik bootstrap:

Basic Bootstrap CI

95% CI = [2θ̂ - θ*₉₇.₅, 2θ̂ - θ*₂.₅]

Di mana θ̂ ialah SD sampel asal. Kaedah ini “memantulkan” selang persentil di sekitar anggaran sampel.

3. BCa (Diperbetulkan Bias dan Dipercepatkan)

Piawaian emas untuk ketepatan. BCa melaraskan kedua-dua bias dalam taburan bootstrap dan pecutan (bagaimana ralat piawai berubah dengan nilai parameter). Lebih kompleks untuk dikira tetapi menyediakan selang ketepatan tertib kedua.

KaedahKelebihanKelemahan
PersentilMudah, intuitifBoleh bias dengan data pencong
AsasSelang simetriMungkin menghasilkan nilai negatif
BCaPaling tepat, menghormati transformasiIntensif dari segi pengiraan

Contoh Terperinci: Data Tidak Normal

Pertimbangkan 15 ukuran masa tindak balas (dalam ms): 245, 312, 287, 456, 234, 298, 267, 523, 289, 301, 278, 645, 256, 289, 312. Data ini pencong ke kanan (beberapa tindak balas yang sangat perlahan).

1

Kira SD Sampel

Sampel asal: n=15, SD = 109.8 ms
2

Jana Sampel Bootstrap

Ambil 10,000 sampel bersaiz 15 dengan penggantian. Setiap sampel mempunyai komposisi yang berbeza.
3

Kira SD Bootstrap

Hitung SD untuk setiap sampel bootstrap, mendapat 10,000 nilai dalam julat ~60 hingga ~180
4

Cari Persentil

Persentil ke-2.5: 72.3 ms, Persentil ke-97.5: 156.8 ms
5

Bentuk SK 95%

SK 95%: [72.3, 156.8] ms. Bandingkan dengan SK khi kuasa dua: [79.4, 175.2] yang mengandaikan kenormalan.

SK bootstrap adalah tidak simetri (lebih lebar di bahagian tinggi), mencerminkan sifat pencong ke kanan data tersebut. SK khi kuasa dua tidak menangkap ketidaksimetrian ini.

Pelaksanaan Python

Pelaksanaan bootstrap lengkap dengan pelbagai kaedah SK:

python
import numpy as np
from scipy import stats

def bootstrap_sd_ci(data, n_bootstrap=10000, ci=0.95, method='percentile'):
    """
    Bootstrap confidence interval for standard deviation.

    Parameters:
    -----------
    data : array-like - Original sample
    n_bootstrap : int - Number of bootstrap samples
    ci : float - Confidence level (e.g., 0.95)
    method : str - 'percentile', 'basic', or 'bca'

    Returns:
    --------
    tuple : (lower_bound, upper_bound, bootstrap_sds)
    """
    data = np.array(data)
    n = len(data)
    original_sd = np.std(data, ddof=1)

    # Generate bootstrap samples and calculate SDs
    bootstrap_sds = np.array([
        np.std(np.random.choice(data, size=n, replace=True), ddof=1)
        for _ in range(n_bootstrap)
    ])

    alpha = 1 - ci

    if method == 'percentile':
        lower = np.percentile(bootstrap_sds, 100 * alpha/2)
        upper = np.percentile(bootstrap_sds, 100 * (1 - alpha/2))

    elif method == 'basic':
        lower = 2*original_sd - np.percentile(bootstrap_sds, 100*(1-alpha/2))
        upper = 2*original_sd - np.percentile(bootstrap_sds, 100*alpha/2)

    elif method == 'bca':
        # Bias correction
        prop_less = np.mean(bootstrap_sds < original_sd)
        z0 = stats.norm.ppf(prop_less)

        # Acceleration (jackknife estimate)
        jackknife_sds = np.array([
            np.std(np.delete(data, i), ddof=1) for i in range(n)
        ])
        jack_mean = jackknife_sds.mean()
        a = np.sum((jack_mean - jackknife_sds)**3) / \
            (6 * np.sum((jack_mean - jackknife_sds)**2)**1.5)

        # Adjusted percentiles
        z_alpha = stats.norm.ppf([alpha/2, 1-alpha/2])
        adj_percentiles = stats.norm.cdf(
            z0 + (z0 + z_alpha) / (1 - a*(z0 + z_alpha))
        ) * 100
        lower = np.percentile(bootstrap_sds, adj_percentiles[0])
        upper = np.percentile(bootstrap_sds, adj_percentiles[1])

    return lower, upper, bootstrap_sds

# Example usage
response_times = [245, 312, 287, 456, 234, 298, 267, 523, 289, 301, 278, 645, 256, 289, 312]

for method in ['percentile', 'basic', 'bca']:
    lower, upper, _ = bootstrap_sd_ci(response_times, method=method)
    print(f"{method.upper():12s} 95% CI: [{lower:.1f}, {upper:.1f}]")

Further Reading

How to Read This Article

A statistics tutorial is a practical interpretation guide, not just a formula dump. It refers to the assumptions, notation, and reporting language that analysts need when they explain a result to a teacher, manager, client, or reviewer. The article body covers the specific topic, while the sections below create a common interpretation frame that readers can reuse across related metrics.

Reading goalWhat to focus onCommon mistake
DefinitionWhat the metric is and what quantity it summarizesTreating the formula as self-explanatory
Formula choiceSample versus population assumptions and notationUsing n when n-1 is required or vice versa
InterpretationWhether the result indicates concentration, spread, or riskCalling a large value good or bad without context

Frequently Asked Questions

How should I interpret a high standard deviation?

A high standard deviation means the observations are spread farther from the mean on average. Whether that spread is acceptable depends on the context: wide dispersion might signal risk in finance, instability in manufacturing, or genuine natural variation in scientific data.

Why do some articles mention n while others mention n-1?

The denominator reflects the difference between population and sample formulas. Population variance and population standard deviation use N because the full dataset is known. Sample variance and sample standard deviation often use n-1 because Bessel’s correction reduces bias when estimating population spread from a sample.

What is a statistical interpretation guide?

A statistical interpretation guide is a page that moves beyond arithmetic and explains meaning. It tells you what a metric is, when the formula applies, and how to describe the result in plain English without overstating certainty.

Can I cite this article in a report?

You should cite the underlying authoritative reference for formal work whenever possible. This page is best used as an explanatory bridge that helps you understand the concept before quoting the original standard or handbook.

Why include direct citations on every article page?

Direct citations give readers a route to verify the definition, notation, and assumptions. That improves trust and reduces the chance that a simplified explanation is mistaken for the entire technical standard.

Authoritative References

These sources define the concepts referenced most often across our articles. Bessel's correction is a sample adjustment, variance is a squared measure of spread, and standard deviation is the square root of variance expressed in the same units as the data.