Как увидеть производительность всех моделей игр, когда модель выбрана = ИСТИНА - PullRequest
0 голосов
/ 09 октября 2018

Я запускаю игру с выбором переменных.Но я хочу оценить вывод всех комбинаций переменных, а не только для лучшей модели для сравнения.Я использую пакет mgcv в R, есть ли какая-то команда для оценки модели (прежде чем я начну кодировать много циклов ...).

Пример:

    set.seed(3);n<-200
    dat <- gamSim(1,n=n,scale=.15,dist="poisson")
    dat$x4 <- runif(n, 0, 1);dat$x5 <- runif(n, 0, 1) ## spurious
    b<-gam(y~s(x0)+s(x1)+s(x2)+s(x3)+s(x4)+s(x5),data=dat,
    family=poisson,select=TRUE,method="REML")

Если я использую сводку (b), Я вижу только результаты лучшей модели.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вы неправильно понимаете, что делает select = TRUE;здесь действительно только одна модель.

В стандартном GAM, установленном на mgcv , волнистость каждого сглаживания в модели определяется во время подбора, оценивая параметры, чтобы минимизировать штрафной критерий вероятности.Наказание (я) для каждого сглаживания может налагать штрафы на волнистость (как правило, на кривизну сглаживателя через штраф на квадрат второй производной), но они не могут налагать штраф на любые функции в базисе сплайна, которые являются совершенно гладкими (то есть прямая линия илилинейная функция ковариаты).Это потому, что идеально гладкий компонент не имеет кривизны, наклон не меняется.Говорят, что такие функции находятся в пустом пространстве штрафа.

То, что показали Марра и Вуд (2011), было двумя способами добавления дополнительных штрафов к каждому сглаживанию, так чтобы штраф применялся как к волнистым функциям, так и к функциям внулевое пространство.select = TRUE - это один из этих двух вариантов.

То, что у вас есть, - это модель, в которой штрафы смещают сглаживание к линейной функции и смещают линейную функцию к 0 (плоская функция).Другими словами, мы говорим, что сглаживание сокращается до 0.

При select = TRUE процесс выбора модели, таким образом, больше похож на подход выбора модели, известный как LASSO.

Пока я говорю тамэто одна модель, на самом деле существует бесконечное количество моделей, так как вы получаете другую модель для всех комбинаций значений параметров «гладкости», которые управляют тем, насколько штраф (шаткость или пустое пространство) влияет на наказуемую вероятность.Но это то же самое, что сказать, что существует бесконечное количество моделей наименьших квадратов (линейная регрессия), потому что параметры этой модели могут принимать любое реальное значение.Эти параметры, как и штрафы за сглаживание в GAM, обновляются во время подгонки, чтобы прийти к модели.Просто так получается, что конкретная форма штрафов за пустое пространство, подразумеваемое с помощью select = TRUE, в итоге делает выбор модели для вас.

Обратите внимание, что вы платите цену за то, что не знаете, должна ли переменная быть в моделиили нет;контрольные степени свободы (столбец Ref.df в выводе summary(model)) - это любое значение k, установленное в сглаживании.Т.е. вы платите полную стоимость, не зная, использует ли гладкое k базисные функции или ~ 0 (когда термин сокращен из модели) или где-то посередине;Вы всегда оплачиваете k базовых функций.

0 голосов
/ 09 октября 2018

Итак, если я правильно следую за вами, вы хотите увидеть вывод модели для 2^N - 1 моделей, где N - это число переменных, поскольку каждая переменная либо есть в модели, либо нет.Похоже, вам нужно создать вектор, содержащий каждую возможную спецификацию модели, а затем использовать map, чтобы запустить каждую спецификацию модели и сохранить нужный результат в списке.

...