Усеченное распределение Пуассона на желаемой поддержке в Matlab - PullRequest
0 голосов
/ 25 октября 2019

Я хочу построить трехмерное распределение Пуассона в Matlab с параметрами лямбды [0.4, 0.2, 0.6], и я хочу обрезать его, чтобы иметь поддержку в [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_1 и lambda_2, но не lambda_3.

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

Вопрос: почему я не получаю lambda_3?

1 Ответ

2 голосов
/ 27 октября 2019

tl; dr: Усечение изменяет распределение, поэтому ожидаются другие значения.


Это ожидается, поскольку усечение само изменило распределение и, конечно, корректирует среднее. Вы можете увидеть это из эксперимента ниже. Обратите внимание, что для выбранных вами параметров это начинает становиться заметным в районе лямбда = 0,6.

Подобно вики-странице , это иллюстрирует разницу между E [ X ] (ожидание X без усечения; причудливое слово для среднего) и E [ X | LB <= <em>X <= <em>UB ] (ожидание X , учитывая, что оно находится на интервале [ LB , UB )]. Это условное ожидание подразумевает распределение, отличное от безусловного распределения X (~ Пуассон ( lambda )).

Plot showing gap in mean due to truncation effect

% 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 по-прежнему мал и незначителен, когда лямбда приближается к нулю.

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. Вики для Усеченные распределения
2. Что такое усеченное распределение
3Документация MATLAB для truncate, makedist
4. MATLAB: Работа с распределением вероятностей (объекты)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...