给定数据集自动确定概率分布

机器算法验证 r matlab 分布
2022-02-28 00:24:50

给定一个数据集:

x <- c(4.9958942,5.9730174,9.8642732,11.5609671,10.1178216,6.6279774,9.2441754,9.9419299,13.4710469,6.0601435,8.2095239,7.9456672,12.7039825,7.4197810,9.5928275,8.2267352,2.8314614,11.5653497,6.0828073,11.3926117,10.5403929,14.9751607,11.7647580,8.2867261,10.0291522,7.7132033,6.3337642,14.6066222,11.3436587,11.2717791,10.8818323,8.0320657,6.7354041,9.1871676,13.4381778,7.4353197,8.9210043,10.2010750,11.9442048,11.0081195,4.3369520,13.2562675,15.9945674,8.7528248,14.4948086,14.3577443,6.7438382,9.1434984,15.4599419,13.1424011,7.0481925,7.4823108,10.5743730,6.4166006,11.8225244,8.9388744,10.3698150,10.3965596,13.5226492,16.0069239,6.1139247,11.0838351,9.1659242,7.9896031,10.7282936,14.2666492,13.6478802,10.6248561,15.3834373,11.5096033,14.5806570,10.7648690,5.3407430,7.7535042,7.1942866,9.8867927,12.7413156,10.8127809,8.1726772,8.3965665)

..我想通过参数估计来确定最合适的概率分布(伽马、贝塔、正态、指数、泊松、卡方等)。我已经知道以下链接上的问题,其中使用 R 提供了解决方案: https ://stackoverflow.com/questions/2661402/given-a-set-of-random-numbers-drawn-from-a-连续单变量分布-f 建议的最佳解决方案如下:

> library(MASS)
> fitdistr(x, 't')$loglik                                                              #$
> fitdistr(x, 'normal')$loglik                                                         #$
> fitdistr(x, 'logistic')$loglik                                                       #$
> fitdistr(x, 'weibull')$loglik                                                        #$
> fitdistr(x, 'gamma')$loglik                                                          #$
> fitdistr(x, 'lognormal')$loglik                                                      #$
> fitdistr(x, 'exponential')$loglik                                                    #$

并选择 loglik 值最小的分布。但是,其他分布(例如 beta 分布)需要在 fitdistr() 函数中指定一些附加参数:

   fitdistr(x, 'beta', list(shape1 = some value, shape2= some value)).

鉴于我试图在没有任何先验信息的情况下确定最佳分布,我不知道每个分布的参数值可能是什么。是否有另一种解决方案考虑到这一要求?它不必在 R 中。

2个回答

您如何处理列表中没有的无限分布?

当您的列表中没有一个适合您时,您会怎么做?例如,如果您的分布是强双峰的

您将如何处理指数只是伽马的一个特例这一事实,因此,伽马必须始终更好地拟合任何数据集,因为它有一个额外的参数,因此必须有更好的可能性?

您如何处理这样一个事实,即可能性仅定义为乘法常数,并且除非一致定义,否则不同分布的可能性可能不会自动具有可比性?

并不是说这些一定是不可解决的,而是以明智的方式做这些事情是不平凡的;当然,不仅仅是通过计算 MLE 和比较可能性来搞砸一切,还需要更多的思考。

我找到了一个使用 matlab 回答我的问题的函数。它可以在这个链接上找到:http: //www.mathworks.com/matlabcentral/fileexchange/34943

我将数据向量作为输入

   allfitdist(data)

并返回以下信息以获得最佳拟合分布:

   DistName- the name of the distribution
   NLogL - Negative of the log likelihood
   BIC - Bayesian information criterion (default)
   AIC - Akaike information criterion
   AICc - AIC with a correction for finite sample sizes 
   ParamNames
   ParamDescription
   Params
   etc.