Rによる項目反応理論
を学習した記録です。
テスト理論の数理から実践まで、行間を省かずに丁寧に書かれたテキストです。
テスト理論には、
があります。古典的テスト理論も、今なお重要な役割を担っています。
信頼性係数 (reliability coefficient).
https://clover.fcg.world/2016/05/09/4343/.
https://clover.fcg.world/2016/05/09/4337/.
モデルを.
\(y=t+e\)
(テスト得点を得点の真値で回帰、eは誤差)とすると.
\(\sigma_y^2=\sigma_t^2+\sigma_e^2\)
(テスト得点の変動=得点の真値の変動+誤差変動)
信頼性係数 = 真の得点の分散÷観測得点の分散.
観測得点と真の得点との相関係数の2乗(信頼性指数の2乗).
信頼性係数(reliability
coefficient)とは、真の得点の分散の観測得点の分散に対する比。
相関係数の2乗であり、「決定係数(=説明率)」に相当する。
\(\rho=\dfrac{\sigma_t^2}{\sigma_y^2}=1-\dfrac{\sigma_e^2}{\sigma_y^2}\) (決定係数:説明率)
信頼性係数は、テスト得点を真値で回帰したときの決定係数と言える。
SEM(測定値の標準誤差) (standeerd error of
measurement).
\(\sigma_e=\sigma_y~\sqrt{1-\rho}\)
であるので、
\(SEM~:~s_e=s_y~\sqrt{1-\hat{\rho}}\)
また、\(SEM=\dfrac{1}{\sqrt{I(\theta_i)}}\)
(フィッシャー情報量の平方根の逆数)となっている。
情報量が多ければ誤差が小さく、精度の良い推定となる。
クロンバックのアルファ係数
\(\alpha = \frac{J}{J-1} \left(1 -
\frac{\sum_{j = 1}^J{{s_j}^2}}{{s_y}^2} \right)\)
統計検定2022人文④を参照、6章も参照.
[参考サイト] 文科省によるテスト分析
α係数が高ければ,項目間の相関係数が高く,内的一貫性が高い.
test<-read.csv("data/testeg.csv",header=T)
head(test)
subject | q1 | q2 | q3 | q4 | q5 | q6 | q7 | q8 | q9 | q10 |
---|---|---|---|---|---|---|---|---|---|---|
Hasegawa | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Honda | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
Uchikawa | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
Matsuda | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
LaHair | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
Yanagita | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
・テスト得点 score
test$score <- rowSums(test[,2:11])
(test.mean <- mean(test$score))
## [1] 6.55
(test.var <- 19/20*var(test$score))
## [1] 5.3475
(test.sd <- sqrt(19/20*var(test$score)))
## [1] 2.312466
head(test)
subject | q1 | q2 | q3 | q4 | q5 | q6 | q7 | q8 | q9 | q10 | score |
---|---|---|---|---|---|---|---|---|---|---|---|
Hasegawa | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 |
Honda | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 8 |
Uchikawa | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 9 |
Matsuda | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 |
LaHair | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 9 |
Yanagita | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 9 |
・標準点と偏差値
test[,2]
## [1] 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0
#test$z.score <- scale(test[,12])
test$z.score <- (test$score-test.mean)/sqrt(test.var)
test$z.hensati <- 10*test$z.score+50
head(test)
subject | q1 | q2 | q3 | q4 | q5 | q6 | q7 | q8 | q9 | q10 | score | z.score | z.hensati |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Hasegawa | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 | 1.4919137 | 64.91914 |
Honda | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 8 | 0.6270362 | 56.27036 |
Uchikawa | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 9 | 1.0594749 | 60.59475 |
Matsuda | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 | 1.4919137 | 64.91914 |
LaHair | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 9 | 1.0594749 | 60.59475 |
Yanagita | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 9 | 1.0594749 | 60.59475 |
CTTでは、項目ごとの正答率が困難度を表す。
item.diff <- apply(test[2:11],2, mean);item.diff
## q1 q2 q3 q4 q5 q6 q7 q8 q9 q10
## 0.65 0.85 0.65 0.60 0.90 0.80 0.75 0.40 0.20 0.75
CTTでは、テスト得点と項目得点の相関係数(I-T相関)が識別力を表す。
head(cor(test[2:11],test[12],use="pairwise.complete.obs"))
## score
## q1 0.6278468
## q2 0.4026810
## q3 0.7185106
## q4 0.7679594
## q5 0.3675729
## q6 0.4432497
α係数は、項目間の相関が高いほど、あるいは項目数が多いほど大きな値をとる。1つのテストを構成する項目間の相関が高いとき、テストの内的整合性、あるいは内部一貫性が高いという。
var関数による不偏分散とベルヌーイの分散を利用した式は若干異なる。
#不偏分散
apply(test[2:11],2, var)
## q1 q2 q3 q4 q5 q6 q7
## 0.23947368 0.13421053 0.23947368 0.25263158 0.09473684 0.16842105 0.19736842
## q8 q9 q10
## 0.25263158 0.16842105 0.19736842
#ベルヌーイ(2値)の式を利用した分散
item.var <- item.diff*(1-item.diff);item.var
## q1 q2 q3 q4 q5 q6 q7 q8 q9 q10
## 0.2275 0.1275 0.2275 0.2400 0.0900 0.1600 0.1875 0.2400 0.1600 0.1875
不偏分散のほうが大きめの値を出力する。
alpha <- (10/(10-1))*(1-sum(item.var)/((19/20)*var(test[12])))
alpha
## score
## score 0.7272349
分散は標本分散を用いるので、varから得られた値を修正している。 分散の比であるので、分母分子とも不偏分散を用いても結果は変わらない。
alpha <- (10/(10-1))*(1-sum(apply(test[2:11],2, var))/var(test[12]))
alpha
## score
## score 0.7272349
標本依存性
項目依存性.
異なる受験者集団や、異なるテストを比較する場合に問題になる。
library(ltm)
## Loading required package: MASS
## Loading required package: msm
## Loading required package: polycor
library(irtoys)
## Loading required package: sm
## Package 'sm', version 2.2-5.7: type help(sm) for summary information
##
## Attaching package: 'sm'
## The following object is masked from 'package:MASS':
##
## muscle
ans2 <- ltm(test[2:11] ~ z1)
ans2$coef[1:6,1:2]
## (Intercept) z1
## q1 1.4273464 2.8906062
## q2 2.1461199 1.2164582
## q3 0.7667901 1.0818991
## q4 7.6073079 28.6901396
## q5 2.3139211 0.5866775
## q6 2.5485632 2.4664043
par(mfrow = c(1, 1))
plot(ans2, type = "ICC",item=c(1:4))#項目特性曲線
CTTによる分析とIRT(2PL)による分析では、かなり大きな差があるようである。