在每组中心找到回归线的置信区间

时间:2018-09-26 23:25:10

标签: r regression linear-regression prediction confidence-interval

我具有以下模拟数据以拟合回归模型,其中yx1是连续变量,而x2是类别变量。

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

yx2 = 0等于x1内的平均值时,我需要找到x2 = 0的95%置信区间。

我做到了

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 :(得分:1)

设置

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)
  

yx2 = 0等于x1内的平均值时,x2 = 0的95%置信区间。


  

我想知道我是否正确地做到了。

您正确使用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

因此您可以一次性获得两个因子水平的结果。