您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使数据适合于分布?

使数据适合于分布?

这是一个复杂的问题,没有完美的答案。我将尝试为您提供主要概念的概述,并为您提供有关该主题的一些有用的阅读指南。

假设您有一维数据集,并且您认为可能是从中生成数据的概率分布函数集有限。您可以独立考虑每个分布,并尝试查找给定数据的合理参数。有两种为给定数据的概率分布函数设置参数的方法

以我的经验,虽然并非在每个领域都如此,但近年来,人们更倾向于“最大可能性”。

这是一个如何估计R中参数的具体示例。请考虑一组从高斯分布生成随机点,其均值为0,标准差为1:

x = rnorm( n = 100, mean = 0, sd = 1 )

假设您知道数据是使用高斯过程生成的,但是您忘记了(或从不知道!)高斯参数。您想使用这些数据为您提供均值和标准差的合理估计。在R中,有一个标准库可以使这一过程变得非常简单:

library(MASS)
params = fitdistr( x, "normal" )
print( params )

这给了我以下输出

      mean           sd     
  -0.17922360    1.01636446 
 ( 0.10163645) ( 0.07186782)

它们非常接近正确的答案,括号中的数字是参数周围的置信区间。请记住,每次生成一组新的点时,您都??会得到一个新的估计答案。

在数学上,这是使用最大似然来估计高斯的均值和标准差。可能性是指(在这种情况下)“给定参数值的数据的概率”。最大似然是指“最大化生成我的输入数据的可能性的参数值”。最大似然估计是一种算法,用于找到使输入数据生成概率最大化的参数值,对于某些分布,它可能涉及数值优化算法。在R中,大部分工作是由fitdistr完成的,在某些情况下会称为optim

您可以像这样从参数中提取对数可能性:

print( params$loglik )
[1] -139.5772

使用对数可能性比避免舍入错误更常见。估计数据的联合概率涉及相乘的概率,这些概率均小于1。即使对于一小组数据,联合概率也非常快地接近0,将数据的对数概率相加就等于将概率相乘。对数似然接近0时,可能性最大,因此负数越多,数据拟合效果越差。

使用这样的计算工具,可以轻松估算任何分布的参数。考虑以下示例:

x = x[ x >= 0 ]

distributions = c("normal","exponential")

for ( dist in distributions ) {
    print( paste( "fitting parameters for ", dist ) )
    params = fitdistr( x, dist )
    print( params )
    print( summary( params ) )
    print( params$loglik )
}

指数分布不会生成负数,因此我在第一行中将其删除输出(是随机的)如下所示:

[1] "fitting parameters for  normal"
      mean          sd    
  0.72021836   0.54079027 
 (0.07647929) (0.05407903)
         Length Class  Mode   
estimate 2      -none- numeric
sd       2      -none- numeric
n        1      -none- numeric
loglik   1      -none- numeric
[1] -40.21074
[1] "fitting parameters for  exponential"
     rate  
  1.388468 
 (0.196359)
         Length Class  Mode   
estimate 1      -none- numeric
sd       1      -none- numeric
n        1      -none- numeric
loglik   1      -none- numeric
[1] -33.58996

实际上,指数分布比正态分布更有可能生成此数据,这可能是因为指数分布不必将任何概率密度分配给负数。

当您尝试使数据适合更多分布时,所有这些估计问题都会变得更加严重。具有更多参数的分布更加灵活,因此与具有较少参数的分布相比,它们将更适合您的数据。同样,某些分布是其他分布的特例(例如,指数Gamma的特例)。因此,使用先验知识将您的选择模型限制为所有可能模型的子集非常普遍。

解决参数估计中一些问题的一种技巧是生成大量数据,而将某些数据留给交叉验证。要交叉验证参数对数据的拟合度,请将一些数据排除在估计过程之外,然后在遗漏的数据上测量每个模型的可能性。

其他 2022/1/1 18:36:31 有337人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶