2016-06-01 3 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를 할당 할 것입니다. q21 질문을 제외한 모든 질문에 0으로 답한 모든 사람들에게 z1 = -1.87을 할당합니다.

당신이 말할 수있는, 거기에 3088 내 데이터 세트에 대한 답변의 순열을 관찰, 그래서 난 정말 손 :

사람이 R에서 작업을 수행하는 방법을 제안 시겠어요으로이 일을 방지하기 위해시겠습니까?

감사합니다!

+0

결과를 보면'score $ score.dat'는 28 행과 3088 열이있는 data.frame임을 보여줍니다. 각 열은 시험 대상을 나타냅니다. 27 번째 행'$ z1'은 각 과목에 할당하고자하는 점수이므로 무례하게 시도하지 않고 이미 필요한 것을 가지고 계시지 않으십니까? 이것이 귀하가 겪은 것이 아닌 경우 알려 주시면 더 이상 지원할 수 있습니다. –

+0

@BryanGoggin - 답장을 보내 주셔서 감사합니다. 내 데이터 세트에는 3459 회의 관측이 있습니다. score $ score.dat는 내 데이터 집합에서 3088 개의 응답 순열을 포함합니다. – polished

+0

아, 좋아, 어디서 왔는지 알 겠어. 내가 무엇인가 생각해 내면 나는 당신에게 알려줄 것이다. –

답변

0

각 참가자 (관찰)의 점수를 표시하는 obsScores라는 변수가있는 data.frame df가 있다고 가정합니다.

폭력, 단지 각 참가자에 원시 값을 제공 :

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

크기의 차이에 대해 걱정할 필요가 없습니다

여기에 두 가지 할당 메커니즘이다. R은 가치를 재사용하게되어 기쁠 것입니다.

두번째 방법에는

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

첫번째 분석 바람직하다 가변 인자를 사용할 수있다.