Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 등분산성
- KNNImputer
- 정규성
- 이변량 분석
- by oneself
- 워홀
- 회귀분석
- 등분산검정
- 다중공선성
- contrasts can be applied only to factors with 2 or more levels
- 이상치
- 회귀모형
- 기술통계분석
- R
- 분류
- 선형성
- post man
- sql
- disgusting
- 엑셀
- 예측
- 오류
- cook's distance
- 기본가정
- 코딩테스트
- 전처리
- 자기상관
- 디시전트리
- VIF
- 언어분석
Archives
- Today
- Total
excelsu의 공부 기록 블로그
[회귀] R 회귀 코드(전처리, 검증, 예측 포함) 본문
##더미화
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
'R' 카테고리의 다른 글
[디시전트리] R로 디시전트리(회귀) 사용해보기 (0) | 2022.07.28 |
---|---|
[오류] make.names(col.names, unique=TRUE) 유효하지 않은 멀티바이트 문자열이 있습니다. (0) | 2022.07.07 |
[오류] 회귀분석 coefficients : (7 not defined because of singularities) (0) | 2022.07.04 |
[R오류]number of rows in use has changed remove missing values (0) | 2022.07.01 |
[회귀] plot 검정 (0) | 2022.07.01 |