文章目录

  • 韦伯分布的定义
  • 拟合方法的原理
  • python代码实现
  • 参考

韦伯分布的定义

本文为博主原创文章,未经博主允许不得转载。

二参数韦伯分布的累计分布函数CDF为:F(x)=1−exp[−(xb)a]F(x) = 1 - exp[ - (\frac{x}{b})^a ] F(x)=1−exp[−(bx​)a]

概率密度函数为:
f(x)=ab(xb)a−1exp[−(xb)a]f(x) = \frac{a}{b}(\frac{x}{b})^{a-1} exp[-(\frac{x}{b})^a] f(x)=ba​(bx​)a−1exp[−(bx​)a]

其中,a>0,为形状参数,b>0为尺度参数

拟合方法的原理

采用最小二乘法求解参数a,b:

对累计分布函数两边取双对数后可以得到:ln[−ln(1−F(x))]=aln(x)−alnbln[-ln(1-F(x))] = a ln(x) - a lnb ln[−ln(1−F(x))]=aln(x)−alnb

改写为Y=Bx+A,则:

Y=ln[−ln(1−F(x))]Y = ln[-ln(1-F(x))] Y=ln[−ln(1−F(x))]

X=ln(x)X = ln(x) X=ln(x)

B=aB = a B=a

A=−alnbA = -alnb A=−alnb

用最小二乘法求解系数:

B=∑(Xi−Xˉ)(Yi−Yˉ)∑(Xi−Xˉ)2B = \frac{\sum (X_i - \bar X)(Y_i - \bar Y)}{\sum (X_i - \bar X)^2} B=∑(Xi​−Xˉ)2∑(Xi​−Xˉ)(Yi​−Yˉ)​
A=Yˉ−bXˉA = \bar{Y} - b \bar{X} A=Yˉ−bXˉ
a=Ba = B a=B
b=exp[−(Yˉ−BXˉ)/a]b = exp[-(\bar{Y}-B \bar{X})/a] b=exp[−(Yˉ−BXˉ)/a]

python代码实现

from scipy.stats import exponweib
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
import mathdef Cal_Weibull_CDF(data):cdf = sm.distributions.ECDF(data)data_min = min(data)data_max = max(data)x = np.linspace(data_min+1.0,data_max-1.0,num=100,endpoint=True)X = np.log(x) # X = ln(x)Y = np.log(-np.log(1.0-cdf(x))) # Y = ln[-ln[1-F(x)]]coef = np.polyfit(X,Y,1)a = coef[0]b = math.exp(-coef[1]/a)fcdf = lambda x: 1-np.exp(-np.power(x/b,a))return fcdf# 用exponweib生成符合weibull分布的随机数组
n = 100     # number of samples
k = 2.89    # shape
lam = 1.95  # scale
obs = exponweib.rvs(k, lam, scale=20,size=n)ocdf = sm.distributions.ECDF(obs)
# 拟合
fcdf = Cal_Weibull_CDF(obs) # 画图
x = np.linspace(0,50,num=100,endpoint=True)
y1 = ocdf(x)
y2 = fcdf(x)plt.figure()
plt.plot(x,y1,color='blue',label='O')
plt.plot(x,y2,color='black',label='F')
plt.legend()
plt.show()

拟合结果:

参考

  1. Weibull分布参数估计方法及其应用_张秀芝

【Python】韦伯分布的拟合相关推荐

  1. Python——fitter包:拟合样本数据的分布

    Python--fitter包:拟合样本数据的分布 安装fitter 使用样例 fitter.Fitter()介绍 安装fitter pip install fitter 使用样例 # 数据生成 fr ...

  2. Python fitter包:拟合数据样本的分布

    Python fitter包:拟合样本数据的分布 安装fitter 生成一段模拟数据 利用fitter拟合数据样本的分布 方法详解 Fitter方法 Fitter返回 参考 安装fitter pip ...

  3. 韦伯分布(威布尔分布,Weibull distribution)

    韦伯分布(Weibull distribution) 一般用来统计可靠性或寿命检验时用,例如:预计在有效寿命阶段有多少次保修索赔?预计将在 8 小时老化期间失效的保险丝占多大百分比? 在管理科学与工程 ...

  4. python 如何用指数函数拟合数据?(2020年新型冠状病毒感染人数预测)

    # -*- coding: utf-8 -*- """ @File : 200124_指数曲线拟合.py @Time : 2020/1/24 22:26 @Author ...

  5. python画折线图代码实现_python如何绘制分布折线图 python绘制分布折线图代码示例...

    python如何绘制分布折线图?本篇文章小编给大家分享一下python绘制分布折线图代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 用Pyth ...

  6. python不同曲线设置标签_python 绘制拟合曲线并加指定点标识的实现 Python怎么实现非线性的拟合...

    Python 怎么用曲线拟合数据 我有两组数据: y = [41.417, 49.077, 26.683, 42.137, 37.31, 10.022, Python中利用guiqwt进行曲线数据拟合 ...

  7. python画抛物线_在python中利用最小二乘拟合二次抛物线函数的方法

    1.最小二乘也可以拟合二次函数 我们都知道用最小二乘拟合线性函数没有问题,那么能不能拟合二次函数甚至更高次的函数呢?答案当然是可以的.下面我们就来试试用最小二乘来拟合抛物线形状的的图像. 对于二次函数 ...

  8. python指数、幂数拟合curve_fit

    python指数.幂数拟合curve_fit 1.一次二次多项式拟合 一次二次比较简单,直接使用numpy中的函数即可,polyfit(x, y, degree). 2.指数幂数拟合curve_fit ...

  9. Java代码韦伯分布_韦伯分布的随机数

    一.功能 产生韦伯分布的随机数. 二.方法简介 韦伯分布的概率密度函数为 \[f(x)=\left\{\begin{matrix} \frac{\alpha }{\beta^{\alpha } }x^ ...

最新文章

  1. Linux state 方式 安装nginx 服务
  2. android 快速 顶部,Android RecyclerView 快速滑到顶部
  3. Linux下用户管理
  4. linux 下创建文件的方法
  5. Silverlight - IIS 7.5 部署SilverLight4网站以及问题解决
  6. $(document).ready()和window.onload之间的差异
  7. java类初始化顺序_Java 类的初始化顺序
  8. Java 11:String类中的新方法
  9. 哪位有Castle Project Generators,邮给我一份 (deerchao at gmail dot com),谢谢。
  10. 2010年“最具全球竞争力中国公司20强”榜单:
  11. 自主开发的3D打印软件
  12. 海康威视sdk语音转发(实现)implementation ‘com.hikvision.ezviz:ezviz-sdk:4.8.3‘(修改)
  13. 计算机相关的议论主题,关于议论文的题目大全
  14. 计算机word文档技巧,Word文档操作技巧:同时打开多个文档3种方法-word技巧-电脑技巧收藏家...
  15. 桌面多出一个IE图标无法删除的解决办法
  16. Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐
  17. double free or corruption (!prev)
  18. 安装U8时检测后无法安装MDAC_TYP组件解决方案
  19. 数仓搭建——ODS层
  20. 护卫神·云查杀系统V4.0-安全检测部分

热门文章

  1. 数字时钟程序c语言,数字时钟C语言源程序
  2. matlab htk tools,基于HTK调用MATLAB的语音识别的研究
  3. loadrunner12.6版本,不显示监控图标怎么办?
  4. openSession()到底做了什么
  5. AJAX无法找到不执行或者报错原因时?你该这样做
  6. java获取字符串长度_java中定义字符串String s=”pzhu”,下面操作可以取得字符串长度的是( )。...
  7. 没想到你是这样的京东!论京东的品牌价值观
  8. 2017年最好的JavaScript插件
  9. 2022年人工智能学习路线图,清楚明确
  10. 爬虫 -----beautifulsoup、Xpath、re (二)附爬取丁香园用户名以及回复内容