https://github.com/cran/robCompositions
Tip revision: 744e252d9a1ee4b0d8263a5a0da37e1f5255129c authored by Matthias Templ on 08 November 2018, 13:00:03 UTC
version 2.0.9
version 2.0.9
Tip revision: 744e252
rdcm.R
#' @title relative difference between covariance matrices
#' @name rdcm
#' @description The sample covariance matrices are computed with the same isometric transformed observations.
#' @param x matrix or data frame
#' @param y matrix or data frame of the same size as x.
#' @return the error measures value
#' @author Matthias Templ
#' @references Hron, K. and Templ, M. and Filzmoser, P. (2010) Imputation of
#' missing values for compositional data using classical and robust methods
#' \emph{Computational Statistics and Data Analysis}, vol 54 (12), pages
#' 3095-3107.
#' Templ, M. and Hron, K. and Filzmoser and Gardlo, A. (2016).
#' Imputation of rounded zeros for high-dimensional compositional data.
#' \emph{Chemometrics and Intelligent Laboratory Systems}, 54 (12) 3095-3107.
#'
#' @seealso \code{\link{rdcm}}
#' @keywords manip
#' @export
#' @details The difference in covariance structure is based on the Euclidean distance between both covariance estimations.
#' @examples
#' data(expenditures)
#' x <- expenditures
#' x[1,3] <- NA
#' xi <- impKNNa(x)$xImp
#' rdcm(expenditures, xi)
rdcm <- function(x, y){
## from package matrixcalc, CRAN version 1.0.3
fn <-
function (x)
{
return(en(x, 2))
}
## from package matrixcalc, CRAN version 1.0.3
en <-
function (x, p)
{
if (!is.numeric(x)) {
stop("argument x is not numeric")
}
if (is.matrix(x)) {
Xmat <- x
}
else {
if (is.vector(x)) {
Xmat <- matrix(x, nrow = length(x), ncol = 1)
}
else {
stop("argument x is neither vector nor matrix")
}
}
if (p == 0) {
stop("exponent p is zero")
}
return((sum(abs(Xmat)^p))^(1/p))
}
# new code
ocov <- cov(pivotCoord(x))
rcov <- cov(pivotCoord(y))
return(fn(ocov-rcov)/fn(ocov))
}