R 초보자를위한 아이템 분석


12

20 개 항목의 다중 선택 시험을 평가하려고합니다. 이 예 에서 찾을 수있는 것과 같은 항목 분석을 수행하고 싶습니다 . 따라서 각 질문에 대해 P- 값과 총계와의 상관 관계 및 선택한 옵션의 분포를 원합니다.

다양한 통계 소프트웨어 패키지에 대해서는 아무것도 모르지만 프로그래밍에 익숙하고 R은 오픈 소스이므로 R을 사용하고 싶습니다. 내가 상상하는 의사 워크 플로우는 다음과 같습니다.

  1. Excel에서 데이터를 준비하고 CSV로 내보내기

  2. R에 데이터를로드

  3. 내가 필요한 일을하는 패키지를로드

  4. 패키지의 명령을 실행

  5. 수출과보고.

CRAN에서 찾은 패키지를 비교할 통계 어휘가 없기 때문에 1과 2에 자신감이 있지만 3에 문제가 있습니다. ltm그것이 올바른 패키지 일 수는 있지만 말할 수는 없습니다. 어떤 패키지를 사용하든 명령은 무엇입니까?

사이드 질문 : 링크 된 예에서 MC와 MI가 무엇을 의미한다고 가정합니까?

답변:


11

psych ( score.items) 및 ltm ( descript) 과 같은 작업을 수행 할 수있는 패키지를 두 개 이상 제안 할 수 있습니다 . CTT의 패키지 공정 MCQ로도 보인다하지만 난 그것과 경험이 없다. 자세한 내용은 W Revelle의 웹 사이트 인 The Personality Project 에서 확인할 수 있습니다 . 데이터를 가져 오기, 분석 및보고하기위한 단계별 지침을 제공 하는 R사용한 심리 측정 전용 페이지입니다 . 또한 Psychometrics 의 CRAN 작업보기 에는 많은 추가 리소스가 포함되어 있습니다.

링크에 설명 된대로 MC는 "정답으로 항목에 응답 한 사람의 평균 총 원점수"를 의미하고 "정답으로 항목에 응답하지 않은 사람들의 평균 총점"을 의미합니다. ltm패키지 ( biserial.cor) 에서도 점-비교 상관 (R (IT))을 사용할 수 있습니다 . 이는 기본적으로 품목의 판별력을 나타내는 지표이며 (항목과 총 점수의 상관 관계이므로) 2-PL IRT 모델의 판별 매개 변수 또는 요인 분석의 요인 로딩과 관련이 있습니다.

표시하는 테이블을 실제로 재현하려면 적어도 동일한 종류의 테이블을 출력하기 위해이 코드 중 일부를 사용자 정의 코드로 포장해야한다고 생각합니다. 나는 테이블을 재현 하는 빠르고 더러운 예 를 만들었습니다 .

dat <- replicate(10, sample(LETTERS[1:4], 100, rep=TRUE))
dat[3,2] <- dat[67,5] <- NA
itan(dat)

         P      R    MC    MI NC OMIT  A  B  C  D
 [1,] 0.23 -0.222 2.870 2.169 23    0 23 22 32 23
 [2,] 0.32 -0.378 3.062 1.985 32    1 32 20 14 33
 [3,] 0.18 -0.197 2.889 2.207 18    0 18 33 22 27
 [4,] 0.33 -0.467 3.212 1.896 33    0 33 18 29 20
 [5,] 0.27 -0.355 3.111 2.056 27    1 27 23 23 26
 [6,] 0.17 -0.269 3.118 2.169 17    0 17 25 25 33
 [7,] 0.21 -0.260 3.000 2.152 21    0 21 24 25 30
 [8,] 0.24 -0.337 3.125 2.079 24    0 24 32 22 22
 [9,] 0.13 -0.218 3.077 2.218 13    0 13 29 33 25
[10,] 0.25 -0.379 3.200 2.040 25    0 25 25 31 19

이들은 무작위 반응이므로, 양의 상관 관계와 항목 난이도는 그다지 의미가 없습니다 (데이터가 실제로 무작위임을 확인하는 것 제외). 또한 10 '에서 R 함수를 작성했기 때문에 가능한 오류를 확인할 가치가 있습니다 ...


1
감사합니다! 코드를 읽고 있으며 R 구문을 많이 이해하는 데 도움이됩니다. 나에게 문제를 일으키는 한 가지는 line freq.resp <- raw.resp/apply(raw.resp, 1, sum, na.rm=T)입니다. dim (raw.resp)가 NULL 인 경우 "dim (X)는 양의 길이를 가져야합니다"라는 오류가 발생합니다. 내 데이터에 양수의 옵션이 모두 없기 때문에 테이블의 길이가 모두 다를 수 있습니까? table호출 에서 0을 어떻게 채울 수 있습니까?
Matthew Leingang

@Matthew 예, 이것이 실제로 문제의 원인 일 가능성이 큽니다. 따라서 하나 이상의 항목에 대해 하나의 응답 범주가 관찰되지 않으면 테이블의 길이는 <4가되고 freq.resp오류가 발생합니다. 코드를 수정합니다 (내일까지). 이것은 작은 코드로 불규칙한 테이블을 연결하는 방법도 보여줍니다.
chl

@ Matthew 나는 수정을 추가했습니다. 이분법적인 항목에도 적용해야합니다. 이것이 정상인지 알려주세요. gist.github.com/642219
chl

내 손을 잡고 주셔서 감사합니다. 귀하의 함수는 "raw.resp [i, names (tmp)] <-tmp : 첨자 범위를 벗어났습니다"오류가 발생하지만 이상하게도 문제없이 각 행을 실행할 수 있습니다. 작업 보고서가 있습니다.
Matthew Leingang

이 코드를 적용하고 있으며 행 R의 모든 부호 (점 비 시리얼 상관)가 반전 될 수 있다고 생각합니다.
user1205901-23

8

psych 패키지 함수 alpha는 원하는 것을 생성합니다.

이것을 내보내려면 객체를 저장하고 xtable 함수를 사용하여 LaTeX 마크 업을 생성 한 다음 LaTeX 편집기로 포맷 할 수 있습니다.


1
(+1) psych::alpha은 (를) score.items추가해 주셔서 감사합니다. 나는 내가 사용해야하는 것을 결코 기억하지 못한다!
chl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.