首页 > 代码库 > 截取符合指数分布的一部分样本的理论与实验

截取符合指数分布的一部分样本的理论与实验


    最近在解决一个符合指数分布的样本处理的问题时,做了一个假设,然后需要做一个小实验确认基于假设而简单推导出的理论的正确性。

    首先是假设:给定一个总个数为 N 的样本集,样本集中元素符合指数分布,即在样本集 S 里的每一个元素 X 的值都符合参数为 lambda 的指数分布 X~Exp(lambda). 那么,如果我另给定一个长度 n ,来对所有的样本元素截取,即挑出那些 X 小于或等于 n  的所有元素。

    问题是:1)这样的元素有多少个,用N0表示? 2)这些所有被截取的元素的和是多少,用L表示?

    

    A. 简单推导:

   1) 第一个小问题,我的思路是这样的:首先求出 元素X不大于n的累积分布概率 F(n, lambda),然后所有不大于n的元素的个数即为总体样本个数在 F(n, lambda) 的体现。即

          

   2)第二问的思路是:首先求出 所有小于等于 n 的元素的 期望 E(X<=n),然后 L 即为 期望 E(X<=n) 在总体样本上的体现。即


    其中,f(X)  为 指数分布的概率密度函数。


    B. 接下来, 用实验来验证。

    1) 代码; 2)效果;3)结论。

    1)    

clear
% ---- 1) generate S with Exprnd()
S = [];
cnt_elements = 1e6;
Mu = 5;
for i=1:cnt_elements
	S(i)= exprnd(Mu);
end

% ---- 2) counting
n_threshold = 3;
selected_elements_idx = [];
selected_elements_idx = find(S <= n_threshold);
% -- a. count of selected elements within threshold.
CNT_selected = size(selected_elements_idx);
% -- b. sum of the selected elements.
sum_sel_ones = sum( S(selected_elements_idx) );

% ----- 3) analysis of N0:
lam = 1.0/Mu;
n = n_threshold;
N = cnt_elements;
N0 = N * (1-exp(-1*lam*n) );

% ----- 4) analysis of L.
L = (N/lam)*(1 - (lam*n + 1)/exp(lam*n));

% ----- 5) Compare CNT_selected with N0.
CNT_selected
N0

% ----- 6) Compare sum_sel_ones with L.
sum_sel_ones
L

2)输出:

CNT_selected =
           1      451172

N0 =
  4.5119e+005


sum_sel_ones =
  6.0934e+005

L =
  6.0951e+005


3)从输出看出,实验结果大致符合理论推导。


 Davy_H

 2014-7-15