📄 kernel_n.m
字号:
function [y, x] = kernel_n(u,ngrid,h)% PURPOSE: normal kernel density estimate% -------------------------------------------------------% USAGE: [y x] = kernel_n(u,ngrid,h)% where: u = vector or matrix of data% ngrid = number of grid points % h = smoothing factor, h=0.01 is rough, h=large smooth% -------------------------------------------------------% RETURNS:% y = a vector or matrix of normal density estimates% x = the domain such that, plot(x,y) produces % a plot of the density estimate% -------------------------------------------------------% SEE ALSO: pltdens()% -------------------------------------------------------% References % Hardle (1990), Smoothing Techniques, Springer-Verlagif (nargin < 3),error('Wrong number of arguments to kernel_n');end; [n k] = size(u);if (n < k); m = k; l = n; n = m; k = l; u = u'; end;pf = zeros(ngrid,k); x = zeros(ngrid,k);tt= 1:ngrid; c = 1/sqrt(2*pi)*ones(n,1);for i=1:k; % loop over number of vectors k;b1u = max(u(:,i)); b1l = min(u(:,i)); % determine the grid;if (b1u > 0);if (b1l < 0); grd = (b1u + abs(b1l))/ngrid; end;if (b1l > 0); grd = (b1u - b1l)/ngrid; end;end;if (b1u < 0); grd = abs(b1u + b1l)/ngrid; end;bs = b1l + tt*grd; for j=1:ngrid; bv = bs(1,j); x(j,i) = bs(1,j); bvec = bv*ones(n,1); term1 = ((bvec-u(:,i)).*(bvec-u(:,i)))*(1/h); tmp = c.*exp(-0.5*term1); pf(j,i) = sum(tmp.*(1/(h*n))); end; end;% convert to probability densityy = zeros(ngrid,k);for i=1:k;psum = sum(pf(:,i));y(:,i) = pf(:,i)./psum;end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -