我有一堆数据(50到500个点之间,每个点都可以取正值),需要确定哪个分布最能描述它们。我已经为其中几个人手动完成了这项工作,但需要自动完成此任务。
有些集是完全模态的(每个数据的值都是15),有些是强模态或双峰的,有些是钟形曲线(通常是倾斜的,具有不同程度的kertosis / pointiness),有些是大致平坦的,并且还有许多其他可能的分布(责任,幂律等)。我需要一种方法来确定哪种分布最能描述数据,并且(理想情况下)还为我提供了适应度量,以便我知道我对分析的信心。
现有的开源库是理想的,其次是我自己可以实现的文档化的算法。
答案 0 :(得分:5)
在缺少某些先验知识的情况下,寻找适合的分布不太可能给您带来好的结果。您可能会发现巧合的分布很适合,但不太可能是基础分布。
您是否有任何可用的元数据暗示数据的含义?例如,“这是从自然群体中采样的开放式数据,因此它是某种正态分布”,而“这些数据固有地界定为0且离散,因此检查最合适的泊松”。
我不知道Java的任何分发求解器,我不知道有什么可以猜测使用哪个发行版。您可以检查一些统计属性(偏斜/等)并在此进行一些猜测 - 但您更有可能最终得到一个不能充分代表基础分布的意外良好拟合。真实的数据很嘈杂,如果你甚至不知道它是什么分布,那就有太多的自由度。
答案 1 :(得分:5)
这可能超出您想要的范围,但它似乎是最完整的方法(并且它允许访问R中可用的大量统计知识):
答案 2 :(得分:3)
看看Apache commons-math。
答案 3 :(得分:2)
您正在寻找的是“适合度”的总标题。你可以搜索“适合度测试。”
唐纳德·克努特(Donald Knuth)在“数值算法”(Seminumerical Algorithms)中描述了几种流行的拟合优度测试:卡方检验和Kolmogorov-Smirnov检验。但是你必须先了解一下你想要测试的发行版。例如,如果您有钟形曲线数据,则可以尝试普通或柯西分布。答案 4 :(得分:1)
如果您真正需要分发的是为您采样的数据建模,您可以根据您拥有的数据进行自己的分发:
1。创建样本的直方图:选择容器大小的一种方法是here。您可以选择其他方法来选择容器大小。
2。导出样本CDF:将直方图视为PDF,并计算积分。最好缩放箱子的高度,以便CDF具有正确的特征......即+ Infinity的CDF值为1.0。
将分布用于建模目的:
3。从您的分布中绘制X:从U(0,1)绘制Y.在值为Y的CDF上使用反向查找来确定X,使得CDF(X)= Y.由于CDF是可逆的,因此X是唯一的。
答案 5 :(得分:0)
我听说过一个名为Eureqa的软件包可能会很好地填补这个问题。我只下载了它;我自己还没试过。
答案 6 :(得分:0)
您可以使用SSJ library进行三步操作: