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

GAMLSS模型有效性测试代码适用性及模型评估方法问询

代码适用性分析

你的代码采用训练集-测试集拆分+预测误差指标的思路,完全适用于GAMLSS模型的外部预测有效性测试——这是评估模型泛化能力的核心方法之一。不过GAMLSS作为关注整个分布拟合的模型,不能只依赖均值层面的预测误差,还需要结合分布拟合的诊断来全面判断模型是否合适。

代码优化与补充

现有代码只覆盖了均值预测的误差评估,下面补充GAMLSS特有的诊断代码,同时优化部分细节:

library(tidyverse)
library(gamlss) # 补充加载gamlss核心包

# 读取数据
df <- read.csv("https://raw.githubusercontent.com/kinokoberuji/R-Tutorials/master/LMSmodelGAMLSS.csv", sep=";") %>% as_tibble()

set.seed(1)
# 训练测试拆分(原逻辑保留,保证可复现)
sample <- sample(c(TRUE, FALSE), nrow(df), replace=TRUE, prob=c(0.7,0.3))
train  <- df[sample, ]
test   <- df[!sample, ]

# 拟合GAMLSS模型(原代码逻辑保留)
m1 <- gamlss(TLC ~ Height + pb(Age), 
             sigma.fo = ~pb(Age), 
             nu.fo = ~Age, 
             family = BCCGo(mu.link = "identity"),
             data=train)

# ---------------------- 1. 外部预测误差评估(优化计算逻辑) ----------------------
y_pred <- predict(m1, newdata=test, type="response")
y_true <- test$TLC

# 用向量运算简化指标计算,提升效率
MAE <- mean(abs(y_true - y_pred))
MSE <- mean((y_true - y_pred)^2)
MAPE <- 100 * mean(abs((y_true - y_pred)/y_true))
R2 <- 1 - MSE / var(y_true)

cat("外部预测误差指标:\n")
print(list(MAE=round(MAE,3), MSE=round(MSE,3), MAPE=round(MAPE,2), R2=round(R2,3)))

# ---------------------- 2. GAMLSS特有的分布拟合诊断 ----------------------
# 查看模型参数显著性
cat("\n模型参数显著性:\n")
summary(m1)

# 绘制gamlss自带诊断图(含拟合曲线、残差趋势等)
par(mfrow=c(2,2))
plot(m1)

# 分位数残差分析(GAMLSS核心诊断指标,应近似正态分布)
q_resid <- residuals(m1, type="quantile")
par(mfrow=c(1,2))
hist(q_resid, main="分位数残差直方图", xlab="分位数残差")
qqnorm(q_resid, main="分位数残差Q-Q图")
qqline(q_resid)

# ---------------------- 3. 测试集分布拟合验证(可选) ----------------------
# 预测测试集所有分布参数
test_fit <- predictAll(m1, newdata=test)
# 对比真实值与预测中位数的拟合效果
test$pred_median <- qBCCGo(0.5, mu=test_fit$mu, sigma=test_fit$sigma, nu=test_fit$nu)
ggplot(test, aes(x=TLC, y=pred_median)) +
  geom_point(alpha=0.6) +
  geom_abline(slope=1, intercept=0, color="red", linewidth=1) +
  labs(title="测试集真实值vs预测中位数", x="真实TLC", y="预测中位数")
模型合适性判断标准

1. 外部预测误差指标

  • MAE/MSE/MAPE:数值越小,说明预测值与真实值的偏差越小,模型预测精度越高;若对比多个候选模型,这类指标更低的模型更优。
  • R²:越接近1,模型能解释的因变量变异越多,预测能力越强;一般R²>0.7可认为模型预测能力较好,具体阈值依领域需求调整。

2. GAMLSS分布拟合诊断

  • 参数显著性:查看summary(m1)输出,若某分布参数(mu/sigma/nu)对应的自变量项p值>0.05,说明该项对分布拟合无显著贡献,可考虑简化模型。
  • 分位数残差:
    • 直方图需近似正态分布(对称无偏态);
    • Q-Q图上的点应基本落在直线上,无明显偏离;
    • 残差不应随自变量(Age/Height)或预测值出现明显趋势(参考plot(m1)的残差图)。
  • 拟合曲线合理性:plot(m1)中的拟合曲线(如mu随Age的变化趋势)需符合业务常识或数据实际规律。

3. 多模型对比

若有多个候选模型(更换分布族、调整参数公式等),可综合对比预测误差、AIC/BIC(数值越小拟合效率越高)、残差诊断结果,选择最优模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:10:22