我有一些数据,使用受限立方样条进行建模。我在线性模型中使用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
到底在做什么。