matlab 最大似然估计
时间: 2023-07-13 10:14:04 浏览: 164
在 MATLAB 中,可以使用最大似然估计(Maximum Likelihood Estimation,MLE)来估计模型参数。假设我们有一个观测数据集 D,模型参数为 θ,似然函数为 p(D|θ),则最大似然估计可以表示为:
θ_MLE = argmax p(D|θ)
即找到使得似然函数 p(D|θ) 最大的参数值 θ_MLE。在实际计算中,通常采用对数似然函数来避免数值精度问题,即:
θ_MLE = argmax log p(D|θ)
下面是一个简单的 MATLAB 示例代码,使用正态分布作为模型,计算最大似然估计的均值和方差:
```matlab
% 观测数据集 D
D = [1.2, 1.3, 1.5, 1.7, 1.8];
% 构造模型,假设数据服从正态分布
mu = 0;
sigma = 1;
log_likelihood = @(theta) sum(log(normpdf(D, theta(1), theta(2))));
% 用 fminsearch 函数求解最大似然估计
theta_MLE = fminsearch(@(theta) -log_likelihood(theta), [mu, sigma]);
fprintf('最大似然估计的均值为:%f\n', theta_MLE(1));
fprintf('最大似然估计的方差为:%f\n', theta_MLE(2)^2);
```
在这个示例中,我们假设观测数据集 D 服从正态分布,其中均值和方差为待估计的参数。首先,我们构造了一个 log_likelihood 函数,用于计算给定参数值的对数似然函数。然后,利用 fminsearch 函数求解最大似然估计。fminsearch 函数会在给定的初始值处进行优化,并返回使得对数似然函数最大的参数值。最后,我们输出了最大似然估计的均值和方差。
阅读全文