Recoding Polytomous Items with Missing Categories

December 26, 2012
By

(This article was first published on R Snippets for IRT, and kindly contributed to R-bloggers)

This function helps prepare data for analysis with models that require polytomous items to be coded from 0 to N without missing categories, such as the Partial Credit Model (Masters, 1982).

When there are no missing categories, an item that was supposed to be scored from 1 to 5 can be readily converted to 0 to N by subtracting 1 from the vector of responses. However, a problem arises when the respondents have selected only some of its categories. So, instead of having a responses at 1, 2, 3, 4, and 5, respondents only selected 1, 3, and 4. In this case, the response vector needs to be recoded to become 0, 1, and 2.

The function

This function automatically recodes a response vector and can be applied to an entire response data frame using apply to make this conversion quickly (see the example).

The function takes only one parameter, the response vector that needs to be recoded.

The code:

recPoly <- function ( responseVector ){

    flevels <- sort( unique( as.vector( responseVector ) ) )
    flevels <- flevels[ !is.na( flevels ) ]

    ncat <- length(flevels)

    temp01 <- factor( responseVector, levels = flevels, labels = c( seq( 1:ncat ) ) )
    output <- as.numeric( as.character( temp01 ) ) - 1

    return( output )

}

Example

Just to illustrate that the functions returns the recoded values for the response vector:

 sample1 <- c(1,2,3,4,5,6)

 recPoly(sample1)

 sample2 <- c(3,2,1,6,5,4)

 recPoly(sample2)

And to show how it can be applied to an entire matrix:

 sample3 <- matrix( c( 5,3,4,1,2,3,4,4,1,5,1,5,1,2,3,4), ncol = 4)

 apply(sample3, 2, recPoly)

To leave a comment for the author, please follow the link and comment on their blog: R Snippets for IRT.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Search R-bloggers


Sponsors

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)