mgcv error: "x has insufficient unique values to support 3 knots: reduce k"
mgcv error: "x has insufficient unique values to support 3 knots: reduce k"
我正在尝试拟合以下 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(即使我在 gam
调用中指定了 k = 2
)。
为什么我不能只有 2 节?我该如何解决这个问题?
谢谢。
如何仅在两个点上(唯一地)定义三次多项式?三次多项式 s(x)
需要 4 个系数,即至少 4 个唯一的 x
值。 mgcv
对 s(x)
应用居中约束,因此需要的系数少了一个,但你仍然需要 3.
如果你的协变量只有两个唯一值,你最多可以用一条直线来拟合它:
gam(y ~ x, family = betar(link = "logit"), data = d)
我正在尝试拟合以下 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(即使我在 gam
调用中指定了 k = 2
)。
为什么我不能只有 2 节?我该如何解决这个问题?
谢谢。
如何仅在两个点上(唯一地)定义三次多项式?三次多项式 s(x)
需要 4 个系数,即至少 4 个唯一的 x
值。 mgcv
对 s(x)
应用居中约束,因此需要的系数少了一个,但你仍然需要 3.
如果你的协变量只有两个唯一值,你最多可以用一条直线来拟合它:
gam(y ~ x, family = betar(link = "logit"), data = d)