2016-06-01 7 views
0

私は以前ここで尋ねられた同様の質問を見たことがありますが、私は満足のいく答えを見つけたことはありません。データの観測値に因子スコア(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でそれを行う方法を提案してくださいもらえますか?

ありがとうございます!

+0

出力を見ると、 'score $ score.dat'は28行と3088列のdata.frameです。各列はテスト対象を表しています。 27行目 '$ z1'はあなたが各科目に割り当てるスコアですので、無礼にしようとするのではなく、必要なものをすでに持っていませんか?これがあなたの後でない場合は、私に知らせてください、そして私はさらに助けを求めることができます。 –

+0

@BryanGoggin - 返信いただきありがとうございます。私のデータセットは3459の観測値を持っています。得点$ score.datには、私のデータセット内の回答の3088個の順列が含まれています。 – polished

+0

ああ、あなたは今どこから来ているのか分かります。私が何かを思い付くなら、私はあなたに知らせるでしょう。 –

答えて

0

各参加者(観測)のスコアを示すobsScoresという名前の変数を持つdata.frame dfがあるとします。

ブルートフォース、単に各参加者に生の値を与える:

df$factorScore <- scores$z1[df$obsScores] 

サイズの違いを心配する必要はありません

は、ここでは、2つの割り当てメカニズムをしています。 Rは値を再利用することができます。

第二の方法は、最初のものは、分析のための好ましい

df$factorScore <- factor(df$obsScores, levels=1:length(scores$z1), labels=scores$z1) 

因子変数を使用することができます。

関連する問題