如何在保持控制变量不变的情况下同时使用 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)
不过,我想为模型添加一些控制变量(c
和 d
),如下所示:
m = lm(y ~ a*b + c + d, data=dat)
但是 expand.grid 不起作用,只有当我包含所有变量时。我对交互感兴趣,也想添加控件。但是,将它们添加到 expand.grid 中会让我有太多的场景需要解释。还有其他更有效的方法吗?
您可以将 c
和 d
变量作为常数放在 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
一个问题是您的 a
和 b
变量完全相同,因此预测发出警告。我在下面的代码中修复了它。
我想使用 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)
不过,我想为模型添加一些控制变量(c
和 d
),如下所示:
m = lm(y ~ a*b + c + d, data=dat)
但是 expand.grid 不起作用,只有当我包含所有变量时。我对交互感兴趣,也想添加控件。但是,将它们添加到 expand.grid 中会让我有太多的场景需要解释。还有其他更有效的方法吗?
您可以将 c
和 d
变量作为常数放在 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
一个问题是您的 a
和 b
变量完全相同,因此预测发出警告。我在下面的代码中修复了它。