You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含对数变换线性样条的混合效应模型可视化结果异常求助

对数变换变量的线性样条混合效应模型可视化异常

问题说明

在可视化包含以下两个要素的混合效应模型结果时出现异常:

  • 对连续变量Arns做以2为底的对数变换
  • 将变换后的变量作为线性样条纳入模型

当前生成的图像为杂乱无章的折线,而预期应呈现分段线性的平滑样条曲线,且与原始数据点的趋势匹配。

模型拟合代码

data_df$School_ID  <- as.factor(data_df$School_ID) 
data_df$Student_ID<- as.factor(data_df$Student_ID)

# 拟合样条模型
ls_m1 <- lme(fixed = Y ~ School_ID + 
               lspline::lspline(log(Arns,2),
                                log(0.058,2)
                                ),
             random = ~1 | Student_ID,
             data = data_df
)

当前可视化代码

data_df$predict <- predict(ls_m1)

ggplot(data_df, aes(log(Arns,2), predict, color = factor(Student_ID))) +
  geom_line(color = 'black') +
  geom_point(data = data_df, aes(y = Y)) +
  guides(color = guide_none())

问题根源

  1. 数据未按自变量排序:原始数据中log(Arns,2)未按从小到大的顺序排列,geom_line()会严格按照数据框的原始顺序连接点,导致折线混乱,无法体现线性样条的分段趋势。
  2. 拟合值的展示逻辑偏差:若要展示整体的固定效应拟合曲线,无需按Student_ID分组,否则会因数据顺序问题进一步打乱线条。

解决方案

方案1:展示整体固定效应拟合曲线

先对数据按对数变换后的Arns排序,再绘图:

# 按log(Arns,2)从小到大排序数据
data_df_sorted <- data_df[order(log(data_df$Arns,2)), ]

ggplot(data_df_sorted, aes(log(Arns,2), predict)) +
  geom_line(color = 'black') +
  geom_point(aes(y = Y)) +
  theme_bw()

方案2:展示每个学生的随机效应拟合曲线

如果需要呈现个体层面的拟合趋势,需指定predict()的level参数提取随机效应拟合值,再排序绘图:

# 提取包含随机效应的个体拟合值
data_df$predict_re <- predict(ls_m1, level = 1)
# 按自变量排序数据
data_df_sorted <- data_df[order(log(data_df$Arns,2)), ]

ggplot(data_df_sorted, aes(log(Arns,2), predict_re, color = Student_ID)) +
  geom_line() +
  geom_point(aes(y = Y)) +
  guides(color = guide_legend(title = "学生ID")) +
  theme_bw()

额外优化:标注样条节点

可以添加虚线标注线性样条的节点位置(对应原始Arns=0.058):

ggplot(data_df_sorted, aes(log(Arns,2), predict)) +
  geom_line(color = 'black') +
  geom_point(aes(y = Y)) +
  geom_vline(xintercept = log(0.058,2), linetype = "dashed", color = "red") +
  theme_bw()

内容的提问来源于stack exchange,提问作者Bridgeport BaaS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:07:19