在我研究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)
Run Code Online (Sandbox Code Playgroud)
和
library(splines)
detrend(ns(x, knots=c(-0.5,0,0.5), Boundary.knots=c(-1,1)), x)
Run Code Online (Sandbox Code Playgroud)
上面代码生成的矩阵不一样,但是,它们确实具有相同的列空间(在本例中),表明如果插入线性模型,拟合系数将不同,但拟合(本身)将是相同.
我遇到的第一个问题是; 总的来说这是真的吗?
第二个问题是为什么两者不同?
关于第二个问题 - 何时detrend指定,Epi::Ns给出一个fixsl被忽略的警告.
在深入的Epi的github NS.r在各基础的建设,在该呼叫Epi::Ns以上detrend=T,工人ns.ld()被调用(功能几乎相同的胆splines::ns()),其通过c(NA,NA)沿到splines::spline.des作为derivs自变量中确定矩阵const;
const <- splines::spline.des( Aknots, Boundary.knots, 4, c(2-fixsl[1],2-fixsl[2]))$design
Run Code Online (Sandbox Code Playgroud)
这是传递给splineDesign作为参数的上面Ns(detrend=T)调用和ns()上面调用之间的区别.c(2,2) …
公平警告:这可能会挂起您的操作系统.
*_join()从dplyr当左或右后缀被指定为空(失败''),例如
inner_join(data.frame(x=1, y=2),
data.frame(x=1, y=3),
by='x',
suffix=c('', '.b'))
Run Code Online (Sandbox Code Playgroud)
以下工作正常:
inner_join(data.frame(x=1, y=2),
data.frame(x=1, y=3),
by='x',
suffix=c('.a', '.b'))
Run Code Online (Sandbox Code Playgroud)
同时,S3 generic merge()(base)对空后缀没有问题:
merge(data.frame(x=1, y=2),
data.frame(x=1, y=3),
by='x',
suffixes=c('', '.b'))
Run Code Online (Sandbox Code Playgroud)
dplyr包装信息:
> packageVersion('dplyr')
[1] ‘0.5.0’
Run Code Online (Sandbox Code Playgroud)
R版本信息:
> version
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 3.0
year 2016
month 05
day 03
svn rev 70573
language R
version.string R version 3.3.0 (2016-05-03)
nickname Supposedly Educational
Run Code Online (Sandbox Code Playgroud)