在 Matlab 中截断所需支持的泊松分布

Truncating Poisson distribution on desired support in Matlab

我想在 Matlab 中用 lambda 参数 [0.4, 0.2, 0.6] 构造一个 3 维泊松分布,我想截断它以在 [0;1;2;3;4;5] 中得到支持。这 3 个组件是独立的。

这就是我所做的

clear
n=3; %number components of the distribution 

supp_marginal=0:1:5;
suppsize_marginal=size(supp_marginal,2); 

supp_temp=repmat(supp_marginal.',1,n); 
supp_temp_cell=num2cell(supp_temp,1); 
output_temp_cell=cell(1,n);
[output_temp_cell{:}] = ndgrid(supp_temp_cell{:});
supp=zeros(suppsize_marginal^n,n);

for h=1:n
    temp=output_temp_cell{h};
    supp(:,h)=temp(:);  
end
suppsize=size(supp,1); 

lambda_1=0.4;
lambda_2=0.2;
lambda_3=0.6;

pr_mass=zeros(suppsize,1);
for j=1:suppsize
    pr_mass(j)=(poisspdf(supp(j,1),lambda_1).*...
                poisspdf(supp(j,2),lambda_2).*...
                poisspdf(supp(j,3),lambda_3))/...
                sum(poisspdf(supp(:,1),lambda_1).*...
                    poisspdf(supp(:,2),lambda_2).*...
                    poisspdf(supp(j,3),lambda_3));
end 

当我计算获得的分布的平均值时,我得到 lambda_1lambda_2 但不是 lambda_3

lambda_empirical=sum(supp.*repmat(pr_mass,1,3)); 

问题:为什么我没有得到lambda_3

tl;dr:截断会改变分布,因此需要不同的均值。


这是预料之中的,因为 truncation 本身 改变了分布 并且肯定会调整均值。您可以从下面的实验中看出这一点。请注意,对于您选择的参数,这在 lambda = 0.6.

左右开始变得明显

类似于the wiki page,这说明了E[X]之间的区别(期望X没有截断;花式均值)和 E[ X | LBXUB](X的期望鉴于它在区间 [LB,UB])。此条件期望意味着与 X (~Poisson(lambda) 的无条件分布不同的分布。

% MATLAB R2018b
% Setup
LB = 0;   % lowerbound 
UB = 5;   % upperbound

% Simple test to compare theoretical means with and without truncation
TestLam = 0.2:0.01:1.5;
Gap = zeros(size(TestLam(:)));
for jj = 1:length(TestLam)
    TrueMean = mean(makedist('Poisson','Lambda',TestLam(jj)));
    TruncatedMean = mean(truncate(makedist('Poisson','Lambda',TestLam(jj)),LB,UB));
    Gap(jj) = TrueMean-TruncatedMean;
end

plot(TestLam,Gap)

请注意,这些截断边界与 0.6 的 lambda 之间的差距仍然很小,并且可以忽略不计,因为 lambda 接近于零。

lam = 0.6;    %  <---- try different values   (must be greater than 0)
pd = makedist('Poisson','Lambda',lam)
pdt = truncate(pd,LB,UB)
mean(pd)                         % 0.6
mean(pdt)                        % 0.5998

其他资源:
1. Truncated Distributions
的 Wiki 2. What is a Truncated Distribution
3. truncate(), makedist()
的 MATLAB 文档 4. MATLAB:Working with Probability Distribution (Objects)