Bạn có thể khởi động độ lệch chuẩn không?

Bootstrap là một phương pháp dựa trên máy tính để chỉ định các phép đo độ chính xác (độ lệch, phương sai, khoảng tin cậy, lỗi dự đoán, v.v. ) để ước tính thống kê. Ý tưởng là sử dụng mẫu được quan sát để ước tính phân bố dân số. Sau đó, các mẫu có thể được rút ra từ dân số ước tính và bản thân phân phối lấy mẫu của bất kỳ loại công cụ ước tính nào cũng có thể được ước tính

Quy trình chung của bootstrap

Để sửa ký hiệu

  • thống kê quan tâm. $s(x)$
  • một mẫu quan sát ngẫu nhiên. \(x=(x_1, x_2,\dấu chấm,x_n)\)
  • một mẫu bootstrap. \(x^*=(x^*_1, x^*_2,\dots,x^*_n)\)
  • bản sao bootstrap. \(s(x^{*1}), s(x^{*2}), \dots, s(x^{*B})\)
  • ước tính bootstrap của lỗi tiêu chuẩn. \(\hat{se}_{boot}\)

Bạn có thể khởi động độ lệch chuẩn không?

Hình 1 là sơ đồ của quy trình bootstrap để ước tính sai số chuẩn của một thống kê $s(x)$

  1. Tạo các mẫu bootstrap $B$ \(x^{*1}, x^{*2},\dots,x^{*B}\). Mỗi mẫu bootstrap có các phần tử $n$, được tạo bằng cách lấy mẫu có thay thế từ tập dữ liệu gốc $x$. 2. Các bản sao Bootstrap \(s(x^{*1}), s(x^{*2}), \dots, s(x^{*B})\) có được bằng cách tính giá trị của thống kê $s( . Ví dụ: nếu $s(x)$ là trung bình/trung bình mẫu, thì \(s(x^*)\) là trung vị/trung bình của mẫu bootstrap

  2. Cuối cùng, ước tính lỗi tiêu chuẩn bootstrap của $s(x)$ là độ lệch chuẩn của các bản sao bootstrap \(s(x^{*1}), s(x^{*2}), \dots, s(

ước tính tham số

Giả sử chúng ta phải đối mặt với một tình huống phân tích dữ liệu phổ biến. một mẫu ngẫu nhiên $x=(x_1, x_2, \dots, x_n)$ từ một phân bố xác suất chưa biết $F$ đã được quan sát và chúng tôi muốn ước tính một tham số quan tâm $\theta=t(F)$ trên cơ sở . Vì mục đích này, chúng tôi tính toán ước tính $\hat{\theta}=s(x)$ từ $x$. $\hat{\theta}$ chính xác đến mức nào?

Bootstrap không tham số

Để sửa các ký hiệu

  • một mẫu ngẫu nhiên. $x=(x_1, x_2,\dots,x_n)$
  • phân bố xác suất chưa biết của dân số. $F$
  • phân phối thực nghiệm của một mẫu ngẫu nhiên $x$. $\hat{F}$
  • mẫu bootstrap. \(\hat{F} \rightarrow (x^*_1, x^*_2,\dots,x^*_n)\)
  • tham số quan tâm. $\theta=t(F)$
  • ước tính của $\theta$. $\hat{\theta}=s(x)$
  • bản sao bootstrap của \(\hat{\theta}. \hat{\theta}^*=s(x^*)\)
  • ước tính bootstrap của $se_F(\hat{\theta})$, sai số chuẩn của thống kê $\hat{\theta}$ được xác định bởi $se_{\hat{F}}(\hat{\theta}^

Trong bootstrap không tham số, một mẫu có cùng kích thước với dữ liệu được lấy từ dữ liệu có thay thế. Điều đó có nghĩa là nếu bạn đo 10 mẫu, bạn sẽ tạo một mẫu mới có kích thước 10 bằng cách sao chép một số mẫu mà bạn đã xem và bỏ qua những mẫu khác

Bạn có thể khởi động độ lệch chuẩn không?

Mọi thứ trong trường hợp này có thể tuân theo thuật toán bootstrap ở trên mà không cần sửa đổi khi chức năng quan tâm là tham số, ngoại trừ việc chúng tôi đặt \(\hat{\theta}^*=s(x^*)\)

  1. Chọn các mẫu bootstrap độc lập $B$ \(x^{*1}, x^{*2},\dots,x^{*B}\), mỗi mẫu bao gồm n giá trị dữ liệu được rút ra với sự thay thế từ $x$

  2. Đánh giá bản sao bootstrap tương ứng với từng mẫu bootstrap.
    \(\hat{\theta}(b)=s(x^{*b}), b=1,2,\dots,B\)

  3. Ước tính sai số chuẩn $se_F(\hat{\theta})$ theo độ lệch chuẩn mẫu của các bản sao $B$ \(\hat{se}_B=\{\sum_{b=1}^B[\hat{

Nhận xét

  • Tập dữ liệu bootstrap \(x^*=(x^*_1, x^*_2,\dots,x^*_n)\) bao gồm các thành viên của tập dữ liệu gốc \(x=(x_1, x_2,\dots . Do đó, chúng ta có thể có \(x^*_1 = x_7, x^*_2 = x3, x^*_3 = x_3, x^*_4 = x_{22}, \dots , x_n^* = x_7\)

  • Ví dụ: nếu $s(x)$ là trung bình/trung bình mẫu, thì $s(x^*)$ là trung vị/trung bình của mẫu bootstrap
  • Số lượng bản sao bootstrap $B$ để ước tính lỗi tiêu chuẩn thường nằm trong khoảng từ 25 đến 200

Bootstrap tham số

Để sửa các ký hiệu

  • ước tính bootstrap tham số của lỗi tiêu chuẩn. $se_{\hat{F}_{par}}(\theta^*)$
  • ước tính $F$ bắt nguồn từ mô hình tham số cho dữ liệu. $\hat{F}_{par}$

Phương pháp khởi động không theo tham số không đưa ra giả định nào về phân phối của các hệ số trong mô hình, trong khi phương pháp khởi động theo tham số giả định rằng dữ liệu đến từ một phân phối đã biết với các tham số chưa biết (ví dụ: dữ liệu có thể đến từ Poisson, nhị thức âm cho số đếm hoặc bình thường cho liên tục . ). Điểm khác biệt duy nhất so với bootstrap không tham số là các mẫu được rút ra từ ước tính tham số của dân số chứ không phải ước tính phi tham số $\hat{F}$

Thay vì lấy mẫu có thay thế từ dữ liệu, chúng tôi lấy các mẫu $B$ có kích thước $n$ từ ước tính tham số của tổng thể $F_{par}$. \(\hat{F}_{par} \rightarrow(x^*_1, x^*_2,\dots,x^*_n)\). Sau khi tạo các mẫu bootstrap, chúng tôi tiến hành chính xác như trong bước 2 và 3 của thuật toán bootstrap không tham số. đánh giá thống kê trên từng mẫu bootstrap, sau đó tính toán độ lệch chuẩn của các bản sao bootstrap $B$

Bootstrap trong Python

import numpy as np
import matplotlib.pyplot as plt

bootstrap không tham số

Để minh họa, chúng tôi lấy 30 mẫu bootstrap từ một quần thể cỡ 100

dân số

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])

# population mean
population.mean()

50.54

# population standard deviation
population.std()

29.278463074417004

mẫu ban đầu

# draw a sample of size 30 from population
sample = np.random.choice(population, size=30)
sample

________số 8

# our first sample mean
sample_mean = sample.mean()
sample_mean

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
0

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
1

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
2

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
3

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
4

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
5

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
6

lấy mẫu bootstrap

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
7

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
8

# construct a population of size 100
np.random.seed(42)
population = np.random.randint(0,100 , size=100)
population
9

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
0

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
1

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
2

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
3

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
4

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
5

Bạn có thể khởi động độ lệch chuẩn không?

Bootstrap tham số

Giả sử dữ liệu $x_1,. . . , x_{300}$ được rút ra từ phân phối $\exp (\lambda)$. Cũng giả sử rằng dữ liệu có nghĩa là $x = 2$. Ước tính $\lambda$ và đưa ra khoảng tin cậy bootstrap tham số 95% cho $\lambda$

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
6

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
7

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
8

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
9

# population mean
population.mean()
0

# population mean
population.mean()
1

# population mean
population.mean()
2

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
4

array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74, 87, 99, 23,  2, 21, 52,  1,
       87, 29, 37,  1, 63, 59, 20, 32, 75, 57, 21, 88, 48, 90, 58, 41, 91,
       59, 79, 14, 61, 61, 46, 61, 50, 54, 63,  2, 50,  6, 20, 72, 38, 17,
        3, 88, 59, 13,  8, 89, 52,  1, 83, 91, 59, 70, 43,  7, 46, 34, 77,
       80, 35, 49,  3,  1,  5, 53,  3, 53, 92, 62, 17, 89, 43, 33, 73, 61,
       99, 13, 94, 47, 14, 71, 77, 86, 61, 39, 84, 79, 81, 52, 23])
5

Bạn có thể khởi động độ lệch chuẩn không?

mức độ tin cậy

# population mean
population.mean()
5

# population mean
population.mean()
6

Thẩm quyền giải quyết

Cuốn sách hữu ích nhất của Efron, với phần thảo luận toàn diện về Bootstrap để suy luận thống kê

Độ lệch chuẩn bootstrap nghĩa là gì?

Độ lệch chuẩn của các mẫu bootstrap (còn được gọi là lỗi chuẩn bootstrap) là ước tính về độ lệch chuẩn của phân phối lấy mẫu của giá trị trung bình.

Bootstrapping có làm giảm lỗi tiêu chuẩn không?

Bootstrapping là một quy trình thống kê lấy mẫu lại một tập dữ liệu để tạo nhiều mẫu mô phỏng. Quá trình này cho phép bạn tính toán sai số chuẩn , xây dựng khoảng tin cậy và thực hiện kiểm tra giả thuyết cho nhiều loại thống kê mẫu.

Khi nào bạn nên sử dụng bootstrapping?

Tôi thấy bootstrapping rất hữu ích trong hai tình huống chính. khi mẫu khá nhỏ (nhưng không nhỏ) và khi phân phối không sạch (giả sử đó là hỗn hợp của hai phân phối).

Khi nào không sử dụng số liệu thống kê bootstrap?

Nó không thực hiện hiệu chỉnh sai lệch, v.v. Không có cách chữa trị cho cỡ mẫu nhỏ. Bootstrap rất mạnh, nhưng nó không phải là ma thuật — nó chỉ có thể hoạt động với thông tin có sẵn trong mẫu ban đầu. Nếu các mẫu không đại diện cho toàn bộ tổng thể thì bootstrap sẽ không chính xác lắm.