目标:我希望在样条回归(分段线性(模型中提取节点前后的直线的斜率(即提取拐点前后的两个线性模型(。
在15个会话中记录DV(平均块级别(的示例数据帧:
structure(list(subject = c("participant_003", "participant_003", "participant_003", "participant_003", "participant_003", "participant_003", "participant_003", "participant_003", "participant_003", "participant_003", "participant_003","participant_003", "participant_003", "participant_003", "participant_003"), group_no = c("group1", "group1", "group1","group1", "group1", "group1", "group1", "group1", "group1", "group1","group1", "group1", "group1", "group1", "group1"), session = 1:15,mean_block_level = c(1.3, 1.2, 1.6, 1.8, 1.6, 1.9, 2.2, 2,
1.8, 1.9, 2.2, 2.1, 1.9, 1.9, 2)), class = "data.frame", row.names = c(NA,-15L))
我在第7节中使用以下代码拟合了一个具有单个节点的样条回归(注意,我没有使用任何与"样条"相关的包来实现这一点(:
df$X_bar <- ifelse(df$session>7,1,0)
df$diff <- df$session - 7
df$X <- df3$diff*df$X_bar
df
reg <- summary(lm(mean_block_level~ session + X, data = df))
summary(reg)
reg <-lm(mean_block_level~ session + X, data = df)
plot(mean_block_level ~ session, df)
lines(df$session, predict(reg), col = 'green')
关于这个主题的现有帖子倾向于使用不同的包来创建它们的样条曲线模型,因此不能完全回答我的问题(例如,
https://stackoverflow.com/questions/29499686/how-to-extract-the-underlying-coefficients-from-fitting-a-linear-b-spline-regres
您可以从模型系数中获得斜率:第一部分为coef(reg)[2]
,第二部分为sum(coef(reg)[2:3])
。
您的模型有三个拟合系数:
coef(reg)
# (Intercept) session X
# 1.1095238 0.1321429 -0.1416667
前两个(Intercept,session(为您提供了第一部分的截距和斜率,如果将第三个(X(添加到第二个,则可以获得第二部分的斜率。