栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Scipy与Matlab拟合对数正态分布

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Scipy与Matlab拟合对数正态分布

fit
scipy 0.9.0中的方法中有一个错误,已在更高版本的scipy中修复。

以下脚本的输出应为:

Explicit formula:   mu = 4.99203450, sig = 0.81691086Fit log(x) to norm: mu = 4.99203450, sig = 0.81691086Fit x to lognorm:   mu = 4.99203468, sig = 0.81691081

但是使用scipy 0.9.0,它是

Explicit formula:   mu = 4.99203450, sig = 0.81691086Fit log(x) to norm: mu = 4.99203450, sig = 0.81691086Fit x to lognorm:   mu = 4.23197270, sig = 1.11581240

以下测试脚本显示了获得相同结果的三种方法:

import numpy as npfrom scipy import statsdef lognfit(x, ddof=0):    x = np.asarray(x)    logx = np.log(x)    mu = logx.mean()    sig = logx.std(ddof=ddof)    return mu, sig# A simple data set for easy reproducibilityx = np.array([50., 50, 100, 200, 200, 300, 500])# Explicit formulamy_mu, my_sig = lognfit(x)# Fit a normal distribution to log(x)norm_mu, norm_sig = stats.norm.fit(np.log(x))# Fit the lognormal distributionlognorm_sig, _, lognorm_expmu = stats.lognorm.fit(x, floc=0)print "Explicit formula:   mu = %10.8f, sig = %10.8f" % (my_mu, my_sig)print "Fit log(x) to norm: mu = %10.8f, sig = %10.8f" % (norm_mu, norm_sig)print "Fit x to lognorm:   mu = %10.8f, sig = %10.8f" % (np.log(lognorm_expmu), lognorm_sig)

ddof=1
在std中带有选项。开发。计算以使用无偏方差估计:

In [104]: xOut[104]: array([  50.,   50.,  100.,  200.,  200.,  300.,  500.])In [105]: lognfit(x, ddof=1)Out[105]: (4.9920345004312647, 0.88236457185021866)

在matlab的lognfit文档中有一条注释,其中指出不使用审查时,lognfit使用方差的无偏估计量的平方根来计算sigma。这相当于在上面的代码中使用ddof
= 1。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号