Hướng dẫn non parametric bootstrap python - Python bootstrap phi tham số

Đoạn mã mã giả định phiên bản Anaconda 5.2.0 của môi trường ảo Python

Nhìn nhận

Tôi muốn thừa nhận Micahel Pyrcz, phó giáo sư tại Đại học Texas ở Austin trong ngành Kỹ thuật Dầu khí và Địa chất, để phát triển các tài liệu khóa học giúp tôi viết bài viết này.

Kiểm tra bài giảng YouTube của anh ấy về Bootstrap và Boostrap Excel Numerical Demo trên repo GitHub của anh ấy để giúp bản thân hiểu rõ hơn về các lý thuyết và khái niệm thống kê.

Bootstrap là một kỹ thuật thống kê không tham số để lấy mẫu từ các mẫu đã biết để ước tính độ không đảm bảo trong các thống kê tóm tắt. Khi có số lượng mẫu nhỏ, hạn chế, nó đưa ra một mô hình dự báo chính xác hơn so với việc trực tiếp lấy mô hình dự báo từ nhóm mẫu giới hạn (giả sử rằng bộ dữ liệu mẫu là biểu diễn hợp lý của dân số). Đó là không tham số vì nó không yêu cầu bất kỳ kiến ​​thức nào trước đó về phân phối (hình dạng, trung bình, phân hủy tiêu chuẩn, v.v.). is a non-parametric statistical technique to resample from known samples to estimate uncertainty in summary statistics. When there are small, limited number of samples, it gives a more accurate forecast model than directly obtaining a forecast model from the limited sample pool (assuming that the sample set of data is reasonable representation of the population). It is non-parametric because it does not require any prior knowledge of the distribution (shape, mean, standard devation, etc..).

Ưu điểm của bootstrap

Một điều tuyệt vời về bootstrapping là nó không có phân phối. Bạn không cần phải biết hình dạng phân phối, trung bình, sự hư hỏng tiêu chuẩn, độ lệch, kurtosis, v.v ... tất cả những gì bạn cần chỉ là một tập hợp dữ liệu mẫu đại diện cho dân số. Thực tế là bootstrapping không phụ thuộc vào một loại phân phối dẫn đến một lợi thế lớn khác - nó có thể tính toán độ không đảm bảo trong bất kỳ khoảng tin cậy nào của bất kỳ loại phân phối nào.distribution-free. You do not need to know distribution shape, mean, standard devation, skewness, kurtosis, etc... All you need is just a set of sample data that is representative of a population. The fact that Bootstrapping does not depend on a type of distribution leads to another great advantage - It can calculate uncertainty in any confidence interval of any kind of distribution.

Ví dụ, giải pháp phân tích để tính toán khoảng tin cậy trong bất kỳ thống kê phân phối nào như sau:

Ci của mean = số liệu thống kê quan tâm $ \ pm $ ($ điểm phân phối $ \ lần $ lỗi tiêu chuẩn $) $

Có ba vấn đề với giải quyết phân tích cho khoảng tin cậy của một thống kê.

Đầu tiên, biến trong phương trình, điểm phân phối, phụ thuộc vào loại phân phối. Nếu bạn không biết hình dạng phân phối của dân số của bạn, rất khó để tính toán khoảng tin cậy của một thống kê.

Thứ hai, không phải tất cả các số liệu thống kê đều có một công thức để tính toán lỗi tiêu chuẩn của nó. Ví dụ: tồn tại một phương trình để tính sai số tiêu chuẩn của giá trị trung bình:

Lỗi tiêu chuẩn = $ \ sigma_ {sample} \ \ mathbin {/} \ \ sqrt {n} $

Nhưng không có phương trình nào để tính toán sai số tiêu chuẩn của trung vị. Nếu bạn muốn có được khoảng tin cậy cho các số liệu thống kê khác (ví dụ: Skewness, Kurtosis, IQR, v.v.), sẽ rất khó để làm như vậy, đơn giản vì không có phương trình nào cho chúng.

Thứ ba, một số thống kê có các giải pháp phân tích để tính toán lỗi tiêu chuẩn của nó, nhưng nó bị xáo trộn đến mức bootstrapping đơn giản hơn. Một ví dụ cổ điển là có được CI cho hệ số tương quan được cung cấp một mẫu từ phân phối bình thường bivariate.

Bootstrapping tính toán khoảng tin cậy cho số liệu thống kê tóm tắt bằng số, không phân tích và đây là lý do tại sao nó có thể tính toán bất kỳ thống kê tóm tắt nào cho bất kỳ phân phối nào.numerically, not analytically, and this is why it can calculate ANY summary stats for ANY distribution.

Phương pháp

Một mục tiêu của thống kê suy luận là xác định giá trị của một tham số của toàn bộ dân số. Nó thường là quá đắt hoặc thậm chí không thể đo lường điều này trực tiếp. Vì vậy, chúng tôi sử dụng lấy mẫu thống kê. Chúng tôi lấy mẫu một dân số, đo một thống kê của mẫu này, và sau đó sử dụng thống kê này để nói điều gì đó về tham số tương ứng của dân số.

Bootstrapping là một loại phương pháp lấy mẫu lại để tiết kiệm thời gian và tiền đo. Từ một nhóm mẫu có kích thước n, nó chọn một giá trị ngẫu nhiên n lần với sự thay thế và tạo ra m số nhóm mẫu bootstrapping mới. Thuật ngữ với sự thay thế ở đây có nghĩa là bạn đặt lại mẫu bạn đã vẽ vào nhóm mẫu ban đầu sau khi thêm nó vào một nhóm mẫu bootstrapping mới. Hãy nghĩ về nó theo cách này: bạn chọn ngẫu nhiên một tệp từ một thư mục trong PC của bạn và bạn sao chép và dán tệp được chọn ngẫu nhiên vào một thư mục mới. Bạn không cắt và dán tệp, nhưng bạn sao chép và dán tệp vào một thư mục mới. Bạn sẽ có m số thư mục (m là một số lượng tùy ý mà bạn chọn), mỗi loại chứa N số tệp.with replacement, and create M number of new Bootstrapped-sample pools. The term with replacement here means that you put back the sample you drew to the original sample pool after adding it to a new Bootstrapped-sample pool. Think of it this way: you randomly choose a file from a folder in your PC, and you copy and paste the randomly-chosen file into a new folder. You do not cut and paste the file, but you copy and paste the file into a new folder. You will have M number of folders (M is an arbitrary number of your choice), each containing N number of files.

Bootstrapping sắp xếp lại nhóm mẫu ban đầu để tạo ra nhiều dân số nhỏ hơn của dân số thực sự. Mỗi mô phỏng Bootstrap được thực hiện bằng cách chọn một giá trị ngẫu nhiên từ nhóm mẫu. Ví dụ: giả sử rằng bạn có nhóm số nguyên sau:

Số nguyên mẫu = [12, 433, 533, 14, 65, 42, 64]

Từ nhóm mẫu có kích thước n = 7, bạn chọn một giá trị ngẫu nhiên n = 7 lần và tạo một nhóm mẫu mới có kích thước n = 7. Trong Bootstrap, mỗi nhóm mẫu mới được tạo được gọi là nhận thức. Bạn tạo ra nhiều trong số các nhận thức này và sử dụng chúng để tính toán sự không chắc chắn trong các số liệu thống kê tóm tắt.realization. You generate many of these realizations, and use them to calculate uncertainties in summary stats.

Thực hiện 1 = [12, 533, 533, 533, 12, 14, 42]

Thực hiện 2 = [65, 14, 14, 65, 433, 64, 14]

Thực hiện 3 = [433, 64, 533, 14, 14, 64, 12]

Thực hiện 4 = [14, 65, 65, 433, 533, 42, 12]

Lưu ý dữ liệu trùng lặp trong các thực hiện (Xh: 533, 533, 533). Các bản sao trong thực hiện tồn tại vì mỗi dữ liệu trong nhận thức được chọn ngẫu nhiên từ nhóm mẫu ban đầu với sự thay thế.with replacement.

Warning!

Điều cực kỳ quan trọng là kích thước n cho mỗi nhận thức bootstrap phù hợp với kích thước n của nhóm mẫu ban đầu.

Chúng tôi sử dụng bootstrap để ước tính số khoảng tin cậy (CI). Đây là một công cụ thay thế để giải quyết phân tích cho CI. Quan sát cách CI được tính toán phân tích có thể giúp người ta hiểu tại sao giá trị của N là quan trọng. Ví dụ, hãy lấy CI của một ý nghĩa. Nhớ lại rằng CI của một giá trị trung bình thể hiện mức trung bình của một mẫu có thể đi chệch khỏi dân số thực sự.

Hướng dẫn non parametric bootstrap python - Python bootstrap phi tham số

Trong trường hợp phân phối giống như Gaussian, hoặc Gaussian (ví dụ: Student-T), phương trình để giải quyết phân tích khoảng tin cậy của giá trị trung bình như sau:

Ci của mean = mẫu trung bình $ \ pm $ ($ z-score $ \ lần $ lỗi tiêu chuẩn $) $

Lỗi tiêu chuẩn = $ \ sigma_ {sample} \ \ mathbin {/} \ \ sqrt {n} $

Trong đó $ N $ là số lượng mẫu đo. Nếu bạn tăng số lượng mẫu, sai số tiêu chuẩn của trung bình sẽ giảm. Điều này về mặt logic có ý nghĩa, bởi vì bạn càng có nhiều mẫu, ước tính có nghĩa là chính xác của dân số thực.

Kích thước của mỗi thực hiện bootstrap, N, hoạt động theo cách tương tự, ngoại trừ mẫu ngẫu nhiên trong mỗi nhận thức không phải từ dân số thực sự, mà từ một nhóm mẫu đo được. Tăng giá trị N sẽ làm sai lệch bạn để tính toán khoảng tin cậy nhỏ hơn. Có thể quan sát thấy rằng CI thu được bằng cách sử dụng giá trị N sai cho bootstrap tạo ra CI hẹp hơn. Do đó, CI của trung bình mẫu không bao gồm nghĩa dân số thực sự, trả lại ước tính sai lệch.

Hướng dẫn non parametric bootstrap python - Python bootstrap phi tham số

It can be observed that the CI obtained by using a wrong N-value for Bootstrap generates narrower CI. As a result, the CI of the sample mean does not cover the true population mean, returning a misleading estimation.

Trước đây, người ta đã tuyên bố rằng bootstrapping không giả định bất cứ điều gì về phân phối. Điều đó có thực sự đúng không? Ví dụ trước đây về phân phối chiều cao nam của Hoa Kỳ là một phân phối Gaussian. Nhưng điều gì sẽ xảy ra nếu sự phân phối lợi ích của chúng tôi không phải là Gaussian?

Trong ví dụ này, Rock Pearmeability, có phân phối lognatural, sẽ được sử dụng để cho thấy bootstrap không phụ thuộc vào loại phân phối.

1.B.0. Tập lệnh bootstrap

Các tập lệnh mẫu được sử dụng cho ví dụ về chiều cao nam của chúng tôi sẽ được sử dụng để mô phỏng bootstrap. Các tập lệnh tương tự có thể được sử dụng cho cả phân phối Gaussian và lognator vì bootstrapping không giả định bất cứ điều gì về phân phối.

1.B.1. Mô tả dữ liệu mẫu75.2 ~ 86.2, with 80.0 being the average
Standard Deviation : 2.3 ~ 3.4 with 2.9 being the average
Min : 54.3 ~ 57.2, with 55.2 being the average
Max : 77.8 ~ 82.4, with 79.8 being the average
Skew : -0.053 ~ 0.323, with 0.023 being the average

Tóm tắt Máy tính thống kê

Tạo khoảng tin cậy

1.a.1 Mô tả dữ liệu mẫu

100 mẫu dữ liệu chiều cao nam của chúng tôi được cung cấp trong repo GitHub của tôi - sample_data/us_male_height.csv. Tóm tắt Thống kê dữ liệu mẫu có thể được tính toán. Mục tiêu của bạn là tính toán khoảng tin cậy cho các số liệu thống kê tóm tắt.sample_data/US_Male_Height.csv. Summary statistics of the sample data can be calculated. Your goal is to calculate the confidence intervals for the summary stats.

Dựa trên biểu đồ phân phối của dữ liệu mẫu ban đầu, chúng ta có thể quan sát rằng phân phối thực sự trông Gaussian. Tuy nhiên, thực tế là có vẻ như Gaussian hoàn toàn không quan trọng khi bootstrapping, bởi vì bootstrapping không giả định bất cứ điều gì về phân phối.

1.a.2 Sắp xếp lại từ dữ liệu mẫu

Mỗi bộ tái tạo bootstrap (thực hiện) có thể được thực hiện theo một dòng với numpy.random.choice (). Mỗi nhận thức là một mảng có kích thước n, trong đó n là độ dài của dữ liệu mẫu ban đầu. Có một số lần thực hiện, trong đó m là một số lượng tùy ý mà bạn chọn.

Kết quả

1

1.a.4 Khoảng tin cậy trong Tóm tắt Thống kê Bur

Khoảng tin cậy của số liệu thống kê tóm tắt thường có mức độ tin cậy là 90%, 95%hoặc 99%. Trong trường hợp này, chúng tôi sẽ chọn mức độ tin cậy 95%.95% confidence level.

1.B. Khoảng tin cậy trong các số liệu thống kê tóm tắt: Độ thấm của đá - Phân phối lognatural Bur

Trước đây, người ta đã tuyên bố rằng bootstrapping không giả định bất cứ điều gì về phân phối. Điều đó có thực sự đúng không? Ví dụ trước đây về phân phối chiều cao nam của Hoa Kỳ là một phân phối Gaussian. Nhưng điều gì sẽ xảy ra nếu sự phân phối lợi ích của chúng tôi không phải là Gaussian?

Trong ví dụ này, Rock Pearmeability, có phân phối lognatural, sẽ được sử dụng để cho thấy bootstrap không phụ thuộc vào loại phân phối.lognormal distribution, will be used to show that Bootstrap does not depend on the type of the distribution.

1.B.0. Tập lệnh bootstrap

Các tập lệnh mẫu được sử dụng cho ví dụ về chiều cao nam của chúng tôi sẽ được sử dụng để mô phỏng bootstrap. Các tập lệnh tương tự có thể được sử dụng cho cả phân phối Gaussian và lognator vì bootstrapping không giả định bất cứ điều gì về phân phối.

1.B.1. Mô tả dữ liệu mẫu

105 Mẫu dữ liệu tính thấm được cung cấp trong github repo - sample_data/poropermsampledata.xlsx. Dữ liệu tính thấm được thực hiện nhiều lần ở độ sâu khác nhau của giếng khoan.sample_data/PoroPermSampleData.xlsx. Permeability data is taken at many times at different depth of a wellbore.

Tóm tắt Thống kê dữ liệu mẫu có thể được tính toán. Mục tiêu của bạn là tính toán khoảng tin cậy cho các số liệu thống kê tóm tắt.

Dựa trên sự phân phối của dữ liệu mẫu ban đầu, chúng ta có thể quan sát rằng phân phối có vẻ logic. Độ không đảm bảo trong các thống kê tóm tắt có thể được tính toán bằng cách sử dụng bootstrap giống như cách nó được thực hiện cho phân phối chiều cao nam (Gaussian) của Hoa Kỳ, bởi vì bootstrap không phụ thuộc vào hình dạng của phân phối.

Warning!

Việc loại bỏ ngoại lệ về tính thấm đá không thể được thực hiện trực tiếp, vì đây là một phân phối lognatural. Hãy nhớ lại rằng phương pháp loại bỏ ngoại lệ điển hình giả định phân phối là Gaussian. Nếu bạn muốn phát hiện các ngoại lệ cho các phân phối không phải là Gaussian, trước tiên bạn phải chuyển đổi phân phối thành Gaussian.

1.B.2 Lấy mẫu lại từ dữ liệu mẫu

Mỗi bộ tái tạo bootstrap (thực hiện) có thể được thực hiện theo một dòng với numpy.random.choice (). Mỗi nhận thức là một mảng có kích thước n, trong đó n là độ dài của dữ liệu mẫu ban đầu. Có một số lần thực hiện, trong đó m là một số lượng tùy ý mà bạn chọn.

Kết quả

1.B.3 Các mô hình không chắc chắn trong Tóm tắt Thống kê với các lô Blox¶

Quan sát độ lệch tích cực trong số liệu thống kê tóm tắt BoxPlot. Điều này phù hợp với sự phân bố lognatic được thay đổi bên trái của biểu đồ tính thấm.positive skewness in the boxplot summary statistics. This is consistent with the left-justified lognormal distribution of the permeability plot.

1.B.4 Khoảng tin cậy trong Tóm tắt Thống kê Bur

Khoảng tin cậy của số liệu thống kê tóm tắt thường có mức độ tin cậy là 90%, 95%hoặc 99%. Trong trường hợp này, chúng tôi sẽ chọn mức độ tin cậy 90%.90% confidence level.