极大似然估计法的matlab代码
时间: 2025-01-01 19:06:41 浏览: 44
极大似然估计(Maximum Likelihood Estimation, MLE)是一种常用的数据分析方法,通过最大化数据的概率分布来估计模型参数。在MATLAB中,可以使用内置函数或者自定义算法来实现。这里提供一个简单的例子,假设我们有一个正态分布的随机样本:
```Matlab
% 假设数据来自均值μ=50,标准差σ=10的正态分布
data = randn(100, 1); % 生成100个随机数
% 定义参数初始值
mu_init = 60; % 均值猜测
sigma_init = 15; % 标准差猜测
% 极大似然估计函数
function [muhat, sigmahat] = mle_estimate(data, mu, sigma)
pdf = @(x) 1 ./ (sigma * sqrt(2*pi)) .* exp(-(x - mu).^2 / (2*sigma^2)); % 正态分布概率密度函数
likelihood = prod(pdf(data)); % 计算每个数据点的概率,然后取乘积得到总似然
[~, index] = max(log(likelihood)); % 对似然求对数并找到最大值索引
muhat = data(index); % 最大似然估计的均值
sigmahat = std(data); % 使用样本标准差作为估计的标准差
end
% 运行MLE
[muhat, sigmahat] = mle_estimate(data, mu_init, sigma_init);
% 打印结果
fprintf('MLE估计的均值: %.2f\n', muhat);
fprintf('MLE估计的标准差: %.2f\n', sigmahat);
阅读全文