![](/img/trans.png)
[英]How to extract the underlying coefficients from fitting a linear b spline regression in R?
[英]How to extract the slope of the lines before and after the knot point when fitting a spline regression?
目标:我希望在样条回归(分段线性)model中提取结点前后的直线斜率(即提取拐点前后的两个线性模型)。
示例 dataframe,其中在 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))
我使用以下代码在 session 7 处安装了一个带有单个结点的样条回归(注意,我没有使用任何与 package 相关的“样条”来实现此目的):
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
您可以从 model 系数中获取斜率:第一部分为coef(reg)[2]
,第二部分为sum(coef(reg)[2:3])
。
您的 model 具有三个拟合系数:
coef(reg)
# (Intercept) session X
# 1.1095238 0.1321429 -0.1416667
前两个(截距、会话)为您提供第一部分的截距和斜率,如果您将第三个 (X) 添加到第二个,您将获得第二部分的斜率。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.