Lỗi tiêu chuẩn bootstrap là gì?

Lỗi tiêu chuẩn không chỉ là lỗi mà tất cả chúng ta đều mắc phải (như trong câu "Anh bạn, tối qua bạn có thấy Jimmy ở quán bar không? Anh ấy mắc lỗi tiêu chuẩn..."), nó là thước đo mức độ mà chúng ta có thể mong đợi về giá trị trung bình

Hãy bắt đầu bằng cách nghĩ về các thanh lỗi

Lỗi tiêu chuẩn bootstrap là gì?

Tất cả chúng ta đã thấy các thanh lỗi trong các ô trước đây. Các loại thanh lỗi phổ biến nhất là độ lệch chuẩn, lỗi tiêu chuẩn và khoảng tin cậy. Độ lệch chuẩn mô tả mức độ thay đổi của dữ liệu mà bạn đã thu thập từ phép đo này sang phép đo tiếp theo. Ngược lại, sai số chuẩn mô tả mức độ thay đổi của giá trị trung bình nếu chúng tôi thực hiện lại toàn bộ thử nghiệm. Ái chà. Tôi biết điều đó nghe có vẻ điên rồ, vì vậy hãy nói về

Đầu tiên, hãy xem xét một cách đơn giản (nhưng tốn kém và tốn thời gian) để tính sai số chuẩn. Có một công thức đơn giản để tính sai số chuẩn, nhưng nó sẽ không giúp chúng ta hiểu điều gì đang thực sự xảy ra, vì vậy chúng ta sẽ bỏ qua nó ngay bây giờ

Lỗi tiêu chuẩn bootstrap là gì?
Giả sử chúng tôi đã lấy một mẫu gồm 5 phép đo. Từ 5 phép đo này, chúng ta có thể dễ dàng tính toán (và vẽ đồ thị) giá trị trung bình

Bây giờ, chúng ta có thể dễ dàng tưởng tượng rằng nếu chúng ta lấy một mẫu gồm 5 phép đo khác, giá trị trung bình có thể hơi khác so với giá trị chúng ta nhận được từ mẫu đầu tiên. Vì vậy, hãy lấy một loạt các mẫu

Lỗi tiêu chuẩn bootstrap là gì?
Sau khi lấy một loạt mẫu, chúng ta có thể tính toán (và vẽ đồ thị) giá trị trung bình cho từng mẫu. Trong hình, chúng ta có thể thấy rằng các phương tiện được nhóm lại với nhau chặt chẽ hơn so với các phép đo ban đầu. Điều này là do việc lấy một giá trị cực trị duy nhất trong một mẫu đơn lẻ phổ biến hơn nhiều so với lấy toàn bộ giá trị mẫu của các giá trị cực trị, đó là điều chúng ta cần để có được một giá trị cực trị cho giá trị trung bình. Bây giờ chúng tôi đã tính toán các phương tiện, chúng tôi có thể tính toán độ lệch chuẩn của chúng

Lỗi tiêu chuẩn bootstrap là gì?

Sai số chuẩn chỉ là độ lệch chuẩn của tất cả các giá trị trung bình đó - nó mô tả mức độ khác nhau của các giá trị cho giá trị trung bình trong một nhóm mẫu

Bây giờ, như tôi đã nói trước đây, có một công thức đơn giản để tính sai số chuẩn, nhưng cũng có một cách đơn giản, tiết kiệm thời gian và chi phí để tính toán mà không cần phải sử dụng công thức đó. Phương pháp này được gọi là “bootstrapping”. Điều thú vị về bootstrapping là bạn có thể sử dụng nó để tính toán sai số tiêu chuẩn của bất kỳ thứ gì, không chỉ là giá trị trung bình, ngay cả khi không có công thức hay cho nó. Ví dụ: nếu bạn đã tính trung vị thay vì trung bình, thì bạn sẽ gặp rắc rối lớn nếu cần tính sai số chuẩn của nó và bạn không có bootstrapping

Bootstrapping được giới thiệu trong video và trong StatQuest tiếp theo, chúng tôi sẽ sử dụng nó để tính khoảng tin cậy, điều này cực kỳ thú vị vì chúng cho phép bạn so sánh các mẫu một cách trực quan

Bootstrapping là một phương pháp lấy mẫu lại cho phép chúng tôi suy ra số liệu thống kê về dân số từ một mẫu. Nó cũng dễ thực hiện và dễ hiểu, khiến nó trở nên thật tuyệt. Những người thực hành sử dụng bootstrap hoặc đánh giá đầy đủ tiềm năng của nó biết rằng họ có thể sử dụng nó để ước tính các số liệu thống kê dân số khác nhau, nhưng gần như tất cả các ví dụ tôi có thể tìm thấy trực tuyến chỉ sử dụng bootstrapping để ước tính giá trị trung bình của dân số. Tôi nghĩ đã đến lúc phải thay đổi điều đó

Trong bài viết ngắn này, tôi sẽ xem lại phương thức bootstrap và cách thực thi nó trong python. Sau đó, chúng tôi sẽ ước tính khoảng tin cậy cho độ lệch chuẩn của tổng thể bằng phương pháp này để giảm bớt bất kỳ sự nhầm lẫn nào xung quanh cách khởi động số liệu thống kê dân số ngoài giá trị trung bình từ một mẫu. Chúng tôi sẽ thực hiện một chút hình dung để hiểu rõ hơn những gì chúng tôi đã học và thử nghiệm vẽ một số lượng mẫu lớn hơn để xem điều này ảnh hưởng đến kết quả như thế nào

Hãy đi sâu vào

Cài đặt

Nếu thích, bạn có thể theo dõi trong Jupyter Notebook tại đây

Bắt đầu bằng cách nhập tất cả các gói chúng tôi sẽ cần

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import scipy.stats as st

Bây giờ, hãy tạo một “dân số” hư cấu. ” Tôi đã tạo ra giá trị trung bình và độ lệch chuẩn. Bạn có thể tự trang điểm nếu muốn

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')

Hình ảnh của tác giả

Bây giờ chúng tôi đã tạo một "dân số" với một triệu giá trị, trung bình là 52. 21 và độ lệch chuẩn là 4. 23

Vẽ một mẫu

Chúng tôi muốn lấy một mẫu nhỏ từ dân số để sử dụng cho việc khởi động một xấp xỉ các tham số dân số. Trong thực tế, chúng tôi sẽ chỉ có mẫu

# Draw 30 random values from the population
sample = np.random.choice(population, size=30, replace=False)

Biến

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
6 hiện chứa 30 giá trị được rút ngẫu nhiên từ tổng thể

Hình ảnh của tác giảBootstrap - Một đánh giá

Tôi sẽ đi nhanh đây. Nếu bạn muốn có cái nhìn sâu hơn về phương pháp bootstrap, hãy xem bài viết trước của tôi Ước tính doanh thu quyên góp từ sự kiện trực tuyến trong tương lai cho nhạc sĩ và tổ chức phi lợi nhuận — Bootstrap ước tính khoảng tin cậy với python

Tất cả điều kỳ diệu với bootstrapping xảy ra là kết quả của việc lấy mẫu có thay thế. Thay thế có nghĩa là khi chúng tôi lấy một mẫu, chúng tôi ghi lại số đó rồi trả lại số đó cho nguồn để nó có cùng cơ hội được chọn lại. Đây là những gì tạo ra sự khác biệt mà chúng tôi đang phân tích để đưa ra suy luận về dân số

Chúng ta có thể coi đây là việc vẽ số từ mũ (hoặc ủng nếu bạn thích)

  1. Đếm số lượng hồ sơ trong mũ của bạn
  2. Vẽ một bản ghi ngẫu nhiên từ chiếc mũ của bạn
  3. Ghi lại giá trị của bản ghi đó và đặt bản ghi lại vào mũ
  4. Lặp lại cho đến khi bạn đã ghi lại số lượng giá trị giống như bạn có các bản ghi trong chiếc mũ
  5. Tính toán một số liệu trên mẫu đó, chẳng hạn như giá trị trung bình hoặc độ lệch chuẩn và ghi lại nó
  6. Lặp lại quy trình 1000 lần hoặc lâu hơn
  7. Tính lượng tử để có được khoảng tin cậy của bạn

Hãy làm điều này với

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
7 nhanh hơn nhiều so với vẽ số từ mũ

bs = np.random.choice(sample, (len(sample), 1000), replace=True)

Bây giờ chúng tôi có một mảng 30x1000

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
7 với mỗi 1000 hàng đại diện cho một mẫu mới

Để suy ra trung bình tổng thể, chúng ta có thể lấy trung bình của tất cả các hàng và sau đó là trung bình của các trung bình đó

bs_means = bs.mean(axis=0)
bs_means_mean = bs_means.mean()
bs_means_mean

54. 072626327248315

Không tệ. Hãy nhớ rằng trung bình dân số là

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
9

Nhưng đó không phải là phần hữu ích. Nếu chúng tôi lấy giá trị trung bình của mẫu, chúng tôi sẽ nhận được kết quả tương tự

sample.mean()

54. 12110644012915

Giá trị thực nằm trong khoảng tin cậy mà chúng tôi có thể tạo ra từ bootstrapping. Chúng tôi sẽ quay lại và sử dụng biến

# Draw 30 random values from the population
sample = np.random.choice(population, size=30, replace=False)
0 của mình, biến này chứa giá trị trung bình của từng mẫu trong số 1000 mẫu được lấy mẫu lại của chúng tôi. Để tính khoảng tin cậy 95%, chúng ta có thể lấy 0. 025 và 0. 975 lượng tử của những phương tiện đó. 95% phương tiện của các mẫu được lấy mẫu lại của chúng tôi nằm giữa hai lượng tử này, cho chúng tôi khoảng tin cậy

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
1

(52. 41754898532445, 55. 602661654526315)

Tuyệt vời, phải không? . 54 và 55. 77

Độ lệch chuẩn

Đó là điểm mà hầu hết các ví dụ bootstrap kết thúc, nhưng chúng tôi muốn xem chúng tôi có thể tạo lại dân số của mình tốt như thế nào, vì vậy chúng tôi cũng sẽ cần tính toán độ lệch chuẩn

Tin tốt là quy trình này giống nhau, ngoại trừ chúng tôi lấy độ lệch chuẩn của từng mẫu được lấy mẫu lại thay vì giá trị trung bình. Tương tự, trước đây chúng tôi đã lấy giá trị trung bình của phương tiện, bây giờ chúng tôi có thể tính giá trị trung bình của độ lệch chuẩn

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
2

4. 398626063763372

Và chúng ta có thể tính khoảng tin cậy cho độ lệch chuẩn tổng thể bằng cách tìm các lượng tử như trước

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
3

(3. 3352503395296598, 5. 387739215237817)

Khoảng tin cậy 95% cho độ lệch chuẩn tổng thể là 3. 34 đến 5. 39

Hãy vẽ sơ đồ đó để hiểu rõ hơn về ý nghĩa của nó

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
4

Hình ảnh của tác giả

Biểu đồ đầu tiên cho thấy 95/100 lần phân bố dân số sẽ nằm giữa hai phân bố màu đỏ, biểu thị khoảng tin cậy trên và dưới của độ lệch chuẩn. Biểu đồ thứ hai cho thấy 95/100 lần phân bố dân số sẽ nằm giữa hai phân phối màu đỏ, biểu thị khoảng tin cậy trên và dưới của giá trị trung bình. Bây giờ chúng tôi có một ý tưởng về phạm vi của các tham số dân số có thể có khả năng được cung cấp cho mẫu của chúng tôi

Số lượng mẫu lại

Bạn có thể có thêm một câu hỏi ngứa ở bạn. Liệu chúng tôi có nhận được kết quả chính xác hơn nếu chúng tôi lấy mẫu lại hơn 1000 lần không?

Hãy tìm hiểu bằng cách lấy mẫu lại 10 triệu lần thay vì 1.000 lần

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
0

Tính giá trị trung bình

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
1

54. 12096064254814

Giá trị trung bình trước đây là 54. 12110644012915. Điều đó không có gì khác biệt lắm, và nó hơi xa hơn một chút so với sự thật nền tảng của 53. 21

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
2

(52. 535753878990164, 55. 76684250100114)

Các giá trị trước đó là (52. 41754898532445, 55. 602661654526315)

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
3

4. 414164449356725

Giá trị trước đó là 4. 398626063763372

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
4

(3. 3352503395296598, 5. 387739215237817)

Các giá trị trước đó là (3. 356752806683829, 5. 460033411850985)

Có vẻ như không có nhiều sự khác biệt. Hãy vẽ nó ra một lần nữa

# generate a ficticious population with 1 million values
pop_mean = 53.21
pop_std = 4.23
population = np.random.normal(pop_mean, pop_std, 10**6)
# plot the population
sns.distplot(population)
plt.title('Population Distribution')
5

Hình ảnh của tác giả

Cốt truyện trước lấy mẫu lại 1.000 lần

Hình ảnh của tác giả

Tôi muốn nói rằng những kết quả đó về cơ bản là không thể phân biệt được và chắc chắn, không có lợi gì khi lấy mẫu lại hơn 1000 lần trong trường hợp của chúng tôi

Vậy là xong, câu chuyện chưa được kể nhưng nổi tiếng về việc khởi động cả giá trị trung bình và độ lệch chuẩn để ước tính các tham số dân số

Khi nào nên sử dụng lỗi tiêu chuẩn bootstrap?

Vì vậy, độ lệch chuẩn của thống kê trên các mẫu bootstrap có thể được sử dụng làm ước tính sai số chuẩn. Cách tiếp cận này thường được sử dụng trong trường hợp việc tính toán sai số chuẩn phân tích của một thống kê quá khó hoặc không thể .

Tại sao sử dụng lỗi tiêu chuẩn bootstrapped?

(d) Một lợi thế của (quan sát đầy đủ) bootstrap là nó không đưa ra các giả định phân phối cụ thể, do đó, nó có thể chính xác hơn các lỗi tiêu chuẩn khác trong trường hợp . .

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.

bootstrapping có ý nghĩa gì trong thống kê?

Bootstrapping là lấy mẫu có thay thế từ dữ liệu được quan sát để ước tính độ biến thiên trong một thống kê quan tâm . Xem thêm phép thử hoán vị, một hình thức lấy mẫu lại có liên quan. Một ứng dụng phổ biến của bootstrap là đánh giá độ chính xác của ước tính dựa trên một mẫu dữ liệu từ một dân số lớn hơn.

Bootstrap nghĩa là gì trong SPSS?

Bootstrapping là một phương pháp để đưa ra các ước tính mạnh về sai số chuẩn và khoảng tin cậy cho các ước tính như giá trị trung bình, trung vị, tỷ lệ, tỷ lệ chênh lệch, hệ số tương quan hoặc hệ số hồi quy. Nó cũng có thể được sử dụng để xây dựng các bài kiểm tra giả thuyết

Làm cách nào để giải thích kết quả bootstrap?

Ý tưởng trực quan đằng sau bootstrap là đây. nếu tập dữ liệu ban đầu của bạn là kết quả rút ngẫu nhiên từ toàn bộ tổng thể, thì nếu bạn lấy mẫu con từ mẫu (có thay thế), thì điều đó cũng thể hiện kết quả rút ra từ tổng thể đầy đủ. You can then estimate your model on all of those bootstrapped datasets.