I was talking to a colleague about modeling nominal outcomes in STAN, and wrote up this example. Just put it here in case it’s helpful for anyone (probably myself in the future).
In this post, I demonstrate why rescaling a coefficient (i.e., multiplied/divided by a constant) is different from “standardizing” a coefficient (i.e., multiplied/divided by the sample standard deviation, which is a random variable) in SEM.
E-Step M-Step Estimating a 2-PL Model with EM in Julia Find \(\bar r_{jk}\) and \(\bar n_k\) Solve estimating equations Iterations Stopping criteria Benchmarking Remark \[ \newcommand{\bv}[1]{\boldsymbol{\mathbf{#1}}} \]
Import Data Two-Parameter Logistic Model Estimation with mirt in R Marginal Maximum Likelihood (MML) Estimation Implement MML Estimation in Julia Import R data Compute marginal loglikelihood Optimization Benchmarking The semester is finally over, and for some reason, I wanted to consolidate my understanding of some psychometric models, perhaps because I’ll be teaching a graduate measurement class soon.
Load Packages Data Hypothetical Research Question Distinguishable Dyads Indistinguishable Dyads Model Comparison Using SEM Distinguishable Dyads Indistinguishable Dyads Every time I teach multilevel modeling (MLM) at USC, I have students interested in running the actor partner independence model (APIM) using dyadic model.
Measurement invariance---that a test measures the same construct in the same way across subgroups---needs to hold for subgroup comparisons to be meaningful. There has been tremendous growth in measurement invariance research in the past decade. …
library(SimDesign) library(cmdstanr) [Update: Use parallel computing with two cores.]
Adapted from https://cran.r-project.org/web/packages/SimDesign/vignettes/SimDesign-intro.html
See https://mc-stan.org/cmdstanr/articles/cmdstanr.html for using cmdstanr
Design <- createDesign(sample_size = c(30, 60, 120, 240), distribution = c('norm', 'chi')) Design ## # A tibble: 8 × 2 ## sample_size distribution ## <dbl> <chr> ## 1 30 norm ## 2 60 norm ## 3 120 norm ## 4 240 norm ## 5 30 chi ## 6 60 chi ## 7 120 chi ## 8 240 chi Generate <- function(condition, fixed_objects = NULL) { N <- condition$sample_size dist <- condition$distribution if(dist == 'norm'){ dat <- rnorm(N, mean = 3) } else if(dist == 'chi'){ dat <- rchisq(N, df = 3) } dat } Define Bayes estimator of the mean with STAN