Weighted Covariance Matrices
Returns a list containing estimates of the weighted covariance matrix and the mean of the data, and optionally of the (weighted) correlation matrix.
cov.wt(x, wt = rep(1/nrow(x), nrow(x)), cor = FALSE, center = TRUE, method = c("unbiased", "ML"))
- a matrix or data frame. As usual, rows are observations and columns are variables.
- a non-negative and non-zero vector of weights for each
observation. Its length must equal the number of rows of
- a logical indicating whether the estimated correlation weighted matrix will be returned as well.
- either a logical or a numeric vector specifying the
centers to be used when computing covariances. If
TRUE, the (weighted) mean of each variable is used, if
FALSE, zero is used. If
centeris numeric, its length must equal the number of columns of
- string specifying how the result is scaled, see Details below. Can be abbreviated.
method = "unbiased",
The covariance matrix is divided by one minus the sum of squares of
the weights, so if the weights are the default ($1/n$) the conventional
unbiased estimate of the covariance matrix with divisor $(n - 1)$
is obtained. This differs from the behaviour in S-PLUS which
method = "ML" and does not divide.
A list containing the following named components:
- the estimated (weighted) covariance matrix
- an estimate for the center (mean) of the data.
- the number of observations (rows) in
- the weights used in the estimation. Only returned if given as an argument.
- the estimated correlation matrix. Only returned if
(xy <- cbind(x = 1:10, y = c(1:3, 8:5, 8:10))) w1 <- c(0,0,0,1,1,1,1,1,0,0) cov.wt(xy, wt = w1) # i.e. method = "unbiased" cov.wt(xy, wt = w1, method = "ML", cor = TRUE)