R/utils.R

Defines functions si_lambda si_gamma `%||%` impute

utils::globalVariables(c("H", "J", "K", "Li", "Lijk", "Lik", "N",
                  "alpha", "dalpha", "lambda", "eta", "p", "p0", "q", "pik",
                  "theta_ls", "w", "x", "x0", "y", "z", "fitted_mean", "fitted_var",
                  "form_dif", "items_dif"))

# median impute
impute <- function(vec){
  vec[is.na(vec)] <- median(vec, na.rm = TRUE)
  vec
}

# logical or infix function
`%||%` <- function(a, b) if (!is.null(a)) a else b

# calculate gamma gradient for case i
si_gamma <- function(i) {
    sum(pik[i, ] * Lik[i, ] * (theta_ls - fitted_mean[[i]]))/
    fitted_var[[i]]/Li[[i]] * x[i, 1:p]
}

# calculate lambda gradient for case i
si_lambda <- function(i) {
    sum(0.5 * pik[i, ] * Lik[i, ] * ((theta_ls - fitted_mean[[i]])^2/fitted_var[[i]] - 1))/Li[[i]] * z[i, 1:q]
}
xiangzhou09/hIRT documentation built on Dec. 25, 2021, 5:27 a.m.