正態分佈的最大似然估計
阿新 • • 發佈:2019-01-10
給定資料集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; %抽樣點數 % 真實分佈 x = -50:0.1:100; f = exp(-(x-mean).*(x-mean)/(2*var))/sqrt(2*pi*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(size(rx,1),1); subplot(1,2,1),plot(rx,ry,'r.','MarkerSize',13); xlabel('x'); ylabel('p(x)'); % MLE (假設均值未知,方差已知) ii = 1; for i = mean-10:0.1:mean+10 joint_pdf(ii) = ML_value(rx, i, var, num); ii = ii + 1; end x1 = mean-10:0.1:mean+10; maxparam = find(joint_pdf==max(joint_pdf)) x2 = x1(maxparam)*ones(1,3); y2 = linspace(0,max(joint_pdf)*1.2, 3); figure(1),subplot(1,2,2),plot(x1,joint_pdf);hold on; plot(x2,y2,'k-');title(sprintf('Maximum Likelihood Estimation, mean = %2.1f', x1(maxparam))); xlabel('mean'); ylabel('p(D|mean)'); % 計算聯合概率(假設方差已知) function val = ML_value(rx, meanval, var, num) t = 1; for i = 1:num t = t*exp(-(rx(i)-meanval).*(rx(i)-meanval)/(2*var))/sqrt(2*pi*var); end val = t;