Доверительный интервал для линейной регрессии - PullRequest
0 голосов
/ 11 июня 2018

Мне нужно создать доверительный интервал для линейной регрессии, используя R-lang.Я следовал нескольким учебникам, но мой результат совсем другой.Что касается меня, я должен получить две строки, одну над и другую под основной линией, как показано здесь .

К сожалению, я получил несколько суммированных строк, как показано здесь .

Может ли кто-нибудь помочь мне понять, что я делаю неправильно?

Вот пример моего кода:

speed <- c(61,225,110,51,114,68,24,24,133,83,83,92,93,37,111,172,142,105,143,77,154,108,98,164,124,97,90,87,137,71,73,74,62,88,100,101,126,113,49)
length <- c(58,149,90,55,91,69,31,35,109,77,78,82,86,44,89,121,106,98,116,65,111,88,86,122,104,85,72,80,105,74,71,66,73,72,72,90,91,98,59);
cars <- data.frame(speed, length)

modelReg <- lm(length ~ speed, data = cars)

x <- cars$speed
conf_interval <- predict(modelReg, newdata =  data.frame(seq(from=min(x),to=max(x),by = 1)),interval = 'confidence')
lines(x,conf_interval[,2],lty=2)
lines(x,conf_interval[,3],lty=2)

1 Ответ

0 голосов
/ 12 июня 2018

После первых четырех строк кода, приведенного выше, используйте функцию Gosink plot.add.ci:

# John Gosink's Intervals Plotter (from http://gosink.org/?page_id=120)
plot.add.ci <- function(x, y, interval='prediction', level=0.9, 
regressionColor='red', ...) {
    xOrder  <- order(x)
    x       <- x[xOrder]  
    y       <- y[xOrder]
    fit     <- lm(y ~ x, data=data.frame(x=x, y=y))
    newX    <- data.frame(x=jitter(x))
    fitPred <- predict.lm(fit,newdata=newX,interval=interval,level=level, ...)
    abline(lm(y ~ x), col=regressionColor)
    lines(newX$x, fitPred[,2], lty=2, ...)
    lines(newX$x, fitPred[,3], lty=2, ...)
}

plot(cars$speed,cars$length)
abline(modelReg,col="red")
plot.add.ci(speed, length, level=0.95, interval="confidence", lwd=3) 

, которая дает этот график (измените level, если вы хотите другой уровень достоверности, или отпустите interval= для интервала прогнозирования):

enter image description here

...