在 R 中解释模型平均结果

机器算法验证 r 模型平均
2022-01-18 12:56:20

我试图了解并知道从我使用 R 中的模型平均对一些数据的分析中报告什么。

我正在使用以下脚本来分析测量方法对给定变量的影响:这是数据集: https ://www.dropbox.com/s/u9un273gzw9o30u/VMT4.csv?dl=0

需要安装的型号:

LM.1 <- gls(VMTf ~ turn+sex+method, na.action="na.fail", method = "ML",VMT4)

挖泥机全模型

require(MuMIn)
d=dredge(LM.1)
print(d)
coefficients(d)

获取所有模型的摘要信息以获得参数估计

summary(model.avg(d))

我知道要么可以对所有模型进行平均(完整模型平均),要么只是其中的一个子集(条件平均)。现在,我想知道:什么时候最好使用完全平均或条件平均来进行推断。对于一篇科学文章,我应该如何报告这一切?对于模型平均情况,Z 值和相关的 p 究竟意味着什么?

为了更容易想象我的问题。这是结果表,

> summary(model.avg(d))# now, there are effects

Call:
model.avg(object = d)

Component model call: 
gls(model = VMT ~ <8 unique rhs>, data = VMT4, method = ML, na.action = 
 na.fail)

Component models: 
       df  logLik   AICc delta weight
1       4 -247.10 502.52  0.00   0.34
12      5 -246.17 502.83  0.31   0.29
13      5 -246.52 503.52  1.01   0.20
123     6 -245.60 503.88  1.36   0.17
(Null)  2 -258.62 521.33 18.81   0.00
3       3 -258.38 522.95 20.43   0.00
2       3 -258.60 523.39 20.88   0.00
23      4 -258.36 525.05 22.53   0.00

Term codes: 
method    sex   turn 
     1      2      3 

Model-averaged coefficients:  
(full average) 
                       Estimate Std. Error Adjusted SE z value Pr(>|z|)    
(Intercept)            42.63521    0.37170     0.37447 113.856  < 2e-16 ***
methodlight chamber    -1.05276    0.36098     0.36440   2.889  0.00386 ** 
methodthermal gradient -1.80567    0.36103     0.36445   4.955    7e-07 ***
sex2                    0.19023    0.29403     0.29548   0.644  0.51970    
turn                    0.05005    0.10083     0.10141   0.494  0.62165    

(conditional average) 
                       Estimate Std. Error Adjusted SE z value Pr(>|z|)    
(Intercept)             42.6352     0.3717      0.3745 113.856  < 2e-16 ***
methodlight chamber     -1.0528     0.3609      0.3643   2.890  0.00386 ** 
methodthermal gradient  -1.8058     0.3608      0.3642   4.958  7.1e-07 ***
sex2                     0.4144     0.3089      0.3119   1.328  0.18402    
turn                     0.1337     0.1264      0.1276   1.047  0.29492    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Relative variable importance: 
                     method sex  turn
Importance:          1.00   0.46 0.37
N containing models:    4      4    4
2个回答

我认为关于完全平均值和条件平均值之间差异的前提是错误的。一种是包含零(完整)的平均值,一种是不包含零(条件)的平均值。来自 model.avg() 命令的帮助文件:

笔记

“子集”(或“条件”)平均值仅对出现参数的模型进行平均。另一种选择是,“完整”平均值假设每个模型中都包含一个变量,但在某些模型中,相应的系数(及其各自的方差)设置为零。与“子集平均值”不同,它没有使值偏离零的趋势。“完整”平均值是一种收缩估计量,对于与响应关系较弱的变量,它们小于“子集”估计量。

如果您只想使用模型的子集(例如基于 delta AIC),请使用 model.avg() 中的子集参数。只要包含的某些模型缺少其他模型的某些变量,您仍将获得条件估计和完整估计。

见格鲁伯等人。2011,“生态和进化中的多模型推理:挑战和解决方案”进化生物学 24:699-711。

这实际上取决于您是否要使用完整数据或条件数据的目标。在我的领域中,我们将使用标准(例如 AICC)来确定最受支持的模型,然后将它们用作您的条件子集。然后将报告此信息。例如,您的前四个模型彼此都在 2 个 AIC 单位内,因此它们都将包含在您的子集中。其他的都存在(更高的 AIC),因此包含来自它们的信息实际上会降低您的 beta 估计的质量。