我有一个矩阵 z(x,y) 这是一个由独特的核密度估计构造的 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] 上从该函数随机生成样本时,加权值越高(即可能性越大)以这种方式出现的频率更高,样本收敛于期望值(在多个峰值的情况下),这是粒子滤波器、神经网络等算法的理想结果。