这个例子展示了如何适应一个定制的分布利用单变量数据大中型企业
函数。
您可以使用大中型企业
函数计算极大似然参数估计和估计精度的内置的分布和自定义分布。适合一个定制的分布,需要定义一个函数自定义分布在一个文件中,或者通过使用一个匿名函数。在最简单的情况下,您可以编写代码来计算概率密度函数(pdf)或pdf的对数分布要合适,然后调用大中型企业
以适应分布。这个例子包括下列情形使用pdf格式的pdf或对数:
拟合分布截断数据
拟合两个分布的混合物
合适的权重分布
找到准确的参数估计的置信区间为小型样品使用参数转换
请注意,您可以使用TruncationBounds名称-值参数大中型企业
截断数据,而不是定义一个自定义函数。同时,对于两个正态分布的混合,可以使用fitgmdist
函数。下面的例子使用了大中型企业
对这些情况下函数和自定义函数。
计数数据通常是使用泊松分布建模,并可以使用poissfit
或fitdist
函数符合泊松分布。然而,在某些情况下,计数为零没有记录在数据,拟合泊松分布并不是简单的因为那个失踪的0。在这种情况下,符合泊松分布zero-truncated数据使用大中型企业
函数和一个定制的分布函数。
首先,生成一些随机泊松数据。
rng (18,“旋风”)%的再现性λ= 1.75;n = 75;x1 = poissrnd(λ,n, 1);
接下来,删除所有的零数据模拟截断。
x1 = x1 (x1 > 0);
检查样品的数量x1
后截断。
长度(x1)
ans = 65
画一个柱状图的模拟数据。
直方图(x1, 0:1:马克斯(x1) + 1)
数据看起来像一个泊松分布除了它不含0。您可以使用一个定制的分布与泊松分布在正整数,但没有概率为零。通过使用一个定制的分布,可以估算出泊松参数λ
而占失踪的0。
您需要定义zero-truncated泊松分布的概率质量函数(及)。创建一个匿名函数来计算每个点的概率x1
泊松分布,给定一个值的平均参数λ
。zero-truncated的及泊松分布的泊松及规范化,总结。与零截断,规范化1-Probability (x1 < 0)
。
pf_truncpoiss = @ (x1,λ)poisspdf (x1,λ)。/ (1-poisscdf(0,λ));
为简单起见,假设所有的x1
给这个函数值是正整数,没有检查。错误检查或更复杂的分布,超过一行代码,您必须在一个单独的文件中定义的函数。
找到一个合理的参数第一个猜测λ
。在这种情况下,使用样本均值。
开始=意味着(x1)
开始= 2.2154
提供大中型企业
与数据、自定义及功能,初始参数值,参数的下界。由于泊松分布的均值参数必须是积极的,您还需要指定一个下界λ
。的大中型企业
函数返回的最大似然估计λ
,可选参数的近似95%置信区间。
[lambdaHat, lambdaCI] =大中型企业(x1,“pdf”pf_truncpoiss,“开始”开始,…下界的,0)
lambdaHat = 1.8760
lambdaCI =2×11.4990 - 2.2530
参数估计是小于样本均值。最大似然估计占0没有出现在数据。
另外,您可以通过使用指定截断边界TruncationBounds名称-值参数。
[lambdaHat2, lambdaCI2] =大中型企业(x1,“分布”,“泊松”,…“TruncationBounds”[0正])
lambdaHat2 = 1.8760
lambdaCI2 =2×11.4990 - 2.2530
你也可以计算的标准误差估计λ
通过大样本方差近似返回mlecov
。
阿瓦尔人= mlecov (lambdaHat x1,“pdf”,pf_truncpoiss);stderr =√阿瓦尔人
stderr = 0.1923
目视检查健康,画出拟合及原始数据的归一化直方图
直方图(x1,“归一化”,“pdf”)xgrid =最小(x1):最大(x1);pmfgrid = pf_truncpoiss (xgrid lambdaHat);持有在情节(xgrid pmfgrid,“- - -”)包含(x1的)ylabel (“概率”)传说(样本数据的,的安装及,“位置”,“最佳”)举行从
连续数据有时b截断。例如,观察比某些固定值可能不是记录由于数据收集的局限性。
在这种情况下,模拟数据截断正态分布。首先,生成一些随机的正常数据。
n = 500;μ= 1;σ= 3;rng (“默认”)%的再现性x2 = normrnd(μ、σ,n, 1);
接下来,删除任何观察,超出了截断点xTrunc
。假设xTrunc
是一个已知值,您不需要估计。
xTrunc = 4;x2 = x2 (x2 < xTrunc);
检查样品的数量x2
后截断。
长度(x2)
ans = 430
创建一个模拟数据的直方图。
直方图(x2)
适合模拟数据与一个定制的分布与正态分布的x2 < xTrunc
,但上面的概率为零xTrunc
。通过使用一个定制的分布,可以估计的正常参数μ
和σ
而占失踪的尾巴。
定义截断正态分布的pdf。创建一个匿名函数来计算每个点的概率密度值x,给定值参数μ
和σ
。截断点固定和已知的pdf截断正态分布pdf截断,然后归一化,它集成了。规范化的运作进行评估xTrunc
。为简单起见,假设所有x2
值小于xTrunc
,没有检查。
pdf_truncnorm = @ (x2,μ、σ)…normpdf (x2,μ、σ)。/ normcdf (xTrunc、μ、σ);
因为你不需要估计截断点xTrunc
,它不包括自定义输入分布参数的pdf功能。xTrunc
也不是数据向量输入参数的一部分。一个匿名函数可以访问变量在工作区中,所以您没有通过xTrunc
匿名函数作为一个额外的参数。
提供一个粗略的起始猜参数估计。在这种情况下,由于截断不是极端,用样本均值和标准偏差。
开始= [(x2),性病(x2)]
开始=1×20.1585 - 2.4125
提供大中型企业
与数据,定制的pdf功能,初始参数值,参数的下界。因为σ
必须是积极的,您还需要指定参数范围较低。大中型企业
返回的最大似然估计μ
和σ
作为一个单独的向量,以及一个矩阵近似95%置信区间的两个参数。
[paramEsts, paramCIs] =大中型企业(x2,“pdf”pdf_truncnorm,“开始”开始,…下界的(从0))
paramEsts =1×21.1298 - 3.0884
paramCIs =2×20.5713 2.7160 1.6882 3.4607
的估计μ
和σ
大于样本均值和标准偏差。该模型适合占失踪的上尾分布。
另外,您可以通过使用指定截断边界TruncationBounds名称-值参数。
[paramEsts2, paramCIs2] =大中型企业(x2,“分布”,“正常”,…“TruncationBounds”(负无穷xTrunc))
paramEsts2 =1×21.1297 - 3.0884
paramCIs2 =2×20.5713 2.7160 1.6882 3.4607
你可以计算一个近似参数估计使用的协方差矩阵mlecov
。近似通常适用于大样本,你可以近似对角线的标准错误的根元素。
acov = mlecov (paramEsts x2,“pdf”pdf_truncnorm)
acov =2×20.0812 0.0402 0.0402 0.0361
stderr =√诊断接头(acov))
stderr =2×10.2849 - 0.1900
视觉检查,情节的安装对原始数据的归一化直方图pdf。
直方图(x2,“归一化”,“pdf”)xgrid = linspace (min (x2)、马克斯(x2));pdfgrid = pdf_truncnorm (xgrid paramEsts (1) paramEsts (2));持有在情节(xgrid pdfgrid,“- - -”)包含(“x2”)ylabel (的概率密度)传说(样本数据的,“安装pdf”,“位置”,“最佳”)举行从
一些数据集展览双峰性,甚至多峰性,拟合标准分发给这些数据通常是不合适的。然而,简单的单峰分布往往模型的混合这些数据很好。
在这种情况下,符合两个正态分布的混合模拟数据。考虑模拟数据与建设性的定义如下:
首先,抛硬币有偏见。
如果硬币落在头上,随机选择一个值从一个正态分布的意思 和标准偏差 。
如果硬币落在反面,随机选择一个值从一个正态分布的意思 和标准偏差 。
生成一个数据集从学生的混合物t分布,而不是使用相同的模型拟合。通过使用不同的分布,类似于一种技术用于蒙特卡罗模拟,您可以测试是多么健壮的拟合方法偏离模型的假设是合适的。
rng (10)%的再现性x3 = [trnd (20、1、50) trnd (1100) + 3];直方图(x3)
定义模型适合通过创建一个匿名函数,计算概率密度。pdf的混合物两正态分布是一个加权和的pdf两个正常组件,加权的混合概率。匿名函数需要6输入:一个向量的数据来评估pdf和五个分布参数。每个组件都有参数的平均值和标准偏差。
pdf_normmixture = @ (x3, p, mu1、mu2 sigma1, sigma2)…p * normpdf (x3, mu1 sigma1) + (1 - p) * normpdf (x3, mu2 sigma2);
你也需要一个初始猜测参数。定义一个起点和模型参数数量的增加变得越来越重要。在这里,开始用同等的混合物(p
= 0.5)的正常分布,集中在两个四分位数的数据,以同样的标准偏差。的起始值标准差的公式来自混合的方差的均值和方差的每个组件。
pStart = 5;muStart =分位数(x3, [。25。)
muStart =1×20.3351 - 3.3046
sigmaStart =√var (x3) - 0。25 * diff (muStart) ^ 2)
sigmaStart = 1.1602
开始= [pStart muStart sigmaStart sigmaStart];
指定范围0和1的混合概率,标准差和下界为零。剩下的边界向量的元素+正
或负
显示没有限制。
磅=[0负负0 0];乌兰巴托=[1正正正正);paramEsts =大中型企业(x3,“pdf”pdf_normmixture,“开始”开始,…下界的磅,“UpperBound”乌兰巴托)
警告:最大似然估计不收敛。迭代超过限制。
paramEsts =1×50.3273 -0.2263 2.9914 0.9067 1.2059
警告消息表明,函数不收敛迭代使用默认设置。显示默认选项。
statset (“mlecustom”)
ans =结构体字段:显示:‘离开’MaxFunEvals: 400麦克斯特:200 TolBnd: 1.0000 e-06 TolFun: 1.0000 e-06 TolTypeFun: [] TolX: 1.0000 e-06 TolTypeX: [] GradObj:“关闭”雅可比矩阵:[]DerivStep: 6.0555 e-06 FunValCheck:”“健壮:[]RobustWgtFun: [] WgtFun:[]的调子:[]UseParallel: [] UseSubstreams:[]流:{}OutputFcn: []
自定义的默认最大迭代数分布是200。覆盖默认增加迭代次数,使用结构创建一个选项statset
函数。同时,增加的最大功能评估。
选择= statset (“麦克斯特”,300,“MaxFunEvals”,600);paramEsts =大中型企业(x3,“pdf”pdf_normmixture,“开始”开始,…下界的磅,“UpperBound”乌兰巴托,“选项”选项)
paramEsts =1×50.3273 -0.2263 2.9914 0.9067 1.2059
最后的迭代收敛性是重要的只有在最后几位的结果。然而,最佳实践是总是确保达到收敛。
视觉检查,情节安装密度概率直方图的原始数据。
直方图(x3,“归一化”,“pdf”)举行在xgrid = linspace(1.1 *分钟(x3), 1.1 *马克斯(x3), 200);pdfgrid = pdf_normmixture (xgrid,…paramEsts paramEsts (1) (2), paramEsts (3), paramEsts (4), paramEsts (5));情节(xgrid pdfgrid,“- - -”)举行从包含(“x3”)ylabel (的概率密度)传说(样本数据的,“安装pdf”,“位置”,“最佳”)
另外,对于正态分布的混合,可以使用fitgmdist
函数。估计可以初步估计和设置不同的迭代算法。
Mdl = fitgmdist (x3 ', 2)
Mdl = 1维高斯混合分布与2组件组件1:混合比例:0.329180的意思是:-0.2200组件2:混合比例:0.670820的意思是:2.9975
Mdl.Sigma
ans = ans (:: 1) = 0.8274 ans (:,: 2) = 1.4437
假设您有10个数据点,每个点实际上是一个到八个观测的平均值。最初的观察并不可用,但是观察每个数据点的数量。每个点的精度取决于其相应数量的观察。你需要估计原始数据的平均值和标准偏差。
x4 = [0.25 -1.24 1.38 1.39 -1.43 2.79 3.52 0.92 1.44 1.26) ';m = [8 2 1 3 8 4 2 5 2 4) ';
每个数据点的方差成反比的相应数量的观察,所以使用1 / m
体重中的每个数据点的方差最大似然。
w = 1. /米;
在这个模型中,您可以定义分布的pdf。然而,使用对数的pdf更合适,因为正常的pdf表单
c。* exp (-0.5 * z ^ 2)。
和大中型企业
需要计算loglikelihood pdf的日志。相反,创建一个函数,这个函数计算直接pdf的对数。
pdf的对数函数必须计算每个点的概率密度的对数x
,由于正态分布的参数μ
和σ
。它还需要不同的方差占权重。定义一个函数的名字helper_logpdf_wn1
在一个单独的文件helper_logpdf_wn1.m
。
函数呆呆的= helper_logpdf_wn1 (x, m,μ、σ)重量%的pdf HELPER_LOGPDF_WN1对数正态分布%这个函数只支持的示例定制的分布万博1manbetx% (customdist1demo.mlx)和在将来发布的版本中可能会改变。v =σ。^ 2。/ m;呆呆的= - (xμ)。^ 2。/ (2。* v) - 5 . *日志(2。*π。* v);结束
提供一个粗略的第一个猜测参数估计。在这种情况下,使用未加权的样本均值和标准偏差。
开始= [(x4),性病(x4)]
开始=1×21.0280 - 1.5490
因为σ
必须是积极的,您需要指定参数范围较低。
[paramEsts1, paramCIs1] =大中型企业(x4,“logpdf”,…@ (x,μ、σ)helper_logpdf_wn1 (x, m,μ、σ),…“开始”开始,下界的(从0))
paramEsts1 =1×20.6244 - 2.8823
paramCIs1 =2×2-0.2802 1.6191 1.5290 4.1456
的估计μ
不到三分之二的样本均值的估计。估计是受到最可靠的数据点的影响,也就是说,指出基于最多的原始观测数据。在这个数据集,这些点会把从未加权的样本均值估计。
的大中型企业
函数计算置信区间参数的正常使用大样本近似分布的估计如果一个精确的方法是不可用的。对于小样本大小,可以提高正常近似通过改变一个或多个参数。在这种情况下,变换的尺度参数对数正态分布。
首先,定义一个新的日志pdf功能命名helper_logpdf_wn2
使用转换参数σ
。
函数呆呆的= helper_logpdf_wn2 (x, m,μ,logsigma)重量%的pdf HELPER_LOGPDF_WN2对数正态分布%日志(σ)参数化%这个函数只支持的示例定制的分布万博1manbetx% (customdist1demo.mlx)和在将来发布的版本中可能会改变。v = exp (logsigma)。^ 2。/ m;呆呆的= - (xμ)。^ 2。/ (2。* v) - 5 . *日志(2。*π。* v);结束
使用相同的起点转换到新的参数化σ
,即样本标准差的日志。
开始= [(x4),日志(std (x4)))
开始=1×21.0280 - 0.4376
因为σ
可以是任何积极的价值,日志(σ)
是无限的,你不需要指定低或上界。
[paramEsts2, paramCIs2] =大中型企业(x4,“logpdf”,…@ (x,μ、σ)helper_logpdf_wn2 (x, m,μ、σ),…“开始”,开始)
paramEsts2 =1×20.6244 - 1.0586
paramCIs2 =2×2-0.2802 0.6203 1.5290 1.4969
因为参数使用日志(σ)
,你必须变换回到最初的规模估计和置信区间σ
。
sigmaHat = exp (paramEsts2 (2))
sigmaHat = 2.8823
sigmaCI = exp (paramCIs2 (:, 2))
sigmaCI =2×11.8596 - 4.4677
的估计μ
和σ
是一样的在第一,因为最大似然估计不变的参数化。的置信区间σ
略有不同paramCIs1 (: 2)
。