-
Notifications
You must be signed in to change notification settings - Fork 800
/
mixGaussLikSurfaceDemo.m
53 lines (41 loc) · 1.14 KB
/
mixGaussLikSurfaceDemo.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
%% Likelihood surface of mixture of 2 Gaussians in 1d
% Based on code by Mike Li
%%
% Generate data
% This file is from pmtk3.googlecode.com
fs = 12;
setSeed(0);
true_mu1 = -10;
true_mu2 = 10;
true_pi = 0.5;
sigmas = [5];
for sigmai=1:length(sigmas)
true_sigma = sigmas(sigmai);
n_obs = 100;
obs = [true_mu1 + true_sigma*randn(1, n_obs) true_mu2 + true_sigma*randn(1, n_obs)]';
figure;
hist(obs);
printPmtkFigure(sprintf('gmmLikSurfaceHistSigma%d', true_sigma))
% Evaluate likelihood surface
dmu = .5;
mu1_bins = -20:dmu:20;
mu2_bins = -20:dmu:20;
n_mu1_bins = length(mu1_bins);
n_mu2_bins = length(mu2_bins);
lik_bins = zeros(n_mu1_bins, n_mu2_bins);
for b1 = 1:n_mu1_bins
for b2 = 1:n_mu2_bins
p1 = true_pi * gaussProb(obs, mu1_bins(b1), true_sigma);
p2 = (1-true_pi) * gaussProb(obs, mu2_bins(b2), true_sigma);
lik_bins(b1, b2) = sum(log(p1 + p2));
end
end
figure;
contour(lik_bins);
set(gca, 'XTickLabel', mu1_bins(get(gca, 'XTick')))
set(gca, 'YTickLabel', mu2_bins(get(gca, 'YTick')))
xlabel('\mu_1', 'fontsize', fs)
ylabel('\mu_2', 'fontsize', fs)
axis square
printPmtkFigure(sprintf('gmmLikSurfaceSurSigma%d', true_sigma))
end