인천통합시정.DAT
인천지역 기상자료들로 해무 유,무를 로지스틱 회귀분석하려고 합니다.
첨부한 파일은 기상자료 source입니다.
업무는 "기상자료-> 로지스틱회귀분석 -> stepwise 변수선택-> 모델예측 -> 모델 검정 " 순으로 진행할 계획이었습니다.
그런데 2번째 단계에서부터 막혔습니다.
로지스틱 회귀분석을 했는데 경고메시지 "glm.fit: 적합된 확률값들이 0 또는 1 입니다 "가 떴습니다.
경고메시지 해결하지 않고 stepwise 를 진행했더니 "There were 32 warnings (use warnings() to see them)"란 경고메시지가 뜨더니 멈추더군요.. ㅜㅜ
로지스틱회귀분석시 에러 메시지 원인이 뭘까요?
odds ratio(오즈비)나 발생확률 구하기, 결과그림은 어떻게 하는지도 알려주시면 감사하겠습니다.
아래에 제가 설계한 R 코드를 기재할테니 고수님들의 조언 부탁드립니다.
###############################################################################
## Logistic Regression
# 기상자료 불러오기( -999.0을 NA처리), 헤더파일 지정
df<- read.table("인천통합시정.DAT", skip=1, na.strings="-999.0", header = T, sep = "")
colnames(df) <- c("YYYY","MM","DD","hh","mm", "vis", "tide","SST" ,"AT","SAT", "DP", "W1S","W1D", "W10S", "W10D", "Rain","Hum","Press" )
###############################################################################
# 해무자료(FL) : 0: no seafog(안개無, 증기무), 1: seafog(해무)
# 해무 : 시정<1000 & 강우<5 & 해기차<0
# 증기무 : 시정<1000 & 강우<5 & 해기차>0
# 안개無 : 시정>=1000 or 시정<1000 & 강우>5
df$FL<-ifelse(df$vis<1000 & df$Rain<5 , ifelse(df$SAT<0 , 1 ,0 ) , 0 )
###############################################################################
## 종속변수 FL(해무),
## 독립변수 tide(조석), SST(수온), AT(기온), SAT(해기차), DP(이슬점온도), W1S(1분풍속),
## W1D(1분풍향), W10S(10분 풍속), W10D(10분 풍향), Rain(강우),Hum(습도), Press(해면기압)
m1 <- glm(FL ~ tide+SST+AT+SAT+DP+W10S+W10D+Rain+Hum+Press, family=binomial, data=df)
## 여기서 "Warning message: glm.fit: 적합된 확률값들이 0 또는 1 입니다"
m2 <- step(m1, direction = "both")
## 강제로 시행하면 "There were 32 warnings (use warnings() to see them)"
첫댓글 안개의 유무를 코딩하실 때 사용하신 변수들이 모델에 포함되어 있으니, 그 모델로는 완벽하게 안개 유무를 예측할 수 있기 때문인 것 같네요..
와~ 대단하세요. 통계분야로 진출하셔도 되겠는데요.
@안재형 칭찬 감사합니다ㅠ 별거 아닌 일에도 이리 칭찬을 해주시니 이 카페에만 오면 공부 의지가 샘솟네요. 그런데 책 펴면 다시 좌절..ㅎㅎ
@김종연 이런걸 찾아내는건 아무나 할 수 있는 일은 아닙니다. 통계전공자들도 못하죠^^ 이게 지식보다는 감각과 경험이 더 중요한것같습니다.
FL에 0, 1을 결정하실 때 vis, SAT, Rain를 기준으로 나누셨는데, 얘네들 중에 두 개가 모델에 포함되어 있습니다. 뼈가 있으면 뼈있는치킨(1), 뼈가 없으면 순살치킨(0) 이렇게 하기로 했는데, 모델링할 때 glm(치킨 ~ 뼈, family = binomial) 이런식으로 하셨달까요..
오... 정말 감사합니다. 덕분에 엄청 쉽게 이해 되었습니다. 감사합니다.