対象の変数は、クラス(セル)の確率()とともに多項的に分布しています。さらに、クラスは自然な順序に恵まれています。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
信頼行列が厳密に一致し、範囲が同じであることがわかります。したがって、ブートストラップアプローチを検証します。