scipy.stats.lognorm使用心得

1.定义

若logx服从正态分布,则x服从对数正态分布

2.参数设置

lognorm.rvs(s, loc=0, scale=1, size=1)中的参数s,loc,scale, 要记住:loc和scale并不是我们通常理解的对数变化后数据的均值mu和标准差sigma

lognorm.pdf(x, s)
1 / (s*x*sqrt(2*pi)) * exp(-1/2*(log(x)/s)**2) for x > 0, s > 0.
m1=lognorm.pdf(x, s=estimated_sigma,scale=exp(estimated_mu))
m2=1 / (s*x*sqrt(2*pi)) * exp(-1/2*((log(x)-estimated_mu)/s)**2)
(以上两种计算最后差异可以忽略不计)
lognorm takes s as a shape parameter.
The probability density above is defined in the “standardized” form. To shift and/or scale the distribution use the loc and scale parameters. Specifically, lognorm.pdf(x, s, loc, scale) is identically equivalent to lognorm.pdf(y, s) / scale with y = (x - loc) / scale.

logX服从n(mu,sigma^2),需要令lognorm中的参数s=sigma,loc=0,scale=exp(mu)

lognorm.pdf(x, 0.55, 0, numpy.exp(4.29)) where the arguments are (x, shape, loc, scale)

3.使用.fit进行参数估计

import numpy as np

from scipy import stats

x = 2 * np.random.randn(10000) + 7.0 # normally  distributed values

y = np.exp(x) # these values have lognormal distribution

s, loc, scale = stats.lognorm.fit(y, floc=0)

estimated_mu = np.log(scale)

estimated_sigma = s

s, loc, scale = lognorm.fit([k if k>0 else k+1 for k in train_Ds[i]],floc=0)# floc=-0.00000001)

estimated_mu = np.log(scale)
estimated_sigma = s        
mu_sig[i].extend([estimated_mu,estimated_sigma])

或者

stats.lognorm匹配的另一种方法是匹配log(data) 使用stats.norm.fit

logdata = np.log(data)
estimated_mu, estimated_sigma = stats.norm.fit(logdata)

python中的对数正态分布 - 问答 - Python中文网https://stackoverflow.com/questions/18534562/scipy-lognormal-fittinghttps://stackoverflow.com/questions/18534562/scipy-lognormal-fittingFitting Lognormal Data

4.其他方法

scipy.stats.lognorm — SciPy v1.7.1 Manual

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值