r mgcv包:如何在使用Tensor积时设置节点的位置

qcuzuvrc  于 2024-01-03  发布在  其他
关注(0)|答案(1)|浏览(107)

我想在使用Tensor积的gam函数中手动设置一些节点位置。
举例来说:

set.seed(0)
n <- 500
x <- runif(n)
z <- runif(n)
y <- runif(n)
gam(y ~ te(x, z), knots = list(x = c(0.2, 0.5, 0.8), y=c(0.2, 0.5, 0.8)))

字符串
但我有这个错误:

Error in smooth.construct.cr.smooth.spec(object$margin[[i]], dat, knt) : 
  number of supplied knots != k for a cr smooth


我试着在Tensor中增加一个k值,但误差仍然是一样的我如何解决这个问题?谢谢你的帮助。

i86rm4rw

i86rm4rw1#

通过knots指定的节点位置和基函数k的数量必须兼容。在您的示例中,默认值用于k,IIRC将k = c(5,5)用于2dTensor积。
如果要使用指定的结位置,则需要将k设置为低于此值:

knots <- list(x = c(0.2, 0.5, 0.8), z = c(0.2, 0.5, 0.8))
gam(y ~ te(x, z, k = c(3,3)), method = "REML", knots = knots)

字符串

相关问题