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)
결론
위 과정을 통해 데이터 분석의 전반적인 흐름을 파악하고, 각 경우에 맞는 방법을 선택할 수 있습니다. 초보자도 쉽게 따라할 수 있도록 구체적인 코드와 설명을 포함했습니다. 필요한 추가 사항이 있다면 말씀해주세요!
'R' 카테고리의 다른 글
R데이터분석을 할 때 여러가지 경우의 수 (0) | 2024.12.08 |
---|---|
r내장데이터 mtcars를 이용한 데이터분 (0) | 2024.12.07 |
"기온(Temperature), 바람(Wind), 태양광(Solar.R) 및 주중/주말 여부가 오존 농도(Ozone)에 미치는 영향 분석 (0) | 2024.12.07 |
전력 데이터에 영향을 미치는 요인 분석 (0) | 2024.12.07 |
음주와콜레스테롤 aov (0) | 2024.10.21 |