density
Kernel Estimate of Probability Density Function
Description
Returns x and y coordinates of a non-parametric estimate of the probability 
density function of the data.
Usage
density(x, ...)
density.default(x, bw = "nrd0", adjust = 1, kernel = c("gaussian", 
    "epanechnikov", "rectangular", "triangular", "biweight", 
    "cosine", "optcosine"), weights = NULL, window = kernel, 
    width, give.Rkern = FALSE, n = 512, from, to, cut = 3, na.rm = FALSE, 
    ...) 
Arguments
| x | the vector of observations from the distribution whose density is to 
be estimated. 
Missing values (NAs) are allowed if na.rm is TRUE. | 
| bw | the smoothing bandwidth to be used in density estimation. bw can be either a positive number specifying the bandwidth explicitly, or 
it can be a character string. 
 When bw is specified as a character string, case is ignored. The following table
describes the character string, the function it references, and its description.
 These referenced functions use various algorithms for choosing the bandwidth given the data x.
(All of these functions ignore the weights argument).|  | character string | function | description |  |  | "nrd0" | bw.nrd0 | normal reference density, never returning 0.0 |  |  | "nrd" | bw.nrd | normal reference density, possibly returning 0.0 |  |  | "bcv" | bw.bcv | biased cross-validation |  |  | "ucv" | bw.ucv | unbiased cross-validation |  |  | "sj" "sj-ste" | bw.SJ | the Sheather-Jones "plug-in" estimator with method "ste" |  |  | "sj-dpi" | bw.SJ | the Sheather-Jones "plug-in" estimator with method "dpi" | 
 | 
| adjust | the number derived from the bw argument is multiplied by adjust to make the bandwidth. | 
| kernel | a character string giving the type of kernel function used in the 
computations.  Must be one of: "gaussian", "epanechnikov", 
"rectangular", "triangular", "biweight", 
"cosine", "optcosine" (one character is sufficient). | 
| weights | a vector of same length as x for computing a weighted density 
estimate.  The weights must be nonnegative and sum to 1.0.
When weights is NULL (the default), all points in x are equally weighted. | 
| width | For compatibility with S-PLUS, this can be used instead of bw.  width 
is multiplied by a kernel-dependent quantity to make them compatible. | 
| give.Rkern | a logical flag. If TRUE, the quantity
integral(u^2 * K(u) * du) * integral(K(u)^2 *du)
of the selected kernel function is returned instead of the usual return value. | 
| n | the number of equally-spaced points at which to estimate the density. If n is greater than 512,
it is rounded up to the power of 2. | 
| from, to | the n estimated values of density are equally-spaced between 
from and to. The default is the range of the data extended by 
bw*cut. | 
| cut | the fraction of the window width by which the x values are to be extended. 
The default is 3. cut is ignored if from and to are used. | 
| na.rm | a logical flag. If TRUE, then missing values (NAs) are removed before estimation. 
If FALSE (the default), then missing values are not allowed. | 
| ... | other arguments for non-default methods. | 
 
Details
These are kernel estimates.  For each x value in the output, the window is 
centered on that x and the heights of the window at each datapoint are summed. 
This sum, after a normalization, is the corresponding y value in the output: the value at x[i] is 
y[i]=1/N*sum(K(x[i]-X)) 
where K is the kernel function specified 
by window and width, X is the input data, and N is the length 
of X.  In the presence of weights the value is 
y[i]=1/sum(weights)*sum(weights*K(x[i]-X)). 
For efficiency, the convolution is computed using the discrete Fourier transform.
The bandwidth functions bw.SJ, bw.ucv, and bw.bcv are not yet in Spotfire Enterprise Runtime for R.
Value
returns the R-kernel value when 
give.Rkern is 
TRUE. Otherwise 
returns a list object of class 
"density" with the following components:
two components, 
x and 
y, suitable for giving as an argument 
to 
approx or to be plotted. 
| x | the vector of n points at which the density is estimated. | 
| y | the density estimate at each x point. | 
| bw | the smoothing bandwidth is used in density estimation. | 
| n | the number of non-NA observations used to calculate the estimate. | 
| call | the function call. | 
| data.name | the deparse name of x. | 
| has.na | a logical flag if NA exists in observations. | 
Background
Density estimation is essentially a smoothing operation. 
Inevitably there is a trade-off between bias in the estimate and the 
estimate's variability: wide windows produce smooth estimates that 
may hide local features of the density. 
References
Becker, R. A., Chambers, J. M., and Wilks, A. R. 1988.  The New S Language: A Programming Environment for Data Analysis and Graphics. Pacific Grove, CA: Wadsworth & Brooks/Cole Advanced Books and Software.
Scott, D. W. 1992.  Multivariate Density Estimation. Theory, Practice and Visualization. New York, NY: John Wiley & Sons.
Sheather, S. J. and Jones, M. C. 1991. A reliable data-based bandwidth selection method for kernel density estimation. J. Roy. Statist. Soc.  Volume B. 683-690.
Silverman, B. W. 1986.  Density Estimation for Statistics and Data Analysis. London, UK: Chapman and Hall.
Venables, W. N. and Ripley, B. D. 2002.  Modern Applied Statistics with S. Fourth Edition. New York, NY: Springer.
Wegman, E. J. 1972. Nonparametric probability density estimation. Technometrics.  Volume 14. 533-546.
See Also
bw.nrd,
bw.nrd0,
hist,
approx.   
 
Examples
density((cos(1:300)+0.09)^3)
density((cos(1:300)+0.09)^3, bw=0.25)