Skip to content

Commit

Permalink
version 0.4.4
Browse files Browse the repository at this point in the history
  • Loading branch information
CoTiMA authored and cran-robot committed Oct 12, 2021
1 parent db9136c commit f58d51a
Show file tree
Hide file tree
Showing 9 changed files with 265 additions and 287 deletions.
8 changes: 4 additions & 4 deletions DESCRIPTION
@@ -1,8 +1,8 @@
Package: CoTiMA
Type: Package
Title: Continuous Time Meta-Analysis ('CoTiMA')
Version: 0.4.3
Date: 2021-08-24
Version: 0.4.4
Date: 2021-10-12
Authors@R: c(person("Christian", "Dormann", role = c("aut","cph")),
person("Markus", "Homberg", email = "cotima@uni-mainz.de", role = c("aut", "com", "cre")),
person("Christina", "Guthier", role = c("ctb")),
Expand Down Expand Up @@ -33,11 +33,11 @@ Suggests: R.rsp
VignetteBuilder: R.rsp
RoxygenNote: 7.1.1
NeedsCompilation: no
Packaged: 2021-08-24 06:53:49 UTC; comst
Packaged: 2021-10-12 07:51:48 UTC; comst
Author: Christian Dormann [aut, cph],
Markus Homberg [aut, com, cre],
Christina Guthier [ctb],
Manuel Voelkle [ctb]
Maintainer: Markus Homberg <cotima@uni-mainz.de>
Repository: CRAN
Date/Publication: 2021-09-02 22:30:12 UTC
Date/Publication: 2021-10-12 08:20:08 UTC
14 changes: 6 additions & 8 deletions MD5
@@ -1,5 +1,5 @@
c6c5fd62278ab8e38beb1efdf22a3bc1 *DESCRIPTION
820f068d8a9c2291ff948d903152a48b *NAMESPACE
f2a1700b9bfdeb2717a38b0abb03d9e7 *DESCRIPTION
70024c23cd14e0c1d09c53e1a32fe029 *NAMESPACE
8a681462471b608df8446d764c0e86ac *R/ctmaAllInvFit.R
4b960c39da71171498b77ed259a949e8 *R/ctmaBiG.R
dd1068a4812cc472605ecc3d134b3f02 *R/ctmaBiGOMX.R
Expand All @@ -12,14 +12,13 @@ c8c90e2a52e07d8b53b9b43348735ec0 *R/ctmaFit.R
f052499cdac481712d1fc2db52fa7f7f *R/ctmaFitList.R
12e3ed7e0c4111fdc006c7af32c8f929 *R/ctmaFitToPrep.R
efe9bee8980b4fe926c818eaf5b1aa97 *R/ctmaGetPub.R
68723e4cb8f8bbdb4fc1ffdec528defa *R/ctmaInit.R
8defedfc316422e50c6f1fce6d96c831 *R/ctmaInit.R
8e31bd47084b97cacce6b4820cac176f *R/ctmaLabels.R
10ba02a726a6507efa4dd379a420528d *R/ctmaModDrift.R
8ec954784d8d1fb4df0d84f17ccf5398 *R/ctmaOptimizeInit.R
f513abc4f046737c291b7250473828bb *R/ctmaPRaw.R
77e7e642b4a5586dd1c2e1bc6713d511 *R/ctmaPlot.R
fa89e4806bb69749d8975f669976efe6 *R/ctmaPlot.R
1a921a678410343cae4d625402cb3c7f *R/ctmaPlotContainer.R
7a2fcb304192e9b7e4e25f4d3ed01f87 *R/ctmaPower.R
a4401da96aa9c302977fa7eb8e629506 *R/ctmaPower.R
49f1ec7c6437b786883e38243c4bc297 *R/ctmaPrep.R
a7f9ad94b9f8f6c6f5cf99855f9eca8d *R/ctmaPub.R
bf01992ba314ebaa2bdc8e9bfe0cb77e *R/ctmaSV.R
Expand Down Expand Up @@ -139,7 +138,7 @@ b129cc2f40652f80a19b2e9445c87275 *data/source3.rda
35a8f6cdaea9dd070b48a94fe95e37d5 *data/targetVariables3.rda
dd784329847d1e24eaf873c5e43418a5 *data/targetVariables313.rda
7e42ffe92ec1bf1eacdfc7504f5d1486 *data/variableNames128.rda
b6175d46bbbd763cb08149ac71a6ef25 *inst/doc/CoTiMA_User_Guide.pdf
aaeb907edde013abe49e0299f8e61661 *inst/doc/CoTiMA_User_Guide.pdf
044851f3e5d3c72fd0a62d9f8f9f5c9f *inst/doc/CoTiMA_User_Guide.pdf.asis
79207bf9cdaf4e39217838760f4639de *man/A128.Rd
fa4015098bfc5a56b91550a8a3ae85a4 *man/A313.Rd
Expand Down Expand Up @@ -204,7 +203,6 @@ afda4a4aa921a31f6a009553df44a2d7 *man/ctmaFitToPrep.Rd
92fa93ca54da95140cd79705122d2c2f *man/ctmaGetPub.Rd
3b39ed05671fbdd24fe38635b1a344dd *man/ctmaInit.Rd
f2186637377091d2c388d3c6e5c55204 *man/ctmaLabels.Rd
2d7b97c4aed0eeec0036d9d974e4e53c *man/ctmaModDrift.Rd
849ce070379a0ba42c26c2030009d207 *man/ctmaOptimizeInit.Rd
3fd3eb32bcbf50353fdadc5f60f9b9f8 *man/ctmaPRaw.Rd
81c9a6e66a8f5f3698aa2918c38831ac *man/ctmaPlot.Rd
Expand Down
2 changes: 0 additions & 2 deletions NAMESPACE
Expand Up @@ -13,7 +13,6 @@ export(ctmaFitList)
export(ctmaFitToPrep)
export(ctmaGetPub)
export(ctmaInit)
export(ctmaModDrift)
export(ctmaOptimizeInit)
export(ctmaPlot)
export(ctmaPower)
Expand All @@ -33,7 +32,6 @@ importFrom(crayon,blue)
importFrom(crayon,red)
importFrom(ctsem,ctAddSamples)
importFrom(ctsem,ctDeintervalise)
importFrom(ctsem,ctExtract)
importFrom(ctsem,ctIntervalise)
importFrom(ctsem,ctLongToWide)
importFrom(ctsem,ctModel)
Expand Down
179 changes: 160 additions & 19 deletions R/ctmaInit.R
Expand Up @@ -788,7 +788,7 @@ ctmaInit <- function(
cores=coresToUse) )
} else {
# parallel re-fitting of problem study
Msg <- "Parallel fit attepts requested. Screen remains silent for a while.\n"
Msg <- "Parallel fit attmepts requested. Screen remains silent for a while.\n"
message(Msg)

allfits <- foreach::foreach(p=1:doPar) %dopar% {
Expand Down Expand Up @@ -825,6 +825,8 @@ ctmaInit <- function(
results <- allfits[[bestFit]]
}

gc() # tryout garbage collector to avoid memory issues

studyFit[[i]] <- results
studyFit[[i]]$resultsSummary <- summary(studyFit[[i]])

Expand Down Expand Up @@ -881,6 +883,8 @@ ctmaInit <- function(
model_Diffusion_Coef[[i]] <- (resultsSummary$parmatrices[resultsSummary$parmatrices[, "matrix"] == "DIFFUSIONcov", "Mean"])
names(model_Diffusion_Coef[[i]]) <- c(OpenMx::vech2full(rownames(resultsSummary$popmeans)[tmp]))
}
#resultsSummary
#model_Diffusion_Coef[[i]]

if (!(is.null(resultsSummary$parmatrices[rownames(resultsSummary$parmatrices) == "DIFFUSIONcov", "Sd"]))) {
model_Diffusion_SE[[i]] <- (resultsSummary$parmatrices[rownames(resultsSummary$parmatrices) == "DIFFUSIONcov", "Sd"]) #; model_Diffusion_SE[[i]]
Expand All @@ -889,6 +893,7 @@ ctmaInit <- function(
model_Diffusion_SE[[i]] <- resultsSummary$parmatrices[resultsSummary$parmatrices[, "matrix"] == "DIFFUSIONcov", "sd"] #; model_Diffusion_SE[[i]]
names(model_Diffusion_SE[[i]]) <- c(OpenMx::vech2full(rownames(resultsSummary$popmeans)[tmp]))
}
#model_Diffusion_SE[[i]]

if (!(length(resultsSummary$parmatrices[rownames(resultsSummary$parmatrices) == "DIFFUSIONcov", "2.5%"])) == 0) {
tmp1 <- resultsSummary$parmatrices[rownames(resultsSummary$parmatrices) == "DIFFUSIONcov", "2.5%"]; tmp1
Expand All @@ -905,6 +910,7 @@ ctmaInit <- function(
paste0(OpenMx::vech2full(rownames(resultsSummary$popmeans)[tmp]), "UL"))); tmp3
names(model_Diffusion_CI[[i]]) <- tmp3; model_Diffusion_CI[[i]]
}
#model_Diffusion_CI[[i]]

tmp <- grep("0var", rownames(resultsSummary$popmeans)); tmp
if (!(length(resultsSummary$parmatrices[rownames(resultsSummary$parmatrices) == "T0VAR", "Mean"])) == 0 ) {
Expand Down Expand Up @@ -948,34 +954,154 @@ ctmaInit <- function(
allStudies_Minus2LogLikelihood <- sum(unlist(studyFit_Minus2LogLikelihood)); allStudies_Minus2LogLikelihood
allStudies_estimatedParameters <- sum(unlist(studyFit_estimatedParameters)); allStudies_estimatedParameters
allStudies_df <- "deprecated"
#model_Drift_Coef
#model_Drift_SE
allStudiesDRIFT_effects <- matrix(t(cbind(unlist(model_Drift_Coef), unlist(model_Drift_SE)) ), n.studies, 2*n.latent^2, byrow=T)
#allStudiesDRIFT_effects
#
tmp1 <- driftFullNames; tmp1
tmp2 <- rep("SE", length(tmp1)); tmp2
colnames(allStudiesDRIFT_effects) <- c(rbind(tmp1, tmp2)); allStudiesDRIFT_effects
targetNames1 <- c(rbind(tmp1, tmp2)); targetNames1
#
targetNames2 <- c()
for (i in 1:n.latent) {
for (j in 1:n.latent) {
if (i != j) {
targetNames2 <- c(targetNames2, paste0("_eta", i, "_eta", j))
} else {
targetNames2 <- c(targetNames2, paste0("_eta", i))
}
}
}
targetNames2 <- paste0("diff", targetNames2); targetNames2
targetNames2 <- c(rbind(targetNames2, rep("SE", 4))); targetNames2
#
targetNames3 <- targetNames2
targetNames3 <- gsub("eta", "V", targetNames3)
targetNames3 <- gsub("diff", "T0var", targetNames3); targetNames3

allStudiesDRIFT_effects <- matrix(t(cbind(unlist(model_Drift_Coef), unlist(model_Drift_SE)) ), n.studies, 2*n.latent^2, byrow=T)
colnames(allStudiesDRIFT_effects) <- targetNames1; allStudiesDRIFT_effects

allStudiesDIFF_effects <- matrix(t(cbind(unlist(model_Diffusion_Coef), unlist(model_Diffusion_SE)) ), n.studies, 2*n.latent^2, byrow=T)
colnames(allStudiesDIFF_effects) <- targetNames2; allStudiesDIFF_effects

allStudiesT0VAR_effects <- matrix(t(cbind(unlist(model_T0var_Coef), unlist(model_T0var_SE)) ), n.studies, 2*n.latent^2, byrow=T)
colnames(allStudiesT0VAR_effects) <- targetNames3; allStudiesT0VAR_effects

#
if (!(is.null(scaleTime))) {
allStudiesDRIFT_effects_rescaledTime <- matrix(t(cbind(unlist(model_Drift_Coef) * scaleTime,
unlist(model_Drift_SE) * scaleTime) ), n.studies, 2*n.latent^2, byrow=T)
allStudiesDRIFT_effects_rescaledTime
colnames(allStudiesDRIFT_effects_rescaledTime) <- targetNames1
allStudiesDRIFT_effects_rescaledTime <- round(allStudiesDRIFT_effects_rescaledTime, digits); allStudiesDRIFT_effects_rescaledTime
#
allStudiesDIFF_effects_rescaledTime <- matrix(t(cbind(unlist(model_Diffusion_Coef) * scaleTime,
unlist(model_Diffusion_SE) * scaleTime) ), n.studies, 2*n.latent^2, byrow=T)
colnames(allStudiesDIFF_effects_rescaledTime) <- targetNames2
allStudiesDIFF_effects_rescaledTime <- round(allStudiesDIFF_effects_rescaledTime, digits); allStudiesDIFF_effects_rescaledTime
} else {
allStudiesDRIFT_effects_rescaledTime <- NULL
allStudiesDIFFUSION_effects_rescaledTime <- NULL
}

source <- lapply(primaryStudies$source, function(extract) paste(extract, collapse=", ")); source
for (l in 1:length(source)) if ( source[[l]] == "NA") source[[l]] <- "Reference not provided"
#
allStudiesDRIFT_effects_ext <- cbind(unlist(source), allStudiesDRIFT_effects)
tmp <- allStudiesDRIFT_effects_ext
tmp[, 2:(ncol(tmp))] <- round(as.numeric(tmp[, 2:(ncol(tmp))]), digits)
allStudiesDRIFT_effects_ext <- tmp
allStudiesDRIFT_effects_ext <- tmp; allStudiesDRIFT_effects_ext
#
allStudiesDIFF_effects_ext <- cbind(unlist(source), allStudiesDIFF_effects)
tmp <- allStudiesDIFF_effects_ext
tmp[, 2:(ncol(tmp))] <- round(as.numeric(tmp[, 2:(ncol(tmp))]), digits)
allStudiesDIFF_effects_ext <- tmp; allStudiesDIFF_effects_ext
#
allStudiesT0VAR_effects_ext <- cbind(unlist(source), allStudiesT0VAR_effects)
tmp <- allStudiesT0VAR_effects_ext
tmp[, 2:(ncol(tmp))] <- round(as.numeric(tmp[, 2:(ncol(tmp))]), digits)
allStudiesT0VAR_effects_ext <- tmp; allStudiesT0VAR_effects_ext

#allStudiesEffects <- cbind(DRIFTCoeff, DIFFCoeff, T0

if (!(is.null(allStudiesDRIFT_effects_rescaledTime))) {
#
allStudiesDRIFT_effects_rescaledTime_ext <- cbind(unlist(source), allStudiesDRIFT_effects_rescaledTime)
tmp <- allStudiesDRIFT_effects_rescaledTime_ext
tmp[, 2:(ncol(tmp))] <- round(as.numeric(tmp[, 2:(ncol(tmp))]), digits)
allStudiesDRIFT_effects_rescaledTime_ext <- tmp; allStudiesDRIFT_effects_rescaledTime_ext
#allStudiesDRIFT_effects_ext
#
allStudiesDIFF_effects_rescaledTime_ext <- cbind(unlist(source), allStudiesDIFF_effects_rescaledTime)
tmp <- allStudiesDIFF_effects_rescaledTime_ext
tmp[, 2:(ncol(tmp))] <- round(as.numeric(tmp[, 2:(ncol(tmp))]), digits)
allStudiesDIFF_effects_rescaledTime_ext <- tmp; allStudiesDIFF_effects_rescaledTime_ext
#allStudiesDIFF_effects_ext
} else {
allStudiesDRIFT_effects_rescaledTime_ext <- NULL
allStudiesDIFF_effects_rescaledTime_ext <- NULL
}

allStudiesDriftCI <- matrix(unlist(model_Drift_CI), nrow=n.studies, byrow=TRUE)
colnames(allStudiesDriftCI) <- names(model_Drift_CI[[1]])
colnames(allStudiesDriftCI) <- names(model_Drift_CI[[1]]); allStudiesDriftCI
allStudiesDiffusionCI <- matrix(unlist(model_Diffusion_CI), nrow=n.studies, byrow=TRUE)
colnames(allStudiesDiffusionCI) <- names(model_Diffusion_CI[[1]])
colnames(allStudiesDiffusionCI) <- names(model_Diffusion_CI[[1]]); allStudiesDiffusionCI
allStudiesT0varCI <- matrix(unlist(model_T0var_CI), nrow=n.studies, byrow=TRUE)
colnames(allStudiesT0varCI) <- names(model_T0var_CI[[1]])
allStudiesCI <- t(rbind(t(allStudiesDriftCI), t(allStudiesDiffusionCI), t(allStudiesT0varCI)))
allStudiesCI <- cbind(allStudiesDRIFT_effects_ext, allStudiesCI)
rownames(allStudiesCI) <- rownames(allStudiesDRIFT_effects_ext)
colnames(allStudiesT0varCI) <- names(model_T0var_CI[[1]]); allStudiesT0varCI
if (!(is.null(scaleTime))) {
#
allStudiesDriftCI_rescaledTime <- matrix(round(unlist(model_Drift_CI) * scaleTime, digits),
nrow=n.studies, byrow=TRUE)
colnames(allStudiesDriftCI_rescaledTime) <- names(model_Drift_CI[[1]]); allStudiesDriftCI_rescaledTime
#
allStudiesDiffCI_rescaledTime <- matrix(round(unlist(model_Diffusion_CI) * scaleTime, digits),
nrow=n.studies, byrow=TRUE)
colnames(allStudiesDiffCI_rescaledTime) <- names(model_Diffusion_CI[[1]]); allStudiesDiffCI_rescaledTime
} else {
allStudiesDriftCI_rescaledTime <- NULL
allStudiesDiffCI_rescaledTime <- NULL
}
#allStudiesDiffCI_rescaledTime

#allStudiesDiffusionCI <- matrix(unlist(model_Diffusion_CI), nrow=n.studies, byrow=TRUE)
#colnames(allStudiesDiffusionCI) <- names(model_Diffusion_CI[[1]])
#allStudiesT0varCI <- matrix(unlist(model_T0var_CI), nrow=n.studies, byrow=TRUE)
#colnames(allStudiesT0varCI) <- names(model_T0var_CI[[1]]); allStudiesT0varCI

#allStudiesCI <- t(rbind(t(allStudiesDriftCI), t(allStudiesDiffusionCI), t(allStudiesT0varCI)))


allStudiesCI <- cbind(allStudiesDriftCI, allStudiesDiffusionCI, allStudiesT0varCI); allStudiesCI
allStudiesCI_ext <- cbind(allStudiesDRIFT_effects_ext[,1], allStudiesCI); allStudiesCI_ext

allStudiesCI_rescaledTime <- allStudiesCI_ext
#colnames(allStudiesCI_rescaledTime)
tmp1 <- grep("T0", colnames(allStudiesCI_rescaledTime)); tmp1
tmp2 <- allStudiesCI_rescaledTime[, -c(1, tmp1)]; tmp2
tmp2 <- matrix(round(as.numeric(tmp2) * scaleTime, digits), ncol=ncol(tmp2)); tmp2
tmp3 <- cbind(allStudiesCI_rescaledTime[, 1], tmp2, allStudiesCI_rescaledTime[, tmp1])
colnames(tmp3) <- colnames(allStudiesCI_rescaledTime); tmp3
allStudiesCI_rescaledTime <- tmp3

#allStudiesCI
#allStudiesDRIFT_effects
#allStudiesDRIFT_effects_ext
#allStudiesCI <- cbind(allStudiesDRIFT_effects_ext, allStudiesCI)
#rownames(allStudiesCI) <- rownames(allStudiesDRIFT_effects_ext)
#allStudiesCI

# Label summary table
rownames(allStudiesDRIFT_effects) <- paste0("Study No ", primaryStudies$studyNumbers)
rownames(allStudiesDRIFT_effects_ext) <- paste0("Study No ", primaryStudies$studyNumbers)
rownames(allStudiesDIFF_effects) <- paste0("Study No ", primaryStudies$studyNumbers)
rownames(allStudiesDIFF_effects_ext) <- paste0("Study No ", primaryStudies$studyNumbers)

if (!(is.null(scaleTime))) {
#
rownames(allStudiesDRIFT_effects_rescaledTime) <- paste0("Study No ", primaryStudies$studyNumbers)
rownames(allStudiesDRIFT_effects_rescaledTime_ext) <- paste0("Study No ", primaryStudies$studyNumbers)
#
rownames(allStudiesDIFF_effects_rescaledTime) <- paste0("Study No ", primaryStudies$studyNumbers)
rownames(allStudiesDIFF_effects_rescaledTime_ext) <- paste0("Study No ", primaryStudies$studyNumbers)
}

# check single study results
if (checkSingleStudyResults == TRUE) {
Expand All @@ -988,6 +1114,10 @@ ctmaInit <- function(

DRIFTCoeff <- matrix(unlist(model_Drift_Coef), n.studies, n.latent^2, byrow=TRUE); DRIFTCoeff
DRIFTSE <- matrix(unlist(model_Drift_SE), n.studies, n.latent^2, byrow=TRUE); DRIFTSE
DIFFCoeff <- matrix(unlist(model_Diffusion_Coef), n.studies, n.latent^2, byrow=TRUE); DIFFCoeff
DIFFSE <- matrix(unlist(model_Diffusion_SE), n.studies, n.latent^2, byrow=TRUE); DIFFSE
T0VARCoeff <- matrix(unlist(model_T0var_Coef), n.studies, n.latent^2, byrow=TRUE); T0VARCoeff
T0VARSE <- matrix(unlist(model_T0var_SE), n.studies, n.latent^2, byrow=TRUE); T0VARSE

if (n.studies < 2) {
if (activateRPB==TRUE) {RPushbullet::pbPost("note", paste0("CoTiMA (",Sys.time(),")" ), paste0(Sys.info()[[4]], "\n","Data processing stopped.\nYour attention is required."))}
Expand Down Expand Up @@ -1017,6 +1147,13 @@ ctmaInit <- function(
message <- paste(tmp2, tmp4, "If the model fit (-2ll) is better (lower), continue using, e.g.,", tmp3, "in all subsequent models.", collapse="\n"); message
}

if (!(is.null(scaleTime))) {
model_Drift_Coef_rescaled_time <- lapply(model_Drift_Coef, function(x) x * scaleTime)
model_Diffusiont_Coef_rescaled_time <- lapply(model_Diffusion_Coef, function(x) x * scaleTime)
} else {
model_Drift_Coef_rescaled_time <- NULL
model_Diffusiont_Coef_rescaled_time <- NULL
}

results <- list(activeDirectory=activeDirectory,
plot.type="drift", model.type="stanct",
Expand All @@ -1027,17 +1164,21 @@ ctmaInit <- function(
primaryStudyList=primaryStudies,
studyList=studyList, studyFitList=studyFit,
emprawList=empraw, statisticsList=statisticsList,
modelResults=list(DRIFT=model_Drift_Coef, DIFFUSION=model_Diffusion_Coef, T0VAR=model_T0var_Coef, CINT=model_Cint_Coef),
modelResults=list(DRIFT=model_Drift_Coef_rescaled_time, DIFFUSION=model_Diffusiont_Coef_rescaled_time, T0VAR=model_T0var_Coef, CINT=model_Cint_Coef,
DRIFTrescaled=model_Drift_Coef, DIFFUSIONrescaled=model_Diffusion_Coef),
parameterNames=list(DRIFT=names(model_Drift_Coef[[1]]), DIFFUSION=names(model_Diffusion_Coef[[1]]), T0VAR=names(model_T0var_Coef[[1]])),
summary=(list(model="all drift free (het. model)",
estimates=allStudiesDRIFT_effects_ext,
estimates=allStudiesDRIFT_effects_rescaledTime_ext, #allStudiesDRIFT_effects_ext, = estimates that would be obtained without the scaleTime argument
randomEffects=model_popsd,
confidenceIntervals=allStudiesCI,
confidenceIntervals=allStudiesCI_rescaledTime, # allStudiesCI_ext, = estimates that would be obtained without the scaleTime argument
minus2ll= round(allStudies_Minus2LogLikelihood, digits),
n.parameters = round(allStudies_estimatedParameters, digits),
message=message))
# excel workbook is added later
)
message=message,
drift_estimates_rescaled_time =allStudiesDRIFT_effects_rescaledTime_ext,
drift_CI_rescaled_time=allStudiesDriftCI_rescaledTime,
diff_estimates_rescaled_time=allStudiesDIFF_effects_rescaledTime_ext,
diff_CI_rescaled_time=allStudiesDiffCI_rescaledTime)))
# excel workbook is added later
class(results) <- "CoTiMAFit"

### prepare Excel Workbook with several sheets ################################################################
Expand Down

0 comments on commit f58d51a

Please sign in to comment.