MATLAB的mle拟合正态分布参数(附完整代码)

在 MATLAB 中,可以使用 mle 函数来拟合数据到某个特定的概率分布,包括正态分布。“MLE” 是 “Maximum Likelihood Estimation”(最大似然估计)的缩写,这是一种常用的参数估计方法。

下面是如何使用 mle 函数来拟合正态分布参数的示例:

% 假设我们有一组来自正态分布的数据
data = randn(1000, 1);

% 使用 mle 函数拟合正态分布参数
params = mle(data, 'distribution', 'normal');

% params(1) 是估计的均值,params(2) 是估计的标准差
mu_est = params(1);
sigma_est = params(2);

在这个例子中,我们首先生成了一组来自标准正态分布的随机数据(均值为 0,标准差为 1)。然后,我们使用 mle 函数来拟合这些数据到一个正态分布,指定 ‘distribution’ 参数为 ‘normal’。mle 函数返回的结果是一个包含估计的参数的向量。对于正态分布,第一个参数是均值,第二个参数是标准差。

请注意,如果你的数据实际上并不是来自正态分布,那么使用 mle 函数拟合正态分布参数可能会得到不准确的结果。在这种情况下,你可能需要考虑其他的拟合方法或者其他的分布假设。

MATLAB代码:


clc;clear all;close all;warning off;%

data=normrnd(0,1,100,1);

x0=[2,2];% 初值
phat = mle(data,'pdf',@(x,mu,sigma) mypdffun(x,mu,sigma),'start',x0);% 调用mle函数
phat

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


a1=normcdf(sort(data),phat(1),phat(2));

[counts,centers]=hist(data,30);
a0=counts/sum(counts);
g=cumsum(a0);


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

function y=mypdffun(x,mu,sigma)
% 正态分布
y=1./(sigma*sqrt(2*pi)).*exp((-(x-mu).^2)/(2*sigma^2));% 概率密度函数

程序结果:


phat =

        0.0864134176671681         0.942444505587593

>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MATLAB代码顾问

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

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

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

打赏作者

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

抵扣说明:

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

余额充值