### getVcov.R ---
#----------------------------------------------------------------------
## Author: Thomas Alexander Gerds
## Created: Feb 23 2018 (14:03)
## Version:
## Last-Updated: Sep 28 2018 (09:55)
## By: Thomas Alexander Gerds
## Update #: 34
#----------------------------------------------------------------------
##
### Commentary:
##
### Change Log:
#----------------------------------------------------------------------
##
### Code:
getVcov <- function(data,IF.name,times=NULL){
model=models=n=NULL
models <- data[,unique(model)]
if (!is.null(times)){
times <- data[,unique(times)]
N <- data[model==model[[1]] & times==times[[1]],.N]
AllComb <- expand.grid(times=times,model=models)
allnames <- apply(AllComb,
1,
function(x){paste0("model=",x[2],", times=",x[1],sep="")})
matVoCov <- matrix(0,length(allnames),length(allnames))
rownames(matVoCov) <- allnames
colnames(matVoCov) <- allnames
for(i in 1:nrow(AllComb)){ # First pair of model and time
themodel1 <- AllComb[i,"model"]
thetimes1 <- AllComb[i,"times"]
## print(paste("Compute for model 1 =",themodel1,"and times 1=",thetimes1))
for(j in i:nrow(AllComb)){ # Second pair of model and time
themodel2 <- AllComb[j,"model"]
thetimes2 <- AllComb[j,"times"]
## print(paste("Compute for model 2 =",themodel2,"and times 2=",thetimes2))
# extract the two iid decompositions
IF1 <- data[model==themodel1 & times==thetimes1][[IF.name]]
IF2 <- data[model==themodel2 & times==thetimes2][[IF.name]]
# compute and save covariance
matVoCov[i,j] <- cov(IF1,IF2)/N
}
}
} else{
N <- data[model==model[[1]],.N]
AllComb <- expand.grid(model=models)
allnames <- unique(AllComb[["model"]])
matVoCov <- matrix(0,length(allnames),length(allnames))
rownames(matVoCov) <- allnames
colnames(matVoCov) <- allnames
for(i in 1:nrow(AllComb)){ # First pair of model and time
themodel1 <- AllComb[i,"model"]
for(j in i:nrow(AllComb)){ # Second pair of model and time
themodel2 <- AllComb[j,"model"]
# extract the two iid decompositions
IF1 <- data[model==themodel1][[IF.name]]
IF2 <- data[model==themodel2][[IF.name]]
# compute and save covariance
matVoCov[i,j] <- cov(IF1,IF2)/N
}
}
}
matVoCov[lower.tri(matVoCov)] <- t(matVoCov)[lower.tri(matVoCov)]
matVoCov
}
######################################################################
### getVcov.R ends here
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.