Khoảng tin cậy Bootstrap SAS

Nếu bạn muốn khởi động các tham số trong mô hình hồi quy thống kê, bạn có hai lựa chọn chính. Đầu tiên là lấy mẫu lại theo trường hợp, còn được gọi là lấy mẫu lại các quan sát hoặc lấy mẫu lại theo cặp. Trong trường hợp lấy mẫu lại, bạn tạo mẫu bootstrap bằng cách chọn ngẫu nhiên các quan sát (có thay thế) từ dữ liệu gốc. Lựa chọn thứ hai được gọi là lấy mẫu lại phần dư. Trong phương pháp này, bạn khớp một mô hình với dữ liệu gốc để thu được các giá trị và phần dư được dự đoán. Bạn tạo mẫu bootstrap bằng cách sử dụng các biến giải thích ban đầu nhưng xây dựng giá trị phản hồi mới bằng cách thêm phần dư ngẫu nhiên vào giá trị dự đoán. Bài viết này cho thấy một ví dụ về lấy mẫu lại trường hợp trong SAS. Một bài viết trong tương lai cho thấy một ví dụ về lấy mẫu lại phần dư

Show

Lấy mẫu lại trường hợp để khởi động phân tích hồi quy

Nếu bạn có một số kinh nghiệm với bootstrapping số liệu thống kê đơn biến, việc lấy mẫu lại theo trường hợp sẽ trông quen thuộc. Các ý tưởng chính đằng sau quá trình khởi động được giải thích trong bài viết "Tính toán khoảng tin cậy bootstrap trong SAS", thảo luận về các bước sau của phương pháp bootstrap

  1. Tính toán thống kê quan tâm cho dữ liệu gốc
  2. Lấy mẫu lại B lần từ dữ liệu để tạo mẫu B bootstrap
  3. Tính toán số liệu thống kê trên từng mẫu bootstrap. Điều này tạo ra phân phối bootstrap, xấp xỉ phân phối lấy mẫu của thống kê
  4. Sử dụng phân phối lấy mẫu gần đúng để có được các ước tính bootstrap như sai số chuẩn, khoảng tin cậy và bằng chứng ủng hộ hoặc chống lại giả thuyết không

Để chứng minh việc lấy mẫu lại theo trường hợp, hãy xem xét phân phối lấy mẫu của các ước tính tham số (hệ số hồi quy) trong hồi quy bình phương nhỏ nhất thông thường (OLS). Phân phối lấy mẫu cung cấp cái nhìn sâu sắc về sự thay đổi của các ước tính và cách các ước tính tương quan với nhau. Trong phân tích lấy mẫu theo trường hợp, mỗi mẫu bootstrap sẽ chứa các quan sát được chọn ngẫu nhiên từ dữ liệu gốc. Bạn điều chỉnh cùng một mô hình hồi quy cho từng mẫu để có được các ước tính bootstrap. Sau đó, bạn có thể phân tích phân phối ước tính bootstrap

Đối với số liệu thống kê trong bài viết này, bạn có thể so sánh ước tính bootstrap với ước tính sai số chuẩn và khoảng tin cậy (CIs) do PROC REG tạo ra trong SAS. Quy trình xây dựng số liệu thống kê dựa trên một số giả định về phân phối lỗi trong mô hình OLS. Ngược lại, các ước tính bootstrap không theo tham số và dựa vào ít giả định hơn. Do đó, bootstrapping rất hữu ích khi bạn không chắc liệu các giả định OLS có phù hợp với dữ liệu của mình hay không hoặc khi bạn muốn lấy khoảng tin cậy cho các thống kê (như R-squared và RMSE) có phân phối lấy mẫu phức tạp hoặc không xác định

Thống kê quan tâm cho dữ liệu gốc

Ví dụ này phân tích Sashelp. Tập dữ liệu lớp, chứa dữ liệu về cân nặng và chiều cao của 19 học sinh. Biến phản hồi là biến Trọng lượng, mà bạn có thể hồi quy về biến Chiều cao. Hồi quy tạo ra hai ước tính tham số (Giao điểm và Chiều cao), sai số chuẩn và ước tính "hiệp phương sai của hệ số beta. " Để rõ ràng, tôi đổi tên biến phản hồi thành Y và biến giải thích thành X để vai trò của từng biến được rõ ràng

/* regression bootstrap: case resampling */
data sample(keep=x y);
   set Sashelp.Class(rename=(Weight=Y Height=X));  /* rename to make roles easier to understand */
run;
 
/* 1. compute the statistics on the original data */
proc reg data=Sample plots=none;
   model Y = X / CLB covb;                          /* original estimates */
run; quit;

Khoảng tin cậy Bootstrap SAS

Bảng "Ước tính tham số" bao gồm các ước tính điểm, sai số chuẩn và khoảng tin cậy cho các hệ số hồi quy. Bảng "Hiệp phương sai của các ước tính" cho thấy các ước tính có tương quan nghịch

Lấy mẫu lại từ dữ liệu

Lệnh gọi PROC SURVEYSELECT sau đây tạo 5.000 mẫu bootstrap bằng cách lấy mẫu có thay thế từ dữ liệu

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;

Đầu ra từ thủ tục SURVEYSELECT là một tập dữ liệu lớn (BootCase) chứa tất cả các mẫu bootstrap. Biến SampleID cho biết quan sát nào thuộc về từng mẫu. Biến NumberHits đưa ra tần suất mà mỗi quan sát ban đầu được chọn. Biến đó nên được sử dụng làm biến FREQ khi phân tích các mẫu bootstrap. (Nếu quy trình của bạn không hỗ trợ biến tần số, hãy sử dụng tùy chọn OUTHITS trên câu lệnh PROC SURVEYSELECT để lấy phiên bản "mở rộng" của các mẫu bootstrap. )

Tính toán phân phối bootstrap

Bộ dữ liệu BootCase chứa 5.000 mẫu bootstrap. Bạn có thể thực hiện 5.000 phân tích hồi quy một cách hiệu quả bằng cách sử dụng phân tích BY-group. Bạn có thể sử dụng câu lệnh BY trong PROC REG. Đảm bảo sử dụng tùy chọn NOPRINT để chặn đầu ra ra màn hình và sử dụng tùy chọn OUTEST= để tạo tập dữ liệu đầu ra chứa 5.000 ước tính tham số, một ước tính cho mỗi mẫu bootstrap

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;

Phân tích phân phối bootstrap

Bộ dữ liệu PEBoot chứa 5.000 ước tính tham số. Để trực quan hóa phân phối bootstrap, bạn có thể tạo một biểu đồ phân tán. Lệnh gọi PROC SGPLOT sau đây phủ lên các đường tham chiếu giao nhau tại các ước tính tham số cho dữ liệu gốc

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;

Khoảng tin cậy Bootstrap SAS

Biểu đồ phân tán cho thấy các ước tính có mối tương quan nghịch, điều này đã được hiển thị trước đó bởi đầu ra từ tùy chọn COVB trên dữ liệu gốc. Bạn có thể gọi PROC CORR trên các mẫu bootstrap để có được ước tính bootstrap về hiệp phương sai của các bản beta

proc corr data=PEBoot cov vardef=N;
   var Intercept X;
run;

Khoảng tin cậy Bootstrap SAS

Ma trận hiệp phương sai cho các ước tính bootstrap gần với ma trận COVB từ PROC REG. Bảng "Thống kê đơn giản" hiển thị các ước tính bootstrap khác. Cột Mean hiển thị giá trị trung bình của các ước tính bootstrap; . Cột StdDev ước tính sai số chuẩn của ước tính hồi quy

Bạn cũng có thể sử dụng số 0. 025 và 0. 975 lượng tử của bootstrap ước tính để xây dựng khoảng tin cậy 95% cho các tham số. Có nhiều cách để lấy phần trăm trong SAS. các câu lệnh sau đây gọi PROC STDIZE và in khoảng tin cậy cho các biến Chặn và X

proc stdize data=PEBoot vardef=N pctlpts=2.5 97.5  PctlMtd=ORD_STAT outstat=Pctls;
   var Intercept X;
run;
proc report data=Pctls nowd;
  where _type_ =: 'P';
  label _type_ = 'Confidence Limit';
  columns ('Bootstrap Confidence Intervals (B=5000)' _ALL_);
run;

Khoảng tin cậy Bootstrap SAS

Ước tính bootstrap của khoảng tin cậy ngắn hơn khoảng tin cậy Wald từ PROC REG giả định tính quy phạm của lỗi

Tóm lược

Tóm lại, có hai cách chính để thực hiện bootstrapping cho các tham số trong mô hình hồi quy. Bài viết này tạo các mẫu bootstrap bằng cách sử dụng "lấy mẫu lại trường hợp" trong đó các quan sát được chọn ngẫu nhiên (có thay thế). Quá trình bootstrap cho phép bạn ước tính sai số chuẩn, khoảng tin cậy và hiệp phương sai (hoặc tương quan) của các ước tính. Bạn cũng có thể sử dụng macro %BOOT để thực hiện loại phân tích bootstrap này

Lấy mẫu lại trường hợp là một lựa chọn tốt khi bạn đang lập mô hình dữ liệu quan sát trong đó các biến giải thích được quan sát ngẫu nhiên từ dân số. Mặc dù hồi quy OLS coi biến giải thích (chẳng hạn như Chiều cao) là một hiệu ứng cố định, nhưng nếu bạn học ở một trường khác và chọn ngẫu nhiên 19 học sinh cùng khối, bạn sẽ nhận được một tập hợp các chiều cao khác nhau. Theo nghĩa đó, dữ liệu (X và Y) có thể được coi là các giá trị ngẫu nhiên từ một dân số lớn hơn

Nếu bạn đang phân tích dữ liệu từ một thử nghiệm được thiết kế trong đó các biến giải thích có một số lượng nhỏ các giá trị được chỉ định, thì bạn có thể sử dụng lấy mẫu lại phần dư, điều này sẽ được thảo luận trong bài đăng trên blog tiếp theo

Bài viết Ước tính hồi quy Bootstrap. Lấy mẫu lại trường hợp xuất hiện đầu tiên trên Vòng lặp DO

Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS

Kể từ cuối những năm 1990, SAS đã cung cấp macro cho các phân tích bootstrap và jackknife cơ bản. Bài viết này cung cấp một ví dụ cho biết cách sử dụng macro %BOOT và %BOOTCI. Macro %BOOT tạo phân phối bootstrap và tính toán các số liệu thống kê cơ bản về phân phối bootstrap, bao gồm các ước tính về độ lệch, sai số chuẩn và khoảng tin cậy phù hợp khi phân phối lấy mẫu được phân phối bình thường. Bởi vì các phương pháp bootstrap thường được sử dụng khi bạn không muốn giả sử một thống kê được phân phối bình thường, nên macro %BOOTCI hỗ trợ một số khoảng tin cậy bổ sung, chẳng hạn như khoảng dựa trên phần trăm và khoảng được điều chỉnh sai lệch

Bạn có thể tải xuống các macro miễn phí từ trang web Hỗ trợ của SAS. Trang web bao gồm các ví dụ bổ sung, tài liệu và thảo luận về khả năng của macro

Macro %BOOT sử dụng lấy mẫu ngẫu nhiên thống nhất đơn giản (có thay thế) hoặc lấy mẫu bootstrap cân bằng để tạo các mẫu bootstrap. Sau đó, nó gọi macro %ANALYZE do người dùng cung cấp để tính toán phân phối bootstrap của thống kê của bạn

Cách cài đặt và sử dụng macro %BOOT và %BOOTCI

Để sử dụng macro, hãy làm như sau

  1. Tải xuống tệp nguồn cho các macro và lưu nó vào một thư mục mà SAS có thể truy cập được. Trong ví dụ này, tôi đã lưu tệp nguồn vào C. \Temp\jackboot. sass
  2. Xác định macro có tên %ANALYZE tính toán thống kê bootstrap từ một mẫu bootstrap. Phần tiếp theo cung cấp một ví dụ
  3. Gọi macro %BOOT. Macro %BOOT tạo ba bộ dữ liệu chính
    • BootData là chế độ xem tập dữ liệu chứa B mẫu dữ liệu bootstrap. Đối với ví dụ này, tôi sử dụng B=5000
    • BootDist là tập dữ liệu chứa bản phân phối bootstrap. Nó được tạo khi macro %BOOT gọi nội bộ macro %ANALYZE trên tập dữ liệu BootData
    • BootStat là tập dữ liệu chứa số liệu thống kê về phân phối bootstrap. Ví dụ: bộ dữ liệu BootStat chứa giá trị trung bình và độ lệch chuẩn của phân phối bootstrap, trong số các thống kê khác
  4. Nếu bạn muốn các khoảng thời gian tin cậy, hãy sử dụng macro %BOOTCI để tính toán tối đa sáu ước tính khoảng thời gian khác nhau. Macro %BOOTCI tạo một tập dữ liệu có tên là BootCI chứa các số liệu thống kê được sử dụng để xây dựng khoảng tin cậy. (Bạn cũng có thể tạo nhiều ước tính khoảng thời gian bằng cách sử dụng macro %ALLCI. )

Một ví dụ về cách gọi macro %BOOT

Phần này cho biết cách gọi macro %BOOT. Ví dụ trước đây đã được phân tích trong một bài viết chỉ ra cách tính khoảng tin cậy phần trăm bootstrap trong SAS. Thống kê đáng quan tâm là độ lệch của biến SepalWidth cho 50 bông hoa diên vĩ của loài Iris virginica. Các câu lệnh SAS sau xác định dữ liệu mẫu và tính toán thống kê độ lệch trên dữ liệu gốc

%include "C:\Temp\jackboot.sas";         /* define the %BOOT and %BOOTCI macros */
 
data sample(keep=x);                     /* data are sepal widths for 50 Iris virginica flowers */
   set Sashelp.Iris(where=(Species="Virginica") rename=(SepalWidth=x));
run;
 
/* compute value of the statistic on original data: Skewness = 0.366 */
title 'Skewness for Petal Widths (Iris virginica)';
proc means data=sample nolabels skewness;
   var x;
   output out=SkewOut skew=Skewness;   /* three output variables: _type_ _freq_ and Skewness */
run;

Thống kê độ lệch (không hiển thị) là 0. 366. Cuộc gọi đến PROC MEANS là không cần thiết, nhưng nó chỉ ra cách tạo một tập dữ liệu đầu ra (SkewOut) có chứa thống kê Skewness. Theo mặc định, macro %BOOT sẽ phân tích tất cả các biến số trong tập dữ liệu đầu ra, vì vậy, bước tiếp theo xác định macro %ANALYZE và sử dụng tùy chọn DROP= tập dữ liệu để bỏ qua một số biến không quan trọng mà PROC MEANS tự động tạo

Khi bạn xác định macro %ANALYZE, hãy đảm bảo sử dụng tùy chọn NOPRINT hoặc ngăn chặn đầu ra ODS trong quá trình khởi động. Bao gồm macro %BYSTMT, macro này sẽ yêu cầu macro %BOOT sử dụng câu lệnh BY để triển khai phân tích bootstrap một cách hiệu quả. Macro %ANALYZE về cơ bản giống như lệnh gọi PROC MEANS trước đó, ngoại trừ việc bổ sung các tùy chọn NOPRINT, %BYSTMT và DROP=

%macro analyze(data=,out=);
   proc means noprint data=&data;   
      %bystmt;
      var x;
      output out=&out(drop=_type_ _freq_) skew=Skewness;
   run;
%mend;

Mặc dù câu lệnh DROP= không cần thiết nhưng nó làm giảm kích thước của dữ liệu được đọc và ghi trong quá trình phân tích bootstrap. KHÔNG sử dụng câu lệnh KEEP= trong macro %ANALYZE vì macro %BOOT sẽ tạo ra một số biến khác (được gọi là _SAMPLE_ và _OBS_) như một phần của quy trình lấy mẫu lại

Bây giờ bạn có thể sử dụng macro %BOOT để tạo các mẫu bootstrap và tính toán các thống kê mô tả cơ bản về phân phối bootstrap

________số 8

Khoảng tin cậy Bootstrap SAS

Tôi khuyên bạn nên chỉ định bốn tùy chọn đầu tiên. Ba tùy chọn cuối cùng được hiển thị trong trường hợp bạn muốn ghi đè các giá trị mặc định của chúng. Mặc dù macro %BOOT in một bảng thống kê mô tả, nhưng bảng này có 14 cột và rất rộng. Để rút ngắn đầu ra, tôi đã sử dụng PROC PRINT để hiển thị các kết quả quan trọng nhất. Bảng hiển thị ước tính của thống kê độ lệch trên dữ liệu gốc (VALUE), giá trị trung bình của phân phối bootstrap (BOOTMEAN), ước tính cho lỗi tiêu chuẩn của thống kê (STDERR) và giới hạn tin cậy dưới và trên (ALCL và AUCL . (Các giới hạn là b ± z1-α * stderr, trong đó z1-α là lượng phân vị chuẩn thứ (1 - α) và b = giá trị - sai lệch là ước tính đã hiệu chỉnh sai lệch. )

Dữ liệu cho phân phối bootstrap nằm trong bộ dữ liệu BootDist, vì vậy bạn có thể sử dụng PROC SGPLOT để hiển thị biểu đồ thống kê bootstrap. Tôi muốn gán một số thống kê mô tả thành các biến vĩ mô để tôi có thể hiển thị chúng trên biểu đồ, như sau

/* OPTIONAL: Store bootstrap statistic in a macro variable */
proc sql noprint;
select value, alcl,     aucl 
 into :Stat, :LowerCL, :UpperCL
 from BootStat;
quit;
 
proc sgplot data=BootDist;      /* <== this data set contains the bootstrap distribution */
   histogram Skewness;
   refline &Stat / axis=x lineattrs=(color=red);
   refline &LowerCL &UpperCL / axis=x;
run;

Khoảng tin cậy Bootstrap SAS

Một ví dụ về cách gọi macro %BOOTCI

Macro %BOOTCI cho phép bạn tính toán một số khoảng tin cậy (CI) cho thống kê mà bạn đang khởi động. Các tuyên bố sau đây hiển thị CI dựa trên phần trăm và CI được điều chỉnh và hiệu chỉnh sai lệch

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
0

Khoảng tin cậy Bootstrap SAS

CI dựa trên phần trăm có cùng chiều rộng với CI dựa trên thông thường, nhưng nó được dịch chuyển sang trái. Đầu ra mặc định từ macro %BOOTCI rất rộng, vì vậy đôi khi tôi thích sử dụng tùy chọn PRINT=0 để chặn đầu ra. Các ước tính được ghi vào một tập dữ liệu có tên là BootCI, do đó, thật dễ dàng để sử dụng PROC PRINT để chỉ hiển thị các thống kê mà bạn muốn xem, như được hiển thị trong cuộc gọi sau đây để tính toán ước tính khoảng thời gian đã điều chỉnh và hiệu chỉnh sai lệch

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
1

Khoảng tin cậy Bootstrap SAS

Lưu ý rằng mỗi lệnh gọi đến macro %BOOTCI sẽ tạo một tập dữ liệu có tên là BootCI. Đặc biệt, cuộc gọi thứ hai sẽ ghi đè tập dữ liệu được tạo bởi cuộc gọi đầu tiên. Nếu bạn muốn so sánh các ước tính, hãy đảm bảo tạo một bản sao của tập dữ liệu BootCI đầu tiên trước khi ghi đè lên

Macro %ALLCI

Nếu bạn muốn so sánh nhiều CI, bạn có thể sử dụng macro %ALLCI, tính toán nhiều định nghĩa của CI và nối chúng thành một tập dữ liệu có tên AllCI, như minh họa dưới đây

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
2

Đầu ra (không hiển thị) chứa ước tính khoảng thời gian cho năm CI bootstrap và CI jackknife

Xin lưu ý rằng khi bạn chạy macro %ALLCI, bạn sẽ thấy một số cảnh báo trong nhật ký SAS, chẳng hạn như cảnh báo sau

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
3

Những cảnh báo này đến từ PROC APPEND và có thể bỏ qua. Để chặn những cảnh báo này, bạn có thể chỉnh sửa jackboot. sas, tìm kiếm từ 'force' trên các câu lệnh PROC APPEND và thêm tùy chọn NOWARN vào các câu lệnh PROC APPEND đó. Ví dụ.
proc append data=bootci&keep base=ALLCI force nowarn;

Ưu và nhược điểm của việc sử dụng macro %BOOT

Các macro %BOOT, %BOOTCI và %ALLCI có thể tiết kiệm thời gian khi bạn muốn thực hiện một bootstrap cơ bản trong SAS. Tuy nhiên, theo tôi, chúng không thể thay thế cho việc hiểu cách triển khai tính toán bootstrap theo cách thủ công trong SAS. Dưới đây là một vài ưu điểm và nhược điểm của macro

  • Lợi thế. Các macro gói gọn các bước tẻ nhạt của quá trình phân tích bootstrap
  • Lợi thế. Các macro tạo tập dữ liệu SAS mà bạn có thể sử dụng để phân tích bổ sung hoặc để vẽ biểu đồ kết quả
  • Lợi thế. Các macro xử lý các sơ đồ lấy mẫu phổ biến nhất, chẳng hạn như lấy mẫu thống nhất đơn giản (có thay thế), lấy mẫu bootstrap cân bằng và lấy mẫu còn lại trong các mô hình hồi quy
  • Lợi thế. Macro %BOOTCI hỗ trợ nhiều khoảng tin cậy phổ biến cho các tham số
  • Bất lợi. Các macro không cung cấp tính linh hoạt giống như viết phân tích của riêng bạn. Ví dụ: các macro không hỗ trợ sơ đồ lấy mẫu lại phân tầng được sử dụng để phân tích bootstrap về sự khác biệt của phương tiện trong thử nghiệm t
  • Bất lợi. Chỉ có một vài ví dụ về việc sử dụng macro. Khi lần đầu tiên sử dụng chúng, tôi đã mắc một số lỗi và phải xem mã nguồn bên dưới để hiểu chức năng của các macro

Tóm lược

Các macro %BOOT và %BOOTCI cung cấp một cách thuận tiện để thực hiện các phân tích bootstrap đơn giản trong SAS. Các macro hỗ trợ một số lược đồ lấy mẫu lại phổ biến và ước tính cho khoảng tin cậy. Mặc dù các macro không phải là sự thay thế để hiểu cách lập trình phân tích bootstrap chung, hiệu quả, nhưng chúng có thể là một công cụ hữu ích cho các nhà phân tích dữ liệu muốn có mã nhỏ gọn để tạo phân tích bootstrap trong SAS

Bài đăng Cách sử dụng macro %BOOT và %BOOTCI trong SAS xuất hiện đầu tiên trên The DO Loop

Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS

Bài viết này cho thấy cách triển khai lấy mẫu bootstrap cân bằng trong SAS. Các mẫu bootstrap cơ bản với sự thay thế từ dữ liệu gốc (N quan sát) để thu được B mẫu mới. Điều này được gọi là lấy mẫu lại "đồng nhất" vì mỗi quan sát có xác suất được chọn đồng nhất là 1/N ở mỗi bước của quy trình lấy mẫu lại. Trong sự kết hợp của các mẫu bootstrap B, mỗi quan sát có giá trị dự kiến ​​​​xuất hiện B lần

Lấy mẫu lại bootstrap cân bằng (Davison, Hinkley và Schechtman, 1986) là một quy trình thay thế trong đó mỗi quan sát xuất hiện chính xác B lần trong sự kết hợp của các mẫu bootstrap B có kích thước N. Điều này có một số lợi ích thiết thực để ước tính một số thống kê suy luận nhất định, chẳng hạn như độ lệch và lượng tử của phân phối lấy mẫu (Hall, 1990)

Thật dễ dàng để thực hiện sơ đồ lấy mẫu lại bootstrap cân bằng. Ghép nối B bản sao của dữ liệu, hoán vị ngẫu nhiên các quan sát B*N, sau đó sử dụng N quan sát đầu tiên cho mẫu bootstrap đầu tiên, B tiếp theo cho mẫu thứ hai, v.v. (Các thuật toán khác cũng có thể thực hiện được, như được thảo luận bởi Gleason, 1988). Bài viết này cho thấy cách triển khai lấy mẫu bootstrap cân bằng trong SAS

Các mẫu bootstrap cân bằng trong SAS

Để minh họa ý tưởng, hãy xem xét tập dữ liệu sau đây có N=6 quan sát. Năm quan sát được nhóm gần x=0 và quan sát thứ sáu là một ngoại lệ lớn (x=10). Độ lệch mẫu cho những dữ liệu này là skew=2. 316 vì ảnh hưởng của ngoại lệ

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
4

Bạn có thể sử dụng bootstrap để ước tính phân phối lấy mẫu cho thống kê độ lệch cho những dữ liệu này. Trước đây tôi đã trình bày cách sử dụng SAS để khởi động thống kê độ lệch. Sử dụng PROC SURVEYSELECT để tạo các mẫu bootstrap, sử dụng PROC MEANS với câu lệnh BY để phân tích các mẫu và sử dụng PROC UNIVARIATE để phân tích phân phối bootstrap của các giá trị độ lệch. Trong bài viết trước đó, PROC SURVEYSELECT được sử dụng để thực hiện lấy mẫu thống nhất (lấy mẫu có thay thế)

Thật đơn giản để sửa đổi chương trình trước đó để thực hiện lấy mẫu bootstrap cân bằng. Chương trình sau đây dựa trên bài báo SAS của Nils Penard tại PhUSE 2012. Nó làm như sau

  1. Sử dụng PROC SURVEYSEELCT để nối B bản sao của dữ liệu đầu vào
  2. Sử dụng bước DATA để tạo số ngẫu nhiên thống nhất cho mỗi lần quan sát
  3. Sử dụng PROC SORT để sắp xếp dữ liệu theo các giá trị ngẫu nhiên. Sau bước này, các quan sát N*B theo thứ tự ngẫu nhiên
  4. Tạo một biến chỉ ra mẫu bootstrap cho mỗi lần quan sát. Ngoài ra, sử dụng lại biến REPLICATE từ PROC SURVEYSELECT, như hình bên dưới

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
5

Bạn có thể sử dụng bộ dữ liệu BalancedBoot để thực hiện các phân tích bootstrap tiếp theo. Nếu bạn thực hiện phân tích bootstrap, bạn sẽ có được phân phối bootstrap gần đúng sau đây cho thống kê độ lệch. Thống kê quan sát được biểu thị bằng một đường thẳng đứng màu đỏ. Để tham khảo, giá trị trung bình của phân phối bootstrap được biểu thị bằng một đường thẳng đứng màu xám. Bạn có thể thấy rằng phân phối lấy mẫu cho tập dữ liệu nhỏ này rất không bình thường. Nhiều mẫu bootstrap có chứa ngoại lệ (chính xác là 1/6 số mẫu trong bootstrap cân bằng) sẽ có giá trị độ lệch lớn

Khoảng tin cậy Bootstrap SAS

Để tự đảm bảo rằng mỗi quan sát trong số sáu quan sát ban đầu xuất hiện chính xác B lần trong sự kết hợp của mẫu bootstrap, bạn có thể chạy PROC FREQ, như sau

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
6

Các mẫu bootstrap cân bằng trong SAS/IML

Như đã trình bày trong bài viết "Các ước tính Bootstrap trong SAS/IML", bạn có thể thực hiện các phép tính bootstrap bằng ngôn ngữ SAS/IML. Để lấy mẫu thống nhất, chức năng SAMPLE lấy mẫu thay thế từ dữ liệu gốc. Tuy nhiên, bạn có thể sửa đổi sơ đồ lấy mẫu để hỗ trợ lấy mẫu lại bootstrap cân bằng

  1. Sử dụng hàm REPEAT để nhân bản dữ liệu B lần
  2. Sử dụng chức năng SAMPLE với tùy chọn "WORD" để lấy mẫu mà không cần thay thế. Vectơ kết quả là một hoán vị của các quan sát B*N
  3. Sử dụng hàm SHAPE để định hình lại dữ liệu đã hoán vị thành ma trận N x B mà mỗi cột là một mẫu bootstrap. Biểu mẫu này rất hữu ích để thực hiện tính toán véc tơ trên các cột

Chương trình SAS/IML sau sửa đổi chương trình trong bài trước để thực hiện lấy mẫu bootstrap cân bằng

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
7

Khoảng tin cậy Bootstrap SAS

Như được hiển thị trong biểu đồ trước, ước tính sai lệch (sự khác biệt giữa thống kê được quan sát và giá trị trung bình của phân phối bootstrap) là khá lớn

Điều đáng nói là macro %BOOT do SAS cung cấp thực hiện lấy mẫu bootstrap cân bằng theo mặc định. Để tạo các mẫu bootstrap cân bằng với macro %BOOT, hãy đặt tùy chọn BALANCED=1 như sau.
%boot(data=Sample, samples=5000,balance=1) /* hoặc bỏ qua tùy chọn BALANCED= */
Nếu bạn muốn các mẫu đồng nhất (không cân bằng) .
%boot(data=Sample,samples=5000,balance=0).

Tóm lại, thật dễ dàng để tạo các mẫu bootstrap cân bằng. Lấy mẫu cân bằng có thể cải thiện hiệu quả của các ước tính và suy luận bootstrap nhất định. Để biết chi tiết, xem các tài liệu tham khảo trước đây của Phụ lục II của Hall (1992)

Bài đăng Lấy mẫu lại bootstrap cân bằng trong SAS xuất hiện đầu tiên trên Vòng lặp DO

Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS

Bài viết trước cung cấp ví dụ về cách sử dụng câu lệnh BOOTSTRAP trong PROC TTEST để tính toán các ước tính số liệu thống kê bootstrap trong thử nghiệm t hai mẫu. Câu lệnh BOOTSTRAP mới trong SAS/STAT 14. 3 (SAS 9. 4M5). Tuy nhiên, bạn có thể thực hiện phân tích bootstrap tương tự trong các phiên bản trước của SAS bằng cách sử dụng các quy trình trong Base SAS và SAS/STAT. Bài viết này đưa ra một ví dụ về cách bootstrap trong SAS

Các bước chính của phương pháp bootstrap trong SAS

Bài viết trước mô tả cách xây dựng khoảng tin cậy bootstrap trong SAS. Các bước chính của phân tích bootstrap tuân theo

  1. Tính toán thống kê quan tâm cho dữ liệu gốc
  2. Lấy mẫu lại B lần (có thay thế) từ dữ liệu để tạo mẫu B bootstrap. Quá trình lấy mẫu lại phải tôn trọng cấu trúc của phân tích và giả thuyết khống. Trong SAS, hiệu quả nhất là sử dụng bước DATA hoặc PROC SURVEYSELECT để đặt tất cả B mẫu bootstrap ngẫu nhiên vào một tập dữ liệu
  3. Sử dụng xử lý theo nhóm BY để tính toán thống kê quan tâm trên từng mẫu bootstrap. Cách tiếp cận BY-group nhanh hơn nhiều so với sử dụng các vòng lặp macro. Sự kết hợp của thống kê là phân phối bootstrap, gần đúng với phân phối lấy mẫu của thống kê theo giả thuyết khống
  4. Sử dụng phân phối bootstrap để có được các ước tính bootstrap về độ chệch, sai số chuẩn và khoảng tin cậy

Tính toán thống kê quan tâm

Bài viết này sử dụng cùng một ví dụ bootstrap như bài viết trước. Bước SAS DATA sau tập hợp con Sashelp. Dữ liệu ô tô để tạo tập dữ liệu chứa hai nhóm. SUV" và "Sedan". Có 60 chiếc SUV và 262 chiếc sedan. Thống kê quan tâm là sự khác biệt về phương tiện giữa hai nhóm. Một cuộc gọi đến PROC TTEST tính toán sự khác biệt giữa các phương tiện nhóm cho dữ liệu

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
8

title "Bootstrap Distribution of Regression Estimates";
title2 "Case Resampling";
%let NumSamples = 5000;       /* number of bootstrap resamples */
%let IntEst = -143.02692;     /* original estimates for later visualization */
%let XEst   =    3.89903;
 
/* 2. Generate many bootstrap samples by using PROC SURVEYSELECT */
proc surveyselect data=sample NOPRINT seed=1
     out=BootCases(rename=(Replicate=SampleID))
     method=urs              /* resample with replacement */
     samprate=1              /* each bootstrap sample has N observations */
     /* OUTHITS                 use OUTHITS option to suppress the frequency var */
     reps=&NumSamples;       /* generate NumSamples bootstrap resamples */
run;
9

Ước tính điểm cho sự khác biệt của phương tiện giữa các nhóm là -4. 98. Quy trình TTEST tạo ra một biểu đồ (không hiển thị) cho biết rằng biến MPG_City bị lệch vừa phải đối với nhóm "Sedan". Do đó, bạn có thể đặt câu hỏi về tính hữu ích của các ước tính tham số cổ điển cho sai số chuẩn và khoảng tin cậy cho sự khác biệt của phương tiện. Phân tích bootstrap sau đây cung cấp ước tính phi tham số về độ chính xác của sự khác biệt của phương tiện

Lấy mẫu lại từ dữ liệu

Đối với nhiều chương trình lấy mẫu lại, PROC SURVEYSELECT là cách đơn giản nhất để tạo các mẫu bootstrap. Tài liệu về PROC TTEST nêu rõ, "Trong một bootstrap dành cho thiết kế hai mẫu, các lượt rút thăm ngẫu nhiên có kích thước n1 và n2 được lấy tương ứng với sự thay thế từ nhóm thứ nhất và thứ hai, và được kết hợp để tạo ra một mẫu bootstrap duy nhất. " Một cách để thực hiện sơ đồ lấy mẫu này là sử dụng câu lệnh STRATA trong PROC SURVEYSELECT để lấy mẫu (có thay thế) từ các nhóm "SUV" và "Sedan". Để thực hiện lấy mẫu phân tầng, hãy sắp xếp dữ liệu theo biến STRATA. Các câu lệnh sau sắp xếp dữ liệu và tạo 10.000 mẫu bootstrap bằng cách lấy các mẫu ngẫu nhiên (có thay thế) từ mỗi nhóm

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
0

Bộ dữ liệu BootSamples chứa 10.000 mẫu ngẫu nhiên. Mỗi mẫu chứa 60 chiếc SUV và 262 chiếc sedan, giống như dữ liệu ban đầu. Dữ liệu BootSamples chứa một biến có tên là NumberHits chứa tần suất mà mỗi lần quan sát ban đầu xuất hiện trong mẫu lại. Nếu bạn muốn sử dụng các quan sát trùng lặp, hãy chỉ định tùy chọn OUTHITS trong câu lệnh PROC SURVEYSELECT. Các mẫu khác nhau được xác định bởi các giá trị của biến Replicate

Phân tích theo nhóm các mẫu bootstrap

Nhớ lại rằng phân tích BY-group là một cách hiệu quả để xử lý 10.000 mẫu bootstrap. Cũng cần nhớ lại rằng việc chặn đầu ra khi bạn thực hiện phân tích nhóm THEO quy mô lớn là rất hiệu quả. Các macro sau đóng gói các lệnh ngăn chặn các đối tượng ODS trước khi mô phỏng hoặc phân tích bootstrap và sau đó cho phép các đối tượng xuất hiện sau khi quá trình phân tích hoàn tất

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
1

Với các định nghĩa này, lệnh gọi PROC TTEST sau đây sẽ tính toán thống kê kiểm tra Satterthwaite cho từng mẫu bootstrap. Lưu ý rằng bạn cần sắp xếp dữ liệu theo biến Replicate vì dữ liệu BootSamples được sắp xếp theo giá trị của biến Type. Cũng lưu ý rằng biến NumberHits được sử dụng làm biến FREQ

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
2

Có được ước tính từ phân phối bootstrap

Tại thời điểm này trong ví dụ bootstrap, tập dữ liệu BootDist chứa phân phối bootstrap trong biến DiffMeans. Bạn có thể sử dụng biến này để tính toán các số liệu thống kê bootstrap khác nhau. Ví dụ: ước tính bootstrap của lỗi tiêu chuẩn là độ lệch chuẩn của biến DiffMeans. Ước tính sai lệch là sự khác biệt giữa giá trị trung bình của ước tính bootstrap và thống kê ban đầu. Phần trăm của biến DiffMeans có thể được sử dụng để xây dựng khoảng tin cậy. (Hoặc bạn có thể sử dụng ước tính khoảng thời gian khác, chẳng hạn như khoảng thời gian được điều chỉnh sai lệch và hiệu chỉnh. ) Bạn cũng có thể muốn vẽ biểu đồ phân phối bootstrap. Các câu lệnh sau sử dụng PROC UNIVARIATE để tính toán các ước tính này

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
3

Khoảng tin cậy Bootstrap SAS

Khoảng tin cậy Bootstrap SAS

Kết quả được hiển thị. Bản phân phối bootstrap dường như được phân phối bình thường. Điều này chỉ ra rằng các ước tính bootstrap có thể sẽ tương tự như các ước tính tham số cổ điển. Đối với vấn đề này, ước tính cổ điển của lỗi tiêu chuẩn là 0. 448 và khoảng tin cậy 95% cho sự khác biệt của phương tiện là [-5. 87, -4. 10]. Để so sánh, ước tính bootstrap là 0. 444 và [-5. 87, -4. 13]. Bất chấp độ lệch của biến MPG_City đối với nhóm "Sedan", Satterthwaite t hai mẫu cung cấp các ước tính tương tự về độ chính xác của ước tính điểm cho sự khác biệt của phương tiện. Số liệu thống kê bootstrap cũng tương tự như số liệu thống kê mà bạn có thể nhận được bằng cách sử dụng câu lệnh BOOTSTRAP trong PROC TTEST trong SAS/STAT 14. 3

Tóm lại, bạn có thể sử dụng các thủ tục Base SAS và SAS/STAT để tính toán phân tích bootstrap của thử nghiệm t hai mẫu. Mặc dù bootstrap "thủ công" đòi hỏi nhiều nỗ lực lập trình hơn so với sử dụng câu lệnh BOOTSTRAP trong PROC TTEST, nhưng ví dụ trong bài viết này khái quát hóa các số liệu thống kê khác mà tùy chọn bootstrap tích hợp sẵn không được hỗ trợ. Bài viết này cũng chỉ ra cách sử dụng PROC SURVEYSELECT để thực hiện lấy mẫu phân tầng như một phần của phân tích bootstrap bao gồm lấy mẫu từ nhiều nhóm

Bài đăng Phương pháp bootstrap trong SAS. Một ví dụ kiểm tra t xuất hiện đầu tiên trên Vòng lặp DO

Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS

Lấy mẫu lại Bootstrap là một cách mạnh mẽ để ước tính lỗi tiêu chuẩn cho một thống kê mà không đưa ra bất kỳ giả định tham số nào về phân phối lấy mẫu của nó. Phương pháp bootstrap thường được triển khai bằng cách sử dụng một chuỗi lệnh gọi để lấy mẫu lại từ dữ liệu, tính toán thống kê trên từng mẫu và phân tích phân phối bootstrap. Một ví dụ được cung cấp trong bài viết "Tính toán khoảng tin cậy bootstrap trong SAS. " Quá trình này có thể kéo dài và trong Base SAS, nó yêu cầu đọc và ghi một lượng lớn dữ liệu. Trong SAS/STAT 14. 3 (SAS 9. 4m5), quy trình TTEST hỗ trợ câu lệnh BOOTSTRAP, tự động thực hiện phân tích bootstrap của các thử nghiệm t một mẫu và hai mẫu. Câu lệnh BOOTSTRAP cũng áp dụng cho các thử nghiệm ghép nối hai mẫu

Sự khác biệt về phương tiện giữa hai nhóm

Câu lệnh BOOTSTRAP giúp dễ dàng có được các ước tính bootstrap về sai lệch và sai số chuẩn cho khoảng tin cậy và thống kê (CIs) cho tham số cơ bản. Câu lệnh BOOTSTRAP hỗ trợ một số ước tính cho khoảng tin cậy, bao gồm khoảng dựa trên thông thường, khoảng dựa trên t, khoảng phần trăm và khoảng được điều chỉnh sai lệch. Phần này chỉ ra cách lấy ước tính bootstrap cho thử nghiệm t hai mẫu. Thống kê quan tâm là sự khác biệt giữa phương tiện của hai nhóm

Bước SAS DATA sau tập hợp con Sashelp. Dữ liệu ô tô để tạo tập dữ liệu chỉ chứa hai loại phương tiện. xe sedan và SUV. Lệnh gọi PROC UNIVARIATE hiển thị biểu đồ so sánh hiển thị phân phối của biến MPG_City cho từng nhóm. Biến số MPG_City đo hiệu quả sử dụng nhiên liệu (tính bằng dặm trên ga-lông) cho mỗi phương tiện trong quá trình lái xe trong thành phố điển hình

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
4

Khoảng tin cậy Bootstrap SAS

Ước tính Bootstrap cho thử nghiệm t hai mẫu

Giả sử bạn muốn kiểm tra xem liệu MPG trung bình của nhóm "SUV" có khác biệt đáng kể so với trung bình của nhóm "Sedan" hay không. Các nhóm dường như có các phương sai khác nhau, vì vậy bạn có thể chọn phiên bản Satterthwaite của bài kiểm tra t, phiên bản này chứa các phương sai khác nhau. Bạn có thể sử dụng PROC TTEST để chạy thử nghiệm t hai mẫu cho những dữ liệu này, nhưng khi xem xét sự phân bố của các nhóm, bạn có thể lo ngại rằng các giả định về tính quy tắc cho thử nghiệm t không được thỏa mãn bởi những dữ liệu này. Lưu ý rằng phân phối của biến MPG_City cho nhóm "Sedan" có độ lệch cao (1. 3) và độ nhọn cao vừa phải (1. 9). Mặc dù thử nghiệm t hơi mạnh đối với giả định về tính quy tắc, nhưng bạn có thể muốn sử dụng phương pháp bootstrap để ước tính lỗi tiêu chuẩn và khoảng tin cậy cho sự khác biệt của phương tiện giữa hai nhóm

Nếu bạn đang sử dụng SAS/STAT 14. 3, bạn có thể tính toán các ước tính bootstrap cho thử nghiệm t bằng cách sử dụng câu lệnh BOOTSTRAP, như sau

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
5

Khoảng tin cậy Bootstrap SAS

Câu lệnh BOOTSTRAP hỗ trợ ba tùy chọn

  • Tùy chọn SEED= khởi tạo trình tạo số ngẫu nhiên bên trong cho quy trình TTEST
  • Tùy chọn NSAMPLES= chỉ định số lượng mẫu khởi động lại được rút ra từ dữ liệu
  • Tùy chọn BOOTCI= chỉ định ước tính cho khoảng tin cậy cho tham số. Ví dụ này sử dụng phương pháp PERCENTILE, sử dụng lượng tử α/2 và 1 – α/2 của phân phối bootstrap làm điểm cuối của khoảng tin cậy. Một phương pháp bậc hai phức tạp hơn là khoảng hiệu chỉnh sai lệch mà bạn có thể chỉ định bằng cách sử dụng tùy chọn BOOTCI=BC. Đối với mục đích giáo dục, bạn có thể muốn so sánh các ước tính phi tham số này với các ước tính truyền thống hơn, chẳng hạn như khoảng tin cậy dựa trên t (BOOTCI=TBOOTSE)

Quy trình TTEST tạo ra một số bảng và biểu đồ, nhưng tôi đã đánh dấu một số thống kê trong hai bảng. Bảng trên cùng là bảng "ConfLimits", dựa trên dữ liệu và hiển thị số liệu thống kê truyền thống cho bài kiểm tra t. Ước tính mức chênh lệch về phương tiện giữa hai nhóm "SUV" và "Sedan" là -4. 98 và được đánh dấu bằng màu xanh lam. Ước tính (tham số) truyền thống cho khoảng tin cậy 95% được đánh dấu màu đỏ. Khoảng thời gian là [-5. 87, -4. 10], không chứa 0, do đó bạn có thể kết luận rằng trung bình nhóm khác nhau đáng kể ở 0. 05 mức ý nghĩa

Bảng dưới là bảng "Bootstrap", dựa trên các mẫu khởi động lại. Tài liệu TTEST giải thích quy trình lấy mẫu lại và tính toán số liệu thống kê bootstrap. Hàng trên cùng của bảng hiển thị các ước tính về sự khác biệt của phương tiện. Ước tính bootstrap cho lỗi tiêu chuẩn là 0. 45. Ước tính sai lệch (trừ thống kê bootstrap trung bình từ thống kê mẫu) là -0. 01, đó là nhỏ. Ước tính phần trăm cho khoảng tin cậy là [-5. 87, -4. 14], tương tự như ước tính khoảng tham số trong bảng trên cùng. (Để so sánh, CI được điều chỉnh sai lệch cũng tương tự. [-5. 85, -4. 12]. ) Mọi ô trong bảng này sẽ thay đổi nếu bạn thay đổi tùy chọn SEED= hoặc NSAMPLES= vì các giá trị trong bảng này dựa trên các mẫu bootstrap

Mặc dù sự khác biệt của phương tiện là thống kê thường xuyên nhất đối với bootstrap, nhưng bạn có thể thấy từ bảng dưới rằng câu lệnh BOOTSTRAP cũng ước tính sai số chuẩn, độ lệch và khoảng tin cậy cho độ lệch chuẩn của sự khác biệt. Mặc dù bài viết này tập trung vào thử nghiệm t hai mẫu, câu lệnh BOOTSTRAP cũng áp dụng cho thử nghiệm t một mẫu

Tóm lại, câu lệnh BOOTSTRAP trong PROC TTEST trong SAS/STAT 14. 3 giúp dễ dàng có được ước tính bootstrap cho số liệu thống kê trong thử nghiệm t một mẫu hoặc hai mẫu (và thử nghiệm t ghép nối). Bằng cách sử dụng câu lệnh BOOTSTRAP, quy trình khởi động ba bước thủ công (lấy mẫu lại, tính toán số liệu thống kê và tóm tắt) được rút gọn thành quy trình không bước. Quy trình TTEST xử lý thông tin chi tiết cho bạn

Bài đăng Câu lệnh BOOTSTRAP cho các bài kiểm tra t trong SAS xuất hiện đầu tiên trên The DO Loop

Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS

Thủ tục SURVEYSELECT trong SAS 9. 4M5 hỗ trợ tùy chọn OUTRANDOM, khiến các mục được chọn trong một mẫu ngẫu nhiên đơn giản được hoán vị ngẫu nhiên sau khi chúng được chọn. Bài viết này mô tả một số tác vụ thống kê có lợi từ tùy chọn này, bao gồm mô phỏng các trò chơi bài, hoán vị ngẫu nhiên các quan sát trong bước DỮ LIỆU, chỉ định ID ngẫu nhiên cho bệnh nhân trong một nghiên cứu lâm sàng và tạo các mẫu bootstrap. Trong mỗi trường hợp, tùy chọn NGOẠI TRỪ mới giúp giảm số lượng câu lệnh mà bạn cần viết. Tùy chọn OUTRANDOM cũng có thể được chỉ định bằng cách sử dụng OUTORDER=RANDOM

Dữ liệu mẫu với PROC SURVEYSELECT

Thông thường, khi bạn lấy một mẫu ngẫu nhiên (có hoặc không thay thế) từ một tổng thể, thứ tự các mục được chọn không quan trọng. Ví dụ: nếu bạn có 10 bệnh nhân trong một thử nghiệm lâm sàng và muốn chỉ định ngẫu nhiên 5 bệnh nhân vào nhóm kiểm soát, thì nhóm kiểm soát không phụ thuộc vào thứ tự bệnh nhân được chọn. Tương tự, trong các nghiên cứu mô phỏng, nhiều số liệu thống kê (trung bình, tỷ lệ, độ lệch chuẩn,. ) chỉ phụ thuộc vào mẫu, không phụ thuộc vào thứ tự tạo mẫu. Vì những lý do này và để đạt hiệu quả, quy trình SURVEYSELECT trong SAS sử dụng thuật toán "một lượt" để chọn các quan sát theo cùng thứ tự mà chúng xuất hiện trong tập dữ liệu "dân số"

Tuy nhiên, đôi khi bạn có thể yêu cầu tập dữ liệu đầu ra từ PROC SURVEYSELECT theo thứ tự ngẫu nhiên. Ví dụ: trong mô phỏng bài xì phé, bạn có thể muốn đầu ra của PROC SURVEYSELECT thể hiện việc xáo trộn ngẫu nhiên 52 lá bài trong một bộ bài. Để cụ thể, bước DỮ LIỆU sau đây tạo ra một cỗ bài gồm 52 quân bài theo thứ tự. Át đầu tiên, sau đó là 2 giây, v.v. cho đến quân cờ, quân hậu và vua. Nếu bạn sử dụng PROC SURVEYSELECT và METHOD=SRS để chọn ngẫu nhiên 10 thẻ (không thay thế), bạn sẽ nhận được tập hợp con sau

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
6

Khoảng tin cậy Bootstrap SAS

Lưu ý rằng lệnh gọi PROC SURVEYSELECT không sử dụng tùy chọn OUTRANDOM. Do đó, các thẻ có cùng thứ tự xuất hiện trong bộ dữ liệu đầu vào. Mẫu này phù hợp nếu bạn muốn mô phỏng các ván bài chia bài và ước tính xác suất của các cặp, bài thẳng, bài tuôn ra, v.v. Tuy nhiên, nếu mô phỏng của bạn yêu cầu các quân bài theo thứ tự ngẫu nhiên (ví dụ: bạn muốn năm lần quan sát đầu tiên đại diện cho các quân bài của người chơi đầu tiên), thì rõ ràng mẫu này là không đủ và cần một hoán vị ngẫu nhiên bổ sung của các quan sát. Đó chính xác là những gì tùy chọn OUTRANDOM cung cấp, như được hiển thị bằng lệnh gọi PROC SURVEYSELECT sau đây

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
7

Khoảng tin cậy Bootstrap SAS

Bạn có thể sử dụng mẫu này khi đầu ra cần theo thứ tự ngẫu nhiên. Ví dụ: trong mô phỏng bài xì phé, giờ đây bạn có thể chỉ định năm lá bài đầu tiên cho người chơi thứ nhất và năm lá bài thứ hai cho người chơi thứ hai

Hoán vị các quan sát trong một tập dữ liệu

Ứng dụng thứ hai của tùy chọn OUTRANDOM là hoán vị các hàng của tập dữ liệu SAS. Nếu bạn lấy mẫu mà không thay thế và yêu cầu tất cả các quan sát (SAMPRATE=1), bạn sẽ nhận được một bản sao của dữ liệu gốc theo thứ tự ngẫu nhiên. Ví dụ, các sinh viên ở Sashelp. Tập dữ liệu lớp được liệt kê theo thứ tự bảng chữ cái theo tên của chúng. Các câu lệnh sau sử dụng tùy chọn OUTRANDOM để sắp xếp lại các sinh viên theo thứ tự ngẫu nhiên

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
8

Khoảng tin cậy Bootstrap SAS

Có nhiều cách khác để hoán vị các hàng của tập dữ liệu, chẳng hạn như thêm một biến ngẫu nhiên thống nhất vào dữ liệu rồi sắp xếp. Hai phương pháp là tương đương, nhưng mã cho thủ tục SURVEYSELECT ngắn hơn để viết

Chỉ định ID ngẫu nhiên duy nhất cho bệnh nhân trong thử nghiệm lâm sàng

Một ứng dụng khác của tùy chọn OUTRANDOM là chỉ định một ID ngẫu nhiên duy nhất cho những người tham gia thử nghiệm. Ví dụ: giả sử rằng số nguyên có bốn chữ số được sử dụng cho biến ID. Một số thử nghiệm lâm sàng gán số ID tuần tự cho từng bệnh nhân trong nghiên cứu, nhưng gần đây tôi đã biết được từ một diễn đàn thảo luận của SAS rằng một số công ty gán giá trị ID ngẫu nhiên cho các đối tượng. Một cách để chỉ định ID ngẫu nhiên là lấy mẫu ngẫu nhiên mà không cần thay thế từ tập hợp tất cả các giá trị ID. Bước DỮ LIỆU sau đây tạo tất cả ID gồm bốn chữ số, chọn 19 trong số chúng theo thứ tự ngẫu nhiên, sau đó hợp nhất các ID đó với những người tham gia nghiên cứu

/* 3. Compute the statistic for each bootstrap sample */
proc reg data=BootCases outest=PEBoot noprint;
   by SampleID;
   freq NumberHits;
   model Y = X;
run;quit;
9

Khoảng tin cậy Bootstrap SAS

Thứ tự ngẫu nhiên cho các phương pháp lấy mẫu khác

Tùy chọn OUTRANDOM cũng hoạt động đối với các sơ đồ lấy mẫu khác, chẳng hạn như lấy mẫu có thay thế (METHOD=URS, thường được sử dụng để lấy mẫu bootstrap) hoặc lấy mẫu phân tầng. Nếu bạn sử dụng tùy chọn REPS= để tạo nhiều mẫu, mỗi mẫu sẽ được sắp xếp ngẫu nhiên

Điều đáng nói là chức năng SAMPLE trong SAS/IML cũng có thể thực hiện sắp xếp sau lựa chọn. Giả sử rằng X là một vectơ bất kỳ chứa N phần tử. Sau đó, cú pháp SAMPLE(X, k, "NoReplace") tạo ra một mẫu ngẫu nhiên gồm k phần tử từ tập hợp N. Tài liệu nói rằng "các yếu tố. có thể xuất hiện theo thứ tự như trong X. " Điều này có thể xảy ra khi k gần bằng N. Nếu bạn cần mẫu theo thứ tự ngẫu nhiên, bạn có thể sử dụng cú pháp SAMPLE(X, k, "WOR") để thêm sắp xếp ngẫu nhiên sau khi mẫu được chọn, giống như PROC SURVEYSELECT thực hiện khi bạn sử dụng tùy chọn OUTRANDOM

Bài viết Lấy mẫu và lấy kết quả theo thứ tự ngẫu nhiên appeared first on The DO Loop

Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS

Tôi đã viết hơn 100 bài đăng cho blog The DO Loop vào năm 2017. Các bài viết phổ biến nhất là về mẹo lập trình SAS, phân tích dữ liệu thống kê, phương pháp mô phỏng và bootstrap. Dưới đây là những bài viết phổ biến nhất từ ​​​​năm 2017 trong mỗi danh mục

Kỹ thuật lập trình SAS chung

  • INTCK và INTNX. Bạn có sử dụng ngày trong SAS không? . Các hàm INTCK và INTNX trong SAS giúp các tác vụ liên quan đến ngày này trở nên dễ dàng
  • ĐẶT và %PUT. Các câu lệnh PUT và %PUT là hai trong số các câu lệnh đơn giản nhất trong SAS. Họ ghi thông tin vào nhật ký SAS. Bài đăng này cho biết cách lấy câu lệnh PUT và %PUT để hiển thị mảng, cặp tên-giá trị, v.v.
  • RỜI và TIẾP TỤC. Vòng lặp lặp là một trong những cấu trúc lập trình đơn giản nhất. Bạn có biết rằng bạn có thể sử dụng các câu lệnh LEAVE và CONTINUE trong SAS để thoát khỏi vòng lặp DO hoặc chuyển ngay sang bước lặp tiếp theo khi một số điều kiện được thỏa mãn?
  • ĐẦU RA ODS. Câu lệnh ODS OUTPUT cho phép bạn lưu trữ bất kỳ giá trị nào được tạo bởi bất kỳ thủ tục SAS nào. Sau đó, bạn có thể đọc giá trị đó bằng cách sử dụng chương trình SAS. Đây là một công cụ rất hữu ích cho các lập trình viên thống kê

Thống kê và phân tích dữ liệu

Khoảng tin cậy Bootstrap SAS
  • Màu M&M. Không có gì ngạc nhiên khi một phân tích thống kê về sự phân bố màu sắc của kẹo M&M là một trong những bài viết phổ biến nhất. Một số người hài lòng khi biết rằng kẹo rất ngon, nhưng hàng ngàn người muốn đọc về việc liệu kẹo màu xanh và màu cam có xuất hiện thường xuyên hơn màu nâu hay không
  • Giải thích tương quan. Tương quan là một trong những thống kê đa biến đơn giản nhất, nhưng nó có thể được diễn giải theo nhiều cách. đại số, hình học, về mặt hồi quy, v.v. Bài viết này mô tả bảy cách để xem mối tương quan?
  • Winsorize dữ liệu. Trước khi bạn hỏi "làm thế nào tôi có thể Winsorize dữ liệu" để loại bỏ các ngoại lệ, bạn nên hỏi "Winsorization là gì" và "những cạm bẫy là gì?"

Mô phỏng và Bootstrapping

Khoảng tin cậy Bootstrap SAS
  • Chọn một hạt giống số ngẫu nhiên. Bạn nên chọn giá trị gốc như thế nào để khởi tạo trình tạo số ngẫu nhiên?
  • Chạy 1000 mô hình hồi quy. Trong phân tích dữ liệu, bạn có thể cần chạy nhiều mô hình hồi quy một biến. Tình trạng này cũng phát sinh trong các nghiên cứu mô phỏng. Bất kể nguồn dữ liệu là gì, bài viết này chỉ ra cách chạy hàng nghìn mô hình hồi quy mà không cần sử dụng vòng lặp vĩ mô
  • Xây dựng một khoảng BCa. Đôi khi tôi có thể dự đoán rằng một bài viết sẽ được phổ biến. Lần khác tôi ngạc nhiên. Tôi không lường trước được rằng hàng nghìn người sẽ muốn đọc về cách xây dựng khoảng thời gian khởi động được hiệu chỉnh sai lệch và tăng tốc (BCa) trong SAS

Bạn có quyết tâm trong Năm Mới để tìm hiểu thêm về SAS không? . ) một trong 10 bài đăng hàng đầu này từ năm ngoái

The post The top 10 posts from The DO Loop in 2017 appeared first on The DO Loop.

Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS

Gần đây tôi đã chỉ ra cách tính khoảng tin cậy phần trăm bootstrap trong SAS. Khoảng phân vị là một khoảng "thứ tự đầu tiên" đơn giản được hình thành từ các lượng tử của phân phối bootstrap. Tuy nhiên, nó có hai hạn chế. Đầu tiên, nó không sử dụng ước tính cho dữ liệu gốc; . Thứ hai, nó không điều chỉnh độ lệch trong bản phân phối bootstrap. Cái gọi là khoảng thời gian bootstrap được hiệu chỉnh sai lệch và được tăng tốc (khoảng thời gian BCa) là khoảng thời gian chính xác bậc hai giải quyết các vấn đề này. Bài viết này cho biết cách tính khoảng thời gian khởi động BCa trong SAS. Bạn có thể tải xuống chương trình SAS hoàn chỉnh thực hiện tính toán BCa

Như trong bài viết trước, chúng ta hãy bắt đầu thống kê độ lệch cho độ rộng cánh hoa của 50 bông hoa được chọn ngẫu nhiên thuộc loài Iris setosa. Các câu lệnh sau đây tạo một tập dữ liệu có tên là SAMPLE và đổi tên biến cần phân tích thành 'X', được phần còn lại của chương trình phân tích

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
0

khoảng BCa. Những ý tưởng chính

Ưu điểm chính của khoảng BCa là nó điều chỉnh độ lệch và độ lệch trong phân phối ước tính bootstrap. Khoảng BCa yêu cầu bạn ước tính hai tham số. Tham số hiệu chỉnh sai lệch, z0, có liên quan đến tỷ lệ ước tính bootstrap nhỏ hơn thống kê quan sát được. Tham số gia tốc, a, tỷ lệ thuận với độ lệch của phân phối bootstrap. Bạn có thể sử dụng phương pháp jackknife để ước tính tham số gia tốc

Giả sử rằng dữ liệu là độc lập và được phân phối giống hệt nhau. Giả sử rằng bạn đã tính toán thống kê ban đầu và một số lượng lớn ước tính bootstrap, như đã trình bày trong bài viết trước. Để tính toán khoảng tin cậy BCa, bạn ước tính z0 và a và sử dụng chúng để điều chỉnh các điểm cuối của khoảng tin cậy phần trăm (CI). Nếu phân phối bootstrap bị lệch dương, CI được điều chỉnh sang phải. Nếu phân phối bootstrap bị lệch âm, CI được điều chỉnh sang trái

Ước tính hiệu chỉnh sai lệch và gia tốc

Các chi tiết toán học của việc điều chỉnh BCa được cung cấp trong Chernick và LaBudde (2011) và Davison và Hinkley (1997). Tính toán của tôi được lấy cảm hứng từ Phụ lục D của Martinez và Martinez (2001). Để trình bày đơn giản hơn, chương trình chỉ phân tích dữ liệu đơn biến

Hệ số hiệu chỉnh sai lệch có liên quan đến tỷ lệ ước tính bootstrap nhỏ hơn thống kê quan sát được. Tham số gia tốc tỷ lệ thuận với độ lệch của phân phối bootstrap. Bạn có thể sử dụng phương pháp jackknife để ước tính tham số gia tốc. Các mô-đun SAS/IML sau gói gọn các tính toán cần thiết. Như được mô tả trong bài viết về jackknife, hàm 'JackSampMat' trả về một ma trận có các cột chứa các mẫu jackknife và hàm 'EvalStat' đánh giá thống kê trên từng cột của ma trận

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
1

Tính khoảng tin cậy BCa

Với các hàm trợ giúp được xác định, bạn có thể tính toán khoảng tin cậy BCa. Các câu lệnh SAS/IML sau đây đọc dữ liệu, tạo các mẫu bootstrap, tính toán phân phối ước tính bootstrap và tính toán khoảng tin cậy 95% BCa

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
2

Khoảng tin cậy Bootstrap SAS

Khoảng BCa là [0. 66, 2. 29]. Để so sánh, CI phần trăm bootstrap cho phân phối bootstrap, được tính toán trong bài viết về bootstrap trước, là [0. 49, 1. 96]

Lưu ý rằng bằng cách sử dụng các hàm trợ giúp bootBC và bootAccel, chương trình nhỏ gọn và dễ đọc. Một trong những ưu điểm của ngôn ngữ SAS/IML là bạn có thể dễ dàng xác định các hàm do người dùng định nghĩa để đóng gói các tính toán con

Bạn có thể hình dung phân tích bằng cách vẽ biểu đồ phân phối bootstrap phủ lên thống kê được quan sát và khoảng tin cậy 95% BCa. Lưu ý rằng khoảng BCa không đối xứng với ước tính bootstrap. So với khoảng phân vị bootstrap (xem bài trước), khoảng BCa bị dịch chuyển sang phải

Khoảng tin cậy Bootstrap SAS

Có một phương pháp bậc hai khác có liên quan đến khoảng BCa. Nó được gọi là phương pháp ABC và nó sử dụng một biểu thức giải tích để tính gần đúng các điểm cuối của khoảng BCa. xem p. 214 của Davison và Hinkley (1997)

Tóm lại, tính toán bootstrap trong ngôn ngữ SAS/IML có thể rất nhỏ gọn. Bằng cách viết và sử dụng lại các hàm trợ giúp, bạn có thể gói gọn một số phép tính tẻ nhạt thành một hàm cấp cao, giúp chương trình kết quả dễ đọc hơn. Đối với dữ liệu đơn biến, bạn thường có thể thực hiện tính toán bootstrap mà không cần viết bất kỳ vòng lặp nào bằng cách sử dụng bản chất ma trận-vector của ngôn ngữ SAS/IML

Nếu bạn không có quyền truy cập vào phần mềm SAS/IML hoặc nếu số liệu thống kê mà bạn muốn bootstrap được tạo ra bởi một thủ tục SAS, thì bạn có thể sử dụng các macro do SAS cung cấp (%BOOT, %JACK,. ) để khởi động. Các macro bao gồm macro %BOOTCI, hỗ trợ khoảng phần trăm, khoảng BCa và các khoảng khác. Để đọc thêm, trang web dành cho macro bao gồm so sánh các phương pháp CI

Bài đăng Khoảng thời gian khởi động được hiệu chỉnh sai lệch và tăng tốc (BCa) xuất hiện đầu tiên trên Vòng lặp DO

Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS

Trước đây tôi đã viết về cách tính khoảng tin cậy bootstrap trong Base SAS. Xin nhắc lại, phương pháp bootstrap bao gồm các bước sau

  1. Tính toán thống kê quan tâm cho dữ liệu gốc
  2. Lấy mẫu lại B lần từ dữ liệu để tạo mẫu B bootstrap. B thường là một số lớn, chẳng hạn như B = 5000
  3. Tính toán số liệu thống kê trên từng mẫu bootstrap. Điều này tạo ra phân phối bootstrap, xấp xỉ phân phối lấy mẫu của thống kê
  4. Sử dụng phân phối bootstrap để có được các ước tính bootstrap như lỗi tiêu chuẩn và khoảng tin cậy

Trong cuốn sách Mô phỏng dữ liệu với SAS, tôi mô tả các cách hiệu quả để khởi động bằng ngôn ngữ ma trận SAS/IML. Trong khi việc triển khai Base SAS của bootstrap yêu cầu gọi bốn hoặc năm thủ tục, thì việc triển khai SAS/IML chỉ yêu cầu một vài lệnh gọi hàm. Bài viết này chỉ ra cách tính khoảng tin cậy bootstrap từ phần trăm của phân phối bootstrap cho dữ liệu đơn biến. Cách bootstrap dữ liệu đa biến được thảo luận trên p. 189 của Mô phỏng dữ liệu với SAS

Độ lệch của dữ liệu đơn biến

Hãy sử dụng bootstrap để tìm khoảng tin cậy 95% cho thống kê độ lệch. Dữ liệu là chiều rộng cánh hoa của một mẫu gồm 50 bông hoa được chọn ngẫu nhiên của loài Iris setosa. Các phép đo (tính bằng mm) được chứa trong bộ dữ liệu Sashelp. diên vĩ. Để bạn có thể dễ dàng khái quát hóa mã thành dữ liệu khác, các câu lệnh sau đây sẽ tạo một tập dữ liệu có tên là SAMPLE và đổi tên biến để phân tích thành 'X'. Nếu bạn làm tương tự với dữ liệu của mình, bạn sẽ có thể sử dụng lại chương trình bằng cách chỉ sửa đổi một vài câu lệnh

Bước DATA sau đổi tên tập dữ liệu và biến phân tích. Lệnh gọi PROC UNIVARIATE vẽ biểu đồ dữ liệu và cung cấp ước tính điểm về độ lệch

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
3

Khoảng tin cậy Bootstrap SAS

Chiều rộng cánh hoa có phân bố lệch cao, với ước tính độ lệch là 1. 25

Một phân tích bootstrap trong SAS/IML

Chạy phân tích bootstrap trong SAS/IML chỉ cần một vài dòng để tính toán khoảng tin cậy, nhưng để giúp bạn tổng quát hóa vấn đề thành các thống kê khác với độ lệch, tôi đã viết một hàm gọi là EvalStat. Đối số đầu vào là một ma trận trong đó mỗi cột là một mẫu bootstrap. Hàm trả về một vectơ hàng thống kê, một cho mỗi cột. (Đối với thống kê độ lệch, hàm EvalStat là một lớp lót. ) Hàm EvalStat được gọi hai lần. một lần trên vectơ cột gốc của dữ liệu và một lần nữa trên ma trận chứa các mẫu bootstrap trong mỗi cột. Bạn có thể tạo ma trận bằng cách gọi hàm SAMPLE trong SAS/IML, như sau

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
4

Khoảng tin cậy Bootstrap SAS

Chương trình SAS/IML cho bootstrap rất nhỏ gọn. Điều quan trọng là phải theo dõi kích thước của từng biến. Các biến EST, BOOTEST và SE là các biến vô hướng. Biến S là ma trận B x N, trong đó N là cỡ mẫu. Biến BSTAT là một vectơ cột có N phần tử. Biến CI là một vectơ cột hai phần tử

Đầu ra tóm tắt phân tích bootstrap. Ước tính cho độ lệch của dữ liệu được quan sát là 1. 25. Phân phối bootstrap (độ lệch của các mẫu bootstrap) cho phép bạn ước tính ba đại lượng phổ biến

  • Ước tính bootstrap của độ lệch là 1. 18. Giá trị này được tính là giá trị trung bình của phân phối bootstrap
  • Ước tính bootstrap của lỗi tiêu chuẩn của độ lệch là 0. 38. Giá trị này được tính là độ lệch chuẩn của phân phối bootstrap
  • Khoảng tin cậy 95% phần trăm bootstrap được tính là 95% trung tâm của các ước tính bootstrap, là khoảng [0. 49, 1. 96]

Điều quan trọng là phải nhận ra rằng những ước tính này sẽ thay đổi một chút nếu bạn sử dụng các hạt giống số ngẫu nhiên khác nhau hoặc số lần lặp bootstrap khác nhau (B)

Bạn có thể hình dung phân phối bootstrap bằng cách vẽ biểu đồ ước tính bootstrap. Bạn có thể phủ ước tính ban đầu (hoặc ước tính bootstrap) và các điểm cuối của khoảng tin cậy, như được hiển thị bên dưới

Khoảng tin cậy Bootstrap SAS

Tóm lại, bạn có thể triển khai phương pháp bootstrap bằng ngôn ngữ SAS/IML rất gọn nhẹ. Bạn có thể sử dụng phân phối bootstrap để ước tính tham số và lỗi tiêu chuẩn. Phương pháp phần trăm bootstrap, dựa trên lượng tử của phân phối bootstrap, là một cách đơn giản để có được khoảng tin cậy cho một tham số. Bạn có thể tải xuống toàn bộ chương trình SAS thực hiện phân tích này

Bài viết Ước tính Bootstrap trong SAS/IML xuất hiện đầu tiên trên Vòng lặp DO

Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS
Khoảng tin cậy Bootstrap SAS

Một cách để đánh giá độ chính xác của thống kê (ước tính điểm) là tính sai số chuẩn, là độ lệch chuẩn của phân phối lấy mẫu của thống kê. Một lỗi tiêu chuẩn tương đối lớn cho thấy rằng ước tính điểm nên được xem xét với sự hoài nghi, do kích thước mẫu nhỏ hoặc do bản thân dữ liệu có phương sai lớn. Phương pháp jackknife là một cách để ước tính lỗi tiêu chuẩn của một số liệu thống kê

Một số thống kê đơn giản có các công thức rõ ràng cho sai số chuẩn, nhưng các công thức này thường giả định tính quy tắc của dữ liệu hoặc cỡ mẫu rất lớn. Khi dữ liệu của bạn không thỏa mãn các giả định hoặc khi không có công thức nào tồn tại, bạn có thể sử dụng các kỹ thuật lấy mẫu lại để ước tính sai số chuẩn. Lấy mẫu lại Bootstrap là một lựa chọn và phương pháp jackknife là một lựa chọn khác. Không giống như bootstrap sử dụng các mẫu ngẫu nhiên, jackknife là một phương pháp xác định

Bài viết này giải thích phương pháp jackknife và mô tả cách tính toán các ước tính jackknife trong phần mềm SAS/IML. Điều này là tốt nhất khi thống kê mà bạn cần cũng được triển khai trong SAS/IML. Nếu số liệu thống kê được tính toán theo quy trình SAS, bạn có thể muốn tải xuống và sử dụng macro %JACK, không yêu cầu SAS/IML

Phương pháp jackknife. Để lại một

Phương pháp jackknife ước tính sai số chuẩn (và sai lệch) của số liệu thống kê mà không đưa ra bất kỳ giả định tham số nào về dân số tạo ra dữ liệu. Nó chỉ sử dụng dữ liệu mẫu

Phương pháp jackknife tạo ra các mẫu jackknife từ dữ liệu. Mẫu jackknife là mẫu lại dữ liệu "bỏ một lần". Nếu có n quan sát thì có n mẫu dao xếp, mỗi mẫu có kích thước n-1. Nếu dữ liệu ban đầu là {x1, x2,. , xn}, thì mẫu jackknife thứ i là
{x1,. , xi-1,xi+1,. , xn}
Sau đó, bạn tính toán n bản sao jackknife. Một bản sao jackknife là thống kê quan tâm được tính toán trên một mẫu jackknife. Bạn có thể ước tính sai số chuẩn từ phương sai của các bản sao jackknife. Phương pháp jackknife được tóm tắt như sau.

  1. Tính toán một thống kê, T, trên mẫu ban đầu có kích thước n
  2. Đối với i = 1 đến n, lặp lại như sau
    • Loại bỏ quan sát thứ i_th để tạo thành mẫu jackknife thứ i_
    • Tính thống kê sao chép jackknife thứ i, Ti, bằng cách tính thống kê trên mẫu jackknife thứ i
  3. Tính giá trị trung bình (trung bình) của các bản sao jackknife. Tavg = Σi Ti / n
  4. (Tùy chọn) Ước tính độ lệch là BiasTjack = (n-1)(Tavg - T)
  5. Ước tính lỗi tiêu chuẩn là SEjack = sqrt( (n-1)/n (Σi Ti - Tavg)**2 )

Dữ liệu cho một ví dụ jackknife

Phương pháp lấy mẫu lại không khó, nhưng ký hiệu trong một số cuốn sách có thể gây nhầm lẫn. Để làm rõ phương pháp, hãy chọn một thống kê cụ thể và xem dữ liệu ví dụ. Ví dụ sau đây là của Martinez và Martinez (2001, 1st Ed, p. 241), cũng là nguồn của bài viết này. Dữ liệu là điểm LSAT và điểm trung bình (GPA) của 15 học sinh được chọn ngẫu nhiên đăng ký vào trường luật

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
5

Thống kê quan tâm (T) sẽ là hệ số tương quan giữa các biến LSAT và GPA cho n=15 quan sát. Mối tương quan quan sát được là TData = 0. 776. Sai số chuẩn của T giúp chúng ta hiểu T sẽ thay đổi bao nhiêu nếu chúng ta lấy một mẫu ngẫu nhiên khác gồm 15 sinh viên. Các phần tiếp theo chỉ ra cách triển khai phân tích jackknife bằng ngôn ngữ SAS/IML

Xây dựng một mẫu jackknife trong SAS

Ngôn ngữ ma trận SAS/IML là cách đơn giản nhất để thực hiện ước tính jackknife chung. Nếu X là ma trận dữ liệu n x p, thì bạn có thể lấy mẫu jackknife thứ i bằng cách loại trừ hàng thứ i của X. Hai hàm trợ giúp sau đây gói gọn một số tính toán. Hàm SeqExclude trả về vectơ chỉ số {1, 2,. , i-1, i+1,. , N}. Hàm JackSample trả về ma trận dữ liệu không có hàng thứ i_th

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
6

Phương pháp jackknife cho dữ liệu đa biến trong SAS

Bằng cách sử dụng các hàm trợ giúp, bạn có thể thực hiện từng bước của phương pháp jackknife. Để làm cho phương pháp dễ dàng sửa đổi cho các số liệu thống kê khác, tôi đã viết một hàm gọi là EvalStat để tính hệ số tương quan. Chức năng này được gọi trên dữ liệu gốc và trên mỗi mẫu jackknife

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
7

Khoảng tin cậy Bootstrap SAS

Đầu ra cho thấy ước tính sai lệch cho hệ số tương quan là rất nhỏ. Sai số chuẩn của hệ số tương quan ước tính bằng 0. 14, tức là khoảng 18% ước tính

Để tự mình sử dụng mã này, chỉ cần sửa đổi hàm EvalStat. Phần còn lại của chương trình không cần thay đổi

Phương pháp jackknife trong SAS/IML. dữ liệu đơn biến

Khi dữ liệu là đơn biến, đôi khi bạn có thể loại bỏ vòng lặp tính toán các mẫu jackknife và đánh giá các bản sao jackknife. Nếu X là vectơ cột, bạn có thể tính toán ma trận (n-1) x n có cột thứ i đại diện cho mẫu jackknife thứ i. (Để ngăn ma trận lớn, phương pháp này là tốt nhất cho n < 20000. ) Vì nhiều hàm thống kê trong SAS/IML hoạt động trên các cột của ma trận, nên bạn thường có thể tính toán các bản sao jackknife theo cách vector hóa

Trong chương trình sau, hàm JackSampMat trả về ma trận của các mẫu jackknife cho dữ liệu đơn biến. Hàm này gọi hàm REMOVE trong SAS/IML, hàm này xóa các phần tử đã chỉ định của ma trận và trả về kết quả trong một vectơ hàng. Hàm EvalStatMat lấy ma trận của các mẫu jackknife và trả về một vectơ hàng thống kê, một vectơ cho mỗi cột. Trong ví dụ này, hàm trả về độ lệch chuẩn mẫu

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
8

Hãy sử dụng các hàm này để ước tính sai số chuẩn cho thống kê (độ lệch chuẩn). Dữ liệu (từ Martinez và Martinez, p. 246) đã được nhiều nhà nghiên cứu nghiên cứu và đại diện cho mức tăng cân tính bằng gam đối với 10 con chuột được cho ăn chế độ ăn ngũ cốc ít protein

/* 4. Visualize bootstrap distribution */
proc sgplot data=PEBoot;
   label Intercept = "Estimate of Intercept" X = "Estimate of Coefficient of X";
   scatter x=Intercept y=X / markerattrs=(Symbol=CircleFilled) transparency=0.7;
   /* Optional: draw reference lines at estimates for original data */
   refline &IntEst / axis=x lineattrs=(color=blue);
   refline &XEst / axis=y lineattrs=(color=blue);
   xaxis grid; yaxis grid;
run;
9

Khoảng tin cậy Bootstrap SAS

Kết quả cho thấy độ lệch chuẩn của những dữ liệu này là khoảng 15. 7 gam. Phương pháp jackknife tính toán rằng lỗi tiêu chuẩn cho thống kê này khoảng 2. 9 gam, chiếm khoảng 18% so với ước tính

Tóm lại, các ước tính jackknife rất dễ thực hiện trong SAS/IML. Bài viết này trình bày cách triển khai chung phù hợp với tất cả dữ liệu và cách triển khai chuyên biệt phù hợp với dữ liệu đơn biến. Trong cả hai trường hợp, bạn có thể điều chỉnh mã để sử dụng bằng cách sửa đổi hàm tính toán thống kê trên tập dữ liệu. Cách tiếp cận này hữu ích và hiệu quả khi thống kê được triển khai trong SAS/IML

Làm cách nào bạn có thể tính khoảng tin cậy 95% bằng bootstrap?

Đối với 1000 mẫu lại bootstrap của chênh lệch trung bình, người ta có thể sử dụng giá trị thứ 25 và giá trị thứ 975 của chênh lệch được xếp hạng làm ranh giới của khoảng tin cậy 95%. (This captures the central 95% of the distribution.) Such an interval construction is known as a percentile interval.

Bootstrapping trong SAS là gì?

Bootstrapping cho phép ước tính số liệu thống kê thông qua việc lấy mẫu dữ liệu lặp đi lặp lại . Trong trang này, chúng tôi sẽ trình bày một số phương pháp khởi động khoảng tin cậy về thống kê bình phương R trong SAS. Chúng tôi sẽ sử dụng bộ dữ liệu hsb2 có thể tìm thấy hsb2.

Các bản phân phối bootstrap có được sử dụng cho khoảng tin cậy không?

Phân phối bootstrap của công cụ ước tính tham số đã được sử dụng để tính khoảng tin cậy cho tham số dân số của nó .

Khoảng tin cậy bootstrap phần trăm là gì?

Khoảng bootstrap phân vị chỉ là khoảng giữa các phân vị 100×(α2) và 100×(1-α2) của phân phối ước tính θ thu được từ lấy mẫu lại, trong đó θ đại diện cho một tham số quan tâm và α là mức ý nghĩa (e. g. , a = 0. 05 cho 95% TCTD) (Efron, 1982)