PLEASE HELP FIX MATLAB CODE

I have tried replicating the results of figure 4.5 on page 169 of DHS. It shows Parzen-window estimates of a univariate gaussian density using different window widths and number of samples.

Here's the figure that I got from my MATLAB code. As you can see, my results do not match well with the figure of the book....especially for n=10, 100, 10000. I tried looking at the code for considerable amount of time but could not figure out what is wrong.

Gaussian density estimation OldKiwi.jpg

Here's the MATLAB code. It will be great if somebody can take a look at the code and try to match the results with the book.::

% This code replicates the results of figure 4.5 on page 169 of DHS
 
close all; clear;
 
h1 = [1 0.6 0.15];  % this parameter controls the window width h_n
n = [1 10 100 1e4]; % total number of samples
d = 1;  % number of dimensions
 
x = [-2:0.1:2]; % data points at which density will be estimated using parzen window method
len_x = length(x);
 
figure; hold on;
 
for row = 1:length(n)
  for col = 1:length(h1)
 
    disp(['n = ' num2str(n(row)) '    h1 = ' num2str(h1(col))]);
 
    hn = h1(col)/sqrt(n(row));  % look on page 168, DHS: h_n = h_1 / sqrt(n)
    Vn = hn^d;
 
    samples = random('normal',0,1,n(row),1);
 
    prob_estimate = zeros(1,len_x);
 
    for i = 1:len_x
      sum1=0;
      for j = 1:n(row)
        sum1 = sum1 + (1/sqrt(2*pi))*exp(-0.5*((x(i)-samples(j))/hn)^2)/hn;
      end
      prob_estimate(i) = sum1/n(row);
    end
 
    subplot(length(n), length(h1), (row-1)*length(h1)+col); plot(x,prob_estimate);
  end
end

Alumni Liaison

Questions/answers with a recent ECE grad

Ryne Rayburn