有兩種估計分位數,一種是在估計指定的分位數,另一種是估計全部的分位數,也就得到分布函數。這種估計存在的誤差滿足
\[\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