MyNixOS website logo
Description

Item Analysis for Multiple Choice Tests.

Functions for analyzing multiple choice items. These analyses include the convertion of student response into binaty data (correct/incorrect), the computation of the number of corrected responses and grade for each subject, the calculation of item difficulty and discrimination, the computation of the frecuency and point-biserial correlation for each distractor and the graphical analysis of each item.

itan

R-CMD-check

El paquete itan tiene como finalidad ayudar a profesores a corregir, calificar y analizar pruebas objetivas. Para ello, este paquete incluye funciones que permiten calcular el puntaje y calificación obtenido por estudiantes; así como también, funciones para analizar los ítems del test. Entre estas últimas destaca el análisis gráfico de ítems que permite visualizar las características técnicas del ítem y determinar rápidamente su calidad.

Instalación

Para instalar la versión de desarrollo del paquete itan desde GitHub use el siguiente comando:

# install.packages("devtools")
devtools::install_github("arielarmijo/itan")
library(itan)

Ejemplo

El paquete itan incluye dos datos binarios de ejemplo llamados datos y clave. Datos contiene las respuestas de 39 estudiantes a una prueba de 50 ítems y clave contiene las respuestas correctas a cada ítem.

data(datos, clave)
str(datos, list.len=6)
#> 'data.frame':    39 obs. of  51 variables:
#>  $ id : int  200040629 210047876 210047897 210040939 200035827 200039332 200040360 210047865 210046146 210045972 ...
#>  $ i01: chr  "E" "C" "E" "E" ...
#>  $ i02: chr  "D" "D" "D" "D" ...
#>  $ i03: chr  "C" "C" "C" "A" ...
#>  $ i04: chr  "B" "B" "B" "B" ...
#>  $ i05: chr  "A" "C" "A" "A" ...
#>   [list output truncated]
str(clave, list.len=5)
#> 'data.frame':    1 obs. of  50 variables:
#>  $ i01: chr "E"
#>  $ i02: chr "D"
#>  $ i03: chr "C"
#>  $ i04: chr "B"
#>  $ i05: chr "A"
#>   [list output truncated]

Para calcular el puntaje alcanzado en la prueba y su respectiva calificación puede usarse el siguiente script:

respuestas <- datos[,-1]
respuestasCorregidas <- corregirRespuestas(respuestas, clave)
head(respuestasCorregidas)
#>   i01 i02 i03 i04 i05 i06 i07 i08 i09 i10 i11 i12 i13 i14 i15 i16 i17 i18 i19
#> 1   1   1   1   1   1   1   1   0   0   0   0   1   1   1   1   1   1   1   1
#> 2   0   1   1   1   0   0   0   0   0   0   0   0   0   0   0   1   0   1   1
#> 3   1   1   1   1   1   1   0   0   0   1   1   1   0   0   1   1   0   1   1
#> 4   1   1   0   1   1   1   1   1   1   0   0   0   0   0   0   0   0   0   1
#> 5   0   0   0   0   0   0   0   0   1   1   1   1   1   0   0   0   0   0   0
#> 6   1   1   1   0   1   1   1   0   0   1   1   1   0   0   0   1   0   0   0
#>   i20 i21 i22 i23 i24 i25 i26 i27 i28 i29 i30 i31 i32 i33 i34 i35 i36 i37 i38
#> 1   1   1   1   0   0   1   0   1   0   1   0   1   1   1   1   1   1   1   0
#> 2   0   0   0   0   1   0   0   0   0   0   0   1   1   0   0   1   1   0   1
#> 3   0   0   0   0   0   1   1   1   0   1   1   0   1   0   1   1   0   1   0
#> 4   0   1   1   0   1   0   0   0   0   1   0   0   1   1   1   1   0   1   1
#> 5   0   0   0   0   0   0   0   0   1   1   0   1   1   1   1   1   1   1   1
#> 6   0   0   1   0   0   0   1   0   0   1   0   0   1   1   0   1   0   0   0
#>   i39 i40 i41 i42 i43 i44 i45 i46 i47 i48 i49 i50
#> 1   1   1   1   1   0   1   1   0   0   1   1   1
#> 2   1   0   0   0   1   1   1   0   1   0   0   0
#> 3   1   1   1   0   1   1   1   1   0   0   0   1
#> 4   1   1   1   1   1   1   1   0   1   1   1   1
#> 5   1   1   1   0   1   0   0   1   0   0   0   0
#> 6   1   0   0   1   0   0   0   0   0   0   0   1
puntaje <- calcularPuntajes(respuestasCorregidas)
nota <- calcularNotas(puntaje)
head(cbind(id=datos$id, puntaje, nota))
#>          id puntaje nota
#> 1 200040629      37  6.0
#> 2 210047876      17  3.0
#> 3 210047897      30  4.7
#> 4 210040939      30  4.7
#> 5 200035827      20  3.3
#> 6 200039332      19  3.2

Además de calcular el puntaje y calificación, es posible analizar los ítems de la prueba. Para calcular el índice de dificultad y los índices de discriminación de cada ítem se puede ejecutar las siguientes líneas de código:

p <- calcularIndiceDificultad(respuestasCorregidas, proporcion = 0.25)
dc1 <- calcularIndiceDiscriminacion(respuestasCorregidas, tipo = "dc1", proporcion = 0.25)
dc2 <- calcularIndiceDiscriminacion(respuestasCorregidas, tipo = "dc2", proporcion = 0.25)
head(cbind(p, dc1, dc2))
#>        p  dc1  dc2
#> i01 0.75  0.3 0.60
#> i02 0.95 -0.1 0.47
#> i03 0.60  0.0 0.50
#> i04 0.60  0.6 0.75
#> i05 0.55  0.7 0.82
#> i06 0.70  0.2 0.57

Otra manera de analizar la discriminación de un ítem es usando el coeficiente de correlación biserial puntual:

alternativas <- c(LETTERS[1:5], "*")
biserial <- pBis(respuestas, clave, alternativas)
head(biserial)
#>   item     A     B     C     D     E     * KEY
#> 1  i01 -0.23 -0.09 -0.14 -0.03  0.25 -0.17   E
#> 2  i02   NaN -0.10  0.09 -0.10   NaN -0.05   D
#> 3  i03  0.02 -0.15 -0.05 -0.12   NaN  0.10   C
#> 4  i04 -0.34  0.34   NaN -0.13 -0.16 -0.05   B
#> 5  i05  0.55 -0.36 -0.39   NaN -0.12 -0.05   A
#> 6  i06 -0.19  0.01  0.16 -0.17 -0.10 -0.17   C

La frecuencia con que se eligió cada alternativa en cada ítem puede hacerse de forma numérica o gráfica:

fa <- calcularFrecuenciaAlternativas(respuestas, alternativas, clave, frecuencia = FALSE)
head(fa)
#>   item  A  B  C  D  E * NA KEY
#> 1  i01  6  4  4  2 21 2  0   E
#> 2  i02  0  1  4 33  0 1  0   D
#> 3  i03  6  4 26  1  0 2  0   C
#> 4  i04 13 22  0  2  1 1  0   B
#> 5  i05 17  8  6  0  7 1  0   A
#> 6  i06  2  6 25  3  1 2  0   C
gfa <- graficarFrecuenciaAlternativas(respuestas, alternativas, clave)
gfa$i01

El paquete itan también implementa el análisis gráfico de ítems que permite resumir las características técnicas del ítem de manera visual, lo que facilita su análisis:

item <- agi(respuestas, clave, alternativas)
item$i01$plot

Revisar la documentación del paquete para ver más detalles sobre las funciones anteriormente señaladas.

Metadata

Version

3.1.1

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows