linking.haebara: Haebara Linking of the 2PL Model for Multiple Studies

Description Usage Arguments Details Value References See Also Examples

View source: R/linking.haebara.R

Description

The function linking.haebara is a generalization of Haebara linking of the 2PL model to multiple groups (or multiple studies; see Battauz, 2017, for a similar approach). The optimization estimates transformation parameters for means and standard deviations of the groups and joint item parameters. The function allows two different distance functions dist="L2" and dist="L1" where the latter is a robustified version of Haebara linking (see Details; He, Cui, & Osterlind, 2015; Hu, Rogers, & Vukmirovic, 2008).

Usage

1
2
3
4
5
linking.haebara(itempars, dist="L2", theta=seq(-4,4, length=61),
        optimizer="optim", center=FALSE, eps=1e-5, use_rcpp=TRUE, ...)

## S3 method for class 'linking.haebara'
summary(object, digits=3, file=NULL, ...)

Arguments

itempars

A data frame with four or five columns. The first four columns contain in the order: study name, item name, a parameter, b parameter. The fifth column is an optional weight for every item and every study. See linking.haberman for a function which uses the same argument.

dist

Distance function. Options are "L2" for squared loss and "L1" for absolute value loss.

theta

Grid of theta points for 2PL item response functions

optimizer

Name of the optimizer chosen for alignment. Options are "optim" (using stats::optim) or "nlminb" (using stats::nlminb).

center

Logical indicating whether means and standard deviations should be centered after estimation

eps

Small value for smooth approximation of the absolute value function

use_rcpp

Logical indicating whether Rcpp is used for computation

object

Object of class linking.haabara.

digits

Number of digits after decimals for rounding in summary.

file

Optional file name if summary should be sunk into a file.

...

Further arguments to be passed

Details

For t=1,…,T studies, item difficulties b_{it} and item slopes a_{it} are available. The 2PL item response functions are given by

logit P(X_{pi}=1| θ_p )=a_i ( θ_p - b_i )

Haebara linking compares the observed item response functions P_{it} based on the equation for the logits a_{it}(θ - b_{it}) and the expected item response functions P_{it}^\ast based on the equation for the logits a_i^\ast σ_t ( θ - ( b_i - μ_t)/σ_t ) where the joint item parameters a_i and b_i and means μ_t and standard deviations σ_t are estimated.

Two loss functions are implemented. The quadratic loss of Haebara linking (dist="L2") minimizes

f_{opt, L2}=∑_t ∑_i \int ( P_{it} (θ ) - P_{it}^\ast (θ ) )^2 w(θ)

was originally proposed by Haebara. A robustified version (dist="L1") uses the optimization function (He et al., 2015)

f_{opt, L1}=∑_t ∑_i \int | P_{it} (θ ) - P_{it}^\ast (θ ) | w(θ)

Value

A list with following entries

pars

Estimated means and standard deviations (transformation parameters)

item

Estimated joint item parameters

a.orig

Original a_{it} parameters

b.orig

Original b_{it} parameters

a.resid

Residual a_{it} parameters (DIF parameters)

b.resid

Residual b_{it} parameters (DIF parameters)

res_optim

Value of optimization routine

References

Battauz, M. (2017). Multiple equating of separate IRT calibrations. Psychometrika, 82, 610-636.

He, Y., Cui, Z., & Osterlind, S. J. (2015). New robust scale transformation methods in the presence of outlying common items. Applied Psychological Measurement, 39(8), 613-626.

Hu, H., Rogers, W. T., & Vukmirovic, Z. (2008). Investigation of IRT-based equating methods in the presence of outlier common items. Applied Psychological Measurement, 32(4), 311-333.

See Also

See invariance.alignment and linking.haberman for alternative linking methods in the sirt package. See also TAM::tam.linking in the TAM package for more linking functionality and the R packages plink, equateIRT, equateMultiple and SNSequate.

Examples

 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
## Not run: 
#############################################################################
# EXAMPLE 1: Robust linking methods in the presence of outliers
#############################################################################

#** simulate data
I <- 10
a <- seq(.9, 1.1, len=I)
b <- seq(-2, 2, len=I)

#- define item parameters
item_names <- paste0("I",100+1:I)
# th=SIG*TH+MU=> logit(p)=a*(SIG*TH+MU-b)=a*SIG*(TH-(-MU)/SIG-b/SIG)
d1 <- data.frame( study="S1", item=item_names, a=a, b=b )
mu <- .5; sigma <- 1.3
d2 <- data.frame( study="S2", item=item_names, a=a*sigma, b=(b-mu)/sigma )
mu <- -.3; sigma <- .7
d3 <- data.frame( study="S3", item=item_names, a=a*sigma, b=(b-mu)/sigma )

#- define DIF effect
# dif <- 0  # no DIF effects
dif <- 1
d2[4,"a"] <- d2[4,"a"] * (1-.8*dif)
d3[5,"b"] <- d3[5,"b"] - 2*dif
itempars <- rbind(d1, d2, d3)

#* Haebara linking non-robust
mod1 <- sirt::linking.haebara( itempars, dist="L2", control=list(trace=2) )
summary(mod1)

#* Haebara linking robust
mod2 <- sirt::linking.haebara( itempars, dist="L1", control=list(trace=2) )
summary(mod2)

#* Haberman linking non-robust
mod3 <- sirt::linking.haberman(itempars)
summary(mod3)

#* Haberman linking robust
mod4 <- sirt::linking.haberman(itempars, a_trim=.25, b_trim=.5)
summary(mod4)

#* compare transformation parameters (means and standard deviations)
mod1$pars
mod2$pars
mod3$transf.personpars
mod4$transf.personpars

## End(Not run)

sirt documentation built on Feb. 18, 2020, 1:08 a.m.