gpt4 book ai didi

r - R Epi 包中 Ns() 提供的基础

转载 作者:行者123 更新时间:2023-12-03 20:58:51 24 4
gpt4 key购买 nike

当我正在研究如何Epi为其样条函数生成基础(通过函数 Ns ),我对它如何处理 detrend 感到有点困惑争论。

detrend=T我原以为 Epi::Ns(...)或多或少会预测 splines::ns(...) 给出的基础到 [1 t] 的列空间的正交补上最后提取一组线性无关的列(这样我们就有了一个基)。

然而,情况似乎并非如此。我试过

library(Epi)
x=seq(-0.75, 0.75, length.out=5)
Ns(x, knots=c(-0.5,0,0.5), Boundary.knots=c(-1,1), detrend=T)


library(splines)
detrend(ns(x, knots=c(-0.5,0,0.5), Boundary.knots=c(-1,1)), x)

上述代码生成的矩阵并不相同,但是,它们确实具有相同的列空间(在此示例中),这表明如果插入线性模型,拟合系数将不同,但拟合(本身)将是相同。

我的第一个问题是;这是真的吗?

第二个问题是为什么两者不同?

关于第二个问题-何时 detrend指定, Epi::Ns发出警告 fixsl被忽略。

潜入 Epi github NS.r ...在基础 build 中,在调用 Epi::Ns以上与 detrend=T , worker ns.ld()被调用(一个与 splines::ns() 几乎相同的函数),它通过了 c(NA,NA)沿着 splines::spline.desderivs确定矩阵的参数 const ;
const <- splines::spline.des( Aknots, Boundary.knots, 4, c(2-fixsl[1],2-fixsl[2]))$design

这就是 Ns(detrend=T) 中发生的事情之间的区别并调用 ns()以上通过 c(2,2)样条设计为 derivs争论。

所以这就解释了它们是如何不同的,但不是为什么?有没有人解释为什么 fixsl=c(NA,NA)用于代替 fixsl=c(F,F)Epi::Ns() ?

有没有人对第一个问题有证据/或答案?
我认为 const 的正交补的列空间被使用,以便二阶(或所需)导数在边界处为零(通过一般样条基的投影) - 但我不确定这一步,因为我没有深入研究数学,我我只是按照我的“感觉”去做。也许如果我更好地理解这一点,原因是 const 结果的差异。从调用 splineDesign/ spline.des (分别在 ns()Ns() 中)将解释为什么两个矩阵从一开始就不相同,但产生相同的拟合。

最佳答案

fixsl=c(NA,NA)是一个已经修复了一段时间的错误。查看 CRAN Github 镜像上的提交。

我仍然向维护者发送了一封电子邮件,询问是否可以使修复更符合条件,但原则上可以关闭。

关于r - R Epi 包中 Ns() 提供的基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44379351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com