gbm::interact.gbm 与 dismo::gbm.interactions
Posted
技术标签:
【中文标题】gbm::interact.gbm 与 dismo::gbm.interactions【英文标题】:gbm::interact.gbm vs. dismo::gbm.interactions 【发布时间】:2015-07-11 22:37:59 【问题描述】:背景
gbm package
的参考手册指出interact.gbm
函数计算弗里德曼的 H 统计量以评估变量相互作用的强度。 H 统计量在 [0-1] 范围内。
dismo package
的参考手册没有参考任何关于gbm.interactions
函数如何检测和模拟交互的文献。相反,它提供了用于检测和建模交互的一般程序列表。 dismo
小插图“用于生态建模的增强回归树”指出 dismo
包扩展了 gbm
包中的功能。
问题
dismo::gbm.interactions
如何实际检测和建模交互?
为什么
我问这个问题是因为dismo package
中的gbm.interactions
产生的结果>1,gbm package
参考手册说这是不可能的。
我检查了每个包的 tar.gz 以查看源代码是否相似。完全不同,我无法确定这两个包是否使用相同的方法来检测和建模交互。
【问题讨论】:
【参考方案1】:总而言之,这两种方法之间的差异归结为如何估计两个预测变量的“部分依赖函数”。
dismo
包基于Elith et al., 2008 中最初给出的代码,您可以在补充材料中找到原始源代码。该论文非常简要地描述了该过程。基本上,模型预测是通过两个预测变量的网格获得的,将所有其他预测变量设置为均值。然后将模型预测回归到网格上。然后将该模型的均方误差乘以 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
拟合模型的预测,其中除了两个正在考虑的预测变量之外的所有预测变量均按其平均值设置。
这与弗里德曼的 H 统计量 (Friedman & Popescue, 2005) 不同,后者通过公式 (44) 对任何一对预测变量进行估计。这本质上是对任何两个预测变量平均其他变量的值的可加性的背离,而不是设置其他变量的平均值。它表示为两个变量(或模型隐含预测)的部分依赖函数的总方差的百分比,因此始终介于 0-1 之间。
【讨论】:
有没有人知道实现上面链接的弗里德曼和波佩斯库文章第 8.3 节的资源,以创建可以与交互强度进行比较以查看它们是否显着的空分布?以上是关于gbm::interact.gbm 与 dismo::gbm.interactions的主要内容,如果未能解决你的问题,请参考以下文章
使用gbm.plot(dismo)和partial(pdp)时,部分依赖图的差异,为什么?