KernSec               package:GenKern               R Documentation

_U_n_i_v_a_r_i_a_t_e _k_e_r_n_e_l _d_e_n_s_i_t_y _e_s_t_i_m_a_t_e

_D_e_s_c_r_i_p_t_i_o_n:

     Computes univariate kernel density estimate using Gaussian kernels
     which can also use non-equally spaced ordinates and adaptive
     bandwidths and local bandwidths

_U_s_a_g_e:

     KernSec(x, xgridsize=100, xbandwidth, range.x)

_A_r_g_u_m_e_n_t_s:

       x: vector of 'x' values

xgridsize: integer for number of ordinates at which to calculate the
          smoothed estimate: default=100

xbandwidth: value of 'x' window width, or vector of local window
          widths, one for each 'x', or one for each 'range.x, or a
          vector of length \code{xgridsize}': default='dpik(x)'

 range.x: total range of the estimate in the 'x' dimension, or a vector
          giving the 'x' ordinates: default='range +- 1.5 * mean
          bandwidth'

_V_a_l_u_e:

     returns two vectors: 

   xords: vector of ordinates

    yden: vector of density estimates corresponding to each 'x'
          ordinate

_A_c_k_n_o_w_l_e_d_g_e_m_e_n_t_s:

     Written in collaboration with A.M.Pollard
     <a.m.pollard@bradford.ac.uk> with the financial support of the
     Natural Environment Research Council (NERC) grant GR3/11395

_N_o_t_e:

     Slow code suitable for visualisation and display of p.d.f where
     highly generalised k.p.d.fs are needed - 'bkde' is faster when
     uniformly grided, single bandwidth, k.p.d.fs are required,
     although in the univariate case you won't notice the difference.

     This function doesn't use bins as such, it calculates the density
     at a set of points. These points can be thought of as 'bin
     centres' but in reality they're not.

     New for version 1.10 local kernel density estimates can now be
     sent, so that a vector of bandwidths can be send which is the same
     length as that of the observations. This will give a density which
     is has a unique bandwidth for each observation. Or a vector of
     bandwidths can be sent which is the same length as that of the
     number of bins. This will give a unique bandwidth for each
     ordinate, and is described in Wand & Jones (1995) _Kernal
     Smoothing_. It is for the user to supply this vector of
     bandwidths, possibly with some form of _pilot estimation_.

     It should be noted that multi-element vectors which approximate
     the bin centres, can be sent rather than the extreme limits of the
     range; which means that the points at which the density is to be
     calculated need not be uniformly spaced.

     If the default 'xbandwidth' is to be used there *must* be at least
     five unique values for in the 'x' vector. If not the function will
     return an error. If you don't have five unique values in the
     vector then send a value, or vector for 'xbandwidth'

     The number of ordinates defaults to the length of 'range.x' if
     'range.x' is a vector of ordinates, otherwise it is 'xgridsize',
     or 100 if that isn't specified.

     The option 'na.rm' is no longer supported. The function will
     automatically remove NAs where appropriate and possible, and will
     return a warning.

     Finally, the various modes of sending parameters can be mixed, ie:
     the extremes of the range can be sent to define the range for 'x',
     but a multi-element vector could be sent to define the ordinates
     in the 'y' dimension, or, a vector could be sent to describe the
     bandwidth for each case in 'x'.

_A_u_t_h_o_r(_s):

     David Lucy <dlucy@maths.ed.ac.uk> <URL:
     http://www.maths.ed.ac.uk/~dlucy/> 
      Robert Aykroyd <robert@amsta.leeds.ac.uk><URL:
     http://www.amsta.leeds.ac.uk/~robert/>

_R_e_f_e_r_e_n_c_e_s:

     Lucy, D. Aykroyd, R.G. & Pollard, A.M.(2002) Non-parametric
     calibration for age estimation . _Applied Statistics_ *51*(2):
     183-196

_S_e_e _A_l_s_o:

     'KernSur' 'per'  'density' 'hist' 'bkde' 'bkde2D' 'dpik'

_E_x_a_m_p_l_e_s:

     x <- c(2,4,6,8,10) 

     z <- KernSec(x)                         # simplest invocation
     plot(z$xords, z$yden, type="l")

     z <- KernSec(x, xbandwidth=2, range.x=c(0,8))
     plot(z$xords, z$yden, type="l")

     # local bandwidths
     ords <- seq(from=0, to=14, length=100)
     bands <- x/15
     z <- KernSec(x, xbandwidth=bands, range.x=ords)
     plot(z$xords, z$yden, type="l")         # should plot a wriggly line

     bands <- seq(from=1, to=4, length=100)  # improvise a pilot estimate
     z <- KernSec(x, xbandwidth=bands, range.x=ords)
     plot(z$xords, z$yden, type="l") 

