r mgcv 包:使用张量积时如何设置结的位置

问题描述 投票:0回答:1

我想在使用张量积的 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值,但错误仍然相同 我该如何解决这个问题?谢谢您的帮助。

r tensor gam mgcv
1个回答
0
投票

您通过

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)
© www.soinside.com 2019 - 2024. All rights reserved.