我具有以下模拟数据以拟合回归模型,其中y
,x1
是连续变量,而x2
是类别变量。
y <- rnorm(100, 2, 3)
x1 <- rnorm(100, 2.5, 2.8)
x2 <- factor(c(rep(1,45), rep(0,55)))
当y
和x2 = 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
我想知道我是否正确地做到了。我也想知道是否有比这更简单的方法。
答案 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)
当
y
和x2 = 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
因此您可以一次性获得两个因子水平的结果。