【发布时间】:2018-10-01 07:36:16
【问题描述】:
我目前正在研究多元概率分布(MATLAB 函数 mvksdensity),但我遇到了一个问题。
我有一个空间中 [XYZ] 点的 3D PDF。我希望它以点为单位,例如每个箱的估计点数,而不是概率。
这是因为我想估计在某些区域发现的点数,我想将 PDF 转换为时间(乘以 1/采样率),并且我想划分不同的 PDF不同的数据等。
我的第一个想法是将 PDF 除以其总和(因此 sum(PDF) = 1),然后乘以 [XYZ] 点的总数。这样总和(PDF)=点数,我应该能够做到以上所有。
基本上我的问题是如何将 PDF 转换为更像直方图的东西——这样单位就是“东西”而不是概率......
任何帮助将不胜感激,
谢谢,
杆。
这是我的意思的一个玩具示例:
pos = rand(50000,3)*1000; % [XYZ] points
vindx = 0:50:1000; % grid over which we want to estimate KDE
[xv,yv,zv] = ndgrid(vindx); % grid over which we want to estimate KDE
f = mvksdensity(pos,[xv(:),yv(:),zv(:)],'Bandwidth',75,'Kernel','normal','Function','pdf'); % PDF
f = f./nansum(f(:)) .* length(pos(:,1)); % now the sum of f will = the number of [XYZ] points
map = NaN(length(vindx),length(vindx),length(vindx)); % prepare an empty 3D map
[~,idx] = ismember(xv(:),vindx); % get the indices along X
[~,idy] = ismember(yv(:),vindx); % get the indices along Y
[~,idz] = ismember(zv(:),vindx); % get the indices along Z
ida = sub2ind(size(map),idy,idx,idz); % get the indices into map
map(ida) = f(:); % add the values to map
figure % plot data
isosurface(map,nanmax(f(:))/2);
daspect([1 1 1])
【问题讨论】:
-
您的 PDF 总和应为 1。乘以点数将导致每个“bin”中的数字。
-
@CrisLuengo 这就是问题中的示例似乎正在做的事情。我认为更相关的问题是该示例在哪些方面不是问题的解决方案?!
-
另请注意,来自有限支持均匀分布 (
rand) 的样本的 KDE 将在支持 (0:1000在这种情况下) 上近似均匀,但在超出由于内核的宽度,支持限制。如果您仅在输入数据范围内的点处评估 KDE,则结果将整合到小于1,因为 KDE 假定对于每个观察到的数据点,都有可能在距离之外看到一个新点。 -
大家好,在 Matlab 中,函数 ksdensity 和 mvksdensity 的输出总和不等于一。输出的积分总和为 1。您可以在示例中看到,对于我来说 nansum(f(:)) = 7.14-06 左右。所以问题是我所做的是否是一种适当的方法——如果是这样,那就太好了!但我不确定……
-
如果您的目标是让
f表示pos中有多少点落入每个50-unit 立方体中,那么这几乎是合适的。因为您的网格不会低于0或高于1000,所以在该网格上集成mvksdensity应该会小于1。因此,根据 KDE 除以nansum(f(:))会高估有多少点落在每个网格单元格中,因为它假设没有点落在网格之外,而 KDE 假设有一些点落在网格之外。
标签: matlab 3d probability probability-density