Macc0927 2021-01-22 00:16 采纳率: 0%
浏览 8

R语言 EM 伽马 建模时报错了 请教各位大神,问题出在那里?

df是包含TP1NP一个变量的数据框

tsh.hist <- hist(df1$TP1NP, breaks = seq(0,max(df1$TP1NP) + 0.1, 0.1), plot = FALSE)
tsh.df <- data.frame(tsh = tsh.hist$breaks[2:length(tsh.hist$breaks)],freq = tsh.hist$counts)
tsh.df <- as.mixdata(tsh.df)
fitg <- mix(tsh.df,
            mixparam(c(0.1,2,6),c(0.1,1,2)),
            constr = list(
              conpi = "NONE",
              conmu = "MFX",
              consigma = "SFX",
              fixpi = NULL,
              fixmu = c(FALSE,FALSE, FALSE),
              fixsigma = c(FALSE,FALSE, FALSE)),
            "gamma", emsteps = 1)

fitg.coef <- coef(fitg, natpar = TRUE) -> tshg

报错:Error in nlm(mixlike, lmixdat = mixdat, lmixpar = fitpar, ldist = dist,  :    参数里不能有遗漏值 

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 14:53
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你遇到了参数缺失的问题。在R语言中,如果你尝试使用nlm()函数来求解混合模型的参数时,如果参数中有遗漏值(即某些参数没有被指定),则可能会出现错误。

    解决这个问题的方法是确保你的混合模型参数列表中的每个参数都是完整的。你可以通过检查参数列表中的每个元素是否为NULL来确定这一点。如果没有遗漏值,则可以继续运行你的模型。

    以下是一个例子:

    # 定义混合模型参数
    fitpar <- list(
      mixparam=c(0.1,2,6),
      conpi="NONE",
      conmu="MFX",
      consigma="SFX",
      fixpi=NULL,
      fixmu=c(FALSE,FALSE, FALSE),
      fixsigma=c(FALSE,FALSE, FALSE)
    )
    
    # 使用nlm()函数求解混合模型参数
    fitg <- mix(tsh.df,
                mixparam(fitpar),
                constr=list(conpi="NONE",conmu="MFX",consigma="SFX"),
                "gamma",
                emsteps=1)
    
    # 获取参数系数
    coef(fitg, natpar = TRUE)
    

    在这个例子中,我们首先定义了混合模型的参数列表,并且确保每个参数都是完整的。然后,我们使用nlm()函数来求解这些参数。最后,我们获取了参数系数。

    请注意,这个方法只适用于混合模型参数列表中的所有参数都是完整的场景。如果有一些参数是未指定的,那么你可能需要修改你的数据或混合模型以包括这些参数。

    评论

报告相同问题?