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

线性模型与其他GLM的GAIC计算异常及修正方法求助

模型GAIC计算异常问题排查

数据集

数据集地址:https://raw.githubusercontent.com/yuliaUU/test/main/test.csv

拟合模型的代码

library(gamlss)
library(tidyverse)
data_final <- read_csv("https://raw.githubusercontent.com/yuliaUU/test/main/test.csv")

# 带对数变换的正态模型 
model_1 <-  gamlss(log(Abundance) ~ salinity*avrg_dep, data = data_final, family = NO())
# 对数正态模型 
model_2 <- gamlss(Abundance ~  salinity*avrg_dep, data = data_final,  family = LOGNO())
# 逆高斯分布模型
model_3 <- gamlss(Abundance ~ salinity*avrg_dep, data = data_final,  family = IG())
# Gamma模型
model_4 <- gamlss(Abundance ~ salinity*avrg_dep,  data = data_final, family = GA())

问题背景

我希望用GAIC比较上述四个模型,但model_1的GAIC值与其余模型相差极大。我了解到:

为确保带响应变量变换的线性模型的GAIC具备可比性,需使用乘以雅可比行列式的变换对数似然,手动重新计算GAIC。

手动计算GAIC的尝试代码

Jacobian <- 1/abs(data_final$Abundance)
# 计算对数尺度下的拟合值
fitted_values_log <- predict(model_1)

# 手动计算对数尺度下的残差
residuals_transformed <- log(data_final$Abundance) - fitted_values_log

# 计算残差的标准差
sd_residuals_transformed <- sd(residuals_transformed)

# 计算变换后的对数似然
log_likelihood_transformed <- sum(dnorm(log(data_final$Abundance), mean=fitted_values_log, sd=sd_residuals_transformed, log=TRUE) * Jacobian)

# 计算自由度:模型中的参数数量
df <- length(coef(model_1))

# 手动计算GAIC
GAIC_transformed <- -2 * log_likelihood_transformed + 2 * df
GAIC_transformed

求助

但按上述代码计算出的GAIC数值仍然异常,恳请帮忙排查错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:07:17