R

R 데이터 분석 과정

S0LL 2024. 12. 9. 08:58





1. 데이터 전처리

데이터 전처리는 분석의 정확도를 높이기 위한 첫 단계입니다.

1.1. 결측값 처리

• 결측값(NA)은 분석에 방해가 될 수 있습니다. 이를 제거하거나 채워야 합니다.
• 제거: na.omit(data)
• 평균 대체: data$col[is.na(data$col)] <- mean(data$col, na.rm = TRUE)

1.2. 이상치 처리

• 데이터의 이상치를 제거하거나 수정합니다.
• IQR 방법:

Q1 <- quantile(data$col, 0.25)
Q3 <- quantile(data$col, 0.75)
IQR <- Q3 - Q1
data <- data[data$col >= (Q1 - 1.5 * IQR) & data$col <= (Q3 + 1.5 * IQR), ]



1.3. 데이터 형 변환

• 날짜 형식 변환:

data$date <- as.Date(data$date, format = "%Y-%m-%d")


• 범주형 변환:

data$group <- as.factor(data$group)

2. 종속변수와 독립변수 설정

분석의 목표를 설정합니다:
• 종속변수(Y): 예측하려는 변수
• 독립변수(X): 종속변수에 영향을 미치는 변수들

3. 분석 모델 생성 전, 독립변수의 특성 확인

3.1. 종속변수 = 연속형, 독립변수 = 연속형

3.1.1. 정규성 확인

• 정규성을 확인하여 데이터의 분포를 파악합니다.

shapiro.test(data$col)


• 시각화:

qqnorm(data$col)
qqline(data$col)



3.1.2. 상관분석 (cor.test)

• 정규성을 따른다면 Pearson, 그렇지 않다면 Spearman 사용:

cor.test(data$var1, data$var2, method = "spearman")


• 결과 해석:
• p-value < 0.05: 두 변수 간 유의미한 관계 있음.
• 상관계수(rho):
• 0.1~0.3: 약한 상관
• 0.3~0.5: 중간 상관
• 0.5~1: 강한 상관

3.2. 종속변수 = 범주형, 독립변수 = 연속형

• GLM (Generalized Linear Model)을 사용하여 검증.
• 정규성 검사가 필요하지 않습니다.

model <- glm(Y ~ X, data = data, family = binomial)
summary(model)

3.3. 종속변수 = 범주형, 독립변수 = 범주형

• 카이제곱 검정으로 독립성 확인:

chisq.test(data$var1, data$var2)


• 결과 해석:
• p-value < 0.05: 두 변수는 독립적이지 않음(유의미한 관계 있음).

3.4. 종속변수 = 연속형, 독립변수 = 범주형

3.4.1. 정규성 확인

• 각 그룹의 정규성을 확인:

shapiro.test(data$col[data$group == "A"])



3.4.2. 등분산성 확인

• 등분산성 여부 확인:
• 두 그룹: var.test()
• 세 그룹 이상: bartlett.test() (정규성 가정), fligner.test() (비정규성)

3.4.3. 그룹 간 차이 검정

• 정규성 + 등분산성 만족: t-test(2그룹), anova(3그룹 이상)
• 정규성 불만족: wilcox.test(2그룹), kruskal.test(3그룹 이상)

t.test(Y ~ group, data = data)



3.4.4. 사후 검정

• ANOVA 후 차이를 구체적으로 분석:

TukeyHSD(aov_model)

4. 모델 생성

4.1. 선형 모델

• 종속변수가 연속형일 경우:

model <- lm(Y ~ X1 + X2, data = data)
summary(model)



4.2. 로지스틱 회귀 (GLM)

• 종속변수가 범주형(0/1)일 경우:

model <- glm(Y ~ X1 + X2, data = data, family = binomial)
summary(model)



4.3. 강건 모델

• 이상치가 많은 경우 강건 모델 사용:

library(MASS)
model <- rlm(Y ~ X1 + X2, data = data)
summary(model)

5. 다중공선성 확인 및 변수 선택

5.1. 다중공선성 확인 (VIF)

• 다중공선성 여부 확인:

library(car)
vif(model)


• VIF > 5: 다중공선성 의심, 변수를 제거하거나 조정.

5.2. 변수 선택 (Stepwise Selection)

• 단계적 변수 선택으로 모델 간소화:

step_model <- step(model)
summary(step_model)

6. 모델 비교

• 모델의 설명력을 비교하여 최종 모델 선택.

6.1. AIC/BIC 비교

• AIC: 작을수록 모델이 더 적합.

AIC(model1, model2)



6.2. Likelihood Ratio Test

• 두 모델 간 유의미한 차이를 검정:

library(lmtest)
lrtest(model1, model2)


• p-value > 0.05: 단순 모델 채택.

7. 최종 결론

• 최종 모델의 주요 변수와 영향력을 해석하여 결과 도출.
• 예: 로지스틱 회귀 결과에서 오즈비를 계산:

round(exp(coef(model)), 3)

추가적인 참고사항

• 분석 시 시각화도 중요합니다:

plot(model)
hist(data$col)

결론

위 과정을 통해 데이터 분석의 전반적인 흐름을 파악하고, 각 경우에 맞는 방법을 선택할 수 있습니다. 초보자도 쉽게 따라할 수 있도록 구체적인 코드와 설명을 포함했습니다. 필요한 추가 사항이 있다면 말씀해주세요!