mgcv: указать разные сглаживания по уровням факторов? - PullRequest
0 голосов
/ 26 марта 2020

Есть ли простой способ в mgcv оценить такую ​​модель, как $$ y = \ alpha + \ beta xI (z = 1) + f (x) I (z = 2) $$ , где f некоторая неизвестная функция, x - это непрерывная ковариата и коэффициент za.

Я знаю, что могу указать различные гладкие термины для уровня z с помощью модели mgcv::gam(y ~ s(x , by = z)), но могу ли я указать параметр c модели (т.е. указать степени свободы) для некоторого уровня коэффициента z?

Может быть, я пропустил некоторые детали в документации, какие-либо предложения?

Вот минимальный пример модели выше

N = 500
z = factor(sample(1:2, size = N, replace = T))
x = runif(N)
y = rep(0,N)

y[z == 1]  = 1 + 10*x[z==1] + rnorm(sum(z==1) , 0, 0.5)
y[z == 2]  = 1 + exp(sin(12*x[z==2]+3)) + rnorm(sum(z==2) , 0, 0.5)

## this model estimate f(x) for both z==1 and z==2
mod = mgcv::gam(y~s(x, by =z))
...