lrm公式与rcs

时间:2017-08-07 20:49:57

标签: r

我试图使用rms :: lrm函数来拟合逻辑回归模型,我将rcs函数应用于一个变量,并使用数据集中的其余变量。

例如,我想执行以下操作:

fit = rms::lrm(y~ rcs(a) + ., data=myData, x=TRUE, y=TRUE)

但是,这会返回以下错误:

  

if(!length(fname)||!any(fname == zname)){:缺失值时出错   需要TRUE / FALSE

我已经尝试了几种不同的公式排列,但没有别的产生错误。

以下示例可以正常运行:

fit = rms::lrm(y~ rcs(a), data=myData, x=TRUE, y=TRUE)
fit = rms::lrm(y~ ., data=myData, x=TRUE, y=TRUE)

是否有任何方便的方法将rcs()应用于特定变量并仍使用“。”运算符,还是我需要手动输出所有其他变量,因为我使用的是rcs()?

谢谢!

1 个答案:

答案 0 :(得分:1)

它不使用“。”运算符,但我有时使用粘贴/折叠来生成要包含的变量列表。在你的情况下像这样:

fullformula <- as.formula(paste0('y~rcs(a) + ', paste(setdiff(colnames(data), 'a'), collapse=" + ")))

或作为一行:

id  init_cont  family  description  value
1   K          S       impacteach   1
1   K          S       impactover   3
1   K          S       read         2
2   I          S       impacteach   2
2   I          S       impactover   4
2   I          S       read         1
3   K          D       impacteach   3
3   K          D       impactover   5
3   K          D       read         3