1 多値反応とは.

正しく実行できたステップの値を その項目の反応 \(x_j\)とする。
段階数 \(K_j=3\) の場合を例に考える。

2 段階反応モデル

   \(P^+_{jk}=P(x_j \geq k|\theta)=\dfrac{1}{1+\exp \left[ -a_j\left(\theta -b_{jk}\right) \right]}\).

  • \(P(x_j \geq 3|\theta)\) :完全正解する確率(困難度 \(b_{j3}\)).
  • \(P(x_j \geq 2|\theta)\) :2step以上の確率(困難度 \(b_{j2}\)).
  • \(P(x_j \geq 1|\theta)\) :1step以上の確率(困難度 \(b_{j1}\)).
  • \(P(x_j \geq 0|\theta)=1\) :1step以上の確率(困難度 なし).

このように設定することで.
 \(b_{j3}>b_{j2}>b_{j1}\) とできる。
識別力は項目ごとに共通で \(a_j\) とする。
これらに対する確率曲線は累積確率曲線と呼ばれる。

2.1 項目特性関数 ICC.

ruiseki2PL <- function(a,b,theta){
  1/(1+exp(-a*(theta-b)))
}

2.1.1 累積確率曲線.

x <- seq(-3,3,.01)
#plot(x,ruiseki2PL(1.5,-1.5,x))
par(family = "HiraKakuProN-W3") #日本語フォントの指定
curve(ruiseki2PL(1.5,-1.5,x),xlim=c(-3,3),ylab="反応確率")
curve(ruiseki2PL(1.5,0,x),xlim=c(-3,3),add=T,col="lightblue")
curve(ruiseki2PL(1.5,1,x),xlim=c(-3,3),add=T,col="lightgreen")

2.1.2 カテゴリー確率曲線.

  • \(P_{j3}(\theta)=P^+_{j3}\) :完全正解する確率(困難度 \(b_{j3}\)).
  • \(P_{j2}(\theta)=P^+_{j2}-P^+_{j3}\) :2stepまで正解する確率.
  • \(P_{j1}(\theta)=P^+_{j1}-P^+_{j2}\) :1stepまで正解する確率.

困難度が b=(-1.5,0,1)の場合のグラフを描く。

par(family = "HiraKakuProN-W3") #日本語フォントの指定
curve(1-ruiseki2PL(1.5,-1.5,x),xlim=c(-3,3),ylab="反応確率")
curve(ruiseki2PL(1.5,-1.5,x)-ruiseki2PL(1.5,0,x),xlim=c(-3,3),add=T,ylab="反応確率",col="red")
curve(ruiseki2PL(1.5,0,x)-ruiseki2PL(1.5,1,x),xlim=c(-3,3),add=T,col="lightblue")
curve(ruiseki2PL(1.5,1,x),xlim=c(-3,3),add=T,col="lightgreen")

土谷政雄 項目反応理論(1):ltmパッケージで段階反応モデル.

https://www.mizumot.com/method/04-04_Sumi.pdf

3 部分得点モデル.

3.1 ltmの中のデータセット.

library(ltm)
## Loading required package: MASS
## Loading required package: msm
## Loading required package: polycor
help(Environment)
head(Environment)
LeadPetrol RiverSea RadioWaste AirPollution Chemicals Nuclear
very concerned very concerned very concerned very concerned very concerned very concerned
very concerned very concerned very concerned very concerned very concerned very concerned
very concerned very concerned very concerned very concerned very concerned very concerned
very concerned very concerned very concerned very concerned very concerned very concerned
very concerned very concerned very concerned very concerned very concerned very concerned
very concerned very concerned very concerned very concerned very concerned very concerned
descript(Environment)
## 
## Descriptive statistics for the 'Environment' data-set
## 
## Sample:
##  6 items and 291 sample units; 0 missing values
## 
## Proportions for each level of response:
##              very concerned slightly concerned not very concerned
## LeadPetrol           0.6151             0.3265             0.0584
## RiverSea             0.8007             0.1753             0.0241
## RadioWaste           0.7457             0.1924             0.0619
## AirPollution         0.6495             0.3196             0.0309
## Chemicals            0.7491             0.1924             0.0584
## Nuclear              0.5155             0.3265             0.1581
## 
## 
## Frequencies of total scores:
##       6  7  8  9 10 11 12 13 14 15 16 17 18
## Freq 96 51 37 27 26 18 13  7  6  6  1  1  2
## 
## 
## Cronbach's alpha:
##                         value
## All Items              0.8215
## Excluding LeadPetrol   0.8218
## Excluding RiverSea     0.7990
## Excluding RadioWaste   0.7767
## Excluding AirPollution 0.7751
## Excluding Chemicals    0.7790
## Excluding Nuclear      0.8058
## 
## 
## Pairwise Associations:
##    Item i Item j p.value
## 1       1      2   0.001
## 2       1      3   0.001
## 3       1      4   0.001
## 4       1      5   0.001
## 5       1      6   0.001
## 6       2      3   0.001
## 7       2      4   0.001
## 8       2      5   0.001
## 9       2      6   0.001
## 10      3      4   0.001
fit<-grm(Environment)
fit
## 
## Call:
## grm(data = Environment)
## 
## Coefficients:
##               Extrmt1  Extrmt2  Dscrmn
## LeadPetrol      0.487    2.584   1.378
## RiverSea        1.058    2.499   2.341
## RadioWaste      0.779    1.793   3.123
## AirPollution    0.457    2.157   3.283
## Chemicals       0.809    1.868   2.947
## Nuclear         0.073    1.427   1.761
## 
## Log.Lik: -1090.404
plot(fit)

plot(fit, legend=T,items=3, cx="left")

par(mfrow=c(2,3)) #縦2*横3に
plot(fit, legend=T, cx="left")