как построить линейную регрессию в R?
Я хочу сделать следующий случай линейной регрессии в R
year<-rep(2008:2010,each=4)
quarter<-rep(1:4,3)
cpi<-c(162.2,164.6,166.5,166.0,166.4,167.0,168.6,169.5,170.0,172.0,173.3,174.0)
plot(cpi,xaxt="n",ylab="CPI",xlab="")
axis(1,labels=paste(year,quarter,sep="C"),at=1:12,las=3)
fit<-lm(cpi~year+quarter)
Я хочу, чтобы построить линию, которая показывает линейную регрессию данных, которые я обрабатываю. Я пробовал с:
abline(fit)
abline(fit$coefficients[[1]],c(fit$coefficients[[2]],fit$coefficients[[3]]))
проблема в том, что моя формула имеет вид:
y=a+b*year+c*quarter
и не что-то более простое, как:
y=a+b*year
так как я могу нарисовать линию, которая показывает линейную регрессию?
можно ли провести линию с abline?
5 ответов
cpi<-c(162.2,164.6,166.5,166.0,166.4,167.0,168.6,169.5,170.0,172.0,173.3,174.0)
cpits <- ts(cpi, start=2008, frequency=4)
plot(decompose(cpits))
шарлатанство. Все это разумные решения, но они не делают того, о чем вы просите. Теперь то, что вы просите, немного круче и совершенно непрактично, но можно сделать с помощью rgl
.
f <- function(x, y, coefs){
z <- coefs[1] + coefs[2] * x + coefs[3] * y
z
}
x <- seq(from=min(year), to=max(year), length.out=100)
y <- seq(from=min(quarter), to=max(quarter), length.out=100)
z <- outer(x, y, f, coefs=coef(fit))
теперь, где магия происходит в rgl
:
library(rgl)
persp3d(x, y, z, col="lightblue")
это не справедливо здесь, но это красиво, и вы можете перемещать его.
и какого черта, давайте добавим ваши оригинальные очки
points3d(year, quarter, cpi, size=5, col="red")
ошибка заключается в том, как вы форматировали данные. Вот еще один вариант:
year<-seq(from=2008,to=2010.75,by=.25)
cpi<-c(162.2,164.6,166.5,166.0,166.4,167.0,168.6,169.5,170.0,172.0,173.3,174.0)
df <- data.frame(year,cpi)
plot(df)+abline(lm(df$cpi~df$year))
затем вы можете переформатировать метки осей, если хотите.
на Predict.Plot
и TkPredict
функции в пакете TeachingDemos построят связь между одним из предикторов и переменной ответа, обусловленной значениями других предикторов. Predict.Plot
делает его довольно простым, чтобы увидеть несколько строк из разных условий в то время как TkPredict
позволяет интерактивно изменять значения, обусловленные (и будет производить Predict.Plot
код для воссоздания текущего участка).
эти функции являются общими для регрессии модели на нескольких предикторах, но не будут так хороши, как разложение для временного ряда.