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

求助:修复R语言GAMLSS/GAMLSS.inf包运行报错问题

问题1:cannot coerce class "function" to a data.frame 报错解决

核心原因

错误使用gamlssInf0to1的参数格式:该函数没有y参数,额外传入y=slf导致参数解析混乱;同时mu.formula里的ga(~s(...))写法不符合ga()语法要求。

修正后的代码

library(gamlss)
library(gamlss.inf)
library(gamlss.add)
data(lungFunction)

A <- lungFunction
gen.Family("SST", "logit")
# 修正:去掉y参数,将响应变量写入formula;修正ga()的写法
mf1 <- gamlssInf0to1(formula = slf ~ ga(log(height), log(age)),
                     sigma.formula = ~pb(log(age)),
                     nu.formula = ~pb(log(age)),
                     tau.formula = ~pb(log(age)),
                     xi1.formula = ~pb(log(age)) + pb(log(height)),
                     family = logitSST,
                     data = A,
                     n.cyc = 100,
                     trace = TRUE)

额外说明

  • ga()是gamlss的自适应平滑项,直接传入变量即可,不需要嵌套s()(若需二维平滑,ga(var1, var2)已支持);
  • 若偏好使用mgcv的s()平滑,需先加载mgcv包,写法改为formula = slf ~ s(log(height), log(age)),无需嵌套ga()。

问题2:missing value where TRUE/FALSE needed 报错解决

核心原因

拟合过程中模型偏差值(G.dev)出现NA,导致循环判断条件失效,通常由语法错误、数据缺失或模型与数据不匹配导致。

分步解决

  1. 修正公式语法
    同样错误使用了ga(~s(...))的嵌套写法,改为标准格式:

    # 写法1:用gamlss自带的ga()自适应平滑
    b4 <- gamlss(slf ~ ga(log(height), log(age)), data=A, family=BI)
    # 写法2:用mgcv的s()平滑(需先library(mgcv))
    b4 <- gamlss(slf ~ s(log(height), log(age)), data=A, family=BI)
    
  2. 清理缺失值
    检查并移除数据中的NA:

    A_clean <- na.omit(A)
    b4 <- gamlss(slf ~ ga(log(height), log(age)), data=A_clean, family=BI)
    
  3. 验证模型与数据匹配性

    • BI(Beta-Inflated)分布要求响应变量slf在[0,1]区间,且存在0或1的取值;若slf仅在(0,1)之间,改用BE(Beta)族:
      b4 <- gamlss(slf ~ ga(log(height), log(age)), data=A_clean, family=BE)
      
  4. 调整拟合参数
    若仍报错,尝试增加循环次数或开启追踪查看拟合过程:

    b4 <- gamlss(slf ~ ga(log(height), log(age)), data=A_clean, family=BI, 
                 n.cyc=100, trace=TRUE)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:15:34