#title 로버스트 회귀분석 [[TableOfContents]] ==== 사용법 ==== {{{ m1 <- rlm(dau ~ x, data=tmp) #후버의 M추정 m2 <- lqs(dau ~ x, method="lms", data=tmp) #LMS: Least Median of Squares m3 <- lqs(dau ~ x, method="lts", data=tmp) #LTS: Least Trimmed Squares, 이상치로 추정되는 값을 버리고 회귀분석 m4 <- lqs(dau ~ x, method="lts", quantile=8, data=tmp) #9,10 분위에 해당되는 값을 버리고 회귀분석 boxplot(m1$resid, m2$resid, m3$resid, m4$resid) }}} ==== 예측, 신뢰구간, plotting ==== {{{ target <- "s" if (target == "l"){ xx <- seq(1:nrow(long_term)) tmp <- data.frame(x = seq(1:nrow(long_term)), dau=long_term$dau) } else { xx <- seq(1:nrow(short_term)) tmp <- data.frame(x = seq(1:nrow(short_term)), dau=short_term$dau) } fit1 <- rlm(dau ~ x, data=tmp) fit.data <- data.frame(predict(fit1, data.frame(x=xx), interval="prediction", level=.95)) newdata <- data.frame(x = (max(xx)+1):(max(xx)+7)) pred1 <- data.frame(predict(fit1, newdata, interval="confidence", level=.95)) d1 <- data.frame(x=xx, dau=tmp$dau) d2 <- data.frame(x=newdata, dau=pred1$fit) d <- sqldf(" select * from d1 union all select * from d2 ") plot(d) lines(xx, fit.data$fit, col="black") lines(xx, fit.data$lwr, col="blue") lines(xx, fit.data$upr, col="red") lines(newdata$x, pred1$fit, col="black", lty="dashed") lines(newdata$x, pred1$lwr, col="blue", lty="dashed") lines(newdata$x, pred1$upr, col="red", lty="dashed") }}} ==== 참고자료 ==== * http://www.cyworld.com/soeque1/7855829 --> 설명이 잘되어 있음. * http://www.ats.ucla.edu/stat/r/dae/rreg.htm * [http://www.alastairsanderson.com/R/tutorials/robust-regression-in-R/ Robust regression using R] --> 예제가 잘 되어 있다. * [http://en.wikibooks.org/wiki/R_Programming/Linear_Models R Programming/Linear Models] * [attachment:로버스트회귀분석/m_estimator.pdf 후버의 M-추정에 관한 설명]