Description Usage Arguments Value Acknowledgements Note Author(s) References See Also Examples
Computes univariate kernel density estimate using Gaussian kernels which can also use non-equally spaced ordinates and adaptive bandwidths and local bandwidths
1 | KernSec(x, xgridsize=100, xbandwidth, range.x)
|
x |
vector of |
xgridsize |
integer for number of ordinates at which to calculate the smoothed estimate: default=100 |
xbandwidth |
value of |
range.x |
total range of the estimate in the |
returns two vectors:
xords |
vector of ordinates |
yden |
vector of density estimates corresponding to each |
Written in collaboration with A.M.Pollard <mark.pollard@rlaha.ox.ac.uk> with the financial support of the Natural Environment Research Council (NERC) grant GR3/11395
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.
For version 1.10 on 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
.
David Lucy <d.lucy@lancaster.ac.uk> http://www.maths.lancs.ac.uk/~lucy/
Robert Aykroyd <r.g.aykroyd@leeds.ac.uk>http://www.amsta.leeds.ac.uk/~robert/
Lucy, D. Aykroyd, R.G. & Pollard, A.M.(2002) Non-parametric calibration for age estimation . Applied Statistics 51(2): 183-196
KernSur
per
density
hist
bkde
bkde2D
dpik
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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")
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.