1

我有一个矩阵 z(x,y)任意多项式 pdf := z 这是一个由独特的核密度估计构造的 NxN abitary pdf(即不是通常的 pdf,它没有函数)。它是多元的,不可分离的,是离散的数据。

我不想构造一个 NxN 矩阵 (F(x,y)),它是这个 pdf 的二维累积分布函数,这样我就可以随机抽样 F(x,y) = P(x < X , y < Y);

从分析上讲,我认为多元函数的 CDF 是 pdf 的表面积分。

我尝试的是使用该cumsum函数来计算表面积分,并使用多元法线对解析解进行测试,两者之间似乎存在一些差异:

% multivariate parameters
delta = 100;
mu = [1 1];
Sigma = [0.25 .3; .3 1];
x1 = linspace(-2,4,delta); x2 = linspace(-2,4,delta);
[X1,X2] = meshgrid(x1,x2);
% Calculate Normal multivariate pdf
F = mvnpdf([X1(:) X2(:)],mu,Sigma);
F = reshape(F,length(x2),length(x1));
% My attempt at a numerical surface integral 
FN = cumsum(cumsum(F,1),2);
% Normalise the CDF
FN = FN./max(max(FN));
X = [X1(:) X2(:)];
% Analytic solution to a multivariate normal pdf
p = mvncdf(X,mu,Sigma);
p = reshape(p,delta,delta);
% Highlight the difference
dif = p - FN;
error = max(max(sqrt(dif.^2)));
% %% Plot
figure(1)
surf(x1,x2,F);
caxis([min(F(:))-.5*range(F(:)),max(F(:))]);
xlabel('x1'); ylabel('x2'); zlabel('Probability Density');
figure(2)
surf(X1,X2,FN);
xlabel('x1'); ylabel('x2');
figure(3);
surf(X1,X2,p);
xlabel('x1'); ylabel('x2');
figure(5)
surf(X1,X2,dif)
xlabel('x1'); ylabel('x2');

特别是错误似乎在最重要的过渡区域。

有没有人对这个问题有更好的解决方案或者看看我做错了什么?任何帮助将非常感激!

编辑:这是累积积分的期望结果,这个函数对我有价值的原因是,当您在闭合区间 [0,1] 上从该函数随机生成样本时,加权值越高(即可能性越大)以这种方式出现的频率更高,样本收敛于期望值(在多个峰值的情况下),这是粒子滤波器、神经网络等算法的理想结果。 多元 cdf

4

2 回答 2

1

首先考虑一维情况。您有一个由向量​​表示的函数,F并且想要进行数值积分。cumsum(F)会这样做,但它使用了一种糟糕的数值积分形式。即,它被视为F一个阶跃函数。您可以改为使用梯形规则辛普森规则进行更准确的数值积分。

二维情况也不例外。您的使用cumsum(cumsum(F,1),2)再次被F视为阶跃函数,并且随着积分维数的增加,由该假设产生的数值误差只会变得更糟。存在梯形规则和辛普森规则的二维类似物。由于这里有太多的数学重复,请看这里: http: //onestopgate.com/gate-study-material/mathematics/numerical-analysis/numerical-integration/2d-trapezoidal.asp

于 2014-06-06T16:08:48.527 回答
0

您无需计算概率密度函数的二维积分即可从分布中采样。如果您正在计算二维积分,那么您将错误地解决问题。

以下是解决抽样问题的两种方法。

(1) 你写道你有一个核密度估计。核密度估计是混合密度的一种特殊情况。任何混合密度都可以通过首先选择一个内核(可能不同或相同的权重,应用相同的程序),然后从该内核中采样来进行采样。(这适用于任何数量的维度。)通常,内核是一些相对简单的分布,例如高斯分布,因此很容易从中采样。

(2) 任何联合密度 P(X, Y) 等于 P(X | Y) P(Y) (等价于 P(Y | X) P(X))。因此,您可以从 P(Y)(或 P(X))采样,然后从 P(X | Y) 采样。为了从 P(X | Y) 中采样,您需要沿 Y = y 线对 P(X, Y) 进行积分(其中 y 是 Y 的采样值),但是(这很关键)您只需要沿着这条线整合;您不需要整合 X 和 Y 的所有值。

如果您告诉我们更多有关您的问题的信息,我可以提供详细信息。

于 2014-06-08T05:27:13.103 回答