Регрессия PLS в R: тестирование альтернативных спецификаций моделей
В R я хотел бы проверить спецификацию модели частичного наименьшего квадрата (PLS) m1 по отношению к альтернативе m2 без вложенности, применяя J-критерий Дэвидсона-Маккиннона. Для простого линейного результата Y это работает довольно хорошо, используя оценщик plsr, сопровождаемый командой jtest:
# Libraries and data
library(plsr)
library(plsRglm)
library(lmtest)
Z <- Cornell # illustration dataset coming with the plsrglm package
# Simple linear model
m1 <- plsr(Z$Y ~ Z$X1 + Z$X2 + Z$X3 + Z$X4 + Z$X5 ,2) # including X1
m2 <- plsr(Z$Y ~ Z$X6 + Z$X2 + Z$X3 + Z$X4 + Z$X5 ,2) # including X6 as alternative
jtest(m1,m2)
Однако, если я использую оценщик обобщенной линейной модели (plsRglm) для учета возможного нелинейного распределения результата, например:
# Generalized Model
m1 <- plsRglm(Z$Y ~ Z$X1 + Z$X2 + Z$X3 + Z$X4 + Z$X5 ,2, modele = "pls-glm-family", family=Gamma(link = "log"), pvals.expli=TRUE)
m2 <- plsRglm(Z$Y ~ Z$X6 + Z$X2 + Z$X3 + Z$X4 + Z$X5 ,2, modele = "pls-glm-family", family=Gamma(link = "log"), pvals.expli=TRUE)
Я сталкиваюсь с ошибкой при использовании jtest:
> jtest(m1,m2)
Error in terms.default(formula1) : no terms component nor attribute
>
Кажется, что plsRglm не сохраняет объекты класса "формула", которые может обработать jtest. Кто-нибудь предлагает, как отредактировать мой код, чтобы заставить это работать?
Спасибо!