Nothing
params <-
list(EVAL = FALSE)
## ---- SETTINGS-knitr, include=FALSE-----------------------------------------------------
stopifnot(require(knitr))
options(width = 90)
opts_chunk$set(
comment = NA,
message = FALSE,
warning = FALSE,
eval = if (isTRUE(exists("params"))) params$EVAL else FALSE,
dev = "png",
dpi = 150,
fig.asp = 0.8,
fig.width = 5,
out.width = "60%",
fig.align = "center"
)
## ---------------------------------------------------------------------------------------
# library(thurstonianIRT)
# library(dplyr)
# library(tidyr)
## ---------------------------------------------------------------------------------------
# npersons <- 500
# ntraits <- 5
# nitems_per_block <- 3
# nblocks_per_trait <- 9
# nblocks <- ntraits * nblocks_per_trait / nitems_per_block
# nitems <- ntraits * nblocks_per_trait
# ncomparisons <- (nitems_per_block * (nitems_per_block - 1)) / 2 * nblocks
## ---------------------------------------------------------------------------------------
# set.seed(123)
# lambda <- runif(nitems, 0.65, 0.96)
# signs <- c(rep(1, ceiling(nitems / 2)), rep(-1, floor(nitems / 2)))
# lambda <- lambda * signs[sample(seq_len(nitems))]
# gamma <- runif(nitems, -1, 1)
# Phi <- diag(5)
## ---------------------------------------------------------------------------------------
# sdata <- sim_TIRT_data(
# npersons = npersons,
# ntraits = ntraits,
# nitems_per_block = nitems_per_block,
# nblocks_per_trait = nblocks_per_trait,
# gamma = gamma,
# lambda = lambda,
# Phi = Phi
# )
## ---- results="hide"--------------------------------------------------------------------
# fit_stan <- fit_TIRT_stan(sdata, chains = 1, iter = 1000, warmup = 500)
# fit_lavaan <- fit_TIRT_lavaan(sdata)
# fit_mplus <- fit_TIRT_mplus(sdata)
## ---------------------------------------------------------------------------------------
# eta <- as_tibble(as.data.frame(attributes(sdata)$eta))
# names(eta) <- paste0("trait", 1:ncol(eta))
# true_scores <- eta %>%
# mutate(id = 1:n()) %>%
# gather(key = "trait", value = "truth", -id)
# true_summaries <- true_scores %>%
# group_by(trait) %>%
# summarise(true_mean = mean(truth), true_sd = sd(truth))
#
# pred <- predict(fit_stan) %>%
# bind_rows(predict(fit_lavaan), predict(fit_mplus), .id = "source") %>%
# mutate(
# source = as.character(factor(
# source, levels = 1:3, labels = c("stan", "lavaan", "mplus")
# )),
# trait = tolower(trait)
# ) %>%
# inner_join(true_scores, by = c("id", "trait"))
#
# pred <- pred %>%
# inner_join(
# pred %>%
# group_by(trait, source) %>%
# summarise(cor_est_truth = cor(estimate, truth)),
# by = c("trait", "source")
# ) %>%
# mutate(
# sign = sign(cor_est_truth),
# estimate = ifelse(sign %in% -1, -estimate, estimate)
# ) %>%
# inner_join(true_summaries, by = "trait") %>%
# group_by(trait, source) %>%
# mutate(
# est_mean = mean(estimate),
# est_sd = sd(estimate)
# ) %>%
# ungroup() %>%
# mutate(
# ztruth = (truth - true_mean) / true_sd,
# zestimate = (estimate - est_mean) / est_sd
# )
## ---------------------------------------------------------------------------------------
# res <- pred %>%
# group_by(trait, source) %>%
# summarise(rel = cor(estimate, truth)^2)
#
# res
## ---- include = FALSE-------------------------------------------------------------------
# testthat::expect_true(all(res$rel > 0.75))
## ---------------------------------------------------------------------------------------
# cor_matrix <- pred %>%
# mutate(
# # ensure correct ordering of traits
# SC = paste0(source, "_", trait),
# SC = factor(SC, levels = unique(SC))
# ) %>%
# select(id, SC, estimate) %>%
# spread(key = "SC", value = "estimate") %>%
# bind_cols(eta, .) %>%
# select(-id) %>%
# cor()
## ---------------------------------------------------------------------------------------
# trait1 <- paste0(c("stan", "lavaan", "mplus"), "_trait1")
# round(cor_matrix[trait1, trait1], 2)
## ---- include = FALSE-------------------------------------------------------------------
# for (i in 1:ntraits) {
# trait_cols <- paste0(c("stan", "lavaan", "mplus"), "_trait", i)
# testthat::expect_true(all(cor_matrix[trait_cols, trait_cols] > 0.96))
# }
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.