从 R 中的 cox 回归中的惩罚样条中提取结的位置

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

我正在计算具有两个预测变量(var1 和 var2)的 cox 模型。 var1 是数值变量,无需任何修改即可进入 cox 回归。另一方面,var2 在转换为惩罚样条后进入 cox 回归。请参阅以下代码:

library(splines)
fit <- coxph(Surv(time2event, Mortality)~ var1 + pspline(var2,2), data = data)
summary(fit)

汇总函数的输出如下:

                          coef    se(coef) se2      Chisq DF   p      
var1                      0.05215 0.005283 0.005266 97.42 1.00 5.6e-23
pspline(var2, 2), linea   0.43643 0.065597 0.065597 44.26 1.00 2.9e-11
pspline(var2, 2), nonli                              2.90 1.07 9.7e-02

            exp(coef) exp(-coef) lower .95 upper .95
var1            1.054   0.949191    1.0427     1.064
ps(var2)3       3.179   0.314526    0.7537    13.413
ps(var2)4      10.098   0.099031    1.0029   101.670
ps(var2)5      29.274   0.034160    2.2205   385.929
ps(var2)6      61.328   0.016306    4.8178   780.665
ps(var2)7     101.100   0.009891    8.0312  1272.687
ps(var2)8     136.941   0.007302    9.7441  1924.514
ps(var2)9     182.140   0.005490    8.0620  4115.002

有人可以解释如何解释输出吗?是否可以提取在惩罚样条中选择的结的位置?

谢谢!

r spline cox-regression
1个回答
0
投票

对此类效应的解释并不是这里的主题(评论中提出了交叉验证的链接),尽管我可以说各个基函数不是太有用。您宁愿检查非线性参数的联合测试(打印输出中的第 2-3 行),然后使用

predict
等方法为您重建实际样条线。

直接获取结似乎是不可能的,尽管未导出但仍记录在案的一些代码

survival:::psplineinverse
似乎表明在某一时刻这是样条线对象的一个属性。 (通过版本控制的魔力,我们可以看到该属性在提交 f5a8c35b 中添加,并在提交 0ce58fc6 中再次删除,两者都可以追溯到十多年前)

接下来最好的事情是查看源代码的相关部分

pspline_knots <- function(x, df=4, nterm=2*df, degree=3,
                          Boundary.knots=range(x), ...) {
  if (df == 0) nterm <- 15 else nterm <- round(nterm)
  dx <- (Boundary.knots[2] - Boundary.knots[1])/nterm
  knots <- c(Boundary.knots[1] + dx * ((-degree):(nterm - 1)),
             Boundary.knots[2] + dx * (0:degree))
  return(knots)
}

请注意,这并没有实现原始函数的所有输入验证。

© www.soinside.com 2019 - 2024. All rights reserved.