当前位置: 首页 > news >正文

从0开始学习R语言--Day62--RE插补

对于会有多次测量值的数据,用普通的回归去插补,往往会忽略掉数据个体本身的特点,毕竟多次的测量值其实就代表了数据个体的不稳定性,存在额外的干扰。

而RE的插补原理是结合个体本身的随机效应和群体的固体效应再加上截距进行插补的,比如学生A参加了月考,期中考,但是缺席了期末考,如果要插补期末考的成绩,除了班级的教学质量之外,学生个体的学习能力也很关键,可能存在学生本身是学霸,成很稳定,也可能存在学生是中游水平,期中考试超常发挥,需要综合考量。

以下是一个例子:

library(nlme)
library(ggplot2)
# 生成模拟数据:10个患者,每个患者测量3-5次
set.seed(123)n_patients <- 10
time_points <- 5# 创建数据框
data <- data.frame(patient_id = rep(1:n_patients, each = time_points),time = rep(1:time_points, times = n_patients),treatment = rep(rbinom(n_patients, 1, 0.5), each = time_points)  # 治疗组(0/1)
)# 生成因变量y(含随机效应和噪声)
data$y <- 2 * data$treatment + rep(rnorm(n_patients, sd = 1.5), each = time_points) + rnorm(nrow(data), sd = 1)# 人为制造缺失值(MAR:缺失概率与时间相关)
data$y[data$time > 3 & runif(nrow(data)) > 0.7] <- NA
head(data, 15)# 拟合线性混合模型(LMM)
model <- lme(y ~ treatment + time, random = ~ 1 | patient_id, data = data, na.action = na.exclude)# 预测缺失值(插补)
data$y_imputed <- ifelse(is.na(data$y), predict(model, newdata = data), data$y)# 查看插补结果
head(data[is.na(data$y), c("patient_id", "time", "y", "y_imputed")], 10)ggplot(data, aes(x = time, y = y_imputed, group = patient_id, color = factor(treatment))) +geom_line(alpha = 0.6) +geom_point(aes(y = y), size = 2, na.rm = TRUE) +  # 原始观测点(含缺失)labs(title = "RE插补效果(红色点为原始观测值)", x = "时间", y = "观测值", color = "治疗组") +theme_minimal()

输出:

从图中可以看到,尽管RE能考虑随机效应加固体效应,但是如果样本本身存在离散值或者波动比较大的话,那么不管用什么方法去插补效果都比较差。

http://www.lryc.cn/news/604493.html

相关文章:

  • JVM对象创建与内存分配机制深度剖析
  • 基于Catboost的铁路交通数据分析及列车延误预测系统的设计与实现【全国城市可选、欠采样技术】
  • 【JVM篇11】:分代回收与GC回收范围的分类详解
  • 数据分析师进阶——95页零售相关数据分析【附全文阅读】
  • JVM 性能调优实战:让系统性能 “飞” 起来的核心策略
  • 观远 ChatBI 完成 DeepSeek-R1 大模型适配:开启智能数据分析跃升新篇
  • 【Spring】一文了解SpringMVC的核心功能及工作流程,以及核心组件及注解
  • Linux 日志管理与时钟同步详解
  • GIS工程师面试题
  • GitHub 热门项目 PandaWiki:零门槛搭建智能漏洞库,支持 10 + 大模型接入
  • UG NX二次开发(Python)-根据封闭曲线创建拉伸特征
  • Class27GoogLeNet
  • 实用性方案:高效处理图片拼接的正确打开方式
  • sed编程入门
  • [Agent开发平台] Coze Loop开源 | 前端 | typescript架构API速查
  • Python Pandas.get_dummies函数解析与实战教程
  • 【iOS】weak修饰符
  • 磁盘io查看命令iostat与网络连接查看命令netstat
  • [Qt]QString 与Sqlite3 字符串互动[汉字不乱码]
  • iOS电池寿命与App能耗监测实战 构建完整性能监控系统
  • 常见CMS获取webshell的方法-靶场练习
  • 2025年自动化工程与计算机网络国际会议(ICAECN 2025)
  • C++菱形虚拟继承:解开钻石继承的魔咒
  • 3D空间中的变换矩阵
  • 应用药品 GMP 证书识别技术,实现证书信息的自动化、精准化提取与核验
  • Jupyter Notebook安装使用
  • React 开发中遇见的低级错误
  • 防止飞书重复回调通知分布式锁
  • 从单体到分布式:解锁架构进化密码
  • 基于定制开发开源AI智能名片S2B2C商城小程序的B站私域流量引流策略研究