用Python中的3D数据实现两个示例的KS测试

用Python中的3D数据实现两个示例的KS测试,python,scipy,statistics,similarity,Python,Scipy,Statistics,Similarity,我有两个3D分布,我想在这两个样本上运行一个测试来测量它们的相似性。scipy.stats有一个在中实现的2样本K-S测试的实现,我在中找到了一个实现,但没有一个是在3维(或N维)中实现的 有人能为3D分布实施两个样本的K-S测试吗?KS测试不容易推广到多个维度;看见即使您可以找到或创建一个合适的泛化,我也不知道您是否真的想这样做,因为在大型数据集上,显著性测试通常是无用的 < P >如果你想量化分布之间的差异,我的建议是考虑基于熵的量,如互信息或Kullback Leibler散度。 也许你可

我有两个3D分布,我想在这两个样本上运行一个测试来测量它们的相似性。scipy.stats有一个在中实现的2样本K-S测试的实现,我在中找到了一个实现,但没有一个是在3维(或N维)中实现的


有人能为3D分布实施两个样本的K-S测试吗?

KS测试不容易推广到多个维度;看见即使您可以找到或创建一个合适的泛化,我也不知道您是否真的想这样做,因为在大型数据集上,显著性测试通常是无用的

< P >如果你想量化分布之间的差异,我的建议是考虑基于熵的量,如互信息或Kullback Leibler散度。
也许你可以在这里更多地说明你的目标。

Hi Stanley的可能重复,这个问题指的是使用scipy.stats.ks_2samp(),我在问题中链接了这个函数。该函数仅处理1D分布。我的问题是关于3D发行版的,我觉得我已经在标题和正文中清楚地说明了这一点——你能删除重复的标志吗?@巡回标志将在20天左右后自动失效。@StanleyR不是重复的,请更新或删除你的评论。当然!我在风洞里有一些昆虫飞行的数据。我有一个他们飞行的动力学模型。为了适应我的模型参数,我正在运行一个优化算法,该算法模拟一组轨迹,并根据观察到的飞行组对它们进行评分。为了对每个组进行评分,我取每个运动学的分量(速度x、y、z、加速度xyz、位置xyz、曲率)并计算库尔贝克-利布勒散度。这给了我曲率DKL的问题(曲率分布有一条长尾,如果尾部的箱子不完全相同,DKL将受到惩罚)。这就是为什么我决定切换到KS测试,这让我绕过了装箱问题。3D KS测试会给我一个统计分数,告诉我一个轨迹集合是否以与参考集合相同的方式分布。我忘了提到,对于我的最终分数,我只是简单地取了我所有的DKL总和(DKL(速度x组件_targ,速度x组件_ref)+DKL(速度x组件_targ,速度x组件_ref)+DKL(速度x组件_targ,速度x组件_ref)+…)或者最近,sum(ks_2samp(运动学组件))因为你在模拟飞行,所以轨迹肯定很重要,而不仅仅是昆虫在某个时间点的分布。也许合适的拟合优度是模拟轨迹与初始条件相同的实际轨迹之间的距离。好吧,这很有意义,我明白你为什么要关注分布。请注意,KS比较度量值,因此您需要的泛化是计算任意子集的度量值(即总质量),并查找最大差异。可能为了你的目的,只考虑球体、椭球或盒子或类似的东西就足够了。我不认为这可以简化为重复的一维问题。您可能会为此编写一些代码,但如果没有,至少这会让您知道要查找什么。如果有意思的话,我会尽量把它说得更详细。