1 Teoria da Resposta ao Item

  • Em campos como Educação e Psicologia, há o constante interesse na mensuração de uma variável. Muitas vezes, tais variáveis não podem ser observadas diretamente: são as chamadas , por exemplo, habilidade, inteligência, entre outras.

  • Neste sentido, o objetivo da Teoria da Resposta ao Item é mensurar o quanto de uma habilidade latente um indivíduo possui. Assim, é possível avaliar comparativamente indivíduos por meio de uma escala de medida obtida a partir das respostas fornecidas por estes mesmos indivíduos a um teste. Tradicionalmente, o desempenho é avaliado pela soma dos scores obtidos em cada item do teste.

  • No entanto, tal abordagem não leva em consideração o grau de dificuldade de cada questão. Isto é, a pontuação final de um indivíduo depende apenas da quantidade de questões corretas, sendo ignorado o grau de dificuldade destas questões. A TRI permite que indivíduos com número de acertos menor, em comparação a outros, obtenha um score maior, desde que tenha acertado questões com grau de dificuldade e discriminação maiores. Nesta aplicação, abordaremos modelos que tratam dados binarizados, isto é, considerando que o indivíduo acertou (1) ou errou (0) um dado item.

1.1 Modelo de Rasch

Este é o modelo mais utilizado em TRI. Suponha que temos \(J\) itens binário \(X_1, X_2,\ldots,X_J\) em que \(1\) indica uma resposta correta e \(0\) indica uma resposta incorreta. A probabilidade de que o indivíduo \(i\) responda corretamente o item \(j\) é dada por:

\[Pr(X_{ij} = 1) = \frac{e^{\eta_i - \alpha_j}}{1 + e^{\eta_i - \alpha_j}}\]

em que \(\eta_i\) é a habilidade do indivíduo \(i\) e \(\alpha_j\) é a dificuldade do item \(j\).

Curva característica de um item

Curva característica de um item

Modelo de Rasch

Modelo de Rasch

1.2 Modelo de Dois Parâmetros

No modelo de Rasch, assume-se que todos os itens possuem a mesma forma. No Modelo de Dois Parâmetros, é adicionada a discriminação: um parâmetro que modifica a inclinação da CCI. Assim, a probabilidade do indivíduo \(i\) responder corretamente o item \(j\) é dada por \[P(X_{ij} = 1) = \frac{e^{\lambda_j \eta_i - \alpha_j}}{1+e^{\lambda_j \eta_i - \alpha_j}}\]

No modelo de dois parâmetros, as curvas caraterísticas dos itens assumem a seguinte forma:

Representação do modelo de 2 parâmetros

Representação do modelo de 2 parâmetros

1.3 Modelo de Três Parâmetros

Considera o fato de que indivíduos podem vir a acertar itens por meio de chute. O modelo inclui um parâmetro que representa a contribuição dos chutes na probabilidade de uma resposta correta. Assim, a probabilidade de acerto é dada pela relação:

\[P(X_{ij} = 1) = c + (1-c) * \frac{1}{1+e^{\lambda_j(\eta_i - \alpha_j)}}\]

No modelo de três parâmetros, as curvas caraterísticas dos itens assumem a seguinte forma:
Representação do modelo de 3 parâmetros

Representação do modelo de 3 parâmetros

2 Estimação de Parâmetros no Modelo de Rasch

2.1 Máxima Verossimilhança Conjunta

A probabilidade de uma dada matriz de respostas, que é o produto das probabilidades de acerto de cada indivíduo em cada item, tem a seguinte função de verossimilhança:

\[\Lambda ={\frac{\prod_{i}\prod_{j}\exp(x_{ij}(\eta_{i}-\alpha_{j}))}{\prod_{i}\prod_{j}(1+\exp(\eta_{i}-\alpha_{j}))}}\]

A função de verossimilhança é dada por: \[\log \Lambda =\sum_{i}^{I}\eta_{i}r_{i}-\sum_{j}^{J}\alpha_{j}s_{j}-\sum_{j}^{J}\sum_{i}^{I}\log(1+\exp(\eta_{i}-\alpha_{j}))\]

em que \(r_{i}=\sum _{j}^{J}x_{ij}\) é o score total por pessoa \(i\) e \(s_{j}=\sum _{i}^{I}x_{ij}\) é o score total por item \(j\). A solução das equações após fazer as derivadas parciais e igualar a zero não é fechada. São necessários métodos numéricos para encontrar a solução.

3 Aplicação: Enade 2017 na Ufersa

3.1 Pré-processamento

Os microdados do Enade 2017 foram utilizados para obter os acertos e erros por universidade e por área. É necessário, antes de utilizar os modelos de TRI, readequar os dados.

Na Tabela abaixo, são apresentados os códigos por área de enquadramento no Enade para os cursos participantes na Ufersa:

O primeiro do pré-processamento consiste em filtrar os dados em relação à Instituição de Ensino Superior desejada. A variável CO_IES indica, por meio de códigos, as IES. A Ufersa é representada pelo código 589. É criado um data frame com duas variáveis da Ufersa, a saber, a área da prova e os acertos dos estudantes (0-erro, 1-acerto). Este último dado está representado como uma string de zeros e uns, sendo necessário transforma-la em um vetor numérico, o que é feito por meio da função “transforma”. Como exemplo, utilizaremos uma área para mostrar a aplicação dos modelos de TRI.

Os dados são novamente filtrados de forma a conter somente os alunos que responderam a prova. Em seguida, é apresentada uma descrição dos dados: a proporção de acertos e erros em cada item, as frequências dos scores (notas obtidas ao somar os acertos), a correlação bisserial entre os itens e o score, o alpha de Cronbach e as associações entre os pares de itens.

## 
## Descriptive statistics for the 'dados_para_ltm' data-set
## 
## Sample:
##  23 items and 6 sample units; 0 missing values
## 
## Proportions for each level of response:
##          0      1   logit
## V1  0.8333 0.1667 -1.6094
## V2  0.8333 0.1667 -1.6094
## V3  0.3333 0.6667  0.6931
## V4  0.3333 0.6667  0.6931
## V5  0.1667 0.8333  1.6094
## V6  0.5000 0.5000  0.0000
## V7  0.6667 0.3333 -0.6931
## V8  0.1667 0.8333  1.6094
## V9  0.1667 0.8333  1.6094
## V10 0.6667 0.3333 -0.6931
## V11 0.6667 0.3333 -0.6931
## V12 0.3333 0.6667  0.6931
## V14 0.1667 0.8333  1.6094
## V15 0.8333 0.1667 -1.6094
## V16 0.6667 0.3333 -0.6931
## V19 0.8333 0.1667 -1.6094
## V20 0.3333 0.6667  0.6931
## V21 0.6667 0.3333 -0.6931
## V22 0.6667 0.3333 -0.6931
## V23 0.6667 0.3333 -0.6931
## V24 0.6667 0.3333 -0.6931
## V25 0.5000 0.5000  0.0000
## V26 0.8333 0.1667 -1.6094
## 
## 
## Frequencies of total scores:
##      0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
## Freq 0 0 0 0 0 0 1 0 2 0  0  0  1  0  1  1  0  0  0  0  0  0  0  0
## 
## 
## Point Biserial correlation with Total Score:
##     Included Excluded
## V1    0.4667   0.3730
## V2    0.4667   0.3730
## V3    0.7379   0.6627
## V4    0.7379   0.6627
## V5    0.6000   0.5215
## V6   -0.3478  -0.4683
## V7   -0.1054  -0.2401
## V8    0.6000   0.5215
## V9   -0.4667  -0.5469
## V10   0.2108   0.0717
## V11   0.0000  -0.1392
## V12   0.7379   0.6627
## V14   0.6000   0.5215
## V15   0.2000   0.0904
## V16  -0.1054  -0.2401
## V19   0.4667   0.3730
## V20   0.5270   0.4140
## V21   0.8433   0.7943
## V22  -0.3162  -0.4338
## V23   0.8433   0.7943
## V24   0.0000  -0.1392
## V25   0.5466   0.4288
## V26   0.6000   0.5215
## 
## 
## Cronbach's alpha:
##                value
## All Items     0.6350
## Excluding V1  0.6092
## Excluding V2  0.6092
## Excluding V3  0.5668
## Excluding V4  0.5668
## Excluding V5  0.5944
## Excluding V6  0.7030
## Excluding V7  0.6754
## Excluding V8  0.5944
## Excluding V9  0.6907
## Excluding V10 0.6410
## Excluding V11 0.6646
## Excluding V12 0.5668
## Excluding V14 0.5944
## Excluding V15 0.6361
## Excluding V16 0.6754
## Excluding V19 0.6092
## Excluding V20 0.5995
## Excluding V21 0.5486
## Excluding V22 0.6953
## Excluding V23 0.5486
## Excluding V24 0.6646
## Excluding V25 0.5961
## Excluding V26 0.5944
## 
## 
## Pairwise Associations:
##    Item i Item j p.value
## 1       1      3    1.00
## 2       1      4    1.00
## 3       1      5    1.00
## 4       1      6    1.00
## 5       1      7    1.00
## 6       1      8    1.00
## 7       1     10    1.00
## 8       1     11    1.00
## 9       1     12    1.00
## 10      1     13    1.00

3.2 Ajustando os modelos

Ajustando os modelos de TRI para um curso específico. O primeiro modelo ajustado é o de Rasch com 1 parâmetro. Neste caso, o fator de discriminação dos itens é mantido fixo em 1 e os graus de dificuldade são estimados.

Também é obtida a probabilidade de que um estudante médio responder a cada item. Com base nesta informação, seremos capazes de indicar quais itens possuem probabilidade de acerto menor do que um valor estipulado em, por exemplo, 40%. Poderemos, então, disponibilizar esta informação para as coordenações dos cursos. A identificação das questões com menor probabilidade de acerto por parte dos estudantes poderá apontar para conteúdos que devem ser melhor trabalhados em sala de aula.

## 
## Call:
## ltm::rasch(data = dados_para_ltm, constraint = cbind(ncol(dados_para_ltm) + 
##     1, 1))
## 
## Model Summary:
##    log.Lik      AIC      BIC
##  -76.92983 199.8597 195.0701
## 
## Coefficients:
##              value std.err  z.vals
## Dffclt.V1   1.8121  1.2167  1.4894
## Dffclt.V2   1.8121  1.2167  1.4894
## Dffclt.V3  -0.7956  1.0109 -0.7870
## Dffclt.V4  -0.7956  1.0109 -0.7870
## Dffclt.V5  -1.8155  1.2170 -1.4918
## Dffclt.V6  -0.0011  0.9675 -0.0012
## Dffclt.V7   0.7932  1.0108  0.7846
## Dffclt.V8  -1.8155  1.2170 -1.4918
## Dffclt.V9  -1.8155  1.2170 -1.4918
## Dffclt.V10  0.7932  1.0108  0.7846
## Dffclt.V11  0.7932  1.0108  0.7846
## Dffclt.V12 -0.7956  1.0109 -0.7870
## Dffclt.V14 -1.8155  1.2170 -1.4918
## Dffclt.V15  1.8121  1.2167  1.4894
## Dffclt.V16  0.7932  1.0108  0.7846
## Dffclt.V19  1.8121  1.2167  1.4894
## Dffclt.V20 -0.7956  1.0109 -0.7870
## Dffclt.V21  0.7931  1.0108  0.7846
## Dffclt.V22  0.7932  1.0108  0.7846
## Dffclt.V23  0.7931  1.0108  0.7846
## Dffclt.V24  0.7932  1.0108  0.7846
## Dffclt.V25 -0.0011  0.9675 -0.0011
## Dffclt.V26  1.8121  1.2167  1.4894
## Dscrmn      1.0000      NA      NA
## 
## Integration:
## method: Gauss-Hermite
## quadrature points: 21 
## 
## Optimization:
## Convergence: 0 
## max(|grad|): 2e-05 
## quasi-Newton: BFGS
##           Dffclt Dscrmn P(x=1|z=0)
## V5  -1.815503455      1  0.8600257
## V8  -1.815503455      1  0.8600257
## V14 -1.815503455      1  0.8600257
## V9  -1.815494444      1  0.8600246
## V20 -0.795604408      1  0.6890334
## V4  -0.795599144      1  0.6890323
## V12 -0.795599144      1  0.6890323
## V3  -0.795599144      1  0.6890323
## V6  -0.001123305      1  0.5002808
## V25 -0.001100836      1  0.5002752
## V21  0.793149406      1  0.3114928
## V23  0.793149406      1  0.3114928
## V11  0.793150909      1  0.3114925
## V24  0.793150909      1  0.3114925
## V10  0.793150971      1  0.3114925
## V7   0.793151404      1  0.3114924
## V16  0.793151404      1  0.3114924
## V22  0.793152830      1  0.3114921
## V15  1.812115600      1  0.1403826
## V1   1.812115689      1  0.1403826
## V2   1.812115689      1  0.1403826
## V19  1.812115689      1  0.1403826
## V26  1.812131934      1  0.1403807
##  [1] "V21" "V23" "V11" "V24" "V10" "V7"  "V16" "V22" "V15" "V1"  "V2" 
## [12] "V19" "V26"

Em seguida, é ajustado o modelo de Rasch com fator de discriminação é constante, mas irrestrita. Assim, o valor estimado da discriminação foi de 0.646. Da mesma forma, foram obtidos os itens em que a probabilidade de acerto de um aluno com habilidade média é menor que 40%. Nota-se que, pelo critério de informação de Akaike, o modelo 1 apresenta um melhor ajuste aos dados.

## 
## Call:
## ltm::rasch(data = dados_para_ltm)
## 
## Model Summary:
##    log.Lik     AIC      BIC
##  -76.47949 200.959 195.9612
## 
## Coefficients:
##              value std.err  z.vals
## Dffclt.V1   2.6966  2.1419  1.2589
## Dffclt.V2   2.6966  2.1419  1.2589
## Dffclt.V3  -1.1746  1.5418 -0.7618
## Dffclt.V4  -1.1746  1.5418 -0.7618
## Dffclt.V5  -2.6965  2.1419 -1.2589
## Dffclt.V6   0.0000  1.3858  0.0000
## Dffclt.V7   1.1747  1.5417  0.7620
## Dffclt.V8  -2.6965  2.1419 -1.2589
## Dffclt.V9  -2.6965  2.1419 -1.2589
## Dffclt.V10  1.1747  1.5417  0.7620
## Dffclt.V11  1.1747  1.5417  0.7620
## Dffclt.V12 -1.1746  1.5418 -0.7618
## Dffclt.V14 -2.6965  2.1419 -1.2589
## Dffclt.V15  2.6966  2.1419  1.2589
## Dffclt.V16  1.1747  1.5417  0.7620
## Dffclt.V19  2.6966  2.1419  1.2589
## Dffclt.V20 -1.1746  1.5418 -0.7618
## Dffclt.V21  1.1747  1.5417  0.7620
## Dffclt.V22  1.1747  1.5416  0.7620
## Dffclt.V23  1.1747  1.5417  0.7620
## Dffclt.V24  1.1747  1.5417  0.7620
## Dffclt.V25  0.0000  1.3858  0.0000
## Dffclt.V26  2.6966  2.1419  1.2589
## Dscrmn      0.6464  0.3106  2.0810
## 
## Integration:
## method: Gauss-Hermite
## quadrature points: 21 
## 
## Optimization:
## Convergence: 0 
## max(|grad|): 5.6e-05 
## quasi-Newton: BFGS
##            Dffclt    Dscrmn P(x=1|z=0)
## V5  -2.696530e+00 0.6464062  0.8510745
## V8  -2.696530e+00 0.6464062  0.8510745
## V14 -2.696530e+00 0.6464062  0.8510745
## V9  -2.696515e+00 0.6464062  0.8510733
## V3  -1.174595e+00 0.6464062  0.6811943
## V4  -1.174595e+00 0.6464062  0.6811943
## V12 -1.174595e+00 0.6464062  0.6811943
## V20 -1.174570e+00 0.6464062  0.6811907
## V25 -4.482402e-06 0.6464062  0.5000007
## V6   4.918783e-05 0.6464062  0.4999921
## V22  1.174687e+00 0.6464062  0.3187929
## V7   1.174693e+00 0.6464062  0.3187920
## V16  1.174693e+00 0.6464062  0.3187920
## V10  1.174695e+00 0.6464062  0.3187917
## V11  1.174695e+00 0.6464062  0.3187917
## V24  1.174695e+00 0.6464062  0.3187917
## V21  1.174704e+00 0.6464062  0.3187905
## V23  1.174704e+00 0.6464062  0.3187905
## V1   2.696571e+00 0.6464062  0.1489221
## V2   2.696571e+00 0.6464062  0.1489221
## V19  2.696571e+00 0.6464062  0.1489221
## V15  2.696574e+00 0.6464062  0.1489219
## V26  2.696575e+00 0.6464062  0.1489217
##  [1] "V22" "V7"  "V16" "V10" "V11" "V24" "V21" "V23" "V1"  "V2"  "V19"
## [12] "V15" "V26"
## 
##  Likelihood Ratio Table
##         AIC    BIC log.Lik LRT df p.value
## fit1 199.86 195.07  -76.93               
## fit2 200.96 195.96  -76.48 0.9  1   0.343

O terceiro modelo ajustado é o de 2 parâmetros.

## 
## Call:
## ltm(formula = dados_para_ltm ~ z1)
## 
## Model Summary:
##    log.Lik      AIC      BIC
##  -49.60611 191.2122 181.6332
## 
## Coefficients:
##               value     std.err  z.vals
## Dffclt.V1    1.6840   2886.5465  0.0006
## Dffclt.V2    1.6840   2886.5465  0.0006
## Dffclt.V3   -0.5860      0.7039 -0.8324
## Dffclt.V4   -0.3449    120.7796 -0.0029
## Dffclt.V5   -1.0339    179.7921 -0.0058
## Dffclt.V6    0.1487      1.4901  0.0998
## Dffclt.V7   -1.1768      2.2728 -0.5178
## Dffclt.V8   -1.0339    179.7921 -0.0058
## Dffclt.V9    1.7055    159.3161  0.0107
## Dffclt.V10   2.1932      4.6949  0.4671
## Dffclt.V11  -1.4109      3.0042 -0.4696
## Dffclt.V12  -0.3449    120.7796 -0.0029
## Dffclt.V14  -1.0339    179.7921 -0.0058
## Dffclt.V15 -11.7126     80.5314 -0.1454
## Dffclt.V16   4.5711     20.9382  0.2183
## Dffclt.V19   1.6840   2886.5465  0.0006
## Dffclt.V20  -1.1768      2.2728 -0.5178
## Dffclt.V21   0.3386    466.5015  0.0007
## Dffclt.V22  -0.5860      0.7039 -0.8324
## Dffclt.V23   0.3386    466.5015  0.0007
## Dffclt.V24  -1.4109      3.0042 -0.4696
## Dffclt.V25   0.1032      0.7530  0.1371
## Dffclt.V26   2.7557      3.3212  0.8297
## Dscrmn.V1   70.1622 619323.3757  0.0001
## Dscrmn.V2   70.1622 619323.3757  0.0001
## Dscrmn.V3    1.6092      1.4950  1.0764
## Dscrmn.V4   54.9827  19577.6155  0.0028
## Dscrmn.V5   55.1168  29838.8174  0.0018
## Dscrmn.V6   -0.5798      0.8116 -0.7144
## Dscrmn.V7   -0.5786      0.8802 -0.6574
## Dscrmn.V8   55.1168  29838.8174  0.0018
## Dscrmn.V9  -53.0676  24551.8443 -0.0022
## Dscrmn.V10   0.3558      0.7556  0.4709
## Dscrmn.V11  -0.4760      0.8385 -0.5676
## Dscrmn.V12  54.9827  19577.6155  0.0028
## Dscrmn.V14  55.1168  29838.8174  0.0018
## Dscrmn.V15  -0.1363      0.9296 -0.1466
## Dscrmn.V16   0.1586      0.7405  0.2142
## Dscrmn.V19  70.1622 619323.3757  0.0001
## Dscrmn.V20   0.5786      0.8802  0.6574
## Dscrmn.V21  61.9218  85273.5807  0.0007
## Dscrmn.V22  -1.6092      1.4950 -1.0764
## Dscrmn.V23  61.9218  85273.5807  0.0007
## Dscrmn.V24  -0.4760      0.8385 -0.5676
## Dscrmn.V25   1.3293      1.1747  1.1316
## Dscrmn.V26   0.7129      1.0521  0.6776
## 
## Integration:
## method: Gauss-Hermite
## quadrature points: 21 
## 
## Optimization:
## Convergence: 0 
## max(|grad|): <1e-06 
## quasi-Newton: BFGS
##          Dffclt      Dscrmn   P(x=1|z=0)
## V15 -11.7126402  -0.1362767 1.685190e-01
## V11  -1.4109296  -0.4759676 3.381483e-01
## V24  -1.4109296  -0.4759676 3.381483e-01
## V20  -1.1768041   0.5786383 6.639493e-01
## V7   -1.1768041  -0.5786383 3.360507e-01
## V5   -1.0339390  55.1168087 1.000000e+00
## V8   -1.0339390  55.1168087 1.000000e+00
## V14  -1.0339390  55.1168087 1.000000e+00
## V22  -0.5859771  -1.6092286 2.803006e-01
## V3   -0.5859771   1.6092286 7.196994e-01
## V4   -0.3449295  54.9827069 1.000000e+00
## V12  -0.3449295  54.9827069 1.000000e+00
## V25   0.1031958   1.3292651 4.657600e-01
## V6    0.1486981  -0.5798487 5.215423e-01
## V21   0.3385723  61.9217648 7.852674e-10
## V23   0.3385723  61.9217648 7.852674e-10
## V1    1.6840324  70.1621623 4.850450e-52
## V2    1.6840324  70.1621623 4.850450e-52
## V19   1.6840324  70.1621623 4.850450e-52
## V9    1.7055179 -53.0675537 1.000000e+00
## V10   2.1931654   0.3558399 3.142303e-01
## V26   2.7557253   0.7128677 1.229844e-01
## V16   4.5711034   0.1586491 3.262486e-01
##  [1] "V15" "V11" "V24" "V7"  "V22" "V21" "V23" "V1"  "V2"  "V19" "V10"
## [12] "V26" "V16"
## 
##  Likelihood Ratio Table
##         AIC    BIC log.Lik   LRT df p.value
## fit2 200.96 195.96  -76.48                 
## fit3 191.21 181.63  -49.61 53.75 22  <0.001

3.3 Itens mais difíceis por área

Neste caso, estamos considerando os itens de múltipla escolha da prova específica da área. Itens onde a probabilidade de acerto de um estudante com habilidade mediana é menor que 40%.

# Funcao que escolhe um modelo e retorna as questoes mais dificeis --------

mais_dificeis <- function(microdados, grupos, probability=0.4){
        transforma <- function (x) (x %>% as.character() %>% 
                                      strsplit(., ""))[[1]] %>% as.numeric
        hard_questions = list()
        cont=1 
        
        for(codigo_grupo in grupos){
                dados_respostas = data.frame(curso=microdados$CO_GRUPO, 
                                             respostas=microdados$DS_VT_ACE_OCE)
                
                # passo 1: filtrar o curso e apenas os alunos que responderam
                dados_respostas %>% 
                  filter(curso==codigo_grupo & respostas != "") -> dados_respostas
                
                #print(dados_respostas)

                # passo 2: definindo a entrada para as funcoes de TRI
                sapply(dados_respostas$respostas, transforma) %>%
                        t %>% as.data.frame %>%
                        select_if(~ length(unique(.)) > 1) -> dados_para_ltm

                # ajusta o modelo com 1 parametro
                fit1 <- ltm::rasch(dados_para_ltm, 
                                   constraint = cbind(ncol(dados_para_ltm) + 1, 1))
                aic_fit1 = AIC(fit1)
                # ajusta o modelo com 2 parametros
                fit2 <- tryCatch(expr={ltm::rasch(dados_para_ltm)}, 
                                 warning = function(w){ltm::rasch(dados_para_ltm, 
                                                                  constraint = cbind(ncol(dados_para_ltm) + 1, 1))})
                
                area_enquadramento = dicionario %>% 
                  dplyr::filter(Codigo == toString(codigo_grupo))
                
                nome_area = toString(area_enquadramento$Area_enquadramento[1])
                
                if(AIC(fit1) < AIC(fit2)){
                        c = coef(fit1, prob = TRUE, order = TRUE)
                        hard_questions[[nome_area[1]]] <- c[c[,3]<=probability,] %>% 
                          rownames %>% 
                          as.vector #probabilidade de um estudante medio responder  
                } else{
                        c = coef(fit2, prob = TRUE, order = TRUE) 
                        hard_questions[[nome_area[1]]] <- c[c[,3]<=probability,] %>% 
                          rownames %>% 
                          as.vector #probabilidade de um estudante medio responder  
                }
                
                cont = cont+1
        }
        
        return(hard_questions)
}


# passo 0: filtrar ies (codigo da ufersa e 589)
microdados_enade_fixo %>% filter(., CO_IES==589) -> microdados_enade

mais_dificeis(microdados_enade, grupos, probability = 0.4)
## $`Ciência da Computação (Bacharelado)`
##  [1] "V21" "V23" "V11" "V24" "V10" "V7"  "V16" "V22" "V15" "V1"  "V2" 
## [12] "V19" "V26"
## 
## $`Engenharia de Produção`
## [1] "V22" "V24" "V10" "V7"  "V21" "V8"  "V23" "V14"
## 
## $`Engenharia Elétrica`
##  [1] "V26" "V18" "V21" "V2"  "V4"  "V25" "V15" "V22" "V20" "V14" "V27"
## 
## $`Engenharia Mecânica`
## [1] "V7"  "V11" "V2"  "V20" "V4"  "V21" "V27"
## 
## $Engenharia
##  [1] "V20" "V22" "V10" "V2"  "V13" "V19" "V24" "V18" "V26" "V4"  "V17"
## [12] "V21" "V27" "V16"
## 
## $`Ciência da Computação (Licenciatura)`
##  [1] "V22" "V12" "V16" "V8"  "V5"  "V26" "V10" "V3"  "V7"  "V6" 
## 
## $`Sistemas de Informação`
##  [1] "V12" "V19" "V14" "V10" "V5"  "V16" "V11" "V20" "V3"  "V13" "V26"
## [12] "V18"
## 
## $`Engenharia Florestal`
## [1] "V11" "V7"  "V27" "V20" "V12"
## 
## $`Matemática (Licenciatura)`
##  [1] "V24" "V7"  "V23" "V22" "V5"  "V25" "V3"  "V17" "V20" "V1"  "V12"
## [12] "V9"  "V26" "V14" "V6"  "V16" "V21" "V4"  "V10"
## 
## $`Engenharia Civil`
## [1] "V20" "V18" "V25"
## 
## $`Engenharia Química`
## [1] "V7"  "V19" "V6"  "V25" "V21" "V26" "V4"  "V27" "V2" 
## 
## $`Engenharia Ambiental`
##  [1] "V5"  "V7"  "V13" "V8"  "V10" "V12" "V20" "V26" "V21" "V19" "V25"