ordinal_reg {lazy.irt}R Documentation

Oridinal Regression

Description

This program regresses R on x where R is the length(x) x ncat matrix.

Usage

ordinal_reg(R, x, type = "P", param = NULL, maxiter = 100, eps = 1e-08,
  epsd = 1e-05, smallP = 0, DinP = 1, minp1 = 0.01, maxabsparam = 20,
  print = 1)

Arguments

R

A matrix consisting of frequency of criterion variable: lenght(x) x ncat
R[,1] = Frequency of the zero-th category at x, R[,2] = Frequency of the first category at x, up to R[,ncat]

x

A vector or matrix of unidimensional regressor variable

type

Item type "B", "B3", "G", "P", "PN", "N"

param

A data frame containing the initial value of parameters, or NULL

maxiter

Max # of iterations

eps

Criterion for convergence in llh

epsd

Criterion for convergence in absolute value of parameter value

smallP

Smallest value of probability

DinP

= 0 to omit 1.7

minp1

Min value of the slope parameter for type != "N" items.

maxabsparam

Max value of parameters

print

= 0 to surpress output

Details

Let R be n x ncat matrix, and x, n x 1.
This function maximizes the following log likelihood w.r.t. item parameters.
llh = ∑_{i=1}^{n} ∑_{j=1}^{ncat} R[i,j] * log( P_j(x[i])

When P_j is 3PLM, c parameters will be transformed to y=logit(c) and llh will be minimized w.r.t. y.
Note that
d llh / d y = d llh / d c \times c(1-c),
where d logistic(y) / d y = c(1-c)

Value

A list of:
param Parameter data frame
llh Maximized log likelihood
P Probability at x
x input
g gradient
R input
maxag Maximum of absolute gradient values

Examples

# binary data
set.seed(1701)
theta=seq(-4,4,length.out=51)
resg=gendataIRT( 500, paramS1[1,], theta=theta, thdist="NORMAL", thd=NULL
               , thmean=0, thstd=1, compress=0 )
testdata=as.matrix( resg$U )

# 3PLM
res=ordinal_reg( testdata, theta, type="B3", param=NULL, print=1 )
# 2PLM
res=ordinal_reg( testdata, theta, type="B", param=NULL, print=1 )
res=ordinal_reg( testdata, theta, type="P", param=NULL, print=1 )
# 2PLM with nonzero c parameter
initp=paramS1[2,]; initp$type="B"
res=ordinal_reg( testdata, theta, type="B", param=initp, print=1 )


# polytomous data
set.seed(1701)
theta=seq(-4,4,length.out=51)
resg=gendataIRT( 500, paramS1[3,], theta=theta, thdist="NORMAL", thd=NULL
                 , thmean=0, thstd=1, compress=0 )
testdata=as.matrix( resg$U )

# graded response model
res=ordinal_reg( testdata, theta, type="G", param=NULL, print=1 )
# partial credit model
res=ordinal_reg( testdata, theta, type="P", param=NULL, print=1 )
res=ordinal_reg( testdata, theta, type="PN", param=NULL, print=1 )



[Package lazy.irt version 0.1.3 Index]