(New page: '''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 ...)
 
Line 9: Line 9:
 
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.::
 
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.::
  
<nowiki>
+
<code style="matlab">
 
% This code replicates the results of figure 4.5 on page 169 of DHS
 
% This code replicates the results of figure 4.5 on page 169 of DHS
  
Line 46: Line 46:
 
   end
 
   end
 
end
 
end
</nowiki>
+
</code>

Revision as of 19:43, 26 March 2008

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

Prof. Math. Ohio State and Associate Dean
Outstanding Alumnus Purdue Math 2008

Jeff McNeal