python基于scipy拟合构建所需统计分析模型,可视化分析展示
最近的工作中有一个需求就是,给我一批历史的数据,需要我基于统计分布模型来去拟合一下原始的数据,挖掘出来数据最有可能的统计分布是怎么样的,为后面的参数区间计算或者是概率值计算提供一个指导。
下面是我手中数据的概率分布情况:
从上面的概率分布函数曲线来看并不是一个正态分布的模型,所以我们就需要来去找别的统计模型来进行拟合分析了,标准模型比如:正态分布模型、F模型等都是为了简化实际中的计算出现的,基于上述的分布形状,这里基于scipy来寻找匹配性最好的模型。
借助于自己残存的一点点统计模型知识,上述的数据分布与我印象中的F分布比较相似,这里先来看一下F分布:
基于这个思路出发,我又找出来了几个相似的分布曲线,对比如下:
上面的这些图的绘图风格都是使用了R里面ggplot的风格,换成我自己平时的风格如下:
个人还是比较喜欢下面的这种风格的,更为简洁清爽。
具体的实现代码如下:
#!usr/bin/env python
# encoding:utf-8
from __future__ import division"""
__Author__:沂水寒城
功能: 基于scipy构建所需分布模型,可视化展示
"""import matplotlib
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt#绘图设置
#matplotlib.style.use('ggplot')
color_list=['#CD853F','#DC143C','#00FF7F','#FF6347','#8B008B','#00FFFF','#0000FF','#8B0000','#FF8C00','#1E90FF','#00FF00','#FFD700','#008080','#008B8B','#8A2BE2','#228B22','#FA8072','#808080']size=1000
distribution1=stats.alpha(a=3.57, loc=0.0, scale=1.0)
distribution2=stats.betaprime(a=5, b=6, loc=0.0, scale=1.0)
distribution3=stats.burr(c=10.5, d=4.3, loc=0.0, scale=1.0)
distribution4=stats.erlang(a=2, loc=0.0, scale=1.0)
distribution5=stats.f(dfn=29, dfd=18, loc=0.0, scale=1.0)
distribution6=stats.fisk(c=3.09, loc=0.0, scale=1.0)
distribution7=stats.genextreme(c=-0.1, loc=0.0, scale=1.0)
distribution8=stats.invweibull(c=10.6, loc=0.0, scale=1.0)
distribution9=stats.recipinvgauss(mu=0.63, loc=0.0, scale=1.0)
distribution10=stats.ncf(dfn=27, dfd=27, nc=0.416, loc=0.0, scale=1.0)
#分布模型集合
distribution_list=[distribution1,distribution2,distribution3,distribution4,distribution5,distribution6,distribution7,distribution8,distribution9,distribution10]
label_list=['alpha','betaprime','burr','erlang','f','fisk','genextreme','invweibull','recipinvgauss','ncf']plt.clf()
plt.figure(figsize=(10,30))
for i in range(len(distribution_list)):plt.subplot(5,2,i+1)distribution=distribution_list[i] model_data=distribution.rvs(size=size)x = np.linspace(distribution.ppf(0.01), distribution.ppf(0.99), size)y = distribution.pdf(x)plt.plot(x,y,c=color_list[i])plt.ylabel(label_list[i])
plt.show()
感兴趣的话可以拿去实验,接下来就是依照具体的分布曲线来去一一去匹配或者是拟合原始的数据了。当然这里也可以通过显著性检验的形式来去做,在我之前的博客里面也有相关的说明和实现,感兴趣的话可以去看看。
python基于scipy拟合构建所需统计分析模型,可视化分析展示相关推荐
- Python基于Django城市PM2.5空气质量数据可视化分析
开发软件:Pycharm + Python3.7 + Django + Echarts + Mysql 实现目标:利用已经收集各个城市包括北京.上海.广州.成都.沈阳的PM2.5空气数据,利用pyth ...
- Python基于statsmodels包构建多元线性回归模型:模型构建、模型解析、模型推理预测
Python基于statsmodels包构建多元线性回归模型:模型构建.模型解析.模型推理预测 目录
- python基于模型的预测概率和标签信息可视化ROC曲线、编写自定义函数计算约登值、寻找最佳阈值(threshold、cutoff)、可视化ROC曲线并在曲线中标记最佳阈值及其数值标签
python基于模型的预测概率和标签信息可视化ROC曲线.编写自定义函数计算约登值.寻找最佳阈值(threshold.cutoff).可视化ROC曲线并在曲线中标记最佳阈值及其数值标签 目录
- 【Python】爬取中国历史票房榜,可视化分析
[Python]爬取中国历史票房榜,可视化分析 最近电影<哪吒之魔童转世>票房已经超过<流浪地球>,<复联4>.升到中国内地票房第二位.就好有哪些电影排进了历史票房 ...
- 【23年1月17日】基于Flask技术的全国气象数据采集及可视化分析系统,支持城市定制服务
基于Flask技术的全国气象数据采集及可视化分析系统 项目获取 项目简介 项目功能 项目技术 运行截图 特别说明 项目源码 项目获取 项目下载地址:是云猿实战 项目经过多人测试运行,可以确保100%成 ...
- Python获取各大企业招聘需求以及可视化分析展示
前言 大家早好.午好.晚好吖 ❤ ~欢迎光临本文章 课程亮点 1.爬虫的基本流程 2.可视化分析展示 3.requests模块的使用 4.保存csv 开发环境: python 3.8 运行代码 pyc ...
- 计算机毕业设计python基于django的学生考试成绩数据分析与可视化系统
随着社会的逐步发展,计算机网络技术对人们工作.生活影响是全面且深入的.基于计算机网络的管理系统越来越受到人们的欢迎,人们可以通过基于网络的管理系统进行实时数据信息查询.管理数据信息等,给人们的生活.工 ...
- 【python数据挖掘课程】二十八.基于LDA和pyLDAvis的主题挖掘及可视化分析
这是<Python数据挖掘课程>系列文章,前面很多文章都讲解了数据挖掘.机器学习,这篇文章主要讲解LDA和pyLDAvis算法,同时讲解如何读取CSV文本内容进行主题挖掘及可视化展示. 文 ...
- python资本市场财务数据分析_Python对股票财务数据进行可视化分析
对股票财务数据进行分析是非常必要,但因股票数据量很大,单凭浏览网页或在软件客户端查看是非常浪费精力的一件事,通过Python进行网页数据提取,将财务数据图表化会更加直观.以下代码在Python 3.6 ...
- python爬取网易云音乐评论并进行可视化分析
2019独角兽企业重金招聘Python工程师标准>>> 前言 今天为大家一个爬取网易云音乐评论的Python案例,并用Python的第三方库来进行可视化分析,生成图表样式,可以清晰地 ...
最新文章
- SpringBoot实战(十四)之整合KafKa
- Vim设置括号自动补全和快速跳出
- 团购网站的兴衰与启示
- 生产中的12种容器镜像扫描最佳实践
- 这些有趣的人,带你打开世界另一面!
- 基于umi写一个用户管理CRUD
- java实现word转pdf
- 【原理+实战】AI所有领域SOTA综述 (一)语音识别
- win10内存占用率过高怎么办_Win10系统硬盘占用率100%各种卡死怎么办?
- 面向对象编程原则(06)——依赖倒转原则
- deepin外置键盘无法打开键盘背光灯的解决方法
- 中国建设银行 APP 忘记登录密码,修改重置操作流程
- OSPF基础-个人理解
- Swift 5.6 特性
- VOLO: Vision Outlooker for Visual Recognition
- babylonJs 水材质
- 计算机强制关机后重启报错,蓝屏的时候电脑在想啥?这是我听到的最合理解释!...
- wps文字怎么上下居中
- 七夕时如何拯救躁动不安的心
- 人大金仓 创建表空间_Kingbase人大金仓数据库总结(SQL和JDBC)