正しく実行できたステップの値を その項目の反応 \(x_j\)とする。
段階数 \(K_j=3\)
の場合を例に考える。
\(P^+_{jk}=P(x_j \geq k|\theta)=\dfrac{1}{1+\exp \left[ -a_j\left(\theta -b_{jk}\right) \right]}\).
このように設定することで.
\(b_{j3}>b_{j2}>b_{j1}\)
とできる。
識別力は項目ごとに共通で \(a_j\)
とする。
これらに対する確率曲線は累積確率曲線と呼ばれる。
ruiseki2PL <- function(a,b,theta){
1/(1+exp(-a*(theta-b)))
}
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")
困難度が 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")
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")