mgcv错误:“x没有足够的唯一值来支持3节:减少k”

时间:2018-03-26 13:51:03

标签: r regression spline gam mgcv

我正在尝试适应以下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节?我该如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:2)

如何仅在两个点上(唯一)定义三次多项式?三次多项式s(x)需要4个系数,即至少4个唯一的x值。 mgcvs(x)上应用居中约束,因此需要减少一个系数,但是您仍然需要3。

如果您的协变量只有两个唯一值,则最多可以用一条直线拟合它:

gam(y ~ x, family = betar(link = "logit"), data = d)