선거 결과 예측 로지스틱 회귀 (고급 R)
고급
정량 분석
political
r
난이도: 고급 — 심화 내용을 포함합니다. 사전 지식이 필요할 수 있습니다.
개요
선거 결과(승리/패배)를 이분형 종속변수로 설정하고, 지지율, 경제성장률, 실업률, 현직 여부를 독립변수로 하는 로지스틱 회귀모형을 R로 추정한다. 선거 결과 예측은 정치학에서 가장 활발히 연구되는 주제 중 하나다.
분석 절차
1단계: 모형 적합
glm() 함수에 family = binomial(link = “logit”)을 지정하여 로지스틱 회귀모형을 적합한다.
2단계: 오즈비 해석
exp(coef())를 통해 오즈비(Odds Ratio)를 계산한다. 오즈비가 1보다 크면 해당 변수가 승리 확률을 높이고, 1보다 작으면 낮춘다.
3단계: 예측 정확도 평가
predict() 함수로 예측 확률을 계산하고, 0.5를 임계값으로 분류한다. 혼동 행렬(confusion matrix)로 정확도를 확인한다.
4단계: ROC 곡선과 AUC
pROC 패키지로 ROC 곡선을 그리고 AUC(Area Under Curve)를 계산한다. AUC가 0.7 이상이면 허용 가능한 예측력, 0.8 이상이면 우수한 예측력이다.
코드 예제
# 로지스틱 회귀모형 적합
model <- glm(winner ~ approval_rate + gdp_growth + unemployment + incumbent,
data = election_data,
family = binomial(link = "logit"))
# 결과 요약
summary(model)
# 오즈비(Odds Ratio) 계산
exp(coef(model))
# 예측 확률
election_data$predicted_prob <- predict(model, type = "response")
# 분류 정확도
election_data$predicted_class <- ifelse(election_data$predicted_prob > 0.5, 1, 0)
table(election_data$predicted_class, election_data$winner)
# ROC 곡선
library(pROC)
roc_curve <- roc(election_data$winner, election_data$predicted_prob)
plot(roc_curve)
auc(roc_curve)
참고문헌
Agresti, A. (2015). Foundations of Linear and Generalized Linear Models. Wiley.
심화 내용
고급 분석에서는 다음을 추가로 고려해야 합니다:
- 부트스트래핑(Bootstrapping)을 통한 강건성 검증
- 교차 검증(Cross-validation)으로 모형 일반화 성능 평가
- 민감도 분석(Sensitivity Analysis)으로 가정 위반 시 영향 평가
코드 예제
R
# 로지스틱 회귀모형 적합 model <- glm(winner ~ approval_rate + gdp_growth + unemployment + incumbent, data = election_data, family = binomial(link = "logit")) # 결과 요약 summary(model) # 오즈비(Odds Ratio) 계산 exp(coef(model)) # 예측 확률 election_data$predicted_prob <- predict(model, type = "response") # 분류 정확도 election_data$predicted_class 0.5, 1, 0) table(election_data$predicted_class, election_data$winner) # ROC 곡선 library(pROC) roc_curve <- roc(election_data$winner, election_data$predicted_prob) plot(roc_curve) auc(roc_curve)
참고문헌
Agresti, A. (2015). Foundations of Linear and Generalized Linear Models. Wiley.