Q1

set.seed(1234)
library(psych)
library(dplyr)
library(knitr)
library(mirt)
# Define o score real
trueScore <- runif(200)

# criando dataframe com 10 colunas e 200 respostas
aleatorios <- matrix(runif (10*200), nrow = 200, ncol = 10)

head(aleatorios)
##           [,1]      [,2]      [,3]      [,4]      [,5]       [,6]      [,7]
## [1,] 0.6607546 0.6862423 0.2809718 0.1099460 0.8376339 0.62304151 0.6754102
## [2,] 0.5283594 0.4166287 0.1741882 0.8714368 0.4874663 0.34088008 0.5933306
## [3,] 0.3174938 0.7570262 0.1702244 0.5144198 0.1103370 0.72988768 0.9229822
## [4,] 0.7678555 0.7757949 0.5605436 0.2856988 0.3513630 0.22653142 0.8017529
## [5,] 0.5263085 0.5735870 0.4288006 0.3367340 0.7610630 0.04541045 0.4172276
## [6,] 0.7323019 0.1886988 0.3891868 0.5696520 0.3896648 0.97040078 0.8183061
##            [,8]        [,9]      [,10]
## [1,] 0.15293351 0.002026272 0.11403731
## [2,] 0.40035903 0.647160394 0.19220820
## [3,] 0.08262173 0.334856310 0.61847069
## [4,] 0.65767434 0.360211738 0.59905932
## [5,] 0.48037155 0.068453772 0.06188442
## [6,] 0.01651635 0.156620448 0.69925352
# define o critério de acerto de cada item com base no trueScore
banco <- 1 * (trueScore > aleatorios) %>%  data.frame()

# calcula o score observado
banco$observedScore = rowSums(banco)

# adiciona o trueScore à base de dados
banco$trueScore <- trueScore

# arredonda o valor de trueScore
banco$trueScore <- round(banco$trueScore, digits = 2)

# Organiza a ordem das colunas
banco <- banco[, c(12, 1:11)]

knitr::kable(head(banco))
trueScore X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 observedScore
0.11 0 0 0 1 0 0 0 0 1 0 2
0.62 1 1 1 0 1 1 1 1 0 1 8
0.61 1 0 1 1 1 0 0 1 1 0 6
0.62 0 0 1 1 1 1 0 0 1 1 6
0.86 1 1 1 1 1 1 1 1 1 1 10
0.64 0 1 1 1 1 0 0 1 1 0 6
# calcula a correlação
cor(banco$trueScore, banco$observedScore)
## [1] 0.9137003
# calcula o alpha

summary(psych::alpha(banco[,2:11]))
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.83      0.83    0.83      0.32 4.8 0.018 0.49 0.31     0.33
# gera outro banco de dados utilizando o mesmo trueScore 

aleatorios2 <- matrix(runif (10*200), nrow = 200, ncol = 10)
banco2 <- 1 * (trueScore > aleatorios2) %>%  data.frame()
banco2$observedScore2 = rowSums(banco2)
banco2$trueScore <- trueScore
banco2$trueScore <- round(banco$trueScore, digits = 2)
banco2 <- banco2[, c(12, 1:11)]

# correlação entre primeiro e o segundo observedScore
cor(banco$observedScore, banco2$observedScore2)
## [1] 0.843521

A pergunta final da autora é: como que esse coeficiente de correlation compara com o alpha de Chronbach

Q2

# função
q2 <- function(nItens, nParticipantes){
  
  trueScore <- runif(nParticipantes)
  aleatorios <- matrix(runif (nItens*nParticipantes), nrow = nParticipantes, ncol = nItens)
  banco <- 1 * (trueScore > aleatorios) %>%  data.frame()
  banco$observedScore = rowSums(banco)
  banco$trueScore <- trueScore
  banco$trueScore <- round(banco$trueScore, digits = 2)
  alpha <- summary(psych::alpha(banco[,1:nItens]))
  
  return(alpha$std.alpha)
}
dfQ2 <- data.frame(
  nItens = seq(10, 100, 10)
)

for(i in 1:dim(dfQ2)){
  dfQ2$alpha[i] <- q2(dfQ2$nItens[i], 200)
}
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.83      0.83    0.82      0.32 4.7 0.018 0.52 0.31     0.32
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean  sd median_r
##       0.91      0.91    0.92      0.33 9.8 0.0095 0.53 0.3     0.34
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.93      0.93    0.94      0.32  14 0.0067 0.53 0.29     0.33
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.94      0.94    0.95      0.28  16 0.006 0.51 0.27     0.29
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean  sd median_r
##       0.96      0.96    0.97      0.34  26 0.0038 0.46 0.3     0.34
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean  sd median_r
##       0.97      0.97    0.98      0.36  33 0.003 0.48 0.3     0.36
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean  sd median_r
##       0.98      0.98    0.99      0.36  40 0.0025 0.51 0.3     0.36
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean  sd median_r
##       0.98      0.98    0.99      0.36  45 0.0022 0.51 0.3     0.36
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean  sd median_r
##       0.98      0.98    0.99      0.35  48 0.002 0.52 0.3     0.35
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.98      0.98    0.99      0.32  46 0.0021 0.51 0.28     0.32
plot(dfQ2$nItens, dfQ2$alpha, data = dfQ2)
lines(lowess(dfQ2$alpha ~ dfQ2$nItens), col = "blue")

Q3

dfQ3 <- data.frame(
  nParticipantes = seq(200, 2000, 100)
)

for(i in 1:dim(dfQ3)){
  dfQ3$alpha[i] <- q2(10, dfQ3$nParticipantes[i])
}
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.83      0.83    0.82      0.33 4.9 0.018 0.52 0.31     0.33
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.85      0.85    0.84      0.36 5.7 0.013 0.51 0.33     0.37
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.84      0.84    0.83      0.34 5.1 0.012 0.48 0.32     0.34
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.84      0.84    0.83      0.34 5.1 0.011  0.5 0.32     0.34
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.84      0.84    0.83      0.34 5.2 0.0098 0.49 0.32     0.34
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.84      0.84    0.83      0.34 5.2 0.0091  0.5 0.32     0.34
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.82      0.33 4.9 0.0089 0.51 0.31     0.33
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.81      0.32 4.7 0.0087 0.49 0.31     0.33
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.84      0.84    0.83      0.35 5.3 0.0075  0.5 0.32     0.34
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.82      0.34 5.1 0.0074 0.49 0.32     0.34
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.81      0.32 4.8 0.0075  0.5 0.31     0.32
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.81      0.32 4.7 0.0072 0.51 0.31     0.32
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.82      0.33 4.8 0.0068  0.5 0.31     0.33
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.82      0.33 4.9 0.0066  0.5 0.31     0.33
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.82      0.33   5 0.0062 0.49 0.32     0.33
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.84      0.84    0.82      0.34 5.1 0.006  0.5 0.32     0.34
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.83      0.83    0.82      0.33 4.9 0.006 0.49 0.31     0.33
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.83      0.83    0.82      0.33   5 0.0057  0.5 0.32     0.33
## 
## Reliability analysis   
##  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.84      0.84    0.82      0.34 5.2 0.0054  0.5 0.32     0.34
plot(dfQ3$nParticipantes, dfQ3$alpha)
abline(lm(dfQ3$alpha ~ dfQ3$nParticipantes), col = "blue")

Q4

library(mirt)

media = seq (-2, 2, .1)
alfa = c()

for (i in 1:length(media))
{
med = media[i]
  set.seed(1234)
theta = as.matrix (rnorm(1000, med))
a = rlnorm(100, 1, 1.5)
d = rnorm(100)
sim = simdata(a, d, itemtype = '2PL', Theta = theta)

alfa[i] = alpha(sim)$total$raw_alpha
}

plot(media, alfa)