预测平均值的估计不一致

时间:2019-06-03 14:32:15

标签: r linear-regression

我最近听说R中的 predictmeans 包,所以我想对其进行测试。所以我尝试了这个测试数据集和模型:

data = data.frame(
    blk = LETTERS[rep(1:2, each = 4)],
    trt = letters[rep(1:4, each = 2)],
    x = c(3.3, 3.3, 1.8, 1.8, 1.5, 1.5, 5.4, 5.4),
    y = c(5.9, 5.8, 6.5, 6.7, 4.6, 4.5, 3.8, 3.8))
mod1 = lm(y ~ x + blk + trt, data = data)

以下是使用trt的{​​{1}}方式的估算值(输出缩写为仅显示估算值):

predictmeans::predictmeans

这四个方法中的三个相等似乎很好奇。更奇怪的是,如果我用不同的方式表达模型,则会得到不同的结果:

library("predictmeans")
predictmeans(mod1, "trt")

## $`Predicted Means`
## trt
##      a      b      c      d 
## 5.0846 5.5462 5.0846 5.0846 

在这里,我们仍然有两种不同的方式,但是模式是不同的。并随着不同的模型而改变:

mod2 = lm(y ~ blk + trt + x, data = data)
predictmeans(mod2, "trt")

## $`Predicted Means`
## trt
##     a     b     c     d 
## 4.825 5.575 5.575 4.825

现在有四种不同的方法!

设置协变量mod3 = lm(y ~ trt + blk + x, data = data) predictmeans(mod3, "trt") ## $`Predicted Means` ## trt ## a b c d ## 5.85 6.60 4.55 3.80 的效果也不同。如果未指定,x将使用predictmeans;如果我尝试x = 3,我会得到:

x = 0

我发现,指定不同的predictmeans(mod1, "trt", covariate = c(x = 0)) ## $`Predicted Means` ## trt ## a b c d ## 5.6615 6.1231 5.6615 5.6615 predictmeans(mod2, "trt", covariate = c(x = 0)) ## $`Predicted Means` ## trt ## a b c d ## 4.825 5.575 5.575 4.825 值会更改x的结果,但是mod1的结果是相同的,而与mod2无关(对于x)。

正在发生的事情会导致如此不一致的结果?有补救办法吗?

0 个答案:

没有答案