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,
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. `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 quantiles will be calculated using wquantile function in this package.

### 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, it 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 )
mands( y, by=group )

# 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.3 Index]