nsk
位于 survival
包(package)。 说明
创建自然样条的设计矩阵,使得所得拟合的系数是节点处函数的值。
用法
nsk(x, df = NULL, knots = NULL, intercept = FALSE, b = 0.05,
Boundary.knots = quantile(x, c(b, 1 - b), na.rm = TRUE))
参数
x |
预测变量。允许缺失值。 |
df |
自由度。可以提供 df 而不是 knots; ns() 然后在适当选择的 x 分位数处选择 df - 1 - 截距结(这将忽略缺失值)。默认值 df = NULL,将内部结的数量设置为长度(结)。 |
knots |
定义样条线的断点。默认无结;与自然边界条件一起,这为 x 的线性回归奠定了基础。典型值是一个结的平均值或中位数,更多结的分位数。另请参见 Boundary.knots。 |
intercept |
如果为 TRUE,则截距包含在基础中;默认为假 |
b |
边界结的默认放置。 |
Boundary.knots |
施加自然边界条件并锚定B-spline基础的边界点。除了这些点之外,函数被假定为线性的。如果提供了结和Boundary.knots,则基本参数不依赖于 x。数据可以超出Boundary.knots |
细节
nsk
函数的行为与 ns
函数相同,但有两个例外。第一个是返回的基础使得系数对应于节点处的拟合函数的值。如果是 intercept = FALSE
,则将有 k-1 个系数对应于 k 个节点,它们将是节点 2-k 和节点 1 之间的预测值之差。该基础的主要优点是系数可以直接解释。第二个是线性和非线性分量的测试是简单的对比。
与 ns
的第二个区别是关于边界结的默认位置的观点之一。这里的默认值更接近rms::rcs
函数中的默认值。
此函数是一个尝试,如果是新想法,则尚不能保证将来将其包含在包中。
值
尺寸为 length(x) * df 的矩阵,其中提供 df,或者如果提供结,则 df = length(knots) + 1 + 截距。返回与 kns 参数相对应的属性,并显式给出结、Boundary.knots 等,供 Predict.kns() 使用。
注意
薄的柔性金属或木条称为样条线,是布置平滑曲线的传统方法,例如用于船体或飞机机翼。引脚被放入板上,条带穿过它们,每个引脚都是'knot'。
数学样条是每个结之间的分段函数。线性样条是一组连接的线段,二次样条是一组连接的局部二次函数,被约束具有连续的一阶导数,三次样条是每个节点之间的三次样条,被约束具有连续的一阶和二阶导数,数学样条并不是自然样条的精确表示:作为物理对象,木材或金属条将具有所有阶的连续导数。三次样条曲线很常用,因为它们足够光滑,人眼看起来很自然。
如果数学样条线进一步约束为超出末端结的线性,这通常称为'natural spline',因为木制或金属样条线在超出最后的结后也将是线性的。同一对象的另一个名称是“受限三次样条”,因为它是通过添加更多约束在代码中实现的。给定一个数据点向量和一组结,可以创建一个每个结一列的基础矩阵 X,这样 X 在 y 上的普通回归将适合三次样条函数,因此这些也称为 'regression splines' 。 (我们认为,这三个标签中的一个并不比另一个更好或更差)。
给定一个具有 k 列的基础矩阵 X,对于任何 k x k 非奇异矩阵 T 来说,矩阵 Z= XT 也是一个基础矩阵,并且将产生相同的预测值,但是一组新的系数 gamma = (T-inverse)用贝塔代替贝塔。人们可以选择基函数以使 X 易于构造、使回归在数值上稳定、使测试更容易或基于其他考虑。似乎每个样条库都返回不同的基础集,不幸的是,这使得在包之间进行比较变得困难。这又是一个基组,选择它是为了使系数更容易解释。
例子
# make some dummy data
tdata <- data.frame(x= lung$age, y = 10*log(lung$age-35) + rnorm(228, 0, 2))
fit1 <- lm(y ~ -1 + nsk(x, df=4, intercept=TRUE) , data=tdata)
fit2 <- lm(y ~ nsk(x, df=3), data=tdata)
# the knots (same for both fits)
knots <- unlist(attributes(fit1$model[[2]])[c('Boundary.knots', 'knots')])
sort(unname(knots))
unname(coef(fit1)) # predictions at the knot points
unname(coef(fit1)[-1] - coef(fit1)[1]) # differences: yhat[2:4] - yhat[1]
unname(coef(fit2))[-1] # ditto
## Not run:
plot(y ~ x, data=tdata)
points(sort(knots), coef(fit1), col=2, pch=19)
coef(fit)[1] + c(0, coef(fit)[-1])
## End(Not run)
也可以看看
相关用法
- R neardate 对于数据集 1 中的每个条目,查找数据集 2 中最接近值的索引。
- R nafld 非酒精性脂肪肝
- R nwtco 来自国家肾母细胞瘤研究的数据
- R hoel 小鼠癌症数据
- R survcondense 缩短 (time1, time2) 生存数据集
- R myeloid 急性粒细胞白血病
- R tobin 托宾的托比特数据
- R pseudo 生存的伪值。
- R levels.Surv 返回多状态 Surv 对象的状态
- R rats Mantel 等人的大鼠治疗数据
- R diabetic 糖尿病视网膜病变
- R pbc 梅奥诊所原发性胆汁性胆管炎数据
- R plot.survfit survfit 对象的绘图方法
- R kidney 肾导管数据
- R stanford2 更多斯坦福心脏移植数据
- R print.aareg 打印 aareg 对象
- R pyears 人年
- R residuals.survreg 计算“survreg”对象的残差
- R cgd0 慢性肉芽肿病数据
- R mgus2 单克隆丙种球蛋白病数据
- R model.frame.coxph coxph 对象的 Model.frame 方法
- R brier 计算 Cox 模型的 Brier 分数
- R survSplit 在指定时间分割生存数据集
- R mgus 单克隆丙种球蛋白病数据
- R summary.pyears pyears 对象的汇总函数
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Natural splines with knot heights as the basis.。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。