2.1 Leitura de dados - SARESP

O arquivo com os dados está disponível com os seguintes comandos:

  > saresp<-read.fwf('http://www.ufpr.br/~aanjos/TRI/dados/manha.dat',widths=c(12,3,rep(1,31)),header=FALSE,skip=1,na.strings=' ')[,-3]
  > colnames(saresp)<-c('id','turno',paste('i',1:30,sep=""))

Para ver os dados desse objeto digite:

  > head(saresp)

             id turno i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13
  1 11001138433   m07  A  D  D  C  A  A  D  B  D   B   A   B   D
  2 11002964093   m07  D  B  A  C  A  A  C  D  A   B   A   C   D
  3 11004154243   m07  A  B  D  C  A  A  B  C  D   D   A   A   D
  4 11005367283   m07  D  C  D  C  A  C  A  B  A   D   C   C   C
  5 11007519633   m07  D  B  D  C  A  B  C  D  B   A   A   B   D
  6 11008054863   m07  D  D  B  C  A  A  C  D  B   A   A   A   C
    i14 i15 i16 i17 i18 i19 i20 i21 i22 i23 i24 i25 i26 i27 i28
  1   D   A   B   A   B   C   B   C   B   D   C   C   A   A   D
  2   B   B   A   A   B   D   D   B   C   A   A   C   D   A   D
  3   B   D   D   A   B   D   A   D   C   D   D   A   D   A   C
  4   C   A   D   C   B   C   A   B   C   C   C   C   A   A   B
  5   B   D   C   C   D   B   D   D   B   A   D   B   B   A   B
  6   B   B   B   C   B   D   D   D   B   A   D   B   C   A   C
    i29 i30
  1   B   C
  2   B   C
  3   B   C
  4   C   D
  5   B   A
  6   B   C

  > class(saresp)

  [1] "data.frame"

O gabarito pode ser obtido de maneira semelhante:

  > gabarito<-read.fwf('http://www.ufpr.br/~aanjos/TRI/dados/manha.dat',widths=c(-16,rep(1,30)),header=F,nr=1,na.string="")
  > gabarito

    V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18
  1  A  B  D  C  A  A  B  C  D   C   A   A   D   B   D   D   A   B
    V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30
  1   D   D   D   C   D   C   A   D   A   D   B   C

  > class(gabarito)

  [1] "data.frame"

Observe que as respostas e também o gabarito foram fornecidos em modo literal (letras). No R as principais funções conhecidas para análise de dados da TRI requerem que as respostas estejam em um objeto do tipo data.frame ou matrix com números 0 e 1 (0 indica uma resposta incorreta e 1 uma resposta correta).

No pacote Deducer há uma função chamada recode.variables() que pode ser utilizada para converter as respostas literais em números.

Para instalar opacote utilize o comando install.packages('Deducer') 1.

Para obter o pacote utilize:

  > require(Deducer)

A recodificação pode ser realizada da seguinte maneira:

  > dados<-recode.variables(saresp,"'A'->1; 'B'->2; 'C'->3; 'D'->4")

Observe, que por opção, foi criado um novo objeto chamado dados. Utilize a função head para ver uma parte dos dados. Na recodificação não são mantidos os nomes das colunas do arquivo original. Por isso, utiliza-se a função names() para recolocar os nomes das colunas.

  > names(dados)<-names(saresp) # colocar os nomes do arquivo original

Também, é necessário recodificar o gabarito:

  > gab2<-recode.variables(gabarito,"'A'->1; 'B'->2; 'C'->3; 'D'->4")

Observe que no objeto dados as respostas estão codificadas com os valores 1,2,3 e 4. No pacote ltm há uma função chamada multi.choice() que transforma as respotas em 0 ou 1 de acordo com o gabarito.

  > require(ltm)

O objeto manha contém as respostas numéricas no formato 0 e 1.

  > manha.NA<-mult.choice(dados[,3:32],as.numeric(gab2)) #ltm
  > head(manha.NA)
       i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 i14 i15 i16 i17
  [1,]  1  0  1  1  1  1  0  0  1   0   1   0   1   0   0   0   1
  [2,]  0  1  0  1  1  1  0  0  0   0   1   0   1   1   0   0   1
  [3,]  1  1  1  1  1  1  1  1  1   0   1   1   1   1   1   1   1
  [4,]  0  0  1  1  1  0  0  0  0   0   0   0   0   0   0   1   0
  [5,]  0  1  1  1  1  0  0  0  0   0   1   0   1   1   1   0   0
  [6,]  0  0  0  1  1  1  0  0  0   0   1   1   0   1   0   0   0
       i18 i19 i20 i21 i22 i23 i24 i25 i26 i27 i28 i29 i30
  [1,]   1   0   0   0   0   1   1   0   0   1   1   1   1
  [2,]   1   1   1   0   1   0   0   0   1   1   1   1   1
  [3,]   1   1   0   1   1   1   0   1   1   1   0   1   1
  [4,]   1   0   0   0   1   0   1   0   0   1   0   0   0
  [5,]   0   0   1   1   0   0   0   0   0   1   0   1   0
  [6,]   1   1   1   1   0   0   0   0   0   1   0   1   1