Thử nghiệm bootstrap là gì?

Áp dụng phương pháp bootstrap cơ bản thực sự đơn giản. Phần lộn xộn duy nhất là thực hiện hiệu chỉnh 'điều chỉnh sai lệch và tăng tốc' [BCa] trên khoảng tin cậy. Tôi đã cung cấp một hàm gọi là 'bootstrap' để chạy thuật toán bootstrap và sau đó [theo mặc định] thực hiện chỉnh sửa BCa. Trong nhiều trường hợp, việc chỉnh sửa này không tạo ra nhiều khác biệt và trong một số ví dụ bên dưới, tôi thậm chí không biết cách áp dụng nó, vì vậy tôi đã bỏ nó đi.

Các ví dụ dưới đây chạy qua một loạt các ứng dụng khá đơn giản của phương pháp bootstrap trên số liệu thống kê mà chúng tôi có thể có hoặc không có bảng cho

clear all

ví dụ 1. Bootstrapping thay vì kiểm tra t [với kích thước mẫu không bằng nhau]

Thử nghiệm t kiểm tra giả thuyết rằng hai mẫu đến từ cùng một phân phối dựa trên sự khác biệt giữa phương tiện của các mẫu. Các thử nghiệm T giả định những thứ thông thường về phân phối bình thường và được sử dụng phổ biến nhất khi so sánh các mẫu có kích thước bằng nhau. Khi so sánh các mẫu có kích thước khác nhau, ước tính phương sai gộp được sử dụng và mức độ tự do là trung bình của hai df từ mỗi mẫu. Điều này có vẻ giống như một chút hack đối với tôi

Để khởi động trên các mẫu, chúng tôi sẽ lấy mẫu thay thế từ cả hai mẫu. Cũng giống như ví dụ về tỷ lệ phương sai bên dưới, việc cho phép các cỡ mẫu khác nhau có nghĩa là chúng ta không thể sử dụng phương pháp BCa. Chúng tôi sẽ thực hiện lại quá trình khởi động bằng tay mà không có chức năng 'bootstrap'

Trong ví dụ cụ thể này, chúng tôi sẽ kiểm tra giả thuyết rằng các phương tiện là khác nhau [thử nghiệm hai đầu]

tạo dữ liệu giả bằng cách vẽ từ các bản phân phối bình thường

x1 = randn[n1,1];
x2 = randn[n2,1];

định nghĩa thống kê là sự khác biệt giữa các phương tiện

myStatistic = @[x1,x2] mean[x1]-mean[x2];

sampStat = myStatistic[x1,x2];
bootstrapStat = zeros[nReps,1];
for i=1:nReps
    sampX1 = x1[ceil[rand[n1,1]*n1]];
    sampX2 = x2[ceil[rand[n2,1]*n2]];
    bootstrapStat[i] = myStatistic[sampX1,sampX2];
end

Tính khoảng tin cậy [tôi có thể tạo một hàm từ cái này. ]

Vẽ biểu đồ thống kê lấy mẫu

clf
xx = min[bootstrapStat]:.01:max[bootstrapStat];
hist[bootstrapStat,xx];
hold on
ylim = get[gca,'YLim'];
h1=plot[sampStat*[1,1],ylim,'y-','LineWidth',2];
h2=plot[CI[1]*[1,1],ylim,'r-','LineWidth',2];
plot[CI[2]*[1,1],ylim,'r-','LineWidth',2];
h3=plot[[0,0],ylim,'b-','LineWidth',2];
xlabel['Difference between means'];

decision = {'Fail to reject H0','Reject H0'};
title[decision[H+1]];
legend[[h1,h2,h3],{'Sample mean',sprintf['%2.0f%% CI',100*alpha],'H0 mean'},'Location','NorthWest'];

ví dụ 2. Bootstrapping trên một 'chỉ mục'

Thông thường [đặc biệt là trong khoa học thần kinh], chúng ta tạo ra 'chỉ số' của riêng mình, đó là thước đo tác động của một điều kiện đối với thước đo của chúng ta. Ví dụ: khi đo tốc độ kích hoạt của nơ-ron, việc so sánh sự khác biệt về tốc độ kích hoạt giữa hai điều kiện thường được biểu thị dưới dạng một chỉ số là tỷ lệ của sự khác biệt so với tổng của hai tốc độ kích hoạt. Điều này chuẩn hóa bằng tốc độ bắn tổng thể của nơ-ron và cung cấp một số luôn nằm trong khoảng từ -1 đến 1

Trong ví dụ này, chúng tôi sẽ tạo hai mẫu gồm 25 tốc độ bắn tương ứng với 25 nơ-ron được đo trong hai điều kiện. Sau đó, chúng tôi sẽ tính toán chỉ số cho từng nơ-ron và bootstrap trên giá trị trung bình của các chỉ số để xem liệu nó có khác 0 không

xác định 'chỉ mục' của chúng tôi ở đây [chênh lệch so với tổng]

myStatistic = @[x] mean[[x[:,1]-x[:,2]]./[x[:,1]+x[:,2]]];

chạy chương trình 'bootstrap' để tạo khoảng tin cậy

[CI,sampStat,bootstrapStat] = bootstrap[myStatistic,x,nReps,CIrange];

Hiển thị biểu đồ của các chỉ số boostrapped

figure[1]
clf

xx = min[bootstrapStat]:.01:max[bootstrapStat];
hist[bootstrapStat,xx];
hold on
ylim = get[gca,'YLim'];
plot[sampStat*[1,1],ylim,'y-','LineWidth',2];
plot[CI[1]*[1,1],ylim,'r-','LineWidth',2];
plot[CI[2]*[1,1],ylim,'r-','LineWidth',2];
plot[[0,0],ylim,'b-','LineWidth',2];
set[gca,'XTick',[-1:.25:1]];
set[gca,'XLim',[-1,1]];

Nếu khoảng tin cậy của chúng tôi không bao gồm số 0, thì chúng tôi sẽ kết luận rằng giá trị trung bình của các chỉ số của chúng tôi trên các nơ-ron khác đáng kể so với số không.

H = CI[1]>0 | CI[2]

Chủ Đề