## ----setup, include = FALSE-----------------------------------------------------------------------
knitr::opts_chunk$set(echo = TRUE, fig.align = "center", out.width = "100%")
knitr::opts_chunk$set(comment = "#>")
old_options <- options(width = 100)

## -------------------------------------------------------------------------------------------------
library(spifa)

data(ipixuna)
nitems <- ncol(ipixuna$items)

## -------------------------------------------------------------------------------------------------
set.seed(123)
samples <- spifa(items ~ 1, data = ipixuna, nfactors = 2, ngp = 0, niter = 500)
samples

## -------------------------------------------------------------------------------------------------
attr(samples, "fit_args")$constrain_L

## -------------------------------------------------------------------------------------------------
nfactors <- 3
A <- matrix(1, nitems, nfactors)
A[c(4, 8), 1] <- 0
A[c(4, 5, 6, 7, 8, 10), 2] <- 0
A[c(5, 6), 3] <- 0

samples <- spifa(
  items ~ 1, data = ipixuna, nfactors = nfactors, ngp = 0, niter = 500,
  constraints = list(discrimination = A)
)
samples

## -------------------------------------------------------------------------------------------------
samples <- spifa(
  items ~ poly(wealth, 2), data = ipixuna, nfactors = nfactors, ngp = 0, niter = 500,
  constraints = list(discrimination = A)
)
samples

## -------------------------------------------------------------------------------------------------
T_loading <- matrix(c(1, 1, 0, 0, 0, 1), nfactors, 2)
T_loading

## -------------------------------------------------------------------------------------------------
samples <- spifa(
  items ~ 1, data = ipixuna, nfactors = nfactors, ngp = 2, niter = 500,
  constraints = list(discrimination = A, loading = T_loading)
)
samples

## -------------------------------------------------------------------------------------------------
samples <- spifa(
  items ~ wealth, data = ipixuna, nfactors = nfactors, niter = 500,
  constraints = list(discrimination = A)
)
samples

## ----include = FALSE----------------------------------------------------------
options(old_options)

