<!--
%\VignetteEngine{knitr::knitr}
%\VignetteIndexEntry{Basic 1 dimensional plots (HTML)}
-->

```{r, cache=FALSE, include=FALSE}
library(knitr)
library(rpf)
library(ggplot2)
library(reshape2)
library(gridExtra)
opts_chunk$set(echo=FALSE)
```

# Basic 1 dimensional plots

This template is suitable for plotting a single group
of 1 dimensional items.
Refer to the Rmd source code to see how to adapt this
template to your project.

## Load data

Normally you would obtain model parameters from [OpenMx](https://openmx.ssri.psu.edu/)
(or flexMIRT with flexmirt.read), but here are some inline
parameters for demonstration purposes.

```{r,echo=TRUE}
small <- structure(list(param = structure(c(1, 1, 0, 0, -0.5789195, -2.412259,  -1.3471789, 1, 1, 0, 0, 1.0983234, -2.0991327, -2.9482965, 1,  1, 0, 0, 0.4078264, -0.9824549, -1.5905594, 1, 1, 0, 0, -1.0650001,  -0.2100243, -3.2034577), .Dim = c(7L, 4L), .Dimnames = list(NULL,      c("X2", "X6", "X7", "X10"))), mean = 0, cov = structure(9.8238066, .Dim = c(1L,  1L))), .Names = c("param", "mean", "cov"))
small$spec <- list()
small$spec[1:4] <- rpf.nrm(outcomes=4, T.c= lower.tri(diag(3),TRUE) * -1)
```

## Item characteristic curve plots

```{r,fig.height=5}
width <- 5
small$icc <- list()
small$iif <- list()

tcc <- expand.grid(theta=seq(-width,width,.1), score=0)
tic <- expand.grid(theta=seq(-width,width,.1), info=0)

for (ix in 1:length(small$spec)) {
    name <- colnames(small$param)[ix]
    ii <- small$spec[[ix]]
    ii.p <- small$param[,ix]
    grid <- expand.grid(theta=seq(-width,width,.1))
    grid <- cbind(grid, t(rpf.prob(ii, ii.p, grid$theta)))
    tcc$score <- tcc$score + c(0:(ii@outcomes-1) %*% rpf.prob(ii, ii.p, grid$theta))
    colnames(grid) <- c("theta", paste0("k", 0:3))
    grid2 <- melt(grid, id.vars=c("theta"), variable.name="category", value.name="p")

    small$icc[[ix]] <- ggplot(grid2, aes(theta, p, color=category)) + geom_line() +
            ggtitle(paste("Item", name)) + ylim(0,1) + xlim(-width, width)

    grid <- expand.grid(theta=seq(-width,width,.1))
    grid$info <- rpf.info(ii, ii.p, t(grid$theta))
    tic$info <- tic$info + grid$info
    small$iif[[ix]] <- ggplot(grid, aes(theta, info)) + geom_line() +
            ggtitle(paste("Item", name)) + xlim(-width, width)
  }
do.call(grid.arrange, c(small$icc, ncol=2))
```

## Item information curve plots

```{r,fig.height=5}
do.call(grid.arrange, c(small$iif, ncol=2))
```

## Whole test plots

```{r,fig.height=2.5}
tcc.plot <- ggplot(tcc, aes(theta, score)) + geom_line() +
  ggtitle("Test Characteristic Curve") + xlim(-width, width)
tic.plot <- ggplot(tic, aes(theta, info)) + geom_line() +
  ggtitle("Test Information Curve") + xlim(-width, width)
grid.arrange(tcc.plot, tic.plot, ncol=2)
```