728x90
반응형
1. 데이터 준비
Excel 파일을 R로 불러와 Rasch 분석에 필요한 응답 데이터를 추출합니다.
# 필요한 패키지 설치 및 로드 install.packages(c("readxl", "eRm", "TAM")) library(readxl) library(eRm) library(TAM) # Excel 파일 불러오기 data <- read_excel("B_Rasch.xlsx") # 응답 데이터 추출 (5열부터 문항 응답) responses <- data[, 5:ncol(data)] |
2. Rasch 모델 적합
Rasch 분석을 수행하여 문항 난이도(β 값)를 추정합니다.
# Rasch 모델 적합 rasch_model <- RM(responses) # 문항 난이도 추출 item_difficulty <- -coef(rasch_model) # β 값 계산 print(item_difficulty) |
3. 신뢰도 계산
Item reliability, Person reliability, 및 Cronbach's alpha를 계산합니다.
Item reliability와 Person reliability
TAM 패키지를 사용하여 Rasch 모델의 신뢰도를 계산합니다.
# TAM으로 Rasch 모델 적합 tam_model <- tam.mml(responses) # Item reliability 및 Person reliability 계산 item_reliability <- tam_model$item.reliability person_reliability <- tam_model$person.reliability print(item_reliability) # 문항 신뢰도 출력 print(person_reliability) # 피험자 신뢰도 출력 |
Cronbach's alpha
psych 패키지를 사용하여 Cronbach's alpha를 계산합니다.
install.packages("psych") library(psych) # Cronbach's alpha 계산 alpha_result <- alpha(responses) print(alpha_result$total$raw_alpha) # Cronbach's alpha 출력 |
4. Outfit/Infit 통계값 계산
Rasch 모델에서 각 문항의 적합도 지수(Infit/Outfit)를 계산합니다.
# 문항 적합도 계산 (Infit/Outfit MNSQ) item_fit <- item.fit(rasch_model) print(item_fit) |
5. Wright Map 생성
응답자 능력(θ 값)과 문항 난이도(β 값)를 시각화하여 Wright Map을 생성합니다.
install.packages("WrightMap") library(WrightMap) # Wright Map 생성 wrightMap(rasch_model$betapar, rasch_model$theta) |
Item, Person realiability에서 NULL이 출력되는 경우
TAM 패키지에서 신뢰도 계산하기
TAM 패키지에서 $item.reliability와 $person.reliability가 NULL을 반환하는 문제가 발생했습니다. 이는 TAM 패키지의 구조상 신뢰도 지수를 직접 이 방식으로 접근할 수 없기 때문입니다. 아래에 신뢰도를 계산하는 대체 방법들을 제시합니다.
방법 1: 수동으로 신뢰도 계산하기
Rasch 모델의 신뢰도는 다음 공식으로 계산할 수 있습니다:
# Rasch 모델 적합 tam_model <- tam.mml(responses) # 문항 신뢰도 수동 계산 item_diff <- tam_model$xsi$xsi # 문항 난이도 추정치 item_error <- tam_model$xsi$se.xsi # 문항 난이도의 표준 오차 item_obs_var <- var(item_diff) # 관찰된 분산 item_error_var <- mean(item_error^2) # 오차 분산의 평균 item_reliability <- (item_obs_var - item_error_var) / item_obs_var print(item_reliability) # 문항 신뢰도 출력 # 피험자 신뢰도 수동 계산 person_ability <- tam_model$person$EAP # 피험자 능력 추정치 person_error <- tam_model$person$se.EAP # 피험자 능력의 표준 오차 person_obs_var <- var(person_ability) # 관찰된 분산 person_error_var <- mean(person_error^2) # 오차 분산의 평균 person_reliability <- (person_obs_var - person_error_var) / person_obs_var print(person_reliability) # 피험자 신뢰도 출력 |
방법 2: TAM의 요약 함수 활용하기
# 모델 요약에서 신뢰도 정보 확인 model_summary <- summary(tam_model) print(model_summary) # EAP 신뢰도 확인 가능 # 또는 EAP.rel 속성 직접 접근 if (!is.null(tam_model$EAP.rel)) { print(paste("Person reliability (EAP):", tam_model$EAP.rel)) } |
방법 3: WrightMap 패키지의 분리도 이용하기
library(WrightMap) # 분리도(Separation)에서 신뢰도 계산 # 분리도 계산 item_sep <- sd(tam_model$xsi$xsi) / mean(tam_model$xsi$se.xsi) person_sep <- sd(tam_model$person$EAP) / mean(tam_model$person$se.EAP) # 신뢰도 계산 item_reliability <- item_sep^2 / (1 + item_sep^2) person_reliability <- person_sep^2 / (1 + person_sep^2) print(paste("Item reliability:", item_reliability)) print(paste("Person reliability:", person_reliability)) |
방법 4: Cronbach's alpha 계산하기
# psych 패키지 사용 install.packages("psych") library(psych) # Cronbach's alpha 계산 alpha_result <- alpha(responses) print(paste("Cronbach's alpha:", alpha_result$total$raw_alpha)) |
방법 5: eRm 패키지 사용하기
# eRm 패키지 사용 library(eRm) # Rasch 모델 적합 rasch_model <- RM(responses) # 분리도 계산 sep_indices <- SepRel(rasch_model) print(sep_indices) # 신뢰도 포함한 분리도 지수 출력 |
방법 6: 대안적인 신뢰도 계산 방법(EAP.rel)
# TAM의 EAP 신뢰도 직접 확인 if(!is.null(tam_model$EAP.rel)) { print(paste("Person reliability (EAP):", tam_model$EAP.rel)) } else { print("EAP.rel이 존재하지 않습니다.") } |
방법 7: WLE 방법 사용하기
# WLE 방법으로 피험자 능력 추정 wle_values <- tam.wle(tam_model) wle_reliability <- wle_values$WLE.rel print(paste("Person reliability (WLE):", wle_reliability)) |
728x90
반응형
'자기계발 > Rasch분석' 카테고리의 다른 글
Rasch 분석 - 10. Person reliability (0) | 2025.04.28 |
---|---|
Rasch 분석 - 9. Item reliability (0) | 2025.04.28 |
Rasch 분석 - 7. 내 자료로 문항 난이도 구하기 (0) | 2025.04.01 |
Rasch 분석 - 6. Wright Map 해석 (0) | 2025.03.31 |
Rasch 분석 - 5. 샘플 데이터를 통해 실습해보기. (예제 1) (0) | 2025.03.31 |