python数据拟合怎么做的_将数据拟合到分布?

这是个复杂的问题,没有完美的答案,

对于给定的数据,有两种设置概率分布函数参数的方法:

在我的经验中,最近几年最大似然是首选的,尽管这可能不是每个领域的情况。

这是如何估算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)

从你的参数中提取日志可能性,如下所示:print( params$loglik )

[1] -139.5772

当对数可能性接近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

克服参数估计中一些问题的一个技巧是生成大量数据,并将某些数据留给交叉验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值