R 预测平均数的不一致估计
我最近听说了R中的predictmeans包,所以我想测试一下。所以我尝试了这个测试数据集和模型:R 预测平均数的不一致估计,r,linear-regression,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)) m
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)
以下是使用predictmeans::predictmeans
对trt
平均值的估计值(输出严格缩写,仅显示估计值):
四种方法中有三种是相等的,这似乎很奇怪。更奇怪的是,如果我用不同的方式表达模型,我会得到不同的结果:
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
(这同样适用于mod3
)
发生了什么事情导致了如此不一致的结果?有什么补救办法吗 直接查看mod1的输出。您的设计甚至不允许您估算所有参数。Hmmm。它不应该对此发出警告吗?直接查看mod1的输出。您的设计甚至不允许您估算所有参数。Hmmm。它不应该对此发出警告吗?
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