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))
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)
