対象の変数は、クラス(セル)の確率()とともに多項的に分布しています。さらに、クラスは自然な順序に恵まれています。p1,p2,...,p10
最初の試み:を含む最小の「予測間隔」90%
p = [p1, ..., p10] # empirical proportions summing to 1
l = 1
u = length(p)
cover = 0.9
pmass = sum(p)
while (pmass - p[l] >= cover) OR (pmass - p[u] >= cover)
if p[l] <= p[u]
pmass = pmass - p[l]
l = l + 1
else # p[l] > p[u]
pmass = pmass - p[u]
u = u - 1
end
end
四分位数推定値の不確実性(たとえば、分散、信頼度)のノンパラメトリック測定値は、確かに標準のブートストラップ法によって取得できます。l,u
2番目のアプローチ:直接「ブートストラップ検索」
以下に、ブートストラップの観点から直接質問にアプローチする実行可能なMatlabコードを提供します(コードは最適化されていません)。
%% set DGP parameters:
p = [0.35, 0.8, 3.5, 2.2, 0.3, 2.9, 4.3, 2.1, 0.4, 0.2];
p = p./sum(p); % true probabilities
ncat = numel(p);
cats = 1:ncat;
% draw a sample:
rng(1703) % set seed
nsamp = 10^3;
samp = datasample(1:10, nsamp, 'Weights', p, 'Replace', true);
これが理にかなっていることを確認してください。
psamp = mean(bsxfun(@eq, samp', cats)); % sample probabilities
bar([p(:), psamp(:)])
ブートストラップシミュレーションを実行します。
%% bootstrap simulation:
rng(240947)
nboots = 2*10^3;
cover = 0.9;
conf = 0.95;
tic
Pmat = nan(nboots, ncat, ncat);
for b = 1:nboots
boot = datasample(samp, nsamp, 'Replace', true); % draw bootstrap sample
pboot = mean(bsxfun(@eq, boot', cats));
for l = 1:ncat
for u = l:ncat
Pmat(b, l, u) = sum(pboot(l:u));
end
end
end
toc % Elapsed time is 0.442703 seconds.
各ブートストラップからのフィルターは、少なくとも[確率質量を含む間隔複製し、それらの間隔の(頻出)信頼推定値を計算します。90 %[l,u]90%
conf_mat = squeeze(mean(Pmat >= cover, 1))
0 0 0 0 0 0 0 1.0000 1.0000 1.0000
0 0 0 0 0 0 0 1.0000 1.0000 1.0000
0 0 0 0 0 0 0 0.3360 0.9770 1.0000
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
信頼度の要求を満たすものを選択します。
[L, U] = find(conf_mat >= conf);
[L, U]
1 8
2 8
1 9
2 9
3 9
1 10
2 10
3 10
上記のブートストラップメソッドが有効であることを納得させる
ブートストラップのサンプルは、私たちが欲しいものの代役となることを意図していますが、そうではありません。
私が挙げた例では、データ生成プロセス(DGP)がわかっているため、ブートストラップの再サンプルに関連するコード行を「チート」して、実際のDGPからの新しい独立した描画で置き換えることができます。
newsamp = datasample(cats, nsamp, 'Weights', p, 'Replace', true);
pnew = mean(bsxfun(@eq, newsamp', cats));
次に、ブートストラップアプローチを理想と比較することで検証できます。結果は以下のとおりです。
新しい独立したデータからの信頼行列は、以下を描画します。
0 0 0 0 0 0 0 1.0000 1.0000 1.0000
0 0 0 0 0 0 0 1.0000 1.0000 1.0000
0 0 0 0 0 0 0 0.4075 0.9925 1.0000
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
対応する信頼の下限と上限:95%
1 8
2 8
1 9
2 9
3 9
1 10
2 10
3 10
信頼行列が厳密に一致し、範囲が同じであることがわかります。したがって、ブートストラップアプローチを検証します。