分位數估計


有兩種估計分位數,一種是在估計指定的分位數,另一種是估計全部的分位數,也就得到分布函數。這種估計存在的誤差滿足

\[\Pr(|\overline{Y}-E[\overline{Y}]|\ge\epsilon) \le 2\exp(\dfrac{-2\epsilon^2n}{1^2}) = \delta \]

這在前面的章節已有討論。

 

我們先考慮某一分位數,例如給定一個集合 \(P=\{p_1,\cdots,p_n\}\) ,要估計 \(\phi\) 分位數 \(t\) ,即要找到

\[F_X(t) \approx \mathrm{nrank}_P(t) = \dfrac{|\{p_i\le t\mid p_i\in P\}|}{n} \]

方法非常簡單:先將集合 \(P\) 中的元素從小到大排序,然后找到前 \(\phi\cdot n\) 個元素,其中的最后一個元素就是 \(\phi\) 分位數。

 

對於分布函數估計,考慮將誤差分為兩部分 \(\epsilon=\epsilon_1+\epsilon_2\) ,然后取 \(1/\epsilon_1\) 個分位數

\[\{\phi_1,\cdots,\phi_{1/\epsilon_1}\},\quad \phi_j = j\cdot \epsilon_1 + \dfrac{\epsilon_1}{2} \]

我們按照之前的方法依次估計這 \(1/\epsilon_1\) 個分位數,這樣就得到了分布函數的 \(1/\epsilon_1\) 個離散點,將它們連接起來近似分布函數。

根據超出 \(\epsilon\) 誤差的概率估計

\[\Pr(|\mathrm{nrank}_P(t)-F_X(t)|\ge\epsilon) \le \dfrac{4}{\epsilon}\exp(-\dfrac{\epsilon^2n}{2}) \]

我們常常令

\[\dfrac{4}{\epsilon}\exp(-\dfrac{\epsilon^2n}{2}) < \delta,\quad n > \dfrac{2}{\epsilon^2}\ln(\dfrac{4}{\epsilon\delta}) \]

這樣 \(n\) 就是至少要取的樣本點數。一般來說,我們常常不需要取到這個下界,即使 \(n\) 略小於這一下界也能得到較好的估計。

 

最后給出兩個估計案例,分別估計

\[f(x) = \dfrac{8x}{\pi^2},\quad x\in\left[0,\dfrac{\pi}{2}\right] \]

的分布函數和 \([0,1]\) 上的均勻分布的分布函數,取樣本點 \(n=100,1000,2000\) ,以及 \(\epsilon=0.1\)

% 設為0.1,設為0.01
epsilon = 0.1;
delta = 0.01;

% 取一半進行划分
epsilon1 = epsilon / 2;

N = [100 1000 2000];
pic = 1;

for j = 1:3
    n = N(j);
    
    phi = epsilon1 + epsilon1/2 : epsilon1 : 1 + epsilon1/2;
    t = zeros(1, length(phi));
    ind = 1;

    x = random_number(n);
    x = sort(x);

    for i = 1:n
        if (i / n) >= phi(ind)
            t(ind) = x(i);
            ind = ind + 1;
        end
    end

    phi(ind) = 1;
    t(ind) = pi/2;
    
    phi = [0 phi];
    t = [0 t];
    
    figure(pic);
    plot(t, phi, 'r');
    pic = pic + 1;
end

for j = 1:3
    n = N(j);
    
    phi = epsilon1 + epsilon1/2 : epsilon1 : 1 + epsilon1/2;
    t = zeros(1, length(phi));
    ind = 1;

    x = rand(1,n);
    x = sort(x);

    for i = 1:n
        if (i / n) >= phi(ind)
            t(ind) = x(i);
            ind = ind + 1;
        end
    end

    phi(ind) = 1;
    t(ind) = 1;
    
    phi = [0 phi];
    t = [0 t];
    
    figure(pic);
    plot(t, phi, 'r');
    pic = pic + 1;
end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM