R/make_irt.R

Defines functions make_irt

make_irt <- function(){
  parsnip::set_new_model("irt")

  # regression will essentially mean, IRT, classification will mean LCA. That will be implemented eventually.
  parsnip::set_model_mode(model = "irt", mode = "regression")

  parsnip::set_model_engine("irt", mode = "regression", eng = "mirt")

  parsnip::set_dependency("irt", eng = "mirt", pkg = "mirt")

  parsnip::set_model_arg(
    model = "irt",
    eng = "mirt",
    parsnip = "item_type",
    original = "item_type",
    func = list(fun = "item_type"),
    has_submodel = FALSE
  )
  parsnip::set_model_arg(
    model = "irt",
    eng = "mirt",
    parsnip = "tol",
    original = "tol",
    func = list(fun = "tol"),
    has_submodel = FALSE
  )

  irt <- function(mode = "regression", item_type = NULL){
    args <- list(item_type = rlang::enquo(item_type))
    out <- list(args = args,
                eng_args = NULL,
                mode = mode,
                method = NULL,
                engine = NULL)
    class(out) <- parsnip::make_classes("irt")
    out
  }

  parsnip::set_fit(
    model = "irt",
    eng = "mirt",
    mode = "regression",
    value = list(
      interface = "matrix",
      protect = c(''),
      func = c(fun = "irt_mirt"),
      defaults = list()
    )
  )

  parsnip::show_model_info("irt")


  parsnip::set_model_engine("irt", mode = "regression", eng = "ltm")

  parsnip::set_dependency("irt", eng = "ltm", pkg = "ltm")

  parsnip::set_model_arg(
    model = "irt",
    eng = "ltm",
    parsnip = "item_type",
    original = "item_type",
    func = list(fun = "item_type"),
    has_submodel = FALSE
  )

  parsnip::set_fit(
    model = "irt",
    eng = "ltm",
    mode = "regression",
    value = list(
      interface = "matrix",
      protect = c(''),
      func = c(fun = "irt_ltm"),
      defaults = list()
    )
  )
}
Pflegermeister/wizirt2 documentation built on Oct. 23, 2020, 1:29 a.m.