对数据进行概率分布对象拟合 - MATLAB fitdist - MathWorks 中国 (2024)

Table of Contents
语法 说明 示例 对数据进行正态分布拟合 对数据进行核分布拟合 对分组数据进行正态分布拟合 对分组数据进行核分布拟合 输入参数 x — 输入数据 列向量 distname — 分布名称 字符向量 | 字符串标量 groupvar — 分组变量 分类数组 | 逻辑或数值向量 | 字符数组 | 字符串数组 | 字符向量元胞数组 名称-值参数 Censoring — 删失数据的逻辑标志0 (默认) | 逻辑值向量 Frequency — 观测值频率 1 (默认) | 非负整数值向量 Options — 控制参数 结构体 NTrials — 二项分布的试验次数 1 (默认) | 正整数值 theta — 广义帕累托分布的位置(阈值)参数 标量值 mu — 半正态分布的位置参量 标量值 Kernel — 核分布的核平滑器类型 'normal' (默认) | 'box' | 'triangle' | 'epanechnikov' Support — 核分布的核密度支持 'unbounded' (默认) | 'positive' | 二元素向量 Width — 核分布的核平滑窗带宽 标量值 输出参量 pd — 概率分布 概率分布对象 pdca — 概率分布对象 元胞数组 gn — 组标签 字符向量元胞数组 gl — 分组变量水平 字符向量元胞数组 算法 替代功能 参考 扩展功能 C/C++ 代码生成 使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。 GPU 数组 通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。 版本历史记录 另请参阅 主题 MATLAB 命令 Americas Europe Asia Pacific

对数据进行概率分布对象拟合

全页折叠

语法

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)

说明

示例

pd = fitdist(x,distname) 通过对列向量 x 中的数据进行 distname 指定的分布拟合,创建概率分布对象。

示例

pd = fitdist(x,distname,Name,Value) 使用一个或多个名称-值对组参量指定的附加选项创建概率分布对象。例如,您可以为迭代拟合算法指示删失数据或指定控制参数。

示例

[pdca,gn,gl] = fitdist(x,distname,'By',groupvar) 基于分组变量 groupvarx 中的数据进行 distname 指定的分布拟合,以创建概率分布对象。它返回拟合后的概率分布对象的元胞数组 pdca、组标签的元胞数组 gn 以及分组变量水平的元胞数组 gl

示例

[pdca,gn,gl] = fitdist(x,distname,'By',groupvar,Name,Value) 使用一个或多个名称-值对组参量指定的附加选项返回上述输出参量。例如,您可以为迭代拟合算法指示删失数据或指定控制参数。

示例

全部折叠

对数据进行正态分布拟合

打开实时脚本

对样本数据进行正态分布拟合,并使用直方图和分位数-分位数图检查拟合情况。

从数据文件 patients.mat 中加载患者体重。

load patientsx = Weight;

通过对数据进行正态分布拟合来创建正态分布对象。

pd = fitdist(x,'Normal')
pd = NormalDistribution Normal distribution mu = 154 [148.728, 159.272] sigma = 26.5714 [23.3299, 30.8674]

分布对象的输出包括均值 (mu) 和标准差 (sigma) 的参数估计值,以及每个参数的 95% 置信区间。

您可以使用 pd 的对象函数来计算分布并生成随机数。显示支持的对象函数。

methods(pd)
Methods for class prob.NormalDistribution:cdf gather icdf iqr mean median negloglik paramci pdf plot proflik random std truncate var 

例如,使用 paramci 函数获得 95% 置信区间。

ci95 = paramci(pd)
ci95 = 2×2 148.7277 23.3299 159.2723 30.8674

指定显著性水平 (Alpha) 以获得具有不同置信水平的置信区间。计算 99% 置信区间。

ci99 = paramci(pd,'Alpha',.01)
ci99 = 2×2 147.0213 22.4257 160.9787 32.4182

计算并绘制分布的 pdf 值。

x_values = 50:1:250;y = pdf(pd,x_values);plot(x_values,y)

对数据进行概率分布对象拟合 - MATLAB fitdist- MathWorks 中国 (1)

使用 histfit 函数创建具有正态分布拟合的直方图。histfit 使用 fitdist 对数据进行分布拟合。

histfit(x)

对数据进行概率分布对象拟合 - MATLAB fitdist- MathWorks 中国 (2)

直方图显示数据有两种模式,正态分布拟合模式介于这两种模式之间。

使用 qqplot 创建样本数据 x 的分位数对拟合分布的理论分位数值的分位数-分位数图。

qqplot(x,pd)

对数据进行概率分布对象拟合 - MATLAB fitdist- MathWorks 中国 (3)

绘图不是一条直线,说明数据不遵循正态分布。

对数据进行核分布拟合

打开实时脚本

从数据文件 patients.mat 中加载患者体重。

load patientsx = Weight;

通过对数据进行核分布拟合来创建核分布对象。使用依潘涅契科夫核函数。

pd = fitdist(x,'Kernel','Kernel','epanechnikov')
pd = KernelDistribution Kernel = epanechnikov Bandwidth = 14.3792 Support = unbounded

绘制分布的 pdf。

x_values = 50:1:250;y = pdf(pd,x_values);plot(x_values,y)

对数据进行概率分布对象拟合 - MATLAB fitdist- MathWorks 中国 (4)

对分组数据进行正态分布拟合

打开实时脚本

从数据文件 patients.mat 中加载患者体重和性别。

load patientsx = Weight;

通过对按患者性别分组的数据进行正态分布拟合来创建正态分布对象。

[pdca,gn,gl] = fitdist(x,'Normal','By',Gender)
pdca=1×2 cell array {1x1 prob.NormalDistribution} {1x1 prob.NormalDistribution}
gn = 2x1 cell {'Male' } {'Female'}
gl = 2x1 cell {'Male' } {'Female'}

元胞数组 pdca 包含两个概率分布对象,分别对应每个性别组。元胞数组 gn 包含两个组标签。元胞数组 gl 包含两个组水平。

查看元胞数组 pdca 中的各个分布,比较各性别的均值 mu 和标准差 sigma

female = pdca{1} % Distribution for females
female = NormalDistribution Normal distribution mu = 180.532 [177.833, 183.231] sigma = 9.19322 [7.63933, 11.5466]
male = pdca{2} % Distribution for males
male = NormalDistribution Normal distribution mu = 130.472 [128.183, 132.76] sigma = 8.30339 [6.96947, 10.2736]

计算每个分布的 pdf。

x_values = 50:1:250;femalepdf = pdf(female,x_values);malepdf = pdf(male,x_values);

对 pdf 绘图,以直观地比较各性别的体重分布。

figureplot(x_values,femalepdf,'LineWidth',2)hold onplot(x_values,malepdf,'Color','r','LineStyle',':','LineWidth',2)legend(gn,'Location','NorthEast')hold off

对数据进行概率分布对象拟合 - MATLAB fitdist- MathWorks 中国 (5)

对分组数据进行核分布拟合

打开实时脚本

从数据文件 patients.mat 中加载患者体重和性别。

load patientsx = Weight;

通过对按患者性别分组的数据进行核分布拟合来创建核分布对象。使用三角核函数。

[pdca,gn,gl] = fitdist(x,'Kernel','By',Gender,'Kernel','triangle');

查看元胞数组 pdca 中的每个分布,以了解每个性别的核分布。

female = pdca{1} % Distribution for females
female = KernelDistribution Kernel = triangle Bandwidth = 5.08961 Support = unbounded
male = pdca{2} % Distribution for males
male = KernelDistribution Kernel = triangle Bandwidth = 4.25894 Support = unbounded

计算每个分布的 pdf。

x_values = 50:1:250;femalepdf = pdf(female,x_values);malepdf = pdf(male,x_values);

对 pdf 绘图,以直观地比较各性别的体重分布。

figureplot(x_values,femalepdf,'LineWidth',2)hold onplot(x_values,malepdf,'Color','r','LineStyle',':','LineWidth',2)legend(gn,'Location','NorthEast')hold off

对数据进行概率分布对象拟合 - MATLAB fitdist- MathWorks 中国 (6)

输入参数

全部折叠

x输入数据
列向量

输入数据,指定为列向量。fitdist 忽略 x 中的 NaN 值。此外,删失向量或频数向量中的任何 NaN 值都会导致 fitdist 忽略 x 中的对应值。

数据类型: double

distname分布名称
字符向量 | 字符串标量

分布名称,指定为下列字符向量或字符串标量之一。distname 指定的分布决定返回的概率分布对象的类型。

分布名称描述分布对象
'Beta'beta 分布BetaDistribution
'Binomial'二项分布BinomialDistribution
'BirnbaumSaunders'伯恩鲍姆-桑德斯分布BirnbaumSaundersDistribution
'Burr'伯尔分布BurrDistribution
'Exponential'指数分布ExponentialDistribution
'Extreme Value''ev'极值分布ExtremeValueDistribution
'Gamma'gamma 分布GammaDistribution
'Generalized Extreme Value''gev'广义极值分布GeneralizedExtremeValueDistribution
'Generalized Pareto''gp'广义帕累托分布GeneralizedParetoDistribution
'Half Normal''hn'半正态分布HalfNormalDistribution
'InverseGaussian'逆高斯分布InverseGaussianDistribution
'Kernel'核分布KernelDistribution
'Logistic'逻辑分布LogisticDistribution
'Loglogistic'对数逻辑分布LoglogisticDistribution
'Lognormal'对数正态分布LognormalDistribution
'Nakagami'Nakagami 分布NakagamiDistribution
'Negative Binomial''nbin'负二项分布NegativeBinomialDistribution
'Normal'正态分布NormalDistribution
'Poisson'泊松分布PoissonDistribution
'Rayleigh'瑞利分布RayleighDistribution
'Rician'莱斯分布RicianDistribution
'Stable'稳定分布StableDistribution
'tLocationScale't 位置尺度分布tLocationScaleDistribution
'Weibull''wbl'威布尔分布WeibullDistribution

groupvar分组变量
分类数组 | 逻辑或数值向量 | 字符数组 | 字符串数组 | 字符向量元胞数组

分组变量,指定为分类数组、逻辑或数值向量、字符数组、字符串数组或字符向量元胞数组。分组变量中的每个唯一值定义一个组。

例如,如果 Gender 是字符向量元胞数组,其值为 'Male''Female',则您可以使用 Gender 作为分组变量,按性别对数据进行分布拟合。

通过指定包含分组变量的元胞数组,可以使用多个分组变量。所有指定分组变量的值相同的观测值会放在同一个组中。

例如,如果 Smoker 是逻辑向量,其中值为 0 表示非吸烟者,值为 1 表示吸烟者,则指定元胞数组 {Gender,Smoker} 会将观测值分为四组:男性吸烟者、男性非吸烟者、女性吸烟者和女性非吸烟者。

示例: {Gender,Smoker}

数据类型: categorical | logical | single | double | char | string | cell

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: fitdist(x,'Kernel','Kernel','triangle') 使用三角核函数对 x 中的数据进行核分布对象拟合。

Censoring删失数据的逻辑标志
0 (默认) | 逻辑值向量

指示删失数据的逻辑标志,指定为与输入向量 x 大小相同的逻辑值向量。当 x 中的对应元素是右删失观测值时,该值为 1,当对应元素是精确观测值时,该值为 0。默认值为由 0 组成的向量,表示所有观测值均为准确的。

fitdist 会忽略此删失向量中的任何 NaN 值。此外,x 或频率向量中的任何 NaN 值都会导致 fitdist 忽略删失向量中的对应值。

仅当 distname'BirnbaumSaunders''Burr''Exponential''ExtremeValue''Gamma''InverseGaussian''Kernel''Logistic''Loglogistic''Lognormal''Nakagami''Normal''Rician''tLocationScale''Weibull' 时,此参量才有效。

数据类型: logical

Frequency观测值频率
1 (默认) | 非负整数值向量

观测值频率,指定为与输入向量 x 大小相同的非负整数值向量。频率向量的每个元素指定 x 中对应元素的频率。默认值为由 1 组成的向量,表示 x 中的每个值仅出现一次。

fitdist 忽略此频率向量中的任何 NaN 值。此外,x 或删失向量中的任何 NaN 值都会导致 fitdist 忽略频率向量中的对应值。

数据类型: single | double

Options控制参数
结构体

迭代拟合算法的控制参数,指定为使用 statset 创建的结构体。

数据类型: struct

NTrials二项分布的试验次数
1 (默认) | 正整数值

二项分布的试验次数,指定为正整数值。

仅当 distname'Binomial'(二项分布)时,此参量才有效。

示例: 'Ntrials',10

数据类型: single | double

theta广义帕累托分布的位置(阈值)参数
标量值

广义帕累托分布的位置(阈值)参数,指定为标量。

仅当 distname'Generalized Pareto'(广义帕累托分布)时,此参量才有效。

当样本数据 x 仅包括非负值时,默认值为 0。如果 x 包含负值,则必须指定 theta

示例: 'theta',1

数据类型: single | double

mu半正态分布的位置参量
标量值

半正态分布的位置参量,指定为标量。

仅当 distname'Half Normal'(半正态分布)时,此参量才有效。

当样本数据 x 仅包括非负值时,默认值为 0。如果 x 包含负值,则必须指定 mu

示例: 'mu',1

数据类型: single | double

Kernel核分布的核平滑器类型
'normal' (默认) | 'box' | 'triangle' | 'epanechnikov'

核分布的核平滑器类型,指定为以下项之一:

  • 'normal'

  • 'box'

  • 'triangle'

  • 'epanechnikov'

您必须将 distname 指定为 'Kernel' 才能使用此选项。

Support核分布的核密度支持
'unbounded' (默认) | 'positive' | 二元素向量

核分布的核密度支持,指定为 'unbounded''positive' 或二元素向量。

描述
'unbounded'密度可以取任意实数。
'positive'密度仅限于正值。

您也可以指定二元素向量,给定支持密度的有限下限和上限。

您必须将 distname 指定为 'Kernel' 才能使用此选项。

数据类型: single | double | char | string

Width核分布的核平滑窗带宽
标量值

核分布的核平滑窗带宽,指定为标量值。fitdist 使用的默认值为估计正态密度的最佳值,但您可能希望选择较小的值来显示一些特征,比如多个众数。您必须将 distname 指定为 'Kernel' 才能使用此选项。

数据类型: single | double

输出参量

全部折叠

pd — 概率分布
概率分布对象

概率分布,以概率分布对象形式返回。distname 指定的分布决定返回的概率分布对象的类的类型。有关 distname 值和对应概率分布对象的列表,请参阅 distname

pdca — 概率分布对象
元胞数组

distname 指定类型的概率分布对象,以元胞数组形式返回。有关 distname 值和对应概率分布对象的列表,请参阅 distname

gn — 组标签
字符向量元胞数组

组标签,以字符向量元胞数组形式返回。

gl — 分组变量水平
字符向量元胞数组

分组变量水平,以字符向量元胞数组形式返回,每个分组变量对应于其中包含的一列。

算法

fitdist 函数使用最大似然估计来拟合大多数分布。两个例外是带有未删失数据的正态分布和对数正态分布。

  • 对于未删失的正态分布,sigma 参数的估计值是方差的无偏估计值的平方根。

  • 对于未删失的对数正态分布,sigma 参数的估计值是数据对数的方差的无偏估计值的平方根。

替代功能

  • 分布拟合器打开一个图形用户界面,以便您从工作区导入数据,并以交互方式对该数据进行概率分布拟合。然后,您可以将分布作为概率分布对象保存到工作区。使用 distributionFitter 打开分布拟合器,或点击 App 选项卡上的“分布拟合器”。

  • 要对左删失、双删失或区间删失数据进行分布拟合,请使用 mle。您可以使用 mle 函数找到最大似然估计值,并使用 makedist 函数创建一个概率分布对象。有关示例,请参阅Find MLEs for Double-Censored Data

参考

[1] Johnson, N. L., S. Kotz, and N. Balakrishnan. Continuous Univariate Distributions. Vol. 1, Hoboken, NJ: Wiley-Interscience, 1993.

[2] Johnson, N. L., S. Kotz, and N. Balakrishnan. Continuous Univariate Distributions. Vol. 2, Hoboken, NJ: Wiley-Interscience, 1994.

[3] Bowman, A. W., and A. Azzalini. Applied Smoothing Techniques for Data Analysis. New York: Oxford University Press, 1997.

扩展功能

版本历史记录

在 R2009a 中推出

另请参阅

makedist | distributionFitter | paramci | histfit | mle | qqplot

主题

  • Working with Probability Distributions
  • Supported Distributions

MATLAB 命令

您点击的链接对应于以下 MATLAB 命令:

 

请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。

对数据进行概率分布对象拟合 - MATLAB fitdist- MathWorks 中国 (7)

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

Americas

Europe

Asia Pacific

Contact your local office

对数据进行概率分布对象拟合 - MATLAB fitdist
- MathWorks 中国 (2024)
Top Articles
Latest Posts
Article information

Author: Aracelis Kilback

Last Updated:

Views: 5709

Rating: 4.3 / 5 (64 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Aracelis Kilback

Birthday: 1994-11-22

Address: Apt. 895 30151 Green Plain, Lake Mariela, RI 98141

Phone: +5992291857476

Job: Legal Officer

Hobby: LARPing, role-playing games, Slacklining, Reading, Inline skating, Brazilian jiu-jitsu, Dance

Introduction: My name is Aracelis Kilback, I am a nice, gentle, agreeable, joyous, attractive, combative, gifted person who loves writing and wants to share my knowledge and understanding with you.