如何在保持控制变量不变的情况下同时使用 predict 和 expand_grid?

How can i use predict and expand_grid simultaneously while keeping control variables constant?

我想使用 expand_grid 预测交互的值。我使用的第一步是 运行 单独使用交互的模型,它没有问题。以下是示例:

dat <- data.frame(time=gl(n = 2,k = 5000),
                  y= rnorm(nrow(dat), mean=1000, sd=400),
                  a=factor(rep(c(1,2),times=5000)),
                  b=factor(rep(c(1,2),times=5000)),
                  c= rnorm(nrow(dat), mean=40, sd=10),
                  d= rnorm(nrow(dat), mean=550, sd=10))

m = lm(y ~ a*b, data=dat)
pred <- expand.grid(a= factor(1:2), b= factor(1:2))
pred$y <- predict(m,pred)

不过,我想为模型添加一些控制变量(cd),如下所示:

m = lm(y ~ a*b + c + d, data=dat)

但是 expand.grid 不起作用,只有当我包含所有变量时。我对交互感兴趣,也想添加控件。但是,将它们添加到 expand.grid 中会让我有太多的场景需要解释。还有其他更有效的方法吗?

您可以将 cd 变量作为常数放在 expand.grid() 中,它应该可以正常工作。

dat <- data.frame(time=gl(n = 2,k = 5000),
                  y= rnorm(10000, mean=1000, sd=400),
                  a=factor(sample(1:2, 10000, replace=TRUE)),
                  b=factor(sample(1:2, 10000, replace=TRUE)),
                  c= rnorm(10000, mean=40, sd=10),
                  d= rnorm(10000, mean=550, sd=10))

m = lm(y ~ a*b, data=dat)
pred <- expand.grid(a= factor(1:2), b= factor(1:2), 
                    c=mean(dat$c), d=mean(dat$d))
pred$y_hat <- predict(m,newdata=pred)

#   a b        c       d    y_hat
# 1 1 1 39.90915 550.064 1002.733
# 2 2 1 39.90915 550.064 1006.523
# 3 1 2 39.90915 550.064 1015.462
# 4 2 2 39.90915 550.064 1007.281

一个问题是您的 ab 变量完全相同,因此预测发出警告。我在下面的代码中修复了它。