我有一个未知分布的概率密度函数,它是一组元组(x,f(x)),其中Map(function(a,b) sapply(1:ncol(b),
function(x) {a[which(b[,x]==1),]}, simplify=FALSE), a,b)
和f(x)是相应的概率。
识别相应分布的最佳方法是什么?到目前为止,我的想法是基于pdf绘制大量样本(通过自己编写代码)然后使用获得的数据来适应scipy.stats中实现的所有分布,然后采用最佳拟合。 / p>
有没有更好的方法来解决这个问题?例如,scipy.stats中是否有某种实用程序可以帮助我解决这个问题?
答案 0 :(得分:3)
从根本上说,根据经验样本总结一个分布是不可能的 - 参见here讨论。
有可能做一些更有限的事情,即拒绝/接受一个假设,即它是基于一个有些任意的标准,来自一组有限的(参数)分布。
鉴于有限的分布集,对于每个分布,您可能实际上可以执行以下操作:
使分布参数适合数据。例如,scipy.stats.beta.fit
将符合Beta分布的最佳参数(所有scipy
分布均采用此方法)。
拒绝/接受数据由此分布生成的假设。这样做的方法不止一种。一种特别简单的方法是使用分布的rvs()
方法生成另一个样本,然后使用ks_2samp
生成Kolmogorov-Smirnov检验。
请注意,某些特定的发行版可能有更好的ad-hoc算法,用于测试发行版系列的成员是否生成了数据。像往常一样,正态分布特别有许多(见Normalcy test)。