我想在使用张量积的 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
我尝试在张量中添加k值,但错误仍然相同 我该如何解决这个问题?谢谢您的帮助。
您通过
knots
指定的结位置和基函数 k
的数量必须兼容。在您的示例中,默认值用于 k
,IIRC 将为 2d 张量积提供 k = c(5,5)
。
如果您想使用您指定的结位置,那么您需要将
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)