Learn R Programming

GGUM (version 0.5)

MODFIT: MODFIT for the GGUM

Description

MODFIT computes the adjusted \(\chi^2\) degrees of freedom ratios (\(\chi^2/df\)) introduced by Drasgow et al. (1995) for the GGUM.

Usage

MODFIT(IP, precision = 4)

Value

A list (an object of class MODFIT) with four elements: The results for singlets, doublets, triples, and a summary result.

Arguments

IP

Object of class GGUM.

precision

Number of decimal places of the results (default = 4).

Author

Jorge N. Tendeiro, tendeiro@hiroshima-u.ac.jp

Details

This function computes the adjusted \(\chi^2\) degrees of freedom ratios (\(\chi^2/df\)) introduced by Drasgow et al. (1995). These \(\chi^2\) statistics are based on expected frequencies that depend on the estimated item parameters and the distribution of \(\theta\). The unadjusted statistic for item \(i\) is given by

$$\chi^2_i = \sum_{z=0}^C \frac{(O_{iz} - E_{iz})^2}{E_{iz}}, $$ chisq_i = sum( (O_iz - E_iz)^2 / E_iz; z = 0, ..., C ),

with

$$E_{iz} = N\int P_{iz}(\theta)\varphi(\theta)d\theta.$$

\(O_{iz}\) is the observed frequency of choosing answer \(z\) for item \(i\) and \(\varphi(\theta)\) is the standard normal density. The equation above applies to single items ('singlets'). The formula is easily extendible to pairs and triples of items. For a large number of items, the function selects suitable subsets of doublets and triples to perform the computations since its total number increases quickly with test length (Drasgow et al., 1995).

The formula is adjusted to a sample size of 3,000, as follows (see also LaHuis et al., 2011):

$$\chi^2_i/df = \frac{3,000(\chi^2_i - df)}{N}+df,$$

where \(df\) is a number of degrees of freedom that depends on the number of singlets, doublets, and triplets.

As an heuristic, values of \(\chi^2/df\) larger than 3 are indicative of model misfit.

This function produces the same numerical results as the MODFIT program (Stark, 2001) for the GGUM.

References

Drasgowetal1995GGUM

LaHuisetal2011GGUM

MODFITsoftwareGGUM

Examples

Run this code
# For GUM:
# Generate data:
gen1 <- GenData.GGUM(400, 5, 3, "GUM", seed = 139)
# Fit the GUM:
fit1 <- GUM(gen1$data, 3)
# Compute the adjusted chi square degrees of freedom ratios:
modfit.res1 <- MODFIT(fit1)
modfit.res1$Singlets
modfit.res1$Doublets
modfit.res1$Triplets
modfit.res1$Summary
if (FALSE) {
# For GGUM:
# Generate data:
set.seed(1); C <- sample(3:5, 10, replace = TRUE)
gen2 <- GenData.GGUM(2000, 10, C, "GGUM", seed = 156)
# Fit the GGUM:
fit2 <- GGUM(gen2$data, C)
# Compute the adjusted chi square degrees of freedom ratios:
modfit.res2 <- MODFIT(fit1)
modfit.res2$Singlets
modfit.res2$Doublets
modfit.res2$Triplets
modfit.res2$Summary
}

Run the code above in your browser using DataLab