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

R中如何对包含随机效应的混合效应模型方程求解积分

问题原因

你之前的代码仅通过coefficients(summary(fitmixedmodel))提取了模型的总体固定效应系数,完全没有纳入按Var2分组的随机截距b_i,因此计算的积分仅对应总体平均的固定效应部分,没有体现分组随机效应的贡献。
由于你拟合的是仅含随机截距的混合模型,每个Var2分组的斜率项与固定效应完全一致,仅截距项为「固定效应截距 + 该组随机截距的BLUP(最佳线性无偏预测)值」,只需要在计算时匹配每个观测所属分组的对应截距即可。

修正实现代码
library(nlme)
# 模型拟合部分和原有逻辑一致
fitmixedmodel <-  lme(log(Var1)~I(exp(Var3/Var4))+ I((Var5/Var4)^3),
                      random = ~1|Var2, 
                      data = dados, method="REML")

# 第一步:提取每个Var2分组的完整系数(固定效应+对应组随机截距)
coef_random <- as.data.frame(coef(fitmixedmodel))
coef_random$Var2 <- rownames(coef_random)
colnames(coef_random) <- c("intercept", "beta1", "beta2", "Var2")

# 第二步:修正被积函数,加入Var2分组参数匹配对应随机截距
fmixedmodel <- function(Var5, Var3, Var4, Var2){
  # 匹配当前分组的系数
  cur_coef <- coef_random[coef_random$Var2 == Var2, ]
  # 计算包含随机截距的线性预测值
  linear_pred <- cur_coef$intercept + 
    cur_coef$beta1 * exp(Var3/Var4) + 
    cur_coef$beta2 * ((Var5/Var4)^3)
  
  # --- 重要:对数尺度反变换 ---
  # 模型响应变量是log(Var1),如果dh对应原始尺度的Var1,请取消下一行注释
  # 若需要对数正态无偏预测,可再乘以exp(summary(fitmixedmodel)$sigma^2/2)做修正
  # dh <- exp(linear_pred)
  # 若dh对应对数尺度的预测值,使用下一行
  dh <- linear_pred
  
  (pi/40000)*(Var3^2)*dh
}

# 第三步:修正积分函数,传入Var2参数
vmixedmodel <- function(Var3, Var5, Var4, Var2){ 
  integrate(Vectorize(fmixedmodel), 
            lower = 0.1, 
            upper = Var4, 
            Var3 = Var3, 
            Var4 = Var4,
            Var2 = Var2)$value
}

# 第四步:提取计算子集(需保留Var2分组列),逐行计算积分
volume <- dados[dados$Var5 == 0.1, ]
mixed.vol <- mapply(FUN = vmixedmodel,  
                    Var5 = volume$Var5,
                    Var3 = volume$Var3,
                    Var4 = volume$Var4,
                    Var2 = volume$Var2)
可选场景说明
  • 上述代码计算的是条件积分结果:即针对每个具体Var2分组,使用该组的随机截距计算,适用于需要对应每个样本/分组预测值的场景。
  • 如果需要计算总体边际积分结果(不针对特定分组,反映总体平均水平),由于随机效应b_i ~ N(0, σ_b²),需要将原有单积分扩展为二重积分:外层对b_i按正态分布密度加权积分,内层对Var5积分,不能直接使用固定效应截距代替(对数变换后的非线性映射会带来偏差)。
校验方法

可以通过ranef(fitmixedmodel)查看每个分组的随机截距估计值,对比coef_random$intercept和固定效应截距fixef(fitmixedmodel)[1],即可看到每个组的截距在固定截距基础上的浮动值,确认随机效应已正确纳入。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:09:16