Package 'itemanalysis'

Title: Classical Test Theory Item Analysis
Description: Runs classical item analysis for multiple-choice test items and polytomous items (e.g., rating scales). The statistics reported in this package can be found in any measurement textbook such as Crocker and Algina (2006, ISBN:9780495395911).
Authors: Cengiz Zopluoglu
Maintainer: Cengiz Zopluoglu <[email protected]>
License: GPL(>=2)
Version: 1.1
Built: 2025-02-25 04:16:19 UTC
Source: https://github.com/czopluoglu/itemanalysis

Help Index


Raw data from a multiple-choice test

Description

The data is taken from the following website http://www.jmetrik.com/example-data.php. This file includes nominal responses of 6,000 examinees to 56 binary items.

Usage

data(dichotomous)

Format

A data frame with 60000 examinees and 56 items


itemanalysis: Classical Test Theory Item Analysis

Description

This package

Details

Package: itemanalysis
Type: Package
Version: 1.1
Date: 2022-06-13
License: GPL-2
LazyLoad: yes

The package can be used to run classical item analysis for multiple-choice test items and polytomously scored items (e.g., rating scale items).

Author(s)

Maintainer: Cengiz Zopluoglu <[email protected]>

See Also

itemanalysis1 for running classical item analysis for multiple-choice test items itemanalysis2 for running classical item analysis for polytomously scored items


Classical Test Theory Item Analysis for Multiple-Choice Test Items

Description

Classicial Test Theory Item Analysis for Multiple-Choice Test Items

Usage

itemanalysis1(data, key, options, ngroup = ncol(data) + 1, correction = TRUE,
span.par=.3, verbose = T)

Arguments

data

a data frame with N rows and m columns, with N denoting the number of subjects and m denoting the number of items.

key

a vector of answer key with a length of m

options

a vector of response options for the test such as c("A","B","C","D")

ngroup

number of score groups to be use for plotting the item trace lines

correction

TRUE or FALSE. If it is TRUE, then an adjustment is made for point-biserial correlation.

span.par

a smoothing parameter to pass to ggplots when creating empirical ICCs

verbose

TRUE or FALSE. If it is TRUE, text output is printed.

Details

To be added later.

Value

plots

a list object storing the item trace line plots for each item

item.stat

a matrix of basic item statistics

dist.sel

a matrix of distractor selection proportion statistics

dist.disc

a matrix of corrected point-biserial statistics for distractors

dist.disc

a matrix of corrected biserial statistics for distractors

Author(s)

Cengiz Zopluoglu

See Also

itemanalysis2 for classical item analysis of polytomously scored items

Examples

## Not run: 
  
      data(dichotomous)
      head(dichotomous)
      str(dichotomous)
  
      # Key response vector
  
      key <- c("A","D","C","B","C","B","C","D","A","D","C","A","D","C","A",
              "B","D","B","A","C","A","A","C","B","C","B","D","A","A","A",
              "C","B","B","A","B","D","D","A","D","C","D","A","B","B","C",
              "D","B","C","C","B","D","A","C","B","A","D")
  
      # Use itemanalysis1 function to run the item analysis
  
        # In order to reduce running time for the example below,
        # I specify "data=dichotomous[,1:10]", so it only analyze the 
        # first 10 items.
        # You should specify "data=dichotomous" to analyze based on 56 items.
  
      item.analysis <- itemanalysis1(data=dichotomous[,1:10],
                             key=key,
                             options=c("A","B","C","D"),
                             ngroup=10,
                             correction=FALSE)
      
      item.analysis$item.stat
      
      item.analysis$dist.sel
      
      item.analysis$dist.disc
  
      item.analysis$plots[[1]]   # Item Trace Line for the first item
      item.analysis$plots[[2]]   # Item Trace Line for the second item
      item.analysis$plots[[3]]   # Item Trace Line for the third item
      item.analysis$plots[[4]]   # Item Trace Line for the fourth item
      item.analysis$plots[[5]]   # Item Trace Line for the fifth item
      item.analysis$plots[[6]]   # Item Trace Line for the sixth item
      item.analysis$plots[[7]]   # Item Trace Line for the seventh item
      item.analysis$plots[[8]]   # Item Trace Line for the eigth item
      item.analysis$plots[[9]]   # Item Trace Line for the ninth item
      item.analysis$plots[[10]]  # Item Trace Line for the tenth item
  
## End(Not run)

Classical Test Theory Item Analysis for Polytomous Items

Description

Classical Test Theory Item Analysis for Polytomous Items

Usage

itemanalysis2(data, options, ngroup = ncol(data) + 1, correction = TRUE,
span.par=.3,verbose=T)

Arguments

data

a data frame with N rows and m columns, with N denoting the number of subjects and m denoting the number of items.

options

a vector of numerical code of the response categories available for the items such as c(0,1,2,3). The minumum score is assumed to be 0.

ngroup

number of score groups to be use for plotting the item trace lines

correction

TRUE or FALSE. If it is TRUE, then an adjustment is made for point-biserial correlation.

span.par

a smoothing parameter to pass to ggplots when creating empirical ICCs

verbose

TRUE or FALSE. If it is TRUE, text output is printed.

Details

to be added later

Value

plots

a list object storing the item trace line plots for each item

item.stat

a matrix of basic item statistics

dist.sel

a matrix of distractor selection proportion statistics

dist.disc

a matrix of corrected point-biserial statistics for distractors

dist.disc

a matrix of corrected biserial statistics for distractors

Author(s)

Cengiz Zopluoglu

See Also

itemanalysis1 for classical item analysis of multiple-choice test items

Examples

## Not run: 
    data(timss2011_usa)

    timss2011_usa$Q14B <- recode(var = timss2011_usa$Q14B,
                                 recodes = "c(0)=3;c(1)=2;c(2)=1;c(3)=0")

    timss2011_usa$Q14C <- recode(var = timss2011_usa$Q14C,
                                 recodes = "c(0)=3;c(1)=2;c(2)=1;c(3)=0")

    item.analysis <- itemanalysis2(data=timss2011_usa,
                                   options=c(0,1,2,3),
                                   ngroup=18,
                                   correction=FALSE)
                                   
    item.analysis$item.stat
      
    item.analysis$dist.sel
      
    item.analysis$dist.disc

    item.analysis$plots[[1]]   # Item Trace Line for the first item
    item.analysis$plots[[2]]   # Item Trace Line for the second item
    item.analysis$plots[[3]]   # Item Trace Line for the third item
    item.analysis$plots[[4]]   # Item Trace Line for the fourth item
    item.analysis$plots[[5]]   # Item Trace Line for the fifth item
    item.analysis$plots[[6]]   # Item Trace Line for the sixth item
  
## End(Not run)

TIMMS 2011 USA Data - Attitude Towards Math

Description

The data is a subset of TIMSS 2011 USA data and includes responses for six statements to measure attitudes towards math. These rating scale items have response codes from 0 to 3 with 0 indicating "I strongly disagree", 1 indicating "I disagree", 2 indicating "I agree", and 3 indicating "I strongly agree" for a given statement. Note that items 14B and 14C has to be reverse coded before analysis to make them consistent with other four items.

Usage

data(timss2011_usa)

Format

A data frame with 10079 observaiton and 6 items.

Q14A

I enjoy learning mathematics

Q14B

I wish have not to study Math

Q14C

Mathematics is boring

Q14D

I learn interesting things in mathematics class

Q14E

I like mathematics

Q14F

I think it's important to do well in mathematics