如何编写R循环或函数计算拟合模型预测值的标准误
实现代码
首先将不需要重复计算的固定项提前提取,避免冗余计算:
# 提取模型固定的方差-协方差矩阵 s <- vcov(zib) # 定义基础协变量向量,第19位为time的占位位 base_C <- c(0,0,0,0,0,0,0.0,0,0,0,0,0,0, 0, 1,0,0,0,NA,21.8,4.23,0.917,0,0,0,40.2,4.78)
方法1:循环实现(逻辑最直观)
# 初始化标准误列 newdat2$se <- NA_real_ # 逐行遍历计算 for (i in seq_len(nrow(newdat2))) { current_C <- base_C # 替换为当前行的time取值 current_C[19] <- newdat2$time[i] # 计算标准误并存入对应行 newdat2$se[i] <- sqrt(t(current_C) %*% s %*% current_C) }
方法2:自定义函数+向量化实现(代码更简洁)
# 封装单个time值的标准误计算逻辑 calc_se <- function(time_val) { current_C <- base_C current_C[19] <- time_val return(as.numeric(sqrt(t(current_C) %*% s %*% current_C))) } # 批量计算所有行的标准误 newdat2$se <- sapply(newdat2$time, calc_se)
注意事项
运行前请核对你拟合的zib模型的系数顺序(可运行coef(zib)查看),确认time对应的系数位置确实为第19位,避免因协变量顺序匹配错误导致结果异常。
内容的提问来源于stack exchange,提问作者Pat Taggart
相关产品推荐
相关产品推荐

