108 lines
7.3 KiB
HTML
108 lines
7.3 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||
|
"http://www.w3.org/TR/REC-html40/loose.dtd">
|
||
|
<html>
|
||
|
<head>
|
||
|
<title>Description of kernel_density_estimate</title>
|
||
|
<meta name="keywords" content="kernel_density_estimate">
|
||
|
<meta name="description" content="% This function aims at estimating a continuous density. A kernel density">
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||
|
<meta name="generator" content="m2html © 2003 Guillaume Flandin">
|
||
|
<meta name="robots" content="index, follow">
|
||
|
<link type="text/css" rel="stylesheet" href="../m2html.css">
|
||
|
</head>
|
||
|
<body>
|
||
|
<a name="_top"></a>
|
||
|
<div><a href="../index.html">Home</a> > <a href="index.html">.</a> > kernel_density_estimate.m</div>
|
||
|
|
||
|
<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td>
|
||
|
<td align="right"><a href="index.html">Index for . <img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
|
||
|
|
||
|
<h1>kernel_density_estimate
|
||
|
</h1>
|
||
|
|
||
|
<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
||
|
<div class="box"><strong>% This function aims at estimating a continuous density. A kernel density</strong></div>
|
||
|
|
||
|
<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
||
|
<div class="box"><strong>function [abscissa,f] = kernel_density_estimate(data,number_of_grid_points,bandwidth,kernel_function) </strong></div>
|
||
|
|
||
|
<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
||
|
<div class="fragment"><pre class="comment">% This function aims at estimating a continuous density. A kernel density
|
||
|
% estimator is used (see Silverman [1986]).
|
||
|
%
|
||
|
% * Silverman [1986], "Density estimation for statistics and data analysis".
|
||
|
%
|
||
|
% The code is adapted from Anders Holtsberg's matlab toolbox (stixbox).
|
||
|
%
|
||
|
% stephane.adjemian@cepremap.cnrs.fr [07/16/2004].</pre></div>
|
||
|
|
||
|
<!-- crossreference -->
|
||
|
<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
||
|
This function calls:
|
||
|
<ul style="list-style-image:url(../matlabicon.gif)">
|
||
|
</ul>
|
||
|
This function is called by:
|
||
|
<ul style="list-style-image:url(../matlabicon.gif)">
|
||
|
<li><a href="filt_mc_.html" class="code" title="function [rmse_MC, ixx] = filt_mc_(vvarvecm, loadSA, pfilt, alpha, alpha2, OutDir, istart, alphaPC)">filt_mc_</a> copyright Marco Ratto 2006</li><li><a href="posterior_distribution.html" class="code" title="function [borneinf,bornesup,x1,x2,f1,f2,top,nam,texnam] =posterior_distribution(indx,number_of_mh_files,first_mh_file,first_line,number_of_blocks,number_of_simulations,number_of_simulations_per_file,TeX);">posterior_distribution</a> stephane.adjemian@cepremap.cnrs.fr [07-15-2004]</li><li><a href="posterior_moments.html" class="code" title="function [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(xx,info)">posterior_moments</a> stephane.adjemian@ens.fr [09-09-2005]</li><li><a href="stab_map_marginal.html" class="code" title="function stab_map_marginal(lpmat, ibehaviour, inonbehaviour, aname, ipar, dirname)">stab_map_marginal</a> function stab_map_1(lpmat, ibehaviour, inonbehaviour, aname, ipar, dirname)</li></ul>
|
||
|
<!-- crossreference -->
|
||
|
|
||
|
|
||
|
<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
||
|
<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [abscissa,f] = kernel_density_estimate(data,number_of_grid_points,bandwidth,kernel_function) </a>
|
||
|
0002 <span class="comment">%% This function aims at estimating a continuous density. A kernel density</span>
|
||
|
0003 <span class="comment">%% estimator is used (see Silverman [1986]).</span>
|
||
|
0004 <span class="comment">%%</span>
|
||
|
0005 <span class="comment">%% * Silverman [1986], "Density estimation for statistics and data analysis".</span>
|
||
|
0006 <span class="comment">%%</span>
|
||
|
0007 <span class="comment">%% The code is adapted from Anders Holtsberg's matlab toolbox (stixbox).</span>
|
||
|
0008 <span class="comment">%%</span>
|
||
|
0009 <span class="comment">%% stephane.adjemian@cepremap.cnrs.fr [07/16/2004].</span>
|
||
|
0010 <span class="keyword">if</span> size(data,2) > 1 & size(data,1) == 1
|
||
|
0011 data = transpose(data);
|
||
|
0012 <span class="keyword">elseif</span> size(data,2)>1 & size(data,1)>1
|
||
|
0013 error(<span class="string">'kernel_density_estimate :: data must be a one dimensional array.'</span>);
|
||
|
0014 <span class="keyword">end</span>
|
||
|
0015 test = log(number_of_grid_points)/log(2);
|
||
|
0016 <span class="keyword">if</span> (abs(test-round(test)) > 10^(-12))
|
||
|
0017 error(<span class="string">'kernel_density_estimate :: The number of grid points must be a power of 2.'</span>);
|
||
|
0018 <span class="keyword">end</span>
|
||
|
0019
|
||
|
0020 n = size(data,1);
|
||
|
0021
|
||
|
0022 <span class="comment">%% KERNEL SPECIFICATION...</span>
|
||
|
0023 <span class="keyword">if</span> strcmpi(kernel_function,<span class="string">'gaussian'</span>)
|
||
|
0024 k = inline(<span class="string">'inv(sqrt(2*pi))*exp(-0.5*x.^2)'</span>);
|
||
|
0025 <span class="keyword">elseif</span> strcmpi(kernel_function,<span class="string">'uniform'</span>)
|
||
|
0026 k = inline(<span class="string">'0.5*(abs(x) <= 1)'</span>);
|
||
|
0027 <span class="keyword">elseif</span> strcmpi(kernel_function,<span class="string">'triangle'</span>)
|
||
|
0028 k = inline(<span class="string">'(1-abs(x)).*(abs(x) <= 1)'</span>);
|
||
|
0029 <span class="keyword">elseif</span> strcmpi(kernel_function,<span class="string">'epanechnikov'</span>)
|
||
|
0030 k = inline(<span class="string">'0.75*(1-x.^2).*(abs(x) <= 1)'</span>);
|
||
|
0031 <span class="keyword">elseif</span> strcmpi(kernel_function,<span class="string">'quartic'</span>)
|
||
|
0032 k = inline(<span class="string">'0.9375*((1-x.^2).^2).*(abs(x) <= 1)'</span>);
|
||
|
0033 <span class="keyword">elseif</span> strcmpi(kernel_function,<span class="string">'triweight'</span>)
|
||
|
0034 k = inline(<span class="string">'1.09375*((1-x.^2).^3).*(abs(x) <= 1)'</span>);
|
||
|
0035 <span class="keyword">elseif</span> strcmpi(kernel_function,<span class="string">'cosinus'</span>)
|
||
|
0036 k = inline(<span class="string">'(pi/4)*cos((pi/2)*x).*(abs(x) <= 1)'</span>);
|
||
|
0037 <span class="keyword">end</span>
|
||
|
0038
|
||
|
0039 <span class="comment">%% COMPUTE DENSITY ESTIMATE... Gaussian kernel should be used (FFT).</span>
|
||
|
0040 a = min(data) - (max(data)-min(data))/3;
|
||
|
0041 b = max(data) + (max(data)-min(data))/3;
|
||
|
0042 abscissa = linspace(a,b,number_of_grid_points)';
|
||
|
0043 d = abscissa(2)-abscissa(1);
|
||
|
0044 xi = zeros(number_of_grid_points,1);
|
||
|
0045 xa = (data-a)/(b-a)*number_of_grid_points;
|
||
|
0046 <span class="keyword">for</span> i = 1:n;
|
||
|
0047 indx = floor(xa(i));
|
||
|
0048 temp = xa(i)-indx;
|
||
|
0049 xi(indx+[1 2]) = xi(indx+[1 2]) + [1-temp,temp]';
|
||
|
0050 <span class="keyword">end</span>;
|
||
|
0051 xk = [-number_of_grid_points:number_of_grid_points-1]'*d;
|
||
|
0052 kk = k(xk/bandwidth);
|
||
|
0053 kk = kk / (sum(kk)*d*n);
|
||
|
0054 f = ifft(fft(fftshift(kk)).*fft([xi ;zeros(size(xi))]));
|
||
|
0055 f = real(f(1:number_of_grid_points));</pre></div>
|
||
|
<hr><address>Generated on Fri 16-Jun-2006 09:09:06 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address>
|
||
|
</body>
|
||
|
</html>
|