Matlab 绘制数据的概率分布图 & 概率密度的构造

流浪猪头拯救地球 2024-08-01 12:05:01 阅读 51

文章目录

Part.I IntroductionPart.II 绘图Part.III 概率密度的构造Chap.I makedist 函数解析Chap.II 使用方法

Part.I Introduction

本文主要介绍一下如何使用 Matlab 来绘制数据的分布频数分布直方图、概率密度曲线和累积分布曲线等;另外还介绍了如何用 makedist 函数来构造概率密度。

在这里插入图片描述

Part.II 绘图

一个小总结

<code>clc;clear

% 构造数据, 生成 10000 个服从 N(3,4) 正态分布的数据

Data=normrnd(3,4,10000,1);

% [yy1,xx1]=ksdensity(Data); % 直接得到频率 yy1

% 首先得到频数

[counts,centers] = hist(Data,100);

% 计算频率

frequency = counts / sum(counts);

% 注意,这里是要除以步长的!!!

frequency1 = frequency / (centers(2)-centers(1));

% 计算累积频率

cum_frequency=cumsum(frequency,2);

% 绘图

hist(Data,100)

figure

plot(centers,frequency1)

figure

plot(centers,cum_frequency)


首先准备数据,这里用随机数生成正态分布的一组数据。

% 构造数据, 生成 10000 个服从 N(3,4) 正态分布的数据

Data=normrnd(3,4,10000,1);

然后绘制频数分布直方图

hist(Data,100)// 100 个长条

在这里插入图片描述

绘制频率密度曲线 (方法一)

<code>// 首先得到频数

[counts,centers] = hist(Data,100);

// 计算频率

frequency = counts / sum(counts);

// 注意,这里是要除以步长的!!!

frequency1 = frequency / (centers(2)-centers(1));

// 绘制频率密度曲线

plot(centers,frequency1)

在这里插入图片描述

上面这个图就是因为没有除以步长,所以纵坐标才比较小。

绘制累积分布曲线

<code>% 计算累积频率,这里用的是 frequency,而不是 frequency1

cum_frequency=cumsum(frequency,2);

plot(centers,cum_frequency)

在这里插入图片描述

绘制频率密度曲线 (方法二)

<code>% 注意:这里又随机生成了一组数据,和之前的那组数据已经不一样了。

Data=normrnd(3,4,10000,1);

[yy1,xx1]=ksdensity(Data);

plot(xx1,yy1)

在这里插入图片描述

这个曲线或许比方法一的曲线要平滑一些。

Part.III 概率密度的构造

这部分介绍如何构造一个指定分布的概率密度函数。

Chap.I makedist 函数解析

makedist 的用法如下:

<code>pd = makedist(distname)

pd = makedist(distname,Name,Value)

list = makedist

输入参数:

distname:分布的名称Name:参数的名字Value:参数的值

输出参数:

pd:概率分布

支持的分布名有:

在这里插入图片描述

示例代码如下:

<code>// 构造一个稳定分布

pd1 = makedist('Stable','alpha',2,'beta',0,'gam',1,'delta',0);

x = -5:.1:5;

pdf1 = pdf(pd1,x);

-------------------------------------------------------------------

pd1 =

StableDistribution

Stable distribution

alpha = 2

beta = 0

gam = 1

delta = 0

上面的代码构造了一个稳定分布,指定了参数

α

=

2

,

β

=

0

,

γ

=

1

,

μ

=

0

\alpha=2,\beta=0,\gamma=1,\mu=0

α=2,β=0,γ=1,μ=0。

Chap.II 使用方法

有时候不知道一个分布在 Matlab 中有几个参数,各个参数的名称是什么,可以首先用下面的代码进行试探

pd2=makedist('Burr')

然后点击蓝色文字查看帮助文档

在这里插入图片描述

在理解了各个参数之后,再按自己的需求对各个参数进行赋值,进而生成自己所需的概率密度函数:

<code>pd2=makedist('Burr','alpha',2,'c',3,'k',4);

pts=linspace(-5,5,1000);

y = pdf(pd2,pts);

plot(pts,y);

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。