2

我曾经MuMIn::model.avg对几个模型进行平均*,我对绘制条件(非完整)模型平均值的预测结果很感兴趣。我尝试了ggeffects::ggpredictsjPlot::plot_model,并且都只给出了完整的模型结果。我可以得到预测的估计值predict(),它可以选择是使用完整模型还是条件模型(full = False用于条件模型)。但是,如果我声明se.fit = True要获得标准错误,那么我会收到一条警告说'argument 'full' is ignored',它会预测完整模型的结果。我也尝试使用emmeans以下这个答案,但它也使用完整模型。

*同样的问题出现在简单的线性 ( lm) 和广义 ( glm) 模型中。

有没有办法从条件平均模型及其 SE 或 CI 中获得预测结果?或者甚至更好,一种绘制它们的方法?

我不确定我的问题是统计问题(即我要问的问题不能统计完成)还是 R 问题。我希望这是第二个,但如果是第一个,我会很感激解释。

我没有添加数据,因为我认为它不相关,但如果需要,我可以这样做。所有解释变量都是因子(如您在我的 NewData 数据框中所见)。

这是我尝试的几行代码:

m1 <- lm(A ~ B*C + d, data=df, na.action="na.fail")
dd1 <- dredge(m1, subset=Origin)
m1.avg <- model.avg(dd1, fit=TRUE)
plot_model(m1.avg, type="pred", terms=c("B", "C", "d"))

NewData <- data.frame(B=c(rep(c("b1", "b2"), 6)), 
                      D=c(rep("d1", 6), rep("d2", 6)), 
                      C=c(rep(c("C1", "C1", "C3", "C3", "C5", "C5"), 2)))
cbind(NewData, pre=predict(m1.avg, newdata=NewData, full=F, se.fit=T))
4

1 回答 1

2

我尝试将选项添加full到对对象的emmeans支持averaging,而不是让它 force full = TRUE。这是第一个示例发生的情况model.avg

require(MuMIn)
## Loading required package: MuMIn
require(emmeans)
## Loading required package: emmeans

# Example from Burnham and Anderson (2002), page 100:
fm1 <- lm(y ~ ., data = Cement, na.action = na.fail)
ms1 <- dredge(fm1)
## Fixed term is "(Intercept)"
ma = model.avg(ms1, subset = delta < 4, fit = TRUE)

confint(ref_grid(ma, data = Cement, full = TRUE))
##    X1   X2   X3 X4 prediction   SE df lower.CL upper.CL
##  7.46 48.2 11.8 30         98 4.12  9     88.7      107
## 
## Confidence level used: 0.95

confint(ref_grid(ma, data = Cement, full = FALSE))
## Warning in sqrt(.qf.non0(object@V, x)): NaNs produced
##    X1   X2   X3 X4 prediction  SE df lower.CL upper.CL
##  7.46 48.2 11.8 30         98 NaN  9      NaN      NaN
## 
## Confidence level used: 0.95

reprex 包于 2022-01-06 创建 (v2.0.0 )

问题在于 ,full = FALSE返回的协方差矩阵不一定是正定的:

eigen(vcov(ma, full = FALSE))
## eigen() decomposition
## $values
## [1] 494.70528609   0.07488847   0.04051689  -0.01407614  -0.14314881
## 
## $vectors
##              [,1]        [,2]         [,3]        [,4]        [,5]
## [1,]  0.999708163  0.01281974  0.004187958 -0.00648858 -0.01896318
## [2,] -0.004861364  0.86884310  0.042589117 -0.24907880  0.42571582
## [3,] -0.002164749 -0.11468216 -0.696686782 -0.70017769 -0.10593418
## [4,] -0.008651137 -0.14293079  0.715383269 -0.66298278 -0.16785875
## [5,] -0.021918654  0.45974571 -0.031983342  0.09012598 -0.88261420

一些特征值为负的事实意味着我们获得了回归系数的某些线性函数的负方差估计。这是允许有条件估计的交易破坏者。

[注: 的full选项ref_grid()只是临时添加的;它在任何emmeans版本中都不可用]

于 2022-01-06T18:22:20.297 回答