#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-추정에 관한 설명]