ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

bootstrp

ブートストラップ標本化

構文

bootstat = bootstrp(nboot,bootfun,d1,...)
[bootstat,bootsam] = bootstrp(...)
bootstat = bootstrp(...,'Name',Value)

説明

bootstat = bootstrp(nboot,bootfun,d1,...) は、nboot 回のブートストラップ データ標本を抽出し、関数 bootfun を使用して各標本の統計量を計算し、行列 bootstat に結果を返します。nboot は正の整数でなければなりません。bootfun@ で指定された関数ハンドルです。bootstat の各行は、ブートストラップの標本に bootfun を適用した結果を含みます。bootfun が行列または配列を返す場合、この出力は、bootstat へ格納するために行ベクトルに変換されます。

3 番目以降の入力引数 (d1,...) は、関数 bootfun への入力を作成するために使用されるデータ (スカラー、列ベクトル、または行列) です。関数 bootstrp は、非スカラー データ引数 (これらは同じ行数でなければなりません) の行から復元抽出することでブートストラップの各標本を作成します。bootfun はスカラー データを変更せずに受け取ります。

[bootstat,bootsam] = bootstrp(...) は、nnboot 列の行列のブートストラップ インデックス bootsam を返します。bootsam における各列は、対応するブートストラップの標本を生成するために、元のデータセットから抽出された値のインデックスを含みます。たとえば、d1,... など、それぞれが 16 個の値を含み、nboot = 4 の場合、bootsam は 16 行 4 列の行列です。1 列目は、d1,... から抽出された 16 個の値のインデックスを含みます。2 列目は、4 つのブートストラップの標本の 2 番目の標本のインデックスを含みます。以下同様です (ブートストラップのインデックスは、すべての入力データセットに対して同じです)。関数に適用されない出力標本 bootsam を取得するには、bootfun を空 ([]) に設定してください。

bootstat = bootstrp(...,'Name',Value) は、1 つまたは複数の Name,Value ペア引数で指定される追加の引数を使用します。 名前と値のペアは、データ引数の後に現れなければなりません。使用できる名前と値のペアは次のとおりです。

  • 'Weights' — 観測値の重み。weights 値は、少なくとも 1 つの正の要素を含む非負の数のベクトルでなければなりません。weights の要素数は、bootstrp の非スカラー入力引数の行数と等しくなければなりません。あるブートストラップのレプリカを取得するには、bootstrp によって、多項分布標本化確率として重みを使用して、N から N を復元抽出します。

  • 'Options' — 値は、ブートストラップ反復を並列で計算するかどうか、およびブートストラップの標本化中に乱数をどのように指定するかを指定するオプションを含む構造体です。statset を使用して options 構造体を作成します。該当する statset パラメーターは次のとおりです。

    • 'UseParallel'true の場合および Parallel Computing Toolbox™ の parpool が開いている場合、ブートストラップの反復回数を並列で計算します。Parallel Computing Toolbox がインストールされていないか、parpool が開いていない場合、計算は逐次モードで行われます。既定の設定は、false または逐次計算です。

    • UseSubstreams — 再生成可能な方法で並列計算する場合は true に設定します。既定の設定は false です。再現性のある計算を行うには、Streams をサブストリームを許可する型、'mlfg6331_64' または 'mrg32k3a' に設定します。

    • StreamsRandStream オブジェクトまたはそのようなオブジェクトのセル配列。Streams を指定しないと、bootstrp には既定のストリームが使用されます。Streams を指定するように選択した場合、次の場合を除いて単一オブジェクトを使用してください。

      • 開いている並列プールがある

      • UseParalleltrue

      • UseSubstreamsfalse

      この場合は、並列プールと同じサイズのセル配列を使用します。

相関係数の標準誤差のブートストラップ

15 人の学生の LSAT スコアと法律学校の GPA のデータセットを読み込みます。これらの 15 データ点は、1000 の異なるデータセットを作成するために再標本化され、2 つの変数間の相関関係はデータセットごとに計算されます。

load lawdata
[bootstat,bootsam] = bootstrp(1000,@corr,lsat,gpa);

最初から 5 番目までのブートストラップ相関係数を表示します。

bootstat(1:5,:)
ans =
    0.6600
    0.7969
    0.5807
    0.8766
    0.9197

最初から 5 番目までのブートストラップ標本について選択されたデータのインデックスを表示します。

bootsam(:,1:5)
ans =
     9     8    15    11    15
    14     7     6     7    14
     4     6    10     3    11
     3    10    11     9     2
    15     4    13     4    14
     9     4     5     2    10
     8     5     4     3    13
     1     9     1    15    11
    10     8     6    12     3
     1     4     5     2     8
     1     1    10     6     2
     3    10    15    10     8
    14     6    10     3     8
    13    12     1     2     4
    12     6     4     9     8
hist(bootstat)

ヒストグラムは、すべてのブートストラップ標本間の相関係数のばらつきを示しています。最小の標本は正の指標になっており、LSAT のスコアと GPA の関係が偶然でないことを示しています。

最後の推定相関係数の誤差のブートストラップ基準を計算します。

se = std(bootstat)
se =
    0.1327

ブートストラップ統計量の密度の推定

ベクトル Y から得られる無作為標本の 100 回のブートストラップの平均の標本を計算し、これらのブートストラップの平均の密度の推定をプロットします。

y = exprnd(5,100,1);
m = bootstrp(100,@mean,y);
[fi,xi] = ksdensity(m);
plot(xi,fi);

複数の統計情報のブートストラップ

ベクトル Y から得られる無作為標本の 100 回のブートストラップの平均と標準偏差を計算し、ブートストラップの推定のペアをプロットします。

y = exprnd(5,100,1);
stats = bootstrp(100,@(x)[mean(x) std(x)],y);
plot(stats(:,1),stats(:,2),'o')

回帰モデルのブートストラップ

残差のブートストラップによって線形回帰の係数ベクトルの標準誤差を推定します。

load hald
x = [ones(size(heat)),ingredients];
y = heat;
b = regress(y,x);
yfit = x*b;
resid = y - yfit;
se = std(bootstrp(...
         1000,@(bootr)regress(yfit+bootr,x),resid));

参考

| | | | | | | |

この情報は役に立ちましたか?