python集合运算,python 分布拟合
这是一个复杂的问题,没有完美的答案。我尽量给你总结一下主要概念,给你指出有用的阅读方向。
假设你有一组一维数据和一组有限概率分布函数。我认为这些数据可能来自那里。可以分别研究每个分布,根据数据找到合适的参数。
对于具体数据的概率分布函数,有两种方式设置参数。
根据我的经验,近年来最大似然法可能不在任何领域,但却是首选。
下面是如何估计r的参数的具体例子,考虑一组由yxdlf分布产生的随机点,平均值为0,标准差为1。x=rnorm(n=100,均值=0,标准差=1).
假设您知道数据是使用yxdlf过程生成的,然后忘记了(或者从来不知道!(yxdlf函数的参数。我想用这些数据来合理估计均值和标准差。有一个标准的库可以使这变得简单。图书馆(大众)。
Params=fitdistr(x, normal ).
是打印(参数)
这给了我以下输出:平均值标准差
-0.17922360 1.01636446
(0.10163645 ) ) 0.07186782 )。
它们非常接近正确答案,括号中的数字是参数周围的置信区间。记住,每生成一组新的点,就会得到一个估计的新答案。
数学上这是用最大似然估计yxdlf分布的平均值和标准差。似然指的是“数据给出参数值的概率”。最大似然是“使生成输入数据的概率最大的参数值”。最大似然估计是一种算法,用于找出使生成输入数据的概率最大化的参数值。根据不同的分布,数值优化算法也可能是相关的。在R中,大部分工作由fitdistr完成,有时会调用optim。
对数似然可以从参数中提取。以下是print(Params$loglik)
[1] -139.5772
使用对数似然比使用似然更常见,以避免舍入误差。要估计合并数据的概率,所有小于1的概率必须相乘。对于分组数据,联合概率也很快接近0,数据的对数概率等于乘以概率。当似然接近0时,似然最大,所以更多的负数不适合数据。
有了这样的计算工具,任何分布参数都可以很容易地计算出来。例如,x=x[ x=0]
分布=c(正常,指数).
分散(为){
打印(粘贴( fittingparametersfor ,dist))
Params=fitdistr(x,dist))))))))))))).
是打印(参数)
打印(参数)
Print (params $ log lik))。
}
指数分布不会产生负数,所以我在第一行删除了。输出(随机)如下所示。(1) 1(fittingparametersfornormal .
最大标准偏差
0.72021836 0.54079027
(0.07647929 ) ) 0.05407903 )。
长模式
估计值2-无-数字
SD 2-无-数字
n1-无-数字
loglik 1-无-数字
[1] -40.21074
[1]“fittingparametersforexponential”
速度
1.388468
(0.196359 )
长模式
估价1-无-数字
SD 1-无-数字
n1-无-数字
loglik 1-无-数字
[1] -33.58996
指数分布不需要给负数分配概率密度,所以实际产生这些数据的概率比正态分布略高。
如果你试图让数据符合更多的分布,所有这些估计问题都会变得更糟。与参数较少的分布相比,参数较多的分布更适合数据,因为参数较多的分布更灵活。此外,部分分布是其他分布的特例(例如,指数分布是伽玛分布的特例)。因此,使用先验知识将选定的模型限制为所有可能模型的子集是非常常见的。
解决参数估计中某些问题的一种技术是生成大量数据,并在交叉验证中保留一些数据。根据你的pa适用性参数交叉检查数据,在估算过程中保留一些数据,用泄露的数据衡量每个模型的可能性。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。