分位数估计


有两种估计分位数,一种是在估计指定的分位数,另一种是估计全部的分位数,也就得到分布函数。这种估计存在的误差满足

\[\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