Найти доверительный интервал линии регрессии в ее центре на группу - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть следующие смоделированные данные для соответствия регрессионной модели, где y, x1 - непрерывные переменные, а x2 - категориальная переменная.

y <- rnorm(100, 2, 3)
x1 <- rnorm(100, 2.5, 2.8)
x2 <- factor(c(rep(1,45), rep(0,55)))

Мне нужно найти 95% доверительные интервалы для y, когда x2 = 0 и x1 равны среднему значению в пределах x2 = 0.

Я сделал

mod <- lm(y ~ x1 * x2)

tapply(x1, x2, mean)
#       0        1 
#3.107850 2.294103 

pred.dat <- data.frame(x1 = 3.107850, x2 = "0")

predict(mod, pred.dat, interval = "confidence", level = 0.95)
#       fit      lwr      upr
#1 2.413393 1.626784 3.200003

predict(mod, pred.dat, interval = "prediction", level = 0.95)
#       fit       lwr      upr
#1 2.413393 -3.473052 8.299839

Я хочу знать, правильно ли я это сделал или нет.Также я хочу знать, есть ли более простой способ, чем этот.

1 Ответ

0 голосов
/ 27 сентября 2018

настройка

set.seed(0)
y <- rnorm(100, 2, 3)
x1 <- rnorm(100, 2.5, 2.8)
x2 <- factor(c(rep(1,45), rep(0,55)))

mod <- lm(y ~ x1 * x2)

95% доверительные интервалы для y, когда x2 = 0 и x1 равны среднему значению в пределах x2 = 0.


Я хочу знать, правильно ли я это сделал или нет.

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

Я хочу знать, есть ли более простой способ, чем этот.

tapply можно пропустить, если вы сделаете

pred.data <- data.frame(x1 = mean(x1[x2 == "0"]), x2 = "0")
#        x1 x2
#1 2.649924  0

Или вы можете сделать

pred.data <- setNames(stack(tapply(x1, x2, mean)), c("x1", "x2"))
#        x1 x2
#1 2.649924  0
#2 2.033328  1

, чтобы вы могли получить результат для обоих уровней факторов за один раз.

...