mands {lazy.tools}R Documentation

Calculates mean, std, variance and n with case weight

Description

Calculates mean, std, variance and n with case weight

Usage

mands(
  data,
  weight = 1,
  sandk = 0,
  probs = NULL,
  by = NULL,
  byvarname = NULL,
  vardef = "n",
  print = 0,
  simplify = 1
)

Arguments

data

data vector, matrix or data frame.

weight

case weight vector of length nrow(data) or 1.

sandk

= 1 to calculate skewness and kurtosis

probs

vector of probabilities to calculate quantiles

by

a factor or a list of factors, each of length nrow(data)
to be used as the INDICES of by function.

byvarname

vector containing the names of by varialbes to be used. (Not Yet Implemented.)

vardef

= "n-1" to use n-1 as denominator for variance.

print

= 1 to print the result

simplify

= 0 to return class by object when by= is given.

Details

The means and vars will be calculated using native weighted.mean function.
The kurtosis = weigted.mean( scale(data, scale=FALSE)^4 ) / std^4 - 3 The quantiles will be calculated using wquantile function.

Value

A matrix of statistics(mean, std, var, nobs, n) x variables
where nobs is sum(weights) for nonmissing obs, and n is nrow(data).
In addition, if probs is given, quantiles will be appended to the above.

When by is present, this function returns a class by object consisting of above for each subgroup if simplify=0.
If by is not a list and simplify=1, the result is a statistics x variables x subgroups array.
If by is a list of several factors, simplify=1 does not affet the result.
When X is univariate, the result is a statistics x subgroup matrix.

When data is NULL, NULL will be returned.

Examples

# univariate example
y <- 1:9
pdf <- exp( -0.5*(y-5)^2/(1.3^2) )
pdf <- pdf/sum(pdf)
group <- c(1,1,1,1,1,2,2,2,2)
mands( y )
mands( y, pdf, sandk=1 )
mands( y, by=group, sandk=1 )

# bivariate example
ndims <- 2; npoints <- 11; xmin <- -3; xmax <- 3; corrmat <- 0.2
nobs <- 100000

# dispersion matrix
Dmat <- matrix(corrmat,ndims,ndims)+(1-corrmat)*diag(ndims)
Dmat[1,1] <- .5

# grid X
X <- seq(xmin,xmax,length.out=npoints)
if( ndims >= 2 ){
 for( i in 2:ndims )
  X <- cprod(X,seq(xmin,xmax,length.out=npoints))
}

# weight
pdf <- exp( -0.5*diag( X%*%solve(Dmat)%*%t(X)) )
pdf <- pdf/sum(pdf)
freq <- round(nobs*pdf+.5)

# all data
mands( X )
mands( X, freq )
mands( X, freq, probs=c(0.25,0.5,0.75,0.975) )

# grouping variable
set.seed(1701)
if( is.matrix(X) ) n <- nrow(X) else n <- length(X)
byvar <- sample(1:3, n, replace=1)
byvar <- sort(byvar)

# for each subgroup
mands( X, by=byvar )
mands( X, freq, by=byvar )
mands( X, freq, by=byvar, probs=c(0.25,0.75) )


[Package lazy.tools version 0.1.4 ]