私は以前ここで尋ねられた同様の質問を見たことがありますが、私は満足のいく答えを見つけたことはありません。データの観測値に因子スコア(Exp)を適用するにはどうすればよいですか?私のデータセットの観測値をRのベクトルに基づく値に一致させるにはどうすればよいですか?
ltmというアイテムレスポンス理論パッケージを使用してデータを分析しています。 (多くの被験者のための25のテストの質問にバイナリの回答)私のデータは次のようになります。
q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 q16 q17 q18 q19 q20 q21 q22 q23 q24
0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1 0 1 0 0
1 0 1 0 1 1 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0
1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1
1 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0
0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 0
0 1 1 1 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 0 0
次は私が因子得点を実行し、各受験者の能力を評価するために、私の分析
library(ltm)
model <- ltm(questionsPretest ~ z1, IRT.param = na.action = NULL)
を起動します。
scores <- factor.scores(model)
これは、私の回答のベクトル(24 1と0)が与えられたときの能力です。 (Z1と呼ばれる) 能力が得点にこのように格納されます。
str(scores)
List of 6
$ score.dat:'data.frame': 3088 obs. of 28 variables:
..$ q1 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q2 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q3 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q4 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q5 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q6 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q7 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q8 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q9 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q10 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q11 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q12 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q13 : num [1:3088] 0 0 0 0 0 0 0 0 0 0 ...
..$ q14 : num [1:3088] 0 0 0 0 0 0 0 0 0 1 ...
..$ q15 : num [1:3088] 0 0 0 0 0 0 0 0 1 0 ...
..$ q16 : num [1:3088] 0 0 0 0 0 0 0 1 0 0 ...
..$ q17 : num [1:3088] 0 0 0 0 0 1 1 1 0 0 ...
..$ q18 : num [1:3088] 0 0 0 1 1 0 0 0 0 0 ...
..$ q19 : num [1:3088] 0 0 0 0 1 0 0 0 0 0 ...
..$ q20 : num [1:3088] 0 0 0 0 0 1 1 0 0 0 ...
..$ q21 : num [1:3088] 0 1 1 0 0 0 1 1 0 0 ...
..$ q22 : num [1:3088] 0 0 0 1 0 0 0 0 0 0 ...
..$ q23 : num [1:3088] 0 0 0 0 0 0 1 0 0 0 ...
..$ q24 : num [1:3088] 0 0 1 0 0 0 0 0 0 0 ...
..$ Obs : num [1:3088] 87 1 1 1 1 1 1 1 1 1 ...
..$ Exp : num [1:3088] 5.553 2.275 0.213 0.096 0.061 ...
..$ z1 : num [1:3088] -1.9 -1.87 -1.61 -1.55 -1.53 ...
..$ se.z1: num [1:3088] 0.573 0.583 0.535 0.523 0.524 ...
$ method : chr "EB"
$ B : num 5
$ call : language tpm(data = questionsPretest, type = "latent.trait", IRT.param = TRUE, na.action = NULL)
$ resp.pats: logi FALSE
$ coef : num [1:24, 1:3] 0.000017879 0.311805093 0.000045896 0.000000182 0.000004738 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:24] "q1" "q2" "q3" "q4" ...
.. ..$ : Named chr [1:3] "Gussng" "Dffclt" "Dscrmn"
.. .. ..- attr(*, "names")= chr [1:3] "Guessing" "Difficulty" "Discrimination"
- attr(*, "class")= chr "fscores"
私がする必要がどのような回答に基づいて、私のデータセット内の観測にZ1を割り当てることです。得点の出力を見ると、すべての質問に0と答えたすべての人にz1 = -1.9を割り当てます。質問21以外のすべての質問に0と答えたすべての人にz1 = -1.87を割り当てます。
あなたが言うことができるように、3088があり、私のデータセット内の回答の順列を観察したので、私は本当に手でこれをやって避けたい:)
誰もがRでそれを行う方法を提案してくださいもらえますか?
ありがとうございます!
出力を見ると、 'score $ score.dat'は28行と3088列のdata.frameです。各列はテスト対象を表しています。 27行目 '$ z1'はあなたが各科目に割り当てるスコアですので、無礼にしようとするのではなく、必要なものをすでに持っていませんか?これがあなたの後でない場合は、私に知らせてください、そして私はさらに助けを求めることができます。 –
@BryanGoggin - 返信いただきありがとうございます。私のデータセットは3459の観測値を持っています。得点$ score.datには、私のデータセット内の回答の3088個の順列が含まれています。 – polished
ああ、あなたは今どこから来ているのか分かります。私が何かを思い付くなら、私はあなたに知らせるでしょう。 –