자기계발/Rasch분석

Rasch 분석 - 7. 내 자료로 문항 난이도 구하기

이동네저동네 2025. 4. 1. 21:54
728x90
반응형

1. 패키지 설치 및 로드

먼저, Rasch 분석을 수행하기 위해 필요한 패키지를 설치하고 불러온다.


install.packages(c("readxl", "eRm", "TAM", "WrightMap"))
library(readxl)    # Excel 파일 불러오기
library(eRm)       # Rasch 모델 분석
library(TAM)       # 적합도 지수 계산
library(WrightMap) # 라쉬 분석 시각화

 

 

2. Excel 데이터 불러오기

엑셀 파일을 읽어와 데이터 프레임으로 변환한다.


# 파일 경로 지정 (예: "C:/Users/username/A_Rasch.xlsx")
data <- read_excel("A_Rasch.xlsx")

# 응답 데이터 추출 (5열부터 문항 응답)
items <- data[, 5:ncol(data)]

# 결측값 처리 (완전한 케이스만 선택)
complete_cases <- complete.cases(items)
items_clean <- items[complete_cases, ]

 

 

3. Rasch 모델 적합

Rasch 모델을 적합하고 문항 난도 계산해보기


# 이분형 데이터에 대한 Rasch 모델 적합
rasch_model <- RM(items_clean)

# 문항 난이도 확인
item_difficulty <- -coef(rasch_model)  # β_i = -난이도
print(item_difficulty)

 

4. 적합도 지수(MNSQ) 계산

방법 1: eRm 패키지 활용

# 문항 적합도 계산 (Infit/Outfit MNSQ)
item_fit <- item.fit(rasch_model)
print(item_fit)

방법 2: TAM 패키지 활용

# TAM으로 Rasch 모델 재적합
tam_model <- tam.mml(items_clean)

# MNSQ 계산 (Infit/Outfit)
fit_indices <- msq.itemfit(tam_model)
summary(fit_indices)

 

5. 결과 해석

  • MNSQ 기준값:
    • 0.5 ~ 1.5: 양호한 적합 (Overfit 또는 Underfit 없음)
    • >1.5: 예측보다 큰 변동 (Underfit)
    • <0.5: 예측보다 작은 변동 (Overfit)

 

6. 시각화 (선택사항)

# Wright Map 생성 (문항-능력 분포)
wrightMap(rasch_model$betapar, rasch_model$theta)

 

728x90
반응형