equate: Observed Score Linking and Equating

View source: R/equate.R

equateR 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, x must be a vector of scores and y an object of class “equate”, the output of a previous equating. The standard usage is to provide x as a frequency table of class “freqtab”, where y is also a frequency table, and x is equated to y; if y is missing, a single-group design is assumed. Finally, x may be a list of two or more frequency tables, in which case the required arguments for one or more equatings are listed in args. See below for details.

...

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 equate. See below for details.

type

the type of equating. See below for details.

method

the equating method, where "none" (default) indicates equating under the single-group or equivalent-groups design, and "nominal weights", "tucker", "levine", "frequency estimation", "braun/holland", and "chained" indicate the corresponding methods under the nonequivalent groups design.

name

an optional name, used to label the output. If missing, a name will be created using type and method.

lowp, highp

two vectors, each of length 2, specifying the coordinates for the low and high points of the X and Y scales. lowp defaults to the minimums and highp the maximums of the scales. Recycled if necessary. When lowp = "obs" or highp = "obs", minimum and maximum observed scores are used.

boot

logical indicating whether or not bootstrapping should be performed. Default is FALSE. See below and the bootstrap function for details.

verbose

logical, with default TRUE, indicating whether or not full output should be returned. When FALSE, only the equated scores are returned.

object

output from either an equating or list of equatings, produced by the equate function.

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 and y when bootstrapping.

xn, yn

sample sizes to be drawn from x and y, or xp and yp, 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

name for the equating

type

equating type

method

equating method

design

equating design, as specified in x

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 in x and y.

  • default: Default equating method for a vector of raw scores x and equating output in y.

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]])


equate documentation built on June 7, 2022, 5:10 p.m.