我正在尝试适应以下GAM模型
mod <- gam(y ~ s(x, bs = "cr", k = 2), family = betar(link = "logit"), data = d)
其中x
只能使用两个唯一值。
但是,当我运行模型时,我收到以下错误
Error in smooth.construct.cr.smooth.spec(object, dk$data, dk$knots) :
x has insufficient unique values to support 3 knots: reduce k.
In addition: Warning message:
In smooth.construct.cr.smooth.spec(object, dk$data, dk$knots) :
basis dimension, k, increased to minimum possible
如错误消息所示,结节数自动设置为3(即使我在k = 2
调用中指定了gam
)。
我有什么理由不能只有2节?我该如何解决这个问题?
感谢。
答案 0 :(得分:2)
如何仅在两个点上(唯一)定义三次多项式?三次多项式s(x)
需要4个系数,即至少4个唯一的x
值。 mgcv
在s(x)
上应用居中约束,因此需要减少一个系数,但是您仍然需要3。
如果您的协变量只有两个唯一值,则最多可以用一条直线拟合它:
gam(y ~ x, family = betar(link = "logit"), data = d)