I'm fitting a Partial Credit Model (PCM) with ltm
package.
Suppose, my data contains 3 items each scored 1, 2 or 3, like this one:
my_data<-data.frame(
X1 = c(1,1,3,1,1,3,1,3,1,1,3,3,3,3,3,3,3,3,1,3,3,3,3,1,1,3,3,3,3,3,3,3,3,1,3,3,3,1,1,3),
X2 = c(1,1,2,3,2,3,2,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,3,3,3,3,3,3,2,2,2,2,2,2,2,2,3,2,1,1),
X3 = c(2,1,2,2,3,3,2,3,1,2,1,1,1,3,2,2,1,1,1,2,3,1,3,3,2,3,1,2,1,1,1,3,2,2,1,1,1,2,2,1)
)
But it happened that no one have chosen option 2 in the first item:
lapply(my_data, table)
$X1
1 3
13 27
$X2
1 2 3
4 20 16
$X3
1 2 3
17 14 9
Now, when I run ltm::gpcm()
to fit the model and factor.scores()
to examine person abilities, I get the following output:
library('ltm')
fit<-gpcm(my_data, constraint='rasch')
factor.scores(fit)
Call:
gpcm(data = my_data, constraint = "rasch")
Scoring Method: Empirical Bayes
Factor-Scores for observed response patterns:
X1 X2 X3 Obs Exp z1 se.z1
1 1 1 1 1 1.578 -1.414 0.744
2 1 1 2 2 0.486 -0.880 0.718
3 1 2 1 1 4.228 -0.880 0.718
4 1 2 2 3 2.209 -0.379 0.700
5 1 2 3 1 0.787 0.104 0.694
6 1 3 1 1 1.546 -0.379 0.700
7 1 3 2 3 1.343 0.104 0.694
8 1 3 3 1 0.793 0.591 0.705
9 2 1 1 1 1.159 -0.880 0.718
10 2 2 1 8 5.267 -0.379 0.700
11 2 2 2 5 4.573 0.104 0.694
12 2 2 3 2 2.701 0.591 0.705
13 2 3 1 5 3.201 0.104 0.694
14 2 3 2 1 4.607 0.591 0.705
15 2 3 3 5 4.597 1.107 0.737
It looks like X1
is treated like it had two possible responses: "1" and "2", not "1" and "3"!
Is there any way to inlude unobserved response "2" for X1
?
Why this is important? It's all about scoring. Look at lines 2 and 9 above:
- Line 2 is espondent, who scored 1, 1 and 2 (respectively on
X1
,X2
andX3
). - Line 9 is respondent who scored 3, 1, 1 (since
X1=3
in original dataset is recoded toX1=2
byltm
package)
Those two people have:
- exatly the same person-ability score assigned (column
z1
), - different raw scores (4 and 5, respectively),
which should not happen.
To be precise: I understand why this happens. My question is how to overcome such behaviour?