gbm::interact.gbm 与 dismo::gbm.interactions

gbm::interact.gbm vs. dismo::gbm.interactions

背景

gbm package 的参考手册指出 interact.gbm 函数计算弗里德曼的 H 统计量以评估变量相互作用的强度。 H 统计量的范围为 [0-1].

dismo package 的参考手册没有引用任何关于 gbm.interactions 函数如何检测和建模交互的文献。相反,它给出了用于检测和建模交互的一般程序列表。 dismo 小插图 "Boosted Regression Trees for ecological modeling" 指出 dismo 包扩展了 gbm 包中的功能。

问题

dismo::gbm.interactions 如何实际检测和建模交互?

为什么

我问这个问题是因为 dismo package 中的 gbm.interactions 产生的结果 >1,gbm package 参考手册说这是不可能的。

我检查了每个包的 tar.gz 以查看源代码是否相似。它差异很大,我无法确定这两个包是否使用相同的方法来检测和建模交互。

总而言之,这两种方法之间的差异归结为如何估计两个预测变量的 "partial dependence function"。

dismo 包基于 Elith et al., 2008 中最初给出的代码,您可以在补充 material 中找到原始来源。该文件非常简要地描述了该过程。基本上,模型预测是在两个预测变量的网格上获得的,将所有其他预测变量设置为均值。然后将模型预测回归到网格上。然后将此模型的均方误差乘以 1000。此统计数据表明模型预测偏离预测变量的线性组合,表明可能存在交互作用。

dismo包中,我们还可以获得gbm.interactions的相关源代码。交互测试归结为以下命令(直接从源代码复制):

interaction.test.model <- lm(prediction ~ as.factor(pred.frame[,1]) + as.factor(pred.frame[,2]))

interaction.flag <- round(mean(resid(interaction.test.model)^2) * 1000,2)

pred.frame 包含所讨论的两个预测变量的网格,prediction 是原始 gbm 拟合模型的预测,其中除两个正在考虑的预测变量外,其他所有预测变量均设置为方法。

这与 Friedman 的 H 统计量 (Friedman & Popescue, 2005) 不同,后者是通过公式 (44) 对任何预测变量对进行估计的。对于任何两个预测变量 平均 其他变量的值,这基本上偏离了可加性,而不是将其他变量设置为它们的均值。它表示为两个变量(或模型隐含预测)的部分相关函数的总方差的百分比,因此始终介于 0-1 之间。