```
# install.packages("remotes")
remotes::install_github("fwijayanto/autoRasch", build_manual = TRUE, build_vignettes = TRUE)
```

`library(autoRasch)`

In this autoRasch package four models are implemented, i.e., the PCM, the GPCM, the PCM-DIF, and the GPCM-DIF. For binary responses, the PCM and GPCM will transform to the Rasch model and the 2-PL model, respectively.

The Partial Credit Model (PCM) is the model multi-categorical responses, which generalizes the Rasch model.

`<- pcm(shortDIF) pcm_res `

Similar with the PCM the PCM-DIF generalize the Rasch model even more by parameterizing the DIF effect in the items. However, in the PCM-DIF, we need to define the groups of the subjects. In this simulated dataset, the groups are pre-designed as the first half and the rest.

```
<- matrix(c(rep(0,50),rep(1,50)),ncol = 1, dimnames = list(c(1:100),c("cov")))
grMap <- pcm_dif(shortDIF, groups_map = grMap) pcmdif_res
```

Some of the S3 generic functions are implemented to this model, i.e.,
summary() and print(). However, to filter which model’s parameter to
plot, I add `par`

argument. It could be filled in using
`theta`

, `beta`

, `gamma`

,
`alpha`

, and `delta`

, depends on the models
applied. Ignoring this argument shows all estimated parameters of the
model. `Item Loc.`

represents the item location which is
obtained by averaging the threshold values. `*`

indicates the
occurence of a disordered threshold.

```
summary(pcm_res, par="beta")
#>
#>
#> The estimated difficulty scores:
#> Th_1 Th_2 Item Loc.
#> Item1 -4.12 -1.46 -2.79
#> Item2 0.80 -0.57 0.12 *
#> Item3 1.92 3.00 2.46
#> Item4 0.16 0.19 0.17
#>
#> The most difficult item: Item3
#> The easiest item: Item1
#> There are 1 items which have disordered thresholds.
#> '*' Item has disordered thresholds.
```

```
summary(pcmdif_res, par="delta")
#>
#>
#> The estimated DIF effects (gap of difficulties) (delta):
#> cov
#> Item4 2.18
```

For PCM and PCM-DIF, the estimated parameters could be plotted as a Person-Item map. However, as for PCM-DIF the items with DIF will be resolved by splitting the items based on the given groups. As the results, we may obtain more than one item with the same number.

`plot_PImap(pcm_res, main = "Person-Item map of the PCM")`

`plot_PImap(pcmdif_res, main = "Person-Item map of the PCM-DIF")`

Since item_{19} is a DIF-item, there are two
item_{19} in the Person-Item map of the PCM-DIF, the
`I 19`

and `I 19_a`

for the reference and the
focal group, respectively. Red color means that there is a threshold
disorder within the item.

The `plot_ICC()`

and `plot_EVC()`

could be used
to plot the item characteristic curve (ICC) and the expected value curve
(EVC), respectively, for each item.

`plot_ICC(pcm_res, itemno = 2, main = "ICC of I 17; estimated using PCM")`

To implement the standard Rasch goodness-of-fit statistics, a
specific S3 function have been developed to compute the (item/person)
fit statistics, i.e., `fitStats()`

function, for the PCM and
the PCM-DIF. To summarize only item or person statistic,
`itemfit()`

or `personfit()`

could be used,
respectively.

```
<- fitStats(pcm_res)
pcm_fit itemfit(pcm_fit)
#>
#> Item Fit Statistics:
#>
#> OutfitMnSq InfitMnSq OutfitZSTD InfitZSTD Alpha
#> Item1 0.40 0.57 -1.86 -2.78 1.16
#> Item2 0.41 0.66 -1.61 -2.59 1.14
#> Item3 0.57 0.71 -0.66 -1.60 1.09
#> Item4 0.96 1.16 -0.02 1.14 0.93
```

```
<- fitStats(pcmdif_res)
pcmdif_fit itemfit(pcmdif_fit)
#>
#> Item Fit Statistics:
#>
#> OutfitMnSq InfitMnSq OutfitZSTD InfitZSTD Alpha
#> Item1 0.32 0.49 -2.12 -3.48 1.18
#> Item2 0.30 0.47 -2.08 -4.30 1.18
#> Item3 0.48 0.62 -0.81 -2.29 1.10
#> Item4 0.51 0.71 -1.36 -2.04 1.11
```

The Generalized Partial Credit Model (GPCM) generalizes the Partial Credit Model by modelling the predictability of the subjects’ responses (discrimination parameters).

`<- gpcm(shortDIF) gpcm_res `

For further generalization to the PCM, the Generalized Partial Credit Model with DIF (GPCM-DIF) not only models the predictability, but also the effects of the differential functioning of each items.

```
<- matrix(c(rep(0,50),rep(1,50)),ncol = 1, dimnames = list(c(1:100),c("cov")))
grMap <- gpcm_dif(shortDIF, groups_map = grMap) gpcmdif_res
```

Similar to the PCM and PCM-DIF, some of the S3 generic functions such
as `summary()`

and `print()`

also applied to these
models.

```
summary(gpcm_res, par="alpha")
#>
#>
#> The estimated discrimination parameters:
#> alpha
#> Item1 1.1603282
#> Item2 1.1403392
#> Item3 1.0904078
#> Item4 0.9339005
```

```
summary(gpcmdif_res, par="delta")
#>
#>
#> The estimated DIF effects (gap of difficulties):
#> cov
#> Item4 2.23808
```

Unlike `plot_PImap()`

which only implemented to the PCM
and PCM-DIF, `plot_EVC()`

and `plot_ICC()`

are
also implemented to the GPCM and the GPCM-DIF.