【发布时间】:2017-05-07 09:24:48
【问题描述】:
我有一些数据正在使用受限三次样条进行建模。我正在使用rms 包中的rcs 转换函数为线性模型生成转换后的变量。这是一个使用 5 节的示例。
library('rms')
my_df <- data.frame(
y = -4 * -100:100 + -1.5 * (-100:100)**2 + 3 * (-100:100)**3 + rnorm(201, 0, 1e5),
x = -100:100
)
mod <- lm(y ~ rcs(x, 5), data = my_df)
在拟合数据后,我想为 x 值的特定域找到预测的 y 值。这是我现在正在做的事情:
new_data <- data.frame(x = -3:3)
predict(mod, newdata = new_data)
但是,这会生成一条警告消息:
Warning message:
In rcspline.eval(x, nk = nknots, inclx = TRUE, pc = pc, fractied = fractied) :
5 knots requested with 7 unique values of x. knots set to 5 interior values.
这是什么意思,发生了什么?我预计结位置应该已经在mod 中定义,所以我不明白为什么它似乎试图为我给它的七个x 值寻找新结。我可以通过在new_data 中提供更多x 值来避免警告消息,而忽略我不需要的值,但我担心predict 实际在做什么。
【问题讨论】: