equate {equate} | R Documentation |
Observed Score Linking and Equating
Description
This function links the scale of x
to the scale of y
for the
single-group, equivalent-groups, and nonequivalent-groups with anchor test
designs. A summary method is also provided.
Usage
equate(x, ...)
## S3 method for class 'list'
equate(x, args, ...)
## S3 method for class 'freqtab'
equate(
x,
y,
type = c("identity", "mean", "linear", "general linear", "circle-arc",
"equipercentile"),
method = c("none", "nominal weights", "tucker", "levine", "frequency estimation",
"chained", "braun/holland"),
name,
lowp,
highp,
boot = FALSE,
verbose = TRUE,
...
)
## Default S3 method:
equate(x, y, ...)
## S3 method for class 'equate'
summary(object, ...)
## S3 method for class 'equate.list'
summary(object, ...)
Arguments
x , y |
for the default method, |
... |
further arguments passed to or from other functions, including arguments specific to different equating methods. See below for details. |
args |
list of arguments passed to |
type |
the type of equating. See below for details. |
method |
the equating method, where |
name |
an optional name, used to label the output. If missing, a name
will be created using |
lowp , highp |
two vectors, each of length 2, specifying the coordinates
for the low and high points of the X and Y scales. |
boot |
logical indicating whether or not bootstrapping should be
performed. Default is |
verbose |
logical, with default |
object |
output from either an equating or list of equatings, produced
by the |
Details
Equating is typically performed on two frequency tables, x
and
y
. In this case, the scores from both are used to define the equating
function that links the scale of x
to y
. The equivalent-groups
design is assumed when x
and y
are separate, univariate
frequency tables. The nonequivalent-groups design is assumed when a
method
is specified, and x
and y
are separate
multivariate frequency tables. Finally, a single-group design is assumed
when x
is a bivariate frequency table (containing scores on X and Y)
and y
is missing.
The single-group design currently only differs from the equivalent groups
design in that presmoothing can be used to preserve bivariate moments for
x
and y
in the single-group design, whereas in the
equivalent-groups design, with x
and y
specified separately,
presmoothing is performed separately. If presmoothing is not performed via
equate
, the single-group and equivalent-groups designs produce the
same result.
When x
is a vector of scores and equating output is supplied for
y
, no other arguments are required. Scores from x
are
converted directly to the scale indicated in y
. If y
is a
composite equating, composite equated scores will be returned based on the
weighted combination of equating functions included in y
.
When x
is a list
of frequency tables, each element in
args
must be a named list of equating arguments. In this case, the
length of args
corresponds to the number of equatings that will be
performed. The arguments for each equating are specified as they would be
when x
and y
are frequency tables, except for x
and
y
; the frequency tables to be equated are specified in args
by
referencing their names in the list of frequency tables. See below for
examples.
Six equating types are currently supported: identity, mean, linear, and
equipercentile, as described by Kolen and Brennan (2004); circle-arc
equating, as described by Livingston and Kim (2009); and a general linear
function that extends the traditional identity, mean, and linear types.
Corresponding linking methods are also supported. The equating design is
implied by the method
argument, where "none"
(default)
indicates that no method is needed (because examinees taking forms X and Y
are assumed to be the same or equivalent). The nominal weights, Tucker,
Levine observed score, Levine true score, frequency estimation,
Braun/Holland, and chained equating methods are supported for the
nonequivalent-groups with anchor test design. All but the Levine true score
and chained method rely on a “synthetic” distribution of scores
(Braun and Holland, 1982), a weighted combination of x
and y
.
Depending on the equating method, the following additional arguments may be required:
- midp
coordinates for the midpoint of the equating line, used in general linear and circle-arc equating.
- cx, cy, sx, sy
parameters used in general linear equating. See below for details.
- wax, way, wbx, wby
weights used when finding the slope and intercept in general linear equating. See below.
- ws
value between 0 and 1 specifying the weight applied to form X scores (and implicitly specifying the form Y weight as
1 - ws
) when estimating the synthetic population. When set to -1 (the default), proportional weights are calculated for X and Y based on sample size.- internal
logical indicating whether or not the anchor item scores are included in the total scores. This applies only to the Levine method, as all other methods assume an internal anchor test. Default is
TRUE
.- lts
logical indicating whether or not to use levine true score (“lts”) equating. Default is
FALSE
.- smoothmethod
string indicating one of four smoothing methods to be used in equipercentile equating:
"none"
(default),"average"
,"bump"
, and"loglinear"
(see below).- chainmidp
string specifying the type of chained linear equating used to obtain the midpoint in chained circle-arc equating, whether
"mean"
(default) or"linear"
.- simple
-
logical, with default
TRUE
, indicating whether or not simplified circle-arc equating should be used (see below). - reps
the number of replications to use in bootstrapping. Passed to
bootstrap
.- xp, yp
optional parametric distributions, as frequency tables, replacing
x
andy
when bootstrapping.- xn, yn
sample sizes to be drawn from
x
andy
, orxp
andyp
, at each bootstrap replication. These default to the observed sample sizes.- crit
a vector of equated scores serving as the criterion equating function when calculating bootstrap bias and RMSE; both are returned when
crit
is specified.
General linear equating is a new
approach to estimating a linear linking or equating function. The slope and
intercept of the line are estimated based on multiple sources of
information, including the means and standard deviations of X and Y, and
other values supplied through cx
and cy
, representing the
centrality of X and Y, and sx
and sy
, representing the scaling
or variability of X and Y. The weights wax
and way
specify the
proportional weighting given to the standard deviations of X and Y, and
indirectly the weighting given to sx
and sy
, in determining
the slope. wbx
and wby
specify the proportional weighting
given to the means of X and Y, and indirectly the weighting given to
cx
and cy
, in determining the intercept. Synthetic means and
standard deviations will be used when appropriate. Chained general linear
equating is not currently supported.
For equipercentile equating under the random groups design, three smoothing
options are available: smoothmethod = "average"
and
smoothmethod = "bump"
require the additional argument jmin
,
and loglinear smoothing (smoothmethod = "loglinear"
) requires either
a score function or maximum polynomial terms. For frequency estimation and
chained methods, only smoothing methods "bump"
and "loglinear"
are supported. See the presmoothing
function for details and
examples.
In equipercentile equating, the high point for y
, i.e.,
highp[2]
, is used to obtain form Y equivalents of form X scores with
percentile ranks of 100. Typically this is set to be the number of score
points in the form Y scale, which assumes that scores are integers ranging
from 1 (or 0) to the total number of items, and that each item is scored
correct/incorrect. Scores on other scales (such as scales which include
negative values, or which exclude zero) may also be used. In such cases
highp[2]
can be set to the highest possible score on form Y, or
alternatively the highest observed score on Y.
lowp
and highp
are used to define the slope and intercept of
the identity linking function. When the score scales for X and Y are
equivalent, the identity function is simply the unequated X scale; however,
when forms differ in their scales, e.g., because of changes in content or
length, the identity linking function will map X onto Y based on the low and
high coordinates.
The simplified approach to circle-arc equating, as demonstrated by
Livingston and Kim (2009), involves combining a circle-arc with the identity
function. When the low and high scores differ for the X and Y scales, this
becomes the identity linking function. The linear component can be omitted,
and symmetric circle-arc equating used, with simple = FALSE
. The
result is an equating function based only on the circle-arc that passes
through the points lowp
, highp
, and the estimated midpoint.
Analytical standard errors are currently returned for linear
equating under equivalent groups and chained, Tucker, and Levine
equating with nonequivalent groups. Chained, Tucker, and Levine
standard errors are provided with and without assumptions of
normality, as shown in Zu (2012). With boot = TRUE
,
bootstrap standard errors are estimated using a default of
reps = 100
replications, sampling the maximum amount from each score
distribution (controlled by the arguments xn
and yn
). See
bootstrap
for details and examples, including how to obtain
bootstrap bias and RMSE.
Value
When y
contains output from an equating, a vector of equated
scores is returned. Otherwise, an object of class “equate
” is
returned, listing the following components, some of which are dependent on
the equating type, method, and smoothing:
name |
|
type |
equating type |
method |
equating method |
design |
equating design, as specified in |
x , y |
original frequency tables for X and Y |
concordance |
conversion table containing scores on X with their form Y equivalents, and standard errors, when available. |
points |
low and high points defining the identity line, and midpoints for general linear and circle-arc equating |
weight |
weights used in general linear equating |
internal , lts , jmin , degree , xdegree , scorefun |
additional arguments, as supplied in ... |
coefficients |
conversion coefficients intercept and slope; for circle-arc equating, circle center points and radius are also included; for general linear equating, slope and intercept components are included |
ws |
weight applied to X in synthetic estimation |
synthstats |
means and standard deviations for the synthetic distributions |
xsynthetic , ysynthetic |
frequency tables for the synthetic distributions |
smoothmethod |
smoothing method |
xsmooth , ysmooth |
smoothed frequency tables for X and Y |
bootstraps |
list containing bootstrap standard errors, and, optionally, other bootstrap output |
The summary method returns a list with the name, type, method, design, and synthetic weight, along with frequency tables for the total, anchor, and equated score distributions and descriptive statistics for each.
Methods (by class)
-
list
: Equating a list of frequency tables. -
freqtab
: Equating frequency distributions inx
andy
. -
default
: Default equating method for a vector of raw scoresx
and equating output iny
.
Author(s)
Anthony Albano tony.d.albano@gmail.com
References
Albano, A. D. (2016). equate: An R package for observed-score linking and equating. Journal of Statistical Software, 74(8), 1–36.
Kolen, M. J., and Brennan, R. L. (2004). Test Equating, Scaling, and Linking. (2nd ed.), New York: Springer.
Livingston, S. A., and Kim, S. (2009). The circle-arc method for equating in small samples, Journal of Educational Measurement, 46, 330–343.
Zu, J., and Yuan, K. H. (2012). Standard error of linear observed-score equating for the NEAT design with nonnormally distributed data. Journal of Educational Measurement, 49, 190–213.
See Also
freqbump
, freqavg
,
loglinear
, bootstrap
Examples
# See vignette("equatevignette") and Albano (2016) for a
# description of methods and additional examples
# Random groups equating for (1) identity, (2) mean,
# (3) linear, (4) equipercentile with loglinear
# smoothing, and (5) a composite of mean and identity
rx <- as.freqtab(ACTmath[, 1:2])
ry <- as.freqtab(ACTmath[, c(1, 3)])
set.seed(2007)
req1 <- equate(rx, ry, type = "i", boot = TRUE, reps = 5)
req2 <- equate(rx, ry, type = "m", boot = TRUE, reps = 5)
req3 <- equate(rx, ry, type = "l", boot = TRUE, reps = 5)
req4 <- equate(rx, ry, type = "e", boot = TRUE, reps = 5,
smooth = "loglin", degree = 3)
req5 <- composite(list(req1, req2), wc = .5, symmetric = TRUE)
# Compare equating functions
plot(req1, req2, req3, req4, req5[[1]], addident = FALSE)
# Compare boostrap standard errors
# Bootstrapping isn't supported for composite equating
plot(req1, req2, req3, req4, addident = FALSE, out = "se",
legendplace = "topleft")
# Nonequivalent groups design for (1) Tucker linear,
# (2) frequency estimation , and (3) Braun/Holland linear
nx <- freqtab(KBneat$x, scales = list(0:36, 0:12))
ny <- freqtab(KBneat$y, scales = list(0:36, 0:12))
neq1 <- equate(nx, ny, type = "linear", method = "tuck", ws = 1)
neq2 <- equate(nx, ny, type = "equip", method = "freq", ws = 1)
neq3 <- equate(nx, ny, type = "linear", method = "braun", ws = 1)
# Compare equated scores
round(cbind(xscale = 0:36, tucker = neq1$conc$yx,
fe = neq2$conc$yx, braun = neq3$conc$yx), 2)
# Multiple linkings using PISA reading booklet 6
# clusters 3a, 5, 6, and 7
r3 <- freqtab(PISA$totals$b6$r3a, scales = 0:15)
r5 <- freqtab(PISA$totals$b6$r5, scales = 0:15)
r6 <- freqtab(PISA$totals$b6$r6, scales = 0:15)
r7 <- freqtab(PISA$totals$b6$r7, scales = 0:14)
eqargs <- list(r3r5 = list(type = "linear", x = "r3", y = "r5",
name = "Linear Linking PISA r3 to r5"),
r5r6 = list(type = "linear", x = "r5", y = "r6",
name = "Linear Linking PISA r5 to r6"),
r6r7 = list(type = "linear", x = "r6", y = "r7",
name = "Linear Linking PISA r6 to r7"))
req <- equate(list(r3 = r3, r5 = r5, r6 = r6, r7 = r7), eqargs)
# Put PISA r3 on the scale of r7 using the linking chain
# Compare to a direct linking of r3 to r7
equate(equate(req$r3r5$conc$yx, req$r5r6), req$r6r7)
equate(r3, r7, "linear")$conc$yx
# Linking PISA cluster r3a to r5 with multiple anchors
m367 <- freqtab(PISA$totals$b6[1:198, c("r3a", "r6", "r7")],
scales = list(0:15, 0:16, 0:14))
m567 <- freqtab(PISA$totals$b6[199:396, c("r5", "r6", "r7")],
scales = list(0:15, 0:16, 0:14))
meq1 <- equate(m367, m567, type = "mean", method = "nom")
meq2 <- equate(m367, m567, type = "mean", method = "tuck")
meq3 <- equate(m367, m567, type = "lin", method = "tuck")
meq4 <- equate(m367, m567, type = "equip", method = "freq",
smooth = "log", show = FALSE)
meq <- equate(m367, m567, type = "mean", method = "nom")
plot(meq1, meq2, meq3, meq4, meq, req[[1]])