python拟合统计分布_将数据拟合到分布?_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、付费专栏及课程。

余额充值