В качестве примера взята шкала из утверждений, которые измеряют Привязанность к школе (School Connectedness)
library(ltm)
library(foreign)
library(dplyr)
df <- read.spss("/students/aamenshikova/Kaluga/IRT Summer/base5perc.sav", to.data.frame = T)
s_con <- dplyr::select(df,sc1,sc2,sc3,sc4,sc5,sc6,sc7,sc8,sc9)
Модель Graded Response Model, такая использована в статье
mdl2 <- grm(s_con, constrained = FALSE)
mdl2
##
## Call:
## grm(data = s_con, constrained = FALSE)
##
## Coefficients:
## Extrmt1 Extrmt2 Extrmt3 Dscrmn
## sc1 -1.882 -1.032 0.302 3.474
## sc2 -2.138 -1.408 -0.180 2.798
## sc3 -2.387 -1.209 0.440 1.726
## sc4 -1.461 -0.214 1.166 1.920
## sc5 -2.948 -1.694 0.341 1.583
## sc6 -2.482 -0.993 0.644 1.330
## sc7 -2.961 -1.683 -0.235 1.233
## sc8 -3.473 -2.064 0.096 1.050
## sc9 -2.608 -1.154 0.948 1.521
##
## Log.Lik: -12241.64
Для того, чтобы посчитать threshhold для категории 2 (Скорее не согласен), нужно вычесть значение b2 из значения b1, соответственно, для категории 3 (Скорее согласен) нужно вычесть b3 из b2
Slope и thresholds - два основных параметра, и их удобно изображать и интерпретировать с помощью графиков типа “Item Characteristic Curves”. Для каждого вопроса, который измеряет интересующую латентную переменную (здесь - Привязанность к школе), функция рисует отдельный график с кривыми для каждой категории ответа (“Совершенно не согласен”, “Скорее согласен” и т.д.). Кривые на графике показывают распределение вероятностей ответов (Y, Probability) и выраженность латентой переменной (X, Theta) на основе ответов всех респондентов для каждой категории внутри одного вопроса согласно модели GRM.
Значение slope характеризует разброс вероятностей в ответах на вопрос по отношению к значениям латентной переменной: чем выше slope, тем разброс вероятностей больше с ее увеличением или уменьшением.Графически соответствует количеству пиков и высоте их вершин на графике.Чем выше значение slope, тем больше вершин (пиков) появляется на кривой индивидуальных ответов.
Что касается значений thresholds: чем они выше, тем больше на графике заметен сдвиг кривых вправо, в сторону положительных значений латентной переменной.
Для конструкта Привязанность к школе посмотрим на графики для вопросов “В школе мне хорошо”(sc1) и “В школе я могу быть самим собой”(sc6) сверху и снизу соответственно
par(mfrow = c(3, 3))
par(mar=c(1,1,1,1))
plot(mdl2, lwd = 2, cex = 0.8,
legend = TRUE, cx = "topright",
xlab = "Привязанность к школе", cex.main = 1,
cex.lab = 1, cex.axis = 1)
a = 3.474
a = 1.330
И более высокое значения показателя, и наличие острых пиков на графике для утверждения “В школе мне хорошо” говорит о более резкой смене вероятностей при для высоких и низких показателей латентной переменной Привязанность к школе. При любом значении латентной переменной более распространены категории ответа, у которых вероятность (значение по шкале Y, Probability) выше.
Выбор категории “Скорее не согласен” для утверждения “В школе мне хорошо” говорит о том, что показатель латентной переменной, Привязанность к школе, находится в отрезке от -1.9 до -1.1. Выбор той же категории для утверждения “В школе я могу быть самим собой” указывает на уровень привязанности к школе в промежутке от -2.4 до -1.1
Чем меньше промежутки значений латентной переменной для каждой из категорий, тем более информативным считается вопрос/утверждение при измерении латентной переменной. Поэтому утверждение “В школе мне хорошо” дает больше информации о привязанности к школе, чем “В школе я могу быть самим собой”
b1 = -1.882 b2 = -1.032 b3 = 0.302
b1 = -2.482 b2 = -0.993 b3 = 0.644
Для утверждения “В школе мне хорошо” значения thresholds в целом выше, и кривые сдвинуты влево меньше, чем в случае утверждения “В школе я могу быть самим собой”. Так первое утверждение получило более положительные ответы от респондентов по отношению к латентной переменной Привязанность к школе.
Респондент со средней привязанностью к школе (0 по оси Х, значение латентной переменной) выберет категорию “Скорее согласен” для утверждения “В школе мне хорошо” с вероятностью примерно 70%. Для утверждения “В школе я могу быть самим собой” “Скорее согласен” ответят 50% при среднем значении латентной переменной.
Функция ниже позволяет подсчитать IRT scale score для каждого респондента в отдельности. В качестве альтернативы простому суммированию в таком подходе рассматриваются все возможные комбинации ответов. Именно респонденты с одинаковыми последовательными сочетаниями ответов на вопросы внутри одной шкалы получают одинаковые значения scale score.
factor.scores добавляет к датасету с используемыми переменными 4 колонки:
Также уровни функция заменяет на цифры:
scores_scon <- ltm::factor.scores(mdl2, resp.patterns = `s_con`)$score.dat
head(scores_scon)
## sc1 sc2 sc3 sc4 sc5 sc6 sc7 sc8 sc9 Obs Exp z1 se.z1
## 1 4 4 4 4 4 4 4 4 4 63 50.60649076 1.7266512 0.5541767
## 2 4 4 4 4 4 4 4 4 4 63 50.60649076 1.7266512 0.5541767
## 3 4 4 4 3 4 4 4 4 4 21 20.39202510 1.2611094 0.4568771
## 4 3 4 3 2 4 3 3 3 2 1 0.16308030 -0.2538268 0.3210101
## 5 4 4 3 3 3 2 3 3 2 1 0.03728976 0.0141369 0.3220160
## 6 3 2 3 1 3 3 3 4 2 1 0.03867509 -0.9353283 0.3134783
Можно самостоятельно указать интересующую комбинацию (комбинации) ответов, и тогда в выводе появятся только scale scores для таких комбинаций
scores_scon12 <- ltm::factor.scores(mdl2, resp.patterns = rbind(c(1,1,1,1,1,1,1,1,1), c(2,2,2,2,2,2,2,2,2)))$score.dat
scores_scon12
## sc1 sc2 sc3 sc4 sc5 sc6 sc7 sc8 sc9 Obs Exp z1 se.z1
## 1 1 1 1 1 1 1 1 1 1 2 0.2250385 -3.187599 0.4887001
## 2 2 2 2 2 2 2 2 2 2 1 0.0304650 -1.574715 0.2743589