MirtHaebara: Estimate Haebara transformation between two mirt objects and...

View source: R/MirtHaebara.R

MirtHaebaraR Documentation

Estimate Haebara transformation between two mirt objects and equate

Description

This functions takes two fitted unidimensional IRT models (fitted using mirt or unimirt) as an input, finds the Haebara transformation from one ability scale to the other, and then provides both true score and observed score equating between the two tests.

Usage

MirtHaebara(mirtobj1, mirtobj2, which1 = NULL, which2 = NULL, fixSLA = FALSE)

Arguments

mirtobj1

An object from a fitted unidimensional IRT model using mirt or unimirt. This will be for the test which equating is being done from (i.e. form X in equating terminology).

mirtobj2

An object from a fitted unidimensional IRT model using mirt or unimirt. This will be for the test which equating is being done to (i.e. form Y in equating terminology).

which1

A vector denoting which items in mirtobj1 are common with those in mirtobj2. Note that either both which 1 and which2 must be specified (and be of the same length) or neither. If neither are specified the function will identify common based on the item names stored within the mirt objects.

which2

A vector denoting which items in mirtobj2 are common with those in mirtobj1. See above and examples for further details.

fixSLA

Logical value denoting that the Haebara slope should be fixed at 1. This may be useful for linking two Rasch models. By default this parameter is FALSE.

Value

The function returns a list of two data frames. The first labelled Haebara just contains the Haebara transformation parameters. The second labelled eqtable gives the possible scores from the test within mirtobj1 and the equated scores (using both true and observed score equating) from the test analysed in mirtobj2.

Examples

## Not run: 
library(unimirt)
mirt1=mirt(mathsdata[,1:10],1)
mirt2=mirt(mathsdata[,6:15],1)
MirtStockingLord(mirt1,mirt2)
MirtHaebara(mirt1,mirt2)

#same equate but using two groups (one that got Q30 wrong and one got it right)
newd1=mathsdata[mathsdata$q30==0,1:10]
newd2=mathsdata[mathsdata$q30==1,6:15]
newmirt1=mirt(newd1,1)
newmirt2=mirt(newd2,1)
MirtStockingLord(newmirt1,newmirt2)
MirtHaebara(newmirt1,newmirt2)

#if only one anchor item, MirtHaebara should give identical results to MirtStockingLord
MirtStockingLord(newmirt1,newmirt2,which1=9,which2=4)
MirtHaebara(newmirt1,newmirt2,which1=9,which2=4)
#OK

#Rasch trial
newmirt1R=mirt(newd1,1,itemtype="Rasch")
newmirt2R=mirt(newd2,1,itemtype="Rasch")
MirtStockingLord(newmirt1R,newmirt2R,fixSLA=TRUE)
MirtHaebara(newmirt1R,newmirt2R,fixSLA=TRUE)

## End(Not run)

CambridgeAssessmentResearch/unimirt documentation built on June 10, 2025, 6:03 a.m.