excelsu의 공부 기록 블로그

[회귀] R 회귀 코드(전처리, 검증, 예측 포함) 본문

R

[회귀] R 회귀 코드(전처리, 검증, 예측 포함)

excelsu 2022. 7. 28. 16:21
##더미화
dumraw<-transfrom(rawdata,
새로운변수명=ifelse(조건,1,0),
새로운변수명=ifelse(조건,1,0),
새로운변수명=ifelse(조건,1,0))

##첫번째열(더미화 시킨열)삭제
dumraw<-dumraw[,-c(1)]

##na인 데이터 0으로 채우기
dumraw$na있는데이터<-ifelse(is.na(dumraw$na있는데이터),0,dumraw$na있는데이터)

##모델생성
m1<-lm(y~., dumraw)
summary(m1)

##회귀 잔차 그래프들
par(mfrow=c(2,3))  ##그래프 해석은 링크 참조
plot(m1,which=c(1,2,3,4,5,6))

##이상치 제거(제거할것인지 고민필요)
dumraw<-dumraw[-c(제거할 데이터의 인덱스),]

##제거하고 다시 확인
m2<-lm(y~., dumraw)
summary(m2)

##na제거
str(dumraw)##데이터형 확인
colSums(!is.na(dumraw))##na가 아닌값 개수 확인
colSums(is.na(dumraw))##na 개수 확인
dumraw<-[complete.cases(dumraw),]##제거
colSums(is.na(dumraw))

##변수선택(데이터 탐색할때 주로 사용, 필요한 변수 삭제 위험성 있음)
fit.con<-lm(y~1,dumraw) #처음 시작점
fit.forward<-step(fit.con,scope=list(lower=fit.con,upper=m2),direction="forward")
summary(fit.forward)

fit.backward<-step(m2,scope=list(lower=fit.con,upper=m2),direction="backward")
summary(fit.backward)

fit.both<-step(fit.con,scope=list(lower=fit.con,upper=m2),direction="both")
summary(fit.both)


##추정, 예측
pre<-predict(fit.backward,newdata=dumraw,interval="prediction") ##오차항 고려한 신뢰구간
pre<-as.data.frame(pre)  ##데이터 프레임으로
head(pre)

pre<-cbind(pre,dumraw$y)
head(pre)  ##신뢰구간 데이터프레임에 추가

##예측값이 맞았는지 확인
tf<-NA
pre<-cbind(pre,tf)
pre$tf[pre$'dumraw$y' >= pre$lwr & pre$'dumraw$y' < pre$upr] <- T
pre$tf[is.na(pre$tf)] <- F  
head(pre)
sum(pre$tf=="TRUE")/dim(pre)[1]##같은 데이터로 예측했기때문에 값이 높게 나옴 데이터 분리해서 예측해보기

##---------검정
## 등분산 검정
bartleett.test(dumraw) ##0.05 이하 이분산 이산치 제거 필요
levene.test(y~., dumraw, location="mean") ## 패키지 설치 필요

## 잔차 정규성 검정
res=residuals(fit.backward)
shapiro.test(res)

## 분산분석
anova(fit.backward)## p값 높은것들 제거???

##다중공선성
library(car)
vif(fit.backward)
##다중공선성 상관관계(피어슨 상관관계) 그래프
round(cor(dumraw,method="pearcon"),3) # na있으면 use="complete.obs"
plot(dumraw)
pairs(dumraw,panel=panel.smooth)

 

회귀 모형을 만들고 플랏을 만들었을 시 나오는 그래프들의 해석링크입니다.

 

https://excelsu.tistory.com/20

 

[회귀] plot 검정

이미지 참조 : https://m.blog.naver.com/leedk1110/220775742538 첫째그림 : 잔차vs적합도(잔차산점도)->등분산성확인 (특정 패턴없을시), 선형성 확인(흩어진 형태 무작위,상하 대칭) 둘째그림 : qq-plot -> 정..

excelsu.tistory.com