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

从R调用Julia的GeneralizedLinearMixedModel报错求助

从R调用Julia的GeneralizedLinearMixedModel时报错的解决方向

背景

我尝试从R中调用Julia处理大型数据集,最初使用jglmm但生成的对象难以操作,改用JellyMe4调用LinearMixedModel处理线性模型效果良好。参考示例修改了jmer函数解决deparse相关问题后,尝试编写jmergen函数以调用GeneralizedLinearMixedModel(后续需使用Gamma分布和IdentityLink连接函数),但基础版本运行报错。

可复现代码

library(JuliaCall)
options(JULIA_HOME = "/usr/local/bin")

j = julia_setup()
julia_library("MixedModels")
julia_library("RCall")
julia_library("JellyMe4")

# 参考示例修改后的jmer函数
jmer <- function(formula, data, REML=TRUE){
  # 需要更细致的deparse处理避免公式问题
  jf <- paste(deparse(formula, width.cutoff = 500), collapse="")
  jreml = ifelse(REML, "true", "false")
  
  julia_assign("jmerdat",data)
  julia_command(sprintf("jmermod = fit!(LinearMixedModel(@formula(%s),jmerdat),REML=%s);",jf,jreml))
  
  julia_eval("robject(:lmerMod, Tuple([jmermod,jmerdat]));",need_return="R")
}

# 尝试编写的jmergen函数
jmergen <- function(formula, data, REML=TRUE){
  jf <- paste(deparse(formula, width.cutoff = 500), collapse="")
  jreml = ifelse(REML, "true", "false")
  
  julia_assign("jmerdat",data)
  julia_command(sprintf("jmermod = fit!(GeneralizedLinearMixedModel(@formula(%s),jmerdat),REML=%s);",jf,jreml))
  
  julia_eval("robject(:lmerMod, Tuple([jmermod,jmerdat]));",need_return="R")
}

# 正常运行的线性混合模型
m1 <- jmer(Reaction ~ Days + (Days|Subject),lme4::sleepstudy)

# 报错的广义线性混合模型
m2 <- jmergen(Reaction ~ Days + (Days|Subject),lme4::sleepstudy)

错误信息

Error: Error happens in Julia.
MethodError: no method matching GeneralizedLinearMixedModel(::StatsModels.FormulaTerm{StatsModels.Term, Tuple{StatsModels.Term, StatsModels.FunctionTerm{typeof(|), var"#3#4", (:Days, :Subject)}}}, ::DataFrames.DataFrame)
Closest candidates are:
GeneralizedLinearMixedModel(::StatsModels.FormulaTerm, ::Any, !Matched::Distributions.Distribution) at ~/.julia/packages/MixedModels/jPOIo/src/generalizedlinearmixedmodel.jl:329
GeneralizedLinearMixedModel(::StatsModels.FormulaTerm, ::Any, !Matched::Distributions.Distribution, !Matched::GLM.Link; wts, offset, contrasts) at ~/.julia/packages/MixedModels/jPOIo/src/generalizedlinearmixedmodel.jl:329
GeneralizedLinearMixedModel(::StatsModels.FormulaTerm, !Matched::NamedTuple{names, T} where {N, names, T<:Tuple{Vararg{AbstractVector, N}}}, !Matched::Normal, !Matched::IdentityLink; wts, offset, contrasts) at ~/.julia/packages/MixedModels/jPOIo/src/generalizedlinearmixedmodel.jl:343
...
Stacktrace:
[1] top-level

我显然犯了基础错误导致找不到匹配的GeneralizedLinearMixedModel方法,经过多番尝试仍未解决,恳请指点方向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:15:59