как построить линейную регрессию в 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))

enter image description here


шарлатанство. Все это разумные решения, но они не делают того, о чем вы просите. Теперь то, что вы просите, немного круче и совершенно непрактично, но можно сделать с помощью 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")

enter image description here

это не справедливо здесь, но это красиво, и вы можете перемещать его.

и какого черта, давайте добавим ваши оригинальные очки

points3d(year, quarter, cpi, size=5, col="red")

enter image description here


ошибка заключается в том, как вы форматировали данные. Вот еще один вариант:

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))

enter image description here

затем вы можете переформатировать метки осей, если хотите.


на Predict.Plot и TkPredict функции в пакете TeachingDemos построят связь между одним из предикторов и переменной ответа, обусловленной значениями других предикторов. Predict.Plot делает его довольно простым, чтобы увидеть несколько строк из разных условий в то время как TkPredict позволяет интерактивно изменять значения, обусловленные (и будет производить Predict.Plot код для воссоздания текущего участка).

эти функции являются общими для регрессии модели на нескольких предикторах, но не будут так хороши, как разложение для временного ряда.