728x90
로지스틱 회귀분석은 반응변수가 '범주형'인 경우 적용되는 회귀 분석 모형
새로운 설명변수 값이 주어질 때, 반응변수의 각 범주에 속할 확률이 얼마인지 추정하여 추정확률을 기준치에 따라 분류하는 목적으로 사용된다.
로지스틱 회귀분석은 카이제곱 검정을 이용하여 실시한다.
glm(formula, family, data, ...) : family - 모델에서 사용할 분포(보통 이항 로지스틱 회귀 분석인 경우 "binomial" 사용
confusionMatrix(data, reference, ...)
auc(actual, predicted, ...) : actual - 정답 label 벡터, predicted - 예측된 값의 벡터
library(ISLR)
bankruptcy = Default
set.seed(Sys.Date())
train_idx = sample(1:nrow(bankruptcy),
size = 0.8*nrow(bankruptcy),
replace = F) #80%의 bankruptcy 데이터를 학습데이터로 사용하기 위해 선별
test_idx = -train_idx #학습데이터로 사용된 나머지 20% 데이터를 테스트데이터로 사용
bankruptcy_train = bankruptcy[train_idx,]
bankrupcty_test = bankruptcy[test_idx,]
full_model = glm(default ~.,
family = binomial,
data = bankruptcy_train)
step_model = step(full_model, direction = "both") #step 함수를 이용해, 종속변수 자동선택
summary(step_model) #p값이 유의수준 0.05보다 작으므로 유의한 변수로 판정
#앞선 summary 결과에서 나온 null_deviance, residual_deviance를 변수에 저장하기
null_deviance = 2354.0
residual_deviance = 1287.4
model_deviance = null_deviance - residual_deviance
#카이제곱 분포로 모델 유의성 검증하기
pchisq(model_deviance,
df = 2,
lower.tail = F) #자유도가 2인 카이제곱 분포의 확률변수를 누적분호 함수 값으로 구하기
#결과적으로 나온 p값이 0.05보다 작으므로 유의, 귀무가설을 기각하고 대립가설을 채택한다.
#다중 공산성 확인하기
library(car) #vif 함수 사용하기 위한 라이브러리 불러오기
vif(step_model) # vif 결과가 4를 초과하지 않으므로 다중공산성에 문제가 없다
#분석모형 평가
pred = predict(step_model,
new_data = bankrupcty_test[, -1],
type = "response")
df_pred = as.data.frame(pred)
df_pred$default = ifelse(df_pred$pred >= 0.5, "YES", "NO") #확률 0.5를 기준으로 파산(Y)을 구분
df_pred$default = as.factor(df_pred$default) #Factor형으로 default 변수의 값들을 변환
confusionMatrix(data = df_pred$default,
reference = bankruptcy_test[, 1])
#정확도는 0.977로 높은 결과값
#민감도는 0.9995로 높은 결과값
#특이도는 0.2969로 실제 파산(Y)값보다 파산을 예측한 비율이 적음
#정확도와 민감도는 높지만, 특이도가 낮은 모형이 만들어짐
#카파통계량은 0.4439로 모형은 보통 일치도를 보임.
library(ModelMetrics) #auc함수를 사용하기 위한 라이브러리 불러오기
auc(actual = bankrupcty_test[, 1],
predicted = df_pred$default) #AUC 값은 0.6491792로 불량(poor)한 성능을 보이는 모델로 평가된다.
728x90
'BAE(Certification)' 카테고리의 다른 글
1. 정형데이터 분석 - 나이브 베이즈(Naive Bayes) 분류 (0) | 2023.05.16 |
---|---|
1. 정형데이터 분석 - KNN(K-Nearest Neighbor) (0) | 2023.05.16 |
1. 정형데이터 분석 - 서포트 벡터 머신(SVM, Support Vector Machine) (0) | 2023.05.16 |
1. 정형데이터 분석 - 의사결정나무(decision tree) (0) | 2023.05.16 |
1. 정형데이터 분석 - 회귀 분석(Regression Analysis) (0) | 2023.05.16 |