Уравнение для 95% ДИ по регрессии? - PullRequest
1 голос
/ 08 февраля 2020

Я рассчитал / построил линейный и 95% -й доверительный интервал для параметров модели следующим образом

lm <- lm(cars$speed~cars$dist)

conf <- predict(lm, interval='confidence')
conf <- cbind(cars,conf)

CI <- as.data.frame(confint(lm))

library(ggplot2)

plot<-ggplot(conf,aes(dist,speed)) +
  geom_line(aes(y=fit),color='black') +
  geom_line(aes(y=lwr),color='red',linetype='dashed') +
  geom_line(aes(y=upr),color='red',linetype='dashed')
plot

Мне интересно, каково уравнение для расчета нижнего и верхнего пределов (красные линии) на сюжет? Я предположил, что они могут быть рассчитаны с использованием значений из функции confint()? Я пытался вычислить значения lwr и upr примерно так, но я не получил тот же результат.

lower <- CI[1,1] + CI[2,1]*cars$dist
upper <- CI[1,2] + CI[2,2]*cars$dist

1 Ответ

1 голос
/ 09 февраля 2020

Вот как рассчитывается доверительный интервал в lm.predict с использованием следующего уравнения:

CI equation

, которое может быть реализовано следующим образом:

my.lm <- lm(cars$speed~cars$dist)

intercept <- model.matrix(delete.response(terms(my.lm)), cars)
fit.values <- c(intercept %*% coef(my.lm))

data.fit <- data.frame(x=cars$dist, fit=fit.values)

# compute t-value
tval <- qt((1-0.95)/2, df=nrow(data.fit)-2)

# compute Sxx
Sxx <- sum((data.fit$x - mean(data.fit$x))^2)

# compute MSres
MSres <- sum(my.lm$residuals^2)/(nrow(data.fit)-2)

# calculate confidence interval
CI <- data.frame(t(apply(data.fit, 1, FUN =  function(row){
  sqrt(MSres * (1/nrow(data.fit) + (as.numeric(row[1]) - mean(data.fit$x))^2/Sxx)) * tval * c(1, -1) + as.numeric(row[2])
})))
names(CI) <- c("lwr","upr")

head(CI)
#        lwr      upr
#1  6.917090 10.31299
#2  8.472965 11.40620
#3  7.307526 10.58483
#4 10.764584 13.08820
#5  9.626909 12.23906
#6  8.472965 11.40620

Вы можете сравнить результаты с результатами, полученными из predict.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...