最大似然估计gamma分布参数(附MATLAB完整代码)

如何使用最大似然估计法(MLE)来估计伽马分布的参数:

伽马分布是一个连续型概率分布,其概率密度函数为:

f(x|α,β) = (β^α / Γ(α)) x^(α-1) e^(-βx) ,其中, Γ(α) 是伽马函数,x > 0, α, β > 0.

假设我们有一个由n个独立同分布的随机样本X1, X2, …, Xn构成的样本,它们都服从参数为α和β的伽马分布。那么,这n个样本的联合概率密度函数将是每个样本概率密度函数的乘积,即似然函数L(α,β)为:

L(α,β) = Π (β^α / Γ(α)) x^(α-1) e^(-βx)

为了方便求解,我们通常使用对数似然函数,即:

lnL(α,β) = Σ [αlnβ + (α - 1)lnx - βx - lnΓ(α)]

我们的目标是找到α和β的值,使得这个函数取最大值。这就需要我们对α和β分别求偏导,并令其等于0,得到一组联立方程,解这组方程我们可以得到α和β的估计值。

然而,这个问题的解析解是无法直接求得的,需要依赖于数值算法(例如:牛顿迭代法)来进行求解。在实际的应用中,我们通常会使用一些MATLAB或Python来完成这个任务。

MATLAB代码如下:

clc;close all;clear all;warning off;%清除变量
format long g;

adata= gamrnd(5,2,1000,1)

% [phat,pci] = gamfit(adata,0.95);
% phat
x0=[1,1];
y=adata;
[parmhat1,ML]=fminsearch(@(x) mygammapdffun(y,x),x0);
disp('最大似然估计得到的gamma分布参数');
parmhat1

%% 画概率图
[counts,centers]=hist(y,100);
figure;
bar(centers,counts/sum(counts)); %画出概率密度分布图
xlabel('额度','fontname','宋体');
ylabel('概率','fontname','宋体');
title('分布图','fontname','宋体');


a1=gamcdf(sort(y),parmhat1(1),parmhat1(2));

[counts,centers]=hist(y,100);
a0=counts/sum(counts);
g=cumsum(a0);


figure;
plot(centers,g,'b*'); %画出概率密度分布图
hold on;
plot(sort(y),a1,'r');
legend({'样本','拟合'},'fontname','宋体');
xlabel('数值','fontname','宋体');
ylabel('累积概率','fontname','宋体');
title('gamma分布累积概率','fontname','宋体');


function y=mygammapdffun(data,x)
% gamma分布
a=x(1);% 分布的参数1
b=x(2);% 分布的参数2
p=1/(b^a*gamma(a)).*data.^(a-1).*exp(-data./b);% gamma分布的概率密度函数
y=-sum(log(p));% 似然函数值最大化
 

数据如下:


adata =

          3.18488078866483
          5.03069162867442
          7.51749037559498
          10.2835778803303
           21.603895294973
          14.1441113119225
          14.7865293223264
          8.14067810458262
          5.06282895822804
          7.65819802379196
          13.5270169969674
          17.0370414842674
          12.3091911437045
          11.1321241815143
          9.59563779171205
          7.05518598131705
           7.3971689150796
          6.08394395856918
          6.81302478109756
          14.3572119616325
          17.8091493287761
          20.1847205029288
          2.75323227564708
          2.64232307308316
          22.8297342219077
          11.5996016372587
          7.80526023064686
          7.80557373707557
          5.65136312002752
          8.13348512874601
          9.72119202730636
          3.89003555558571
          6.27485075615423
          9.55033639102666
          14.2806247237316
          4.60212965022015
          7.90983340245262
          6.50889311430597
          10.4755128619394
          6.57234682832661
          8.59327563483049
          4.33742254479794
          6.39067595216208
          14.2185641379183
           6.5362012959033
          2.59374764667069
          3.76193744697243
          18.2185228490581
          7.51517323567695
          13.3130107547276
          24.8864878455546
          5.14189489625271
           5.6518406684059
          13.8269601152627
          9.63129826361994
          4.65958302250466
          3.80216423522717
          5.97345782586643
          11.5473765605036
          4.75931300049055
           11.364680079473
          6.93790347627799
          7.58815633610866
          11.7172324209223
          6.91995739570363
          8.59110905917763
          7.71543620382142
           6.5021785418607
          19.5628272958143
          12.0078420961938
          6.97438879245941
           15.123718686986
          5.18891661218098
          17.3260811939267
          16.1996830361599
          11.5501158462896
          3.34981290836644
          9.50304758087526
          7.15333184666909
          11.7674131865076
          12.1311270077904
          8.34965382173295
          6.16462118334621
          5.89701477494658
          6.82509503581429
          3.64097940761756
          11.8950632662039
          10.3211403069445
          13.4413727934656
          17.2964717011917
          11.8610426129828
          5.91299332526704
          4.57398306654572
          4.77286770722602
          9.63135879012397
          8.39949078456355
          12.3286922969972
          10.4168057540566
          12.2717592257667
          8.19011381460088

程序结果如下:

最大似然估计得到的gamma分布参数

parmhat1 =

          4.24093001674139          2.24584755857828

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB代码顾问

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值