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

使用R包GAMLSS拟合GAM时遇“from必须是有限数”错误求助

解决GAMLSS拟合时的"from must be a finite number"错误

先排查数据核心问题

错误提示里的min(x)返回Inf、max(x)返回-Inf,说明模型用到的某个预测变量在清洗后没有有效非缺失值,或者取值异常。按以下步骤检查:

  • 运行代码确认清洗后数据的变量状态:

    cleaned_dat <- na.omit(mydat)
    # 查看两个预测变量的非缺失值数量
    sum(!is.na(cleaned_dat$month))
    sum(!is.na(cleaned_dat$week_t))
    # 查看变量取值范围
    range(cleaned_dat$month, na.rm = TRUE)
    range(cleaned_dat$week_t, na.rm = TRUE)
    

    如果某变量非缺失值为0,或取值范围返回Inf/-Inf,就是问题根源——pb()样条函数无法处理无有效取值的变量。

  • 检查变量类型:
    pb()针对连续数值变量设计,若month或week_t是因子/字符型,会导致计算异常。用str(cleaned_dat)查看类型,若为因子,转成数值:

    cleaned_dat$month <- as.numeric(as.character(cleaned_dat$month))
    cleaned_dat$week_t <- as.numeric(as.character(cleaned_dat$week_t))
    

调整模型参数

若数据无问题,尝试手动指定pb()的自由度,避免因数据稀疏导致的样条计算错误:

fit_lss <- gamlss(num_travelers ~ pb(month, df = 5) + pb(week_t, df = 10),
                  data = cleaned_dat, family = "PO")

自由度df可根据数据量调整,数值越小样条越平滑,降低计算复杂度。

额外验证方向

  • 确认响应变量num_travelers的有效性:运行sum(!is.na(cleaned_dat$num_travelers)),若结果为0,也会间接引发预测变量的计算异常。
  • 用基础GAM验证数据兼容性:
    library(mgcv)
    fit_gam <- gam(num_travelers ~ s(month) + s(week_t), data = cleaned_dat, family = poisson())
    
    若该模型能正常运行,说明问题出在GAMLSS的pb()参数设置上,可进一步尝试指定knots参数自定义样条节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:07:22