1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
<!--
%\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)
```
|