Циклический адаптивный сплайн в MGCV

Я хочу подогнать GAM к данным с циклическим предиктором и с наибольшей нестабильностью в определенной части цикла.

Есть ли способ сделать циклический сплайн (bs = 'cc' или 'cp') адаптивным? ... или, что то же самое, сделать адаптивный сплайн (bs = 'ad') циклическим?


person JohannesNE    schedule 16.09.2020    source источник
comment
Один из приемов, позволяющих сделать нециклический более плавный вид циклическим, - это добавить сдвинутые копии данных до и после реальных данных. Если вы разместите что-то воспроизводимое, мы сможем продемонстрировать это на ваших примерах данных.   -  person user2554330    schedule 16.09.2020


Ответы (1)


Да; это уже разрешено в основе адаптивного сплайна в mgcv.

Базой по умолчанию в адаптивном сплайне является P-сплайн. Вы можете переключиться на циклическую версию этого типа сплайна или использовать циклический кубический сплайн.

Чтобы это сработало, вы должны передать информацию аргументу xt функции сглаживания, оставив bs = "ad" для адаптивного базиса.

Для циклического P-сплайна вы бы сделали

y ~ s(x, bs = "ad", xt = list(bs = "cp"))

а для циклического кубического сплайна вы должны использовать

y ~ s(x, bs = "ad", xt = list(bs = "cc"))

Аргумент xt часто используется для такого рода вещей, когда у базиса есть другие параметры, которые можно настроить. Базис fs аналогичен, где xt позволяет вам управлять базисом, используемым для случайного сглаживания.

Другой аргумент, на который следует обратить внимание, - это m; где k указывает базовый размер для фактического сглаживания, вы можете использовать m, чтобы установить основу для адаптивной части, причем более высокое m указывает на большее возможное изменение штрафа в диапазоне x, так же как k допускает большую волнистость в сглаживании более x.

Эти детали обсуждаются в ?smooth.construct.ad.smooth.spec (или ?adaptive.smooth как более простой ярлык для этой страницы.)

person Gavin Simpson    schedule 16.09.2020