正态分布的最大似然估计

给定数据集D={x1, x2, ... , xn},假设都服从均值为mean(假设未知),方差为var的高斯分布(假设已知),则参数θ为均值mean.

p(D|θ) = ∏p(xi|θ) =p(x1|θ)p(x2|θ)...p(xn|θ)

最大似然估计(MLE):

MLE过程:

(1)假设真实高斯分布的均值为20,方差为18*18

(2)根据该概率分布抽取100个样本点

(3)计算p(D|θ),并画出曲线,显示出最大值所对应的θ值,即mean值

% Maximum Likelihood Estimation
function MLE_show

clear;close all;

% 参数设置
mean = 20;     %均值 
std = 18;      %标准差
var = std^2;   %方差
num = 100;     %抽样点数

gaussian = @(x,mean,var)(exp(-(x-mean).*(x-mean)/(2*var))/sqrt(2*pi*var));

% 真实分布
x = -50:0.1:100;
f = gaussian(x,mean,var);
figure(1),subplot(1,2,1),plot(x,f);hold on;
title(sprintf('Normal Distribution, mean = %d, var = %d', mean, var));

% 从真实分布抽样出num个点
rx = mean + std .* randn(num,1);
ry = zeros(num,1);
subplot(1,2,1),plot(rx,ry,'r.','MarkerSize',13);
xlabel('x');
ylabel('p(x)');

% MLE (假设均值未知,方差已知)
x1 = mean-10:0.1:mean+10;
likelihood_val = prod(gaussian(rx,x1,var));
maxparam = find(max(likelihood_val)==likelihood_val);

x2 = x1(maxparam)*ones(1,3);
y2 = linspace(0,max(likelihood_val)*1.2, 3);
figure(1),subplot(1,2,2),plot(x1,likelihood_val);hold on;
plot(x2,y2,'k-');title(sprintf('Maximum Likelihood Estimation, mean = %2.1f', x1(maxparam)));
xlabel('mean');
ylabel('p(D|mean)');

运行结果图:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值