


Local Regression and Likelihood, Figure 6.1.
Derivative (local slope) estimation, for the Old Faithful Geyser Data.
The 'deriv' argument specifies derivative estimation,
'deriv',1 First-order derivative.
'deriv',[1 1] Second-order derivative.
'deriv',2 For bivariate fits, partial deriv. wrt second variable.
'deriv',[1 2] Mixed second-order derivative.
Density estimation is done on the log-scale. That is, the estimate
is of g(x) = log(f(x)), where f(x) is the density.
The relation between derivatives is therefore
f'(x) = f(x)g'(x) = g'(x)exp(g(x)).
To estimate f'(x), we must estimate g(x) and g'(x) (fit1 and fit2 below),
evaluate on a grid of points (p1 and p2), and apply the back-transformation.
Disclaimer: I don't consider derivative estimation from noisy data
to be a well-defined problem. Use at your own risk.
Author: Catherine Loader
NEED: m argument passed to lfmarg().

0001 % Local Regression and Likelihood, Figure 6.1. 0002 % 0003 % Derivative (local slope) estimation, for the Old Faithful Geyser Data. 0004 % The 'deriv' argument specifies derivative estimation, 0005 % 'deriv',1 First-order derivative. 0006 % 'deriv',[1 1] Second-order derivative. 0007 % 'deriv',2 For bivariate fits, partial deriv. wrt second variable. 0008 % 'deriv',[1 2] Mixed second-order derivative. 0009 % 0010 % Density estimation is done on the log-scale. That is, the estimate 0011 % is of g(x) = log(f(x)), where f(x) is the density. 0012 % 0013 % The relation between derivatives is therefore 0014 % f'(x) = f(x)g'(x) = g'(x)exp(g(x)). 0015 % To estimate f'(x), we must estimate g(x) and g'(x) (fit1 and fit2 below), 0016 % evaluate on a grid of points (p1 and p2), and apply the back-transformation. 0017 % 0018 % Disclaimer: I don't consider derivative estimation from noisy data 0019 % to be a well-defined problem. Use at your own risk. 0020 % 0021 % Author: Catherine Loader 0022 % 0023 % NEED: m argument passed to lfmarg(). 0024 0025 load geyser; 0026 fit1 = locfit(geyser,'alpha',[0.1 0.6],'ll',1,'ur',6); 0027 fit2 = locfit(geyser,'alpha',[0.1 0.6],'ll',1,'ur',6,'deriv',1); 0028 z = lfmarg(fit1); 0029 p1 = predict(fit1,z); 0030 p2 = predict(fit2,z); 0031 figure('Name','fig6_1: slope estimation: Old faithful data' ); 0032 plot(z{1},p2.*exp(p1)); 0033 xlabel('Eruption Duration (Minutes)'); 0034 ylabel('Density Derivative');