Matlab 之数据分布拟合

news2024/11/24 16:17:19

文章目录

  • Part.I Introduction
  • Part.II Distribution Fitter APP 的使用
    • Chap.I APP 简介
    • Chap.II 简单使用
  • Part.III 通过代码实现分布拟合
    • Chap.I 基于 fitdist 函数
    • Chap.II 获取数据的频率分布后进行曲线拟合
  • Reference

Part.I Introduction

本文主要介绍了如何使用 Matlab 对数据的分布进行拟合。也就是 笔者对实现『用 Matlab 拟合出数据的概率分布密度函数』这个目标所进行的一些探索。

在这里插入图片描述

Part.II Distribution Fitter APP 的使用

Chap.I APP 简介

此 APP 界面如下所示:
在这里插入图片描述
其中Display type 有如下几种:

  • Density (PDF):概率密度
  • Cumulative probability CDF:累积概率分布
  • Quantile (inverser CDF):分位数 (逆 CDF)
  • Probability plot:概率图
  • Survivor funciton:剩余函数
  • Cumulative hazard:累积危险函数

分布类型如下表所示

在这里插入图片描述
每种分布得到的拟合参数的个数和名字或将不同,这些可以参看 Matlab 的帮助文档。


Chap.II 简单使用

下面的一个图就是利用此 APP 生成的,上手很简单。

在这里插入图片描述

Part.III 通过代码实现分布拟合

Chap.I 基于 fitdist 函数

fitdist 函数或许就是 Distribution Fitter APP 底层实现的一个最为重要的核心函数。

首先介绍一下 fitdist 函数,它可以对数据进行概率分布对象拟合,常用的调用方法为:

pd = fitdist(x,distname)		// 一般用这个足矣
pd = fitdist(x,distname,Name,Value)
[pdca,gn,gl] = fitdist(x,distname,'By',groupvar)
[pdca,gn,gl] = fitdist(x,distname,'By',groupvar,Name,Value)

首先是输入参数:

  • x:待进行分布拟合的数据
  • distname:分布名称,参看上面『分布类型表』
  • groupvar:分组变量,暂时用不到,之后可看说明文档

然后是输出参数:

  • pd:概率分布,可用a = pd.a 来获取参数估值 a,一般用这个就行。
  • pdca:概率分布对象
  • gn:组标签
  • gl:分组变量水平

下面是一个示例:

clc;clear
% 构造数据, 生成 10000 个服从 0~1 正态分布的数据
Data=randn(10000,1);
% 正态分布拟合
pd = fitdist(Data,'Normal');
a=pd.mu; b=pd.sigma;
% 绘图
pts=linspace(-5,5,1000);
[yy,xx]=ksdensity(Data,pts);
yy1=normpdf(xx,a,b);
% 绘制概率分布图
plot(xx,yy)
hold on
% 绘制拟合结果
plot(xx,yy1)
legend(['raw';'fit']);

绘图结果如下:
在这里插入图片描述

Chap.II 获取数据的频率分布后进行曲线拟合

首先获取数据的频率分布(这一步比较关键)

// 获得的 xx1 和 yy1 只有100个点
[yy1,xx1]=ksdensity(Data);
// 通过 pts 来控制点的个数
pts = linspace(-20,20,1000);
// 根据 pts 获取数据的频率分布
[yy,xx]=ksdensity(Data,pts);

得到数据的概率分布之后,接下来实际上就是曲线拟合了!


下面是一个示例

clc;clear
% 构造数据, 生成 10000 个服从 N(0,5) 正态分布的数据
Data=normrnd(0,5,10000,1);
% 通过 pts 来控制点的个数
pts = linspace(-20,20,1000);
% 根据 pts 获取数据的频率分布
[yy,xx]=ksdensity(Data,pts);
% 定义拟合的公式
%fitEquation = fittype('1/(2*a)*exp(-abs(x-b)/a)', 'coefficients', {'a', 'b'});  % Laplace 分布
fitEquation = fittype('1/sqrt(2*pi)/b*exp(-(x-a)*(x-a)/(2*b*b))', 'coefficients', {'a', 'b'});
% 确定初值
initialGuess = [1, 6];
% 进行曲线拟合
fittedModel = fit(xx', yy', fitEquation, 'StartPoint', initialGuess);
% 展示拟合结果
disp(fittedModel);
% 绘图
plot(xx,yy)
hold on
a=fittedModel.a; b=fittedModel.b;
% yy1=1/(2*a)*exp(-abs(xx-b)/a);  % Laplace 分布
yy1=1/sqrt(2*pi)/b*exp(-(xx-a).*(xx-a)/(2*b*b));
plot(xx,yy1)
legend(['raw';'fit']);

得到的分布拟合结果为:

General model:
fittedModel(x) = 1/sqrt(2*pi)/b*exp(-(x-a)*(x-a)/(2*b*b))
Coefficients (with 95% confidence bounds):
    a =    0.008658  (-0.001162, 0.01848)
    b =       5.084  (5.076, 5.092)

绘图结果为:

在这里插入图片描述

Reference

  1. Matlab 之曲线拟合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1372843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux学习记录——삼십팔 网络层IP协议

文章目录 1、了解IP协议2、IP协议报文1、8位服务类型2、16位总长度(字节数)3、8位生存时间(TTL) 3、网段划分1、网段划分和CIDR方案2、子网划分简单方法3、IP地址问题的解决方案 4、公网内网1、内网分配2、运营商管理方法 5、路由…

2024年3月10日PMI认证考试的报名时间确定!

⏰中国大陆地区2024年第1期PMI认证考试于3月10日举办 ⏰报名时间: 为减少同一时间集中报名造成的网络拥堵,本次报名将采取以下形式分地区、分批次开放报名。👇 1️⃣第1批报名城市:⏰2024年1月11日10:00至1月18日16:00&#xff0c…

【昕宝爸爸定制】如何将集合变成线程安全的?

如何将集合变成线程安全的? ✅典型解析🟢拓展知识仓☑️Java中都有哪些线程安全的集合?🟠线程安全集合类的优缺点是什么🟡如何选择合适的线程安全集合类☑️如何解决线程安全集合类并发冲突问题✔️乐观锁实现方式 (具体步骤)。✅…

基于 Validator 类实现 ParamValidator,用于校验函数参数

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、代码实现3、测试代码4、日志输出 三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器,从编码到发布全过程》 2、相关回顾 使用 TypeV…

dubbo的springboot集成

1.什么是dubbo? Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo …

vmlinux, System.map; cmake的find_package(Clang)产生的变量们; geogebra单位切向量(简单例子)

linux4.15.y内核中的函数个数 依赖关系: vmlinux, vmlinux.bin, bzImage cd /bal/linux-stable/ file vmlinux #vmlinux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, BuildID[sha1]b99bbd9dda1ec2751da246d4a7ae4e6fcf7d789b, not str…

Git远端删除的分支,本地依然能看到 git remote prune origin

在远端已经删除ylwang_dev_786等三四个分支,本地git branch -a 时 依然显示存在。 执行 git remote show origin 会展示被删除的那些分支 当你在Git远程仓库(如GitLab)上删除一个分支后,这个变更不会自动同步到每个开发者的本地…

【教学类-45-01】X-Y之间的“三连加“题(a+b+c=)

作品展示: 背景需求: 我常去的大4班孩子们基本都适应了0-5之间的加法题,做题速度极快。 为了增加“花样”,吸引幼儿参与,修改参数,从二连加12变为三连加111。 素材准备: 代码重点 代码展示 X-Y 之间的3…

springboot基于java的小区物业管理系统(保安巡逻绿化消防)设计+jsp

小区物业管理系统采用的是JAVA语言开发,利用MySQL为数据库, 使用IDEA平台来编写代码,框架方面选择的是springbootweb框架,采用B/S结构实现系统。本系统的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式&…

uniapp最简单的底部兼容安全区域显示

效果图&#xff1a; 1.html写上动态padding-bottom <view class"button-wrap" :style"padding-bottom:bottomPaddingrpx"><view class"com-btn cencel-btn">取消</view><view class"com-btn confirm-btn " cl…

Xcalibur软件Qual Brower程序的使用

找到Qual Brower&#xff1a;在System>Program里 打开采集的数据文件*.RAW&#xff0c;软件界面主窗口能查看色谱图和质谱图&#xff1a; 1、图形的放大和拷贝、色谱中查看峰的质谱信息&#xff1a; 点亮如图图像右上角的按钮&#xff0c;可以激活该图形并进行操作&#x…

前端 Node 项目迁徙为桌面 Electron 应用笔记

起因 我的服务器到期了&#xff0c;服务器上有几个服务&#xff0c;人家问这几个网站怎么不好使了&#xff0c;奈何服务器续费太贵租不起了… 但是服务还是要提供的&#xff0c;所以我在想如何把 node 的项目变成桌面端应用&#xff0c;于是有了这个笔记 效果展示 页面没啥…

强化学习10——免模型控制Q-learning算法

Q-learning算法 主要思路 由于 V π ( s ) ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V_\pi(s)\sum_{a\in A}\pi(a\mid s)Q_\pi(s,a) Vπ​(s)∑a∈A​π(a∣s)Qπ​(s,a) &#xff0c;当我们直接预测动作价值函数&#xff0c;在决策中选择Q值最大即动作价值最大的动作&…

如何寻找到相对完整的真正的游戏的源码 用来学习?

在游戏开发的学习之路上&#xff0c;理论与实践是并重的两个方面。对于许多热衷于游戏开发的学习者来说&#xff0c;能够接触到真实的、完整的游戏源码无疑是一个极好的学习机会。但问题来了&#xff1a;我们该如何寻找到这些珍贵的资源呢&#xff1f; 开源游戏项目 GitHub:地…

BUUCTF ---> Encrypto

转眼就一月十号了&#xff0c;本来今天不想更的&#xff0c;&#xff08;因为我懒&#xff09;是因为明天要考python&#xff0c;好像还不止 但是呢&#xff0c;发现BUUCTF的密码学模块刚好可以用到py的脚本&#xff0c;那就当时复习一下吧&#xff01;&#xff01; 这里就要介…

http跟https有什么区别?

HTTPS和HTTP的概念&#xff1a; HTTP&#xff1a;是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;TCP&#xff09;&#xff0c;用于从WWW服务器传输超文本到本地浏览器的传输协议&#xff0c;它可以使浏览器更加高效&am…

2024--Django平台开发-Django知识点(六)

day06 Django知识点 今日概要&#xff1a; Form和ModelForm组件【使用】【源码】缓存【使用】ORM【使用】其他&#xff1a;ContentTypes、Admin、权限、分页、信号等 1.Form和ModelForm组件 背景&#xff1a;某个公司后台管理项目。 垃圾 def register(request):"&quo…

Qt/QML编程学习之心得:hicar手机投屏到车机中控的实现(32)

hicar,是华为推出的一款手机APP,有百度地图、华为音乐,更多应用中还有很多对应手机上装在的其他APP,都可以在这个里面打开使用,对开车的司机非常友好。但它不仅仅是用在手机上,它还可以投屏到车机中控上,这是比较神奇的一点。 HiCar本质上是一套智能投屏系统,理论上所有…

人工智能复习

机器学习中线性回归和逻辑回归&#xff1a; 机器学习的分类&#xff1a; 监督学习和无监督学习&#xff0c;半监督学习 监督学习&#xff08;Supervised Learning&#xff09;&#xff1a; 监督学习是一种利用带有标签&#xff08;标记&#xff09;的数据进行训练的机器学习…

用友U8流程审批效率-SQLServer+SSRS

文章目录 @[TOC]1、 需求及效果1.1 需求1.2 效果2、 思路及SQL语句3、实现折叠明细表4、结语1、 需求及效果 1.1 需求 想要查看U8的审批流程,查看流程在哪个节点或人停留的时间,这个单据整个流程走下来需要的时间。可以更加直观方便的查看审批效率 1.2 效果 采用了SSRS上…