计算从连续分布中采样的数据模式


12

拟合连续分布采样数据的“模式”的最佳方法是什么?

由于该模式在技术上是不确定的(对吗?),以便进行连续分配,所以我真的在问“您如何找到最普遍的价值”?

如果您假设父分布是高斯分布,则可以对数据进行分箱,然后发现模式是计数最大的分箱位置。但是,如何确定垃圾箱大小?有健壮的实施方案可用吗?(即对异常值具有鲁棒性)。我使用python/ scipy/ numpy,但我可以轻松进行翻译R


8
我不确定该模式是否在技术上如此定义,但连续分布的全局模式通常是指密度最高的点。
Macro

1
@Macro-很有帮助。然后,您可以将我的问题读为:“确定(峰值)密度的最佳方法是什么?”
keflavich 2011年

1
也许适合您的数据的内核密度估计并将模式估计为该峰值?这似乎是一种合理的方法,但是我对这个问题的文献并不熟悉。

1
x0=xmin,x1,x2,,x9,x10=xmax10%xi+1ximin1j10xj+1xj

2
您可以对父分配keflavich做出什么假设?如果它们是参数化的,则最好估算参数,然后根据这些参数估算模式。(例如,样本均值估计正态分布的模式。)如果不是,则装箱可能是一种较差的方法。取而代之的是,可以使用具有不同半宽度的一系列内核估计器来提供一系列估计器。通常,如果基础分布是单峰分布,则随着半角变大,内核平滑的模式将趋向于向唯一模式收敛,这可以作为您的估计。
whuber

Answers:


4

在R中,应用不基于基础分布的参数化建模的方法,并使用默认的内核估计器对10000 gamma分布变量进行密度计算:

x <- rgamma(10000, 2, 5)
z <- density(x)
plot(z) # always good to check visually
z$x[z$y==max(z$y)]

返回0.199,这是估计具有最高密度的x的值(密度估计存储为“ z $ y”)。


3
我唯一要做的就是使用不同的带宽。density()的默认带宽不是特别好。density(x,bw =“ SJ”)更好。更好的方法是使用为模式估计设计的带宽。有关某些讨论,请参见sciencedirect.com/science/article/pii/0167715295000240
罗伯·海恩德曼

2

假设您制作了一个大小为b的直方图,而最大的大小为k,则大小为n。然后,该仓内的平均PDF可以估计为b * k / n。

问题在于,其他成员总数较少的容器可能具有较高的斑点密度。只有对PDF的更改率有合理的假设,您才能知道这一点。如果这样做,则可以估计第二大容器实际包含该模式的可能性。

潜在的问题是这个。样本通过Kolmogorov-Smirnov定理提供了CDF的良好知识,因此很好地估计了中位数和其他分位数。但是,知道L1中某个函数的近似值并不能提供其导数的近似知识。因此,没有其他假设,没有任何样本可以提供对PDF的良好知识。


0

以下是一些一般的解决方案草图,它们也适用于高维分布:

  • 训练具有反向KL散度的f-GAN,而无需向生成器提供任何随机输入(即,强制其具有确定性)。

  • 训练具有反向KL发散的f-GAN,随着训练的进行,将输入分布向发电机的输出移向Dirac delta函数,并为发电机损失函数增加梯度损失。

  • 训练一个(可微分的)生成模型,该模型可以随时随地评估pdf的近似值(我相信例如VAE,基于流的模型或自回归模型都可以)。然后使用某种类型的优化(如果模型推论是可区分的,则可以使用某种梯度上升的味道)来找到该近似值的最大值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.