Performs nonparametric probability density function estimation by the kernel method.
XKER User-supplied FUNCTION to compute the kernel at any point on the real line. The form is XKER(Y), where:
Y Point at which the kernel is to be evaluated.
XKER Value of the kernel at point Y.
X Vector of length NOBS containing the random sample of observations. (Input)
WINDOW Window
width for the kernel function. (Input)
Generally, several
different values of WINDOW should be
tried.
XMAX Cutoff
value such that XKER(Y) = 0.0 for all
|Y| greater than
XMAX.
(Input)
If XMAX exists, then the
kernel function is 0.0 for all Y greater in absolute
value than XMAX,
and the efficiency of the computations is enhanced. If no such XMAX exists or the
user does not wish to make use of XMAX, then XMAX should be
assigned any nonpositive value.
XPT Vector of
length NXPT
containing the values at which a density estimate is desired.
(Input)
If XMAX is greater than
zero, then XPT
must be sorted from smallest to largest.
DENS Vector of length NXPT containing the density estimates at the points specified in XPT. (Output)
NOBS Number of
observations. (Input)
Default: NOBS = size (X,1).
NXPT Number of
points at which a density estimate is desired. (Input)
Default:
NXPT = size
(XPT,1).
NMISS Number of missing (NaN, not a number) values in X. (Output)
Generic: CALL DESKN (XKER, X, WINDOW, XMAX, XPT, DENS [, ])
Specific: The specific interface names are S_DESKN and D_DESKN.
Single: CALL DESKN (XKER, NOBS, X, WINDOW, XMAX, NXPT, XPT, DENS, NMISS)
Double: The double precision name is DDESKN.
Routine DESKN computes kernel estimates of the density function for a random sample of (scalar-valued) observations. The kernel estimate of the density at the point y is given by.
where
is the estimated density at y, K is the kernel function, xi denotes the i-th observation, n is the number of observations, and h is a fixed constant (called the window width) supplied by the user.
One is usually interested in computing the density estimates using several values of the window width h. Tapia and Thompson (1978), Chapter 2, give some considerations relevant to the choice of h. Some common kernel functions (see Tapia and Thompson 1978, page 60) are given as follows.
Name |
Function |
|
|
|
|
|
|
|
|
The computation can be made much more efficient when the kernel is nonzero over a finite range since observations outside this range can be ignored in the computation of the density. In this case, the array XPT is assumed to be sorted.
1. Informational error
Type Code
4 7 Negative kernel functions are not allowed.
2. Routine may be used to obtain interpolated density estimates from the NXPT density estimates returned in DENS. Array AMESH in DESPT corresponds to array XPT in DESKN.
In this example, the standard normal density function is estimated at 13 points using a random sample of 10 points from a standard normal distribution. The biweight kernel function is used. The actual density for the standard normal density is also reported in the output for comparison. The random sample is generated using routines RNSET and RNNOR in Chapter 18, Random Number Generation.
USE RNSET_INT
USE RNNOR_INT
USE DESKN_INT
USE UMACH_INT
IMPLICIT NONE
INTEGER NOBS, NXPT
REAL C1, WINDOW, XMAX
PARAMETER (C1=0.3989423, NOBS=10, NXPT=13, WINDOW=2.0, XMAX=1.0)
!
INTEGER I, NMISS, NOUT
REAL DENS(NXPT), EXP, X(NOBS), XKER, XPT(NXPT)
INTRINSIC EXP
EXTERNAL XKER
!
DATA XPT/-3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, &
2.0, 2.5, 3.0/
!
CALL RNSET (1234457)
CALL RNNOR (X)
CALL DESKN (XKER, X, WINDOW, XMAX, XPT, DENS, NMISS=NMISS)
!
CALL UMACH (2, NOUT)
WRITE (NOUT,'('' NMISS = '', I1)') NMISS
WRITE (NOUT,'('' DENS Estimate = '', 10F6.4,/,8X,3F6.4)') DENS
WRITE (NOUT,'('' DENS Exact = '',10F6.4,/,8X,3F6.4)') &
(C1*EXP(-XPT(I)*XPT(I)/2.0),I=1,NXPT)
END
REAL FUNCTION XKER (Y)
REAL Y
!
REAL ABS
INTRINSIC ABS
!
IF (ABS(Y) .LT. 1.0) THEN
XKER = 15.0*(1.0-Y*Y)*(1.0-Y*Y)/16.0
ELSE
XKER = 0.0
END IF
RETURN
END
NMISS = 0
DENS Estimate = 0.00000.01180.07900.16980.26780.34670.36870.31840.22340.1391
0.06120.01350.0005
DENS Exact = 0.00440.01750.05400.12950.24200.35210.39890.35210.24200.1295
0.05400.01750.0044
Figure 15- 2 Density Estimate and Standard Normal Density
PHONE: 713.784.3131 FAX:713.781.9260 |