자기계발/Rasch분석

Rasch 분석 - 8. Item realiability, Person realiability, Cronbachs' alpha 구하기

이동네저동네 2025. 4. 13. 22:32
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
반응형