Matlab中的近似连续概率分布

时间:2019-08-10 13:39:14

标签: matlab probability probability-density continuous

假设我在支持A上有一个连续的概率分布,例如正态分布。假设有一个Matlab代码可以让我从这样的分布中提取随机数,例如this

我想构建一个Matlab代码,以概率质量函数“跨越” r 个点来“近似”这种连续概率分布。

这意味着我想将Matlab代码编写为:

(1)从A中选择r个点。让我们称这些点为a1,a2,...,ar。这些要点将构成新的离散支持。

(2)构造a1,a2,...,ar上的概率质量函数。此概率质量函数应“很好”近似原始连续概率分布。

您能否通过提供一个示例来帮助您? This是问朱莉娅的类似问题。


这是我的一些想法。假设感兴趣的连续概率分布是一维的。一种可能的方式是:

(1)从感兴趣的连续概率分布中提取10 ^ 6个随机数,并将其存储在列向量D中。

(2)假设r = 10。计算D的第10个,第20个,...,第90个分位数。找到落入获得的10个仓中的每个仓中的中点。将这些中点称为a1,...,ar。

如何从这里构造概率质量函数? 另外,如何将这一过程推广到一个以上的维度?


使用histcounts更新:我考虑过使用histcounts。您认为这是有效的选择吗?对于许多尺寸,我可以使用this

clear 

rng default

%(1) Draw P random numbers for standard normal distribution
P=10^6;
X = randn(P,1);

%(2) Apply histcounts
[N,edges] = histcounts(X); 

%(3) Construct the new discrete random variable

%(3.1) The support of the discrete random variable is the collection of the mean values of each bin 
supp=zeros(size(N,2),1);
for j=2:size(N,2)+1
    supp(j-1)=(edges(j)-edges(j-1))/2+edges(j-1);
end

%(3.2) The probability mass function of the discrete random variable is the
%number of X within each bin divided by P
pmass=N/P;

%(4) Check if the approximation is OK
%(4.1) Find the CDF of the discrete random variable 
CDF_discrete=zeros(size(N,2),1);
for h=2:size(N,2)+1
    CDF_discrete(h-1)=sum(X<=edges(h))/P;
end
%(4.2) Plot empirical CDF of the original random variable and CDF_discrete
ecdf(X)
hold on
scatter(supp, CDF_discrete)

1 个答案:

答案 0 :(得分:-1)

我不知道这是否是您想要的,但也许可以帮到您。您知道,P(X = x) = 0对于连续概率分布中的任何点,即X映射到x的逐点概率很小,因此为0。

为了将其近似为离散的概率空间,您可以做的是定义一些点(x_1, x_2, ..., x_n),并让它们的离散概率成为PDF范围的整数(从连续概率中得出)分布),即  P(x_1) = P(X \in (-infty, x_1_end)), P(x_2) = P(X \in (x_1_end, x_2_end)), ..., P(x_n) = P(X \in (x_(n-1)_end, +infty))

:-)