在您链接到的帮助页面上的示例中调用函数时,结是固定的ns
,因此您可以在不进入模型对象的情况下提取结。但是……您还没有提供创建 GAM 模型的代码,所以我们只能推测您可能做了什么。仅仅因为在 ?ns-help-page 和文档中都使用了“样条线”这个词,并不意味着它们是相同的。您链接到的另一个页面中的模型有两个用函数构造的“平滑”术语s
。
.... + s(time,bs="cr",k=200) + s(tmpd,bs="cr")
该 gam 调用的结果有一个名为“smooth”的列表节点,当使用 str() 查看时,第一个节点看起来像这样:
str(ap1$smooth)
List of 2
$ :List of 22
..$ term : chr "time"
..$ bs.dim : num 200
..$ fixed : logi FALSE
..$ dim : int 1
..$ p.order : logi NA
..$ by : chr "NA"
..$ label : chr "s(time)"
..$ xt : NULL
..$ id : NULL
..$ sp : Named num -1
.. ..- attr(*, "names")= chr "s(time)"
..$ S :List of 1
.. ..$ : num [1:199, 1:199] 5.6 -5.475 2.609 -0.577 0.275 ...
..$ rank : num 198
..$ null.space.dim: num 1
..$ df : num 199
..$ xp : Named num [1:200] -2556 -2527 -2502 -2476 -2451 ...
.. ..- attr(*, "names")= chr [1:200] "0.0000000%" "0.5025126%" "1.0050251%" "1.5075377%" ...
..$ F : num [1:40000] 0 0 0 0 0 0 0 0 0 0 ...
..$ plot.me : logi TRUE
..$ side.constrain: logi TRUE
..$ S.scale : num 9.56e-05
..$ vn : chr "time"
..$ first.para : num 5
..$ last.para : num 203
..- attr(*, "class")= chr [1:2] "cr.smooth" "mgcv.smooth"
..- attr(*, "qrc")=List of 4
.. ..$ qr : num [1:200, 1] -0.0709 0.0817 0.0709 0.0688 0.0724 ...
.. ..$ rank : int 1
.. ..$ qraux: num 1.03
.. ..$ pivot: int 1
.. ..- attr(*, "class")= chr "qr"
..- attr(*, "nCons")= int 1
因此,平滑度在 200 个点中的每一个上进行了评估,并且多项式函数适合该网格上的数据。如果您将结强制设置在三个内部位置,那么它们将位于极端并且在极端之间均匀分布。