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

如何基于GAMLSS模型预测的mu、sigma、nu、tau参数获取因变量预测值?

用GAMLSS预测BCPE分布的因变量值(住院时长)

方法一:直接用训练好的模型预测(更简便)

如果已经有训练完成的GAMLSS模型,无需先提取四个参数,直接调用内置函数即可:

  • 预测均值(因变量的期望住院时长):
library(gamlss)

# 假设训练好的模型为model_bcpe,new_data是待预测的新数据集
pred_mean <- predict(model_bcpe, newdata = new_data, type = "response")
  • 预测中位数(更适合偏态的住院时长数据):
pred_median <- quantile(model_bcpe, newdata = new_data, q = 0.5)

方法二:基于已提取的mu/sigma/nu/tau参数预测

如果已经通过predictAll()得到了四个参数的预测值(存放在pred_params数据框中,列名为mu、sigma、nu、tau),可以用以下方式生成预测结果:

  1. 生成随机模拟的住院时长
    适合需要模拟多个可能结果的场景:
# 生成与新数据行数一致的随机预测值
pred_lengths <- rBCPE(nrow(pred_params),
                      mu = pred_params$mu,
                      sigma = pred_params$sigma,
                      nu = pred_params$nu,
                      tau = pred_params$tau)
  1. 计算中位数预测值
    利用BCPE分布的分位数函数直接得到稳健的点估计:
pred_median <- qBCPE(0.5,
                     mu = pred_params$mu,
                     sigma = pred_params$sigma,
                     nu = pred_params$nu,
                     tau = pred_params$tau)
  1. 计算均值预测值
    BCPE分布的均值没有解析解,需通过数值积分计算:
# 定义单个BCPE分布的均值计算函数
bcpe_mean <- function(mu, sigma, nu, tau) {
  integrate(function(x) x * dBCPE(x, mu=mu, sigma=sigma, nu=nu, tau=tau),
            lower = 0, upper = Inf)$value
}

# 批量计算所有样本的均值
pred_mean <- mapply(bcpe_mean,
                    mu = pred_params$mu,
                    sigma = pred_params$sigma,
                    nu = pred_params$nu,
                    tau = pred_params$tau)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:33:19