From cde51fbcdc8308d332a8e609d009ba580e4a9807 Mon Sep 17 00:00:00 2001 From: philchalmers Date: Thu, 25 Jul 2024 10:54:19 -0400 Subject: [PATCH] add a conveged attr --- R/RCI.R | 14 +++++++++++--- R/fscores.internal.R | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/R/RCI.R b/R/RCI.R index 933d66638..e631bfdab 100644 --- a/R/RCI.R +++ b/R/RCI.R @@ -171,12 +171,16 @@ RCI <- function(mod_pre, predat, postdat, fs_post <- fscores(mod_post, response.pattern = postdat, ...) diff <- fs_post[,1] - fs_pre[,1] if(Fisher){ - fs_pre[,2] <- 1/sqrt(testinfo(mod_pre, Theta = fs_pre[,1])) - fs_post[,2] <- 1/sqrt(testinfo(mod_post, Theta = fs_post[,1])) + fs_pre[,2L] <- 1/sqrt(testinfo(mod_pre, Theta = fs_pre[,1])) + fs_post[,2L] <- 1/sqrt(testinfo(mod_post, Theta = fs_post[,1])) } pse <- sqrt(fs_pre[,2]^2 + fs_post[,2]^2) z <- diff/pse + converge_pre <- converge_post <- rep(TRUE, length(z)) + converge_pre[attr(fs_pre, 'failed2converge')] <- FALSE + converge_post[attr(fs_post, 'failed2converge')] <- FALSE ret <- data.frame(pre.score=fs_pre[,1], post.score=fs_post[,1], diff, + converged=converge_pre & converge_post, SEM=pse, z=z, p=pnorm(abs(z), lower.tail = FALSE)*2) } else { @@ -196,7 +200,11 @@ RCI <- function(mod_pre, predat, postdat, joint <- do.call(rbind, joint) SEs <- do.call(rbind, lapply(fs_acov, \(x) sqrt(diag(x)))) z <- diff/SEs - ret <- data.frame(diff=diff, joint, z=z, + converge_pre <- converge_post <- rep(TRUE, length(z)) + converge_pre[attr(fs_pre, 'failed2converge')] <- FALSE + converge_post[attr(fs_post, 'failed2converge')] <- FALSE + ret <- data.frame(diff=diff, converged=converge_pre & converge_post, + joint, z=z, p=pnorm(abs(z), lower.tail = FALSE)*2) } } diff --git a/R/fscores.internal.R b/R/fscores.internal.R index ea6ed7080..2e2942b7c 100644 --- a/R/fscores.internal.R +++ b/R/fscores.internal.R @@ -440,6 +440,7 @@ setMethod( whc <- which(converge_info_mat != 1) warning(paste0("The following factor score estimates failed to converge successfully:\n ", paste0(whc, collapse=',')), call.=FALSE) + attr(scoremat, 'failed2converge') <- whc } return(scoremat) } else {