【问题标题】:How can i use predict and expand_grid simultaneously while keeping control variables constant?如何在保持控制变量不变的同时同时使用 predict 和 expand_grid?
【发布时间】:2021-03-05 11:39:58
【问题描述】:

我想使用 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 中会给我带来太多无法解释的场景。还有其他更高效的方法吗?

【问题讨论】:

    标签: r regression predict interaction


    【解决方案1】:

    您可以将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 变量完全相同,因此预测引发了警告。我在下面的代码中修复了这个问题。

    【讨论】:

    • 非常感谢您的回复。我有一个小的后续问题,我希望它不会太天真。如果变量“c”是具有三个类别的因子控制变量怎么办。我会将其视为连续变量 c=mean(dat$c),还是将其固定为三个类别中的一个。如果是后者,我想修复第三类,修复它看起来像这样 c= factor(3) 吗?
    • 你会说c=factor(1, levels=c(1,2,3))
    猜你喜欢
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2020-02-19
    • 1970-01-01
    • 2020-04-15
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多