You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中能否用mle函数最大化向量对数似然及相关实现疑问

正态分布极大似然估计(MLE)的MATLAB实现疑问解答

我在工作中处理一个长度为L的向量,假设其服从正态分布,希望通过极大似然估计(MLE)最大化该向量的对数似然。目前我采用的实现代码如下:

x=[vector(1:L)];
pd = fitdist(x,'Normal');
z=log(normpdf(x,pd(1),pd(2)); %for finding log-likelihood

但我不确定上述代码是否实现了对数似然最大化,同时得到的标量z能否用于绘制目标信号。此外,我想确认是否可以使用MATLAB内置的'mle'函数完成该任务,以及是否存在其他实现方法。

一、你的代码有没有实现对数似然最大化?

  • fitdist(x,'Normal')其实已经帮你完成了正态分布参数的极大似然估计——它内部会自动找到让对数似然最大的均值和标准差。
  • 但你的代码只是计算了基于这些MLE参数的对数似然值,并没有显式执行“最大化”动作(最大化过程已经被fitdist封装完成)。另外代码存在语法错误:log(normpdf(...))末尾少了一个右括号,正确写法是z = log(normpdf(x, pd(1), pd(2)));
  • 注意:这里计算出的z不是标量,是和x长度一致的向量,每个元素对应一个样本点的对数似然;如果要得到整个样本集的总对数似然,需要对z求和:total_log_likelihood = sum(z);

二、z能不能用来绘制目标信号?

  • 如果z是每个样本的对数似然,它可以用来可视化每个点在MLE参数下的似然度,但它不是“目标信号”本身。如果要绘制拟合的正态分布曲线,需要用MLE得到的参数生成概率密度函数曲线:
    x_grid = linspace(min(x), max(x), 1000);
    pdf_fit = normpdf(x_grid, pd(1), pd(2));
    plot(x_grid, pdf_fit, 'r-', 'LineWidth', 2);
    hold on;
    histogram(x, 'Normalization', 'pdf'); % 和原始数据的归一化直方图对比
    hold off;
    

三、用MATLAB内置mle函数实现

当然可以用mle函数直接完成参数估计,它是更底层的MLE实现工具,用法如下:

[mu_hat, sigma_hat] = mle(x, 'Distribution', 'Normal');
% 计算总对数似然
total_log_likelihood = sum(log(normpdf(x, mu_hat, sigma_hat)));
  • mle直接返回MLE估计的均值mu_hat和标准差sigma_hat,效果和fitdist完全一致,区别仅在于fitdist返回的是概率分布对象,mle直接返回参数值。

四、手动实现MLE(适合理解原理)

如果想自己推导并实现最大化过程,可以利用正态分布MLE的解析解:
正态分布的对数似然函数为:
$$\mathcal{L}(\mu, \sigma) = -\frac{n}{2}\ln(2\pi) - n\ln(\sigma) - \frac{1}{2\sigma2}\sum_{i=1}n (x_i - \mu)^2$$
对$\mu$和$\sigma$求导并令导数为0,可得到:

  • 均值的MLE估计就是样本均值:$\hat{\mu} = \frac{1}{n}\sum_{i=1}^n x_i$
  • 标准差的MLE估计是样本二阶中心矩的平方根:$\hat{\sigma} = \sqrt{\frac{1}{n}\sum_{i=1}^n (x_i - \hat{\mu})^2}$(注意MATLAB自带的std默认除以n-1,手动实现时要除以n)

手动实现代码:

n = length(x);
mu_hat = mean(x);
sigma_hat = sqrt(sum((x - mu_hat).^2)/n);
% 计算总对数似然
total_log_likelihood = -(n/2)*log(2*pi) - n*log(sigma_hat) - sum((x - mu_hat).^2)/(2*sigma_hat^2);
  • 这种方法和内置函数结果完全一致,适合深入理解MLE的数学原理。

内容的提问来源于stack exchange,提问作者Sagar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:01:06