Gbm:: interactive.gbm vs. dismo:: gbm.interactions

Фон

В справочном руководстве для gbm package указано, что функция interact.gbm вычисляет H-статистику Фридмана для оценки силы переменных взаимодействий. H-статистика находится в масштабе [0-1].

Справочное руководство для dismo package не ссылается на литературу о том, как функция gbm.interactions обнаруживает и моделирует взаимодействия. Вместо этого он дает список общих процедур, используемых для обнаружения и моделирования взаимодействий. Виньетка dismo "Повышенные деревья регрессии для экологического моделирования" утверждает, что пакет dismo расширяет функции в пакете gbm.

Вопрос

Как dismo::gbm.interactions обнаруживает и моделирует взаимодействия?

Почему

Я задаю этот вопрос, потому что gbm.interactions в dismo package дает результаты > 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 and Popescue, 2005), которая оценивается по формуле (44) для любой пары предикторов, Это, по сути, отход от аддитивности для любых двух предикторов, усредняющих значения других переменных, НЕ устанавливая другие переменные по их усмотрению. Он выражается как процент от общей дисперсии функции частичной зависимости двух переменных (или предполагаемых предполагаемых прогнозов), поэтому всегда будет находиться между 0-1.