|
|
# X → M → Y 형식으로 경로 설정
# X: group, M: condition, Y: loadingresponsetime, preswingtime, firstdsp, swingphasetime, seconddsp, cofsi
# 필요한 패키지 로드
library(lavaan)
library(openxlsx)
# 변수 정의
independent_var <- "group" # 독립변수
mediator_var <- "condition" # 매개변수
dependent_vars <- c("loadingresponsetime", "preswingtime", "firstdsp",
"swingphasetime", "seconddsp", "cofsi") # 종속변수들
# 데이터 구조 확인 (수치형 여부 확인)
str(data) # 데이터 구조 확인
summary(data) # 요약 통계 확인
# 수치형 변수 확인
is_numeric <- sapply(data, is.numeric) # 데이터프레임의 각 변수에 대해 수치형인지 확인
print(is_numeric)
# 수치형 변수만 확인
numeric_vars <- names(data)[is_numeric] # 수치형 변수의 이름을 추출
print(numeric_vars)
# 모델 정의
model <- '
# 독립변수(X) -> 매개변수(M)
condition ~ c1*group
# 매개변수(M) -> 종속변수(Y)
loadingresponsetime ~ c2*condition
preswingtime ~ c3*condition
firstdsp ~ c4*condition
swingphasetime ~ c5*condition
seconddsp ~ c6*condition
cofsi ~ c7*condition
# 독립변수(X) -> 종속변수(Y) (간접효과)
loadingresponsetime ~ c8*group
preswingtime ~ c9*group
firstdsp ~ c10*group
swingphasetime ~ c11*group
seconddsp ~ c12*group
cofsi ~ c13*group
'
# 모델 적합
fit <- sem(model, data = data)
# 필요한 패키지 로드
library(lavaan)
library(openxlsx)
# 데이터 구조 확인 (수치형 여부 확인)
str(data) # 데이터 구조 확인
summary(data) # 요약 통계 확인
# 수치형 변수 확인
is_numeric <- sapply(data, is.numeric) # 데이터프레임의 각 변수에 대해 수치형인지 확인
print(is_numeric)
# 수치형 변수만 확인
numeric_vars <- names(data)[is_numeric] # 수치형 변수의 이름을 추출
print(numeric_vars)
# 변수 정의
independent_var <- "group" # 독립변수
mediator_var <- "condition" # 매개변수
dependent_vars <- c("loadingresponsetime", "preswingtime", "firstdsp",
"swingphasetime", "seconddsp", "cofsi") # 종속변수들
1단계
> model_1 <- paste(mediator_var, "~ c1*", independent_var)
> fit_1 <- sem(model_1, data = data)
> summary(fit_1, fit.measures = TRUE, standardized = TRUE)
# openxlsx 패키지 로드
library(openxlsx)
# 엑셀 파일 생성
wb <- createWorkbook()
# 시트 추가 (회귀 계수)
addWorksheet(wb, "Model_1_Regression")
capture.output(summary(fit_1, fit.measures = TRUE, standardized = TRUE),
file = "model_1_summary.txt")
writeData(wb, sheet = "Model_1_Regression", x = read.table("model_1_summary.txt", sep="\n", header = FALSE))
# 파일 저장
saveWorkbook(wb, "model_1_results.xlsx", overwrite = TRUE)
1단계 결과 해석
모델 적합도 및 주요 지표 해석:
모델 종료 정보:
최적화 방법:
모델 파라미터 및 데이터:
모델 적합도 지표:
Chi-Square Test:
Comparative Fit Index (CFI):
Tucker-Lewis Index (TLI):
Loglikelihood:
결론:
> model_2 <-
' + loadingresponsetime ~ c2*condition
+ preswingtime ~ c3*condition
+ firstdsp ~ c4*condition
+ swingphasetime ~ c5*condition
+ seconddsp ~ c6*condition + cofsi ~ c7*condition
+ ' > fit_2 <- sem(model_2, data = data)
> model_3 <- ' + loadingresponsetime ~ c8*group + preswingtime ~ c9*group + firstdsp ~ c10*group + swingphasetime ~ c11*group + seconddsp ~ c12*group + cofsi ~ c13*group + ' > fit_3 <- sem(model_3, data = data)
> addWorksheet(wb, "Model3_Regression") > capture.output(summary(fit_3, fit.measures = TRUE, standardized = TRUE), + file = "model3_3_summary.txt") > writeData(wb, sheet = "Model3_Regression", x = read.table("model3_3_summary.txt", sep="\n", header = FALSE)) >
> model_total <- ' + # 독립변수(X) -> 매개변수(M) + condition ~ c1*group + + # 매개변수(M) -> 종속변수(Y) + loadingresponsetime ~ c2*condition + preswingtime ~ c3*condition + firstdsp ~ c4*condition + swingphasetime ~ c5*condition + seconddsp ~ c6*condition + cofsi ~ c7*condition + + # 독립변수(X) -> 종속변수(Y) (간접효과) + loadingresponsetime ~ c8*group + preswingtime ~ c9*group + firstdsp ~ c10*group + swingphasetime ~ c11*group + seconddsp ~ c12*group + cofsi ~ c13*group + ' > fit_total <- sem(model_total, data = data)