palday / jellyme4.jl Goto Github PK
View Code? Open in Web Editor NEWRCall support for MixedModels.jl and lme4
License: MIT License
RCall support for MixedModels.jl and lme4
License: MIT License
This should be straightforward with a term re-write. ||
just results in a formula where each RE LHS is gets its own RE unit. zerocorr
might require figuring out the names of the resultant model columns and then using ||
on that so that it doesn't look like a single factor.
||
zerocorr
with 2 levels or continuouszerocorr
with more than 2 levelzerocorr!
? (this would have to be detected from the RE structure itself and not the formula)zerocorr!
is getting removedIn lme4 it is sometimes necessary and justified to explicity set control=lmerControl(check.nobs.vs.nRE="ignore")
. Currently, when moving such a MixedModel object to R , this triggers:
ERROR: REvalError: Error: number of observations (...); the random-effects parameters and the residual variance (or scale parameter) are probably unidentifiable
I would appreciate if this control parameter could be turned off or changed to a warning, possibly there are also other parameters of this kind.
This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml
to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix
on this issue.
I'll open a PR within a few hours, please be patient!
I'm having an issue getting model fits to R. I'm running a Generalized Linear Mixed Model with Bernoulli family. I get the following error from rput:
Error: Error happens in Julia.
ArgumentError: You must use a tuple with the data -- (MixedModel, DataFrame) -- not just a model
Stacktrace:
[1] sexp(#unused#::Type{RCall.RClass{:merMod}}, x::GeneralizedLinearMixedModel{Float64, Bernoulli{Float64}})
@ JellyMe4 ~/.julia/packages/JellyMe4/7jeDZ/src/merMod.jl:17
[2] sexp(s::GeneralizedLinearMixedModel{Float64, Bernoulli{Float64}})
@ RCall ~/.julia/packages/RCall/gOwEW/src/convert/default.jl:214
[3] setindex!(s::Ptr{VecSxp}, value::GeneralizedLinearMixedModel{Float64, Bernoulli{Float64}}, key::Int64)
@ RCall ~/.julia/packages/RCall/gOwEW/src/methods.jl:195
[4] sexp(#unused#::Type{RCall.RClass{:list}}, a::Vector{Any})
@ RCall ~/.julia/packages/RCall/gOwEW/src/convert/base.jl:300
[5] sexp
@ ~/.julia/packages/RCall/gOwEW/src/convert/default.jl:214 [inlined]
[6] sexp(x::Tuple{GeneralizedLinearMixedModel{Float64, Bernoulli{Float64}}, DataFrame})
@ Main.JuliaCall ~/Library/R/arm64/4.3/library/JuliaCall/julia/co
I also tried with the example from the JellyMe4 readme (m_machines and I get the same issue:
Error: Error happens in Julia.
ArgumentError: You must use a tuple with the data -- (MixedModel, DataFrame) -- not just a model
Stacktrace:
[1] sexp(#unused#::Type{RCall.RClass{:merMod}}, x::LinearMixedModel{Float64})
@ JellyMe4 ~/.julia/packages/JellyMe4/7jeDZ/src/merMod.jl:17
[2] sexp(s::LinearMixedModel{Float64})
@ RCall ~/.julia/packages/RCall/gOwEW/src/convert/default.jl:214
[3] setindex!(s::Ptr{VecSxp}, value::LinearMixedModel{Float64}, key::Int64)
@ RCall ~/.julia/packages/RCall/gOwEW/src/methods.jl:195
[4] sexp(#unused#::Type{RCall.RClass{:list}}, a::Vector{Any})
@ RCall ~/.julia/packages/RCall/gOwEW/src/convert/base.jl:300
[5] sexp
@ ~/.julia/packages/RCall/gOwEW/src/convert/default.jl:214 [inlined]
[6] sexp(x::Tuple{LinearMixedModel{Float64}, DataFrame})
@ Main.JuliaCall ~/Library/R/arm64/4.3/library/JuliaCall/julia/convert.jl:8
[7] setindex!(e::Ptr{EnvSxp}, v::Tuple{LinearMixedModel{Float64}, DataFrame}, s::Symbol)
@ RCall ~/.julia/p
I'm running julia from a quarto document mostly written in R in case that matters.
I'm not sure if this is a RCall or JellyMe4 issue, but I can't use rput after a package update. I get an error about an unexpected '&'. I'm not able to find the & in the data file but I'm not doing anything different than before. Thanks for any guidance on this issue.
rt_m1j = (rt_m1, RTdata);
@rput rt_m1j
ERROR: RParseError: Error: unexpected '&'
Here is my package list:
julia> Pkg.status()
Status `~/.julia/environments/v1.7/Project.toml
[69666777] Arrow v2.3.0
[336ed68f] CSV v0.10.4
[a93c6f00] DataFrames v1.3.4
[0b91fe84] DisplayAs v0.1.6
[c91e804a] Gadfly v1.3.4
[19ac8677] JellyMe4 v0.2.6
[ff71e718] MixedModels v4.6.4
[6f49c342] RCall v0.13.13
[df47a6cb] RData v0.8.32cb19f9e] StatsKit v0.3.1
Functionality:
Tests:
The following dataset contains ":" within a column of strings subid_unique
and thus cannot be passed to R
using CSV, RCall
mb1 = CSV.read(
download("https://raw.githubusercontent.com/manybabies/mb1-analysis-public/fa7e77c026a4dc0b0bb7e78d3bf3771c9bc2f7cb/processed_data/03_data_trial_main.csv"),
missingstrings=["NA","N/A"],
truestrings=["TRUE"],
falsestrings=["FALSE"])
@rput mb1
using MixedModels, JellyMe4
m1form = @formula log(looking_time) ~ trial_type * method +
trial_type * trial_num +
age_mo * trial_num +
trial_type * age_mo * nae +
(1 | subid_unique) +
(1 | lab);
m1 = fit(MixedModel, m1form, mb1, REML=true)
m1_lmm = Tuple([m1, mb1]);
@rput m1_lmm
`ERROR: RParseError: Error: unexpected ':'`
Hi,
I have been running my statistical model the first time in Julia and want to save my model in order to load it into R for further plotting etc. However, I have issues when it comes to use @rput.
This is my code:
fit_uV = @formula uV ~ (saggitality + laterality + condition + mention + bepoch) +
(1 + condition + mention | subj) +
(1 + mention | Report / text);
model_lme4 = fit(MixedModel, fit_uV, data)
model_for_r = (model_lme4, data);
@rput model_for_r
and this is the error message that I receive:
julia> @rput model_for_r
ERROR: type InteractionTerm has no field sym
Stacktrace:
[1] convert_julia_to_r(f::StatsModels.FormulaTerm{StatsModels.ContinuousTerm{Float64}, Tuple{StatsModels.MatrixTerm{Tuple{StatsModels.InterceptTerm{true}, StatsModels.CategoricalTerm{DummyCoding, Matrix{Float64}, 2}, StatsModels.CategoricalTerm{DummyCoding, Matrix{Float64}, 2}, StatsModels.CategoricalTerm{DummyCoding, Matrix{Float64}, 1}, StatsModels.CategoricalTerm{DummyCoding, Matrix{Float64}, 4}, StatsModels.ContinuousTerm{Float64}}}, RandomEffectsTerm, RandomEffectsTerm, RandomEffectsTerm}})
@ JellyMe4 ~/.julia/packages/JellyMe4/PqjLf/src/formula.jl:0
[2] sexp(#unused#::Type{RCall.RClass{:lmerMod}}, x::Tuple{LinearMixedModel{Float64}, DataFrame})
@ JellyMe4 ~/.julia/packages/JellyMe4/PqjLf/src/lmerMod.jl:93
[3] sexp
@ ~/.julia/packages/RCall/gOwEW/src/convert/default.jl:0 [inlined]
[4] setindex!(e::Ptr{EnvSxp}, v::Tuple{LinearMixedModel{Float64}, DataFrame}, s::Symbol)
@ RCall ~/.julia/packages/RCall/gOwEW/src/methods.jl:553
[5] setindex!(e::RObject{EnvSxp}, v::Tuple{LinearMixedModel{Float64}, DataFrame}, s::Symbol)
@ RCall ~/.julia/packages/RCall/gOwEW/src/methods.jl:562
[6] top-level scope
@ REPL[62]:1
Would be very grateful for any tips :)
If you don't the columns wind up as lists, which is bad.
I am absolutely clueless about this, but thought I would report it. This is on Pop!OS 22.04 (Ubuntu derivative), with Julia 1.8.2 (installed via sudo apt-get install julia
), having successfully installed MixedModels
...
I have a suspicion that it may have to do with having installed R in the "wrong" way (compiler flags, shared library, etc.) - vague memory of something like this happening before?
R Under development (unstable) (2022-11-02 r83236) -- "Unsuffered Consequences"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
julia> Pkg.precompile()
Precompiling project...
✗ JellyMe4
0 dependencies successfully precompiled in 4 seconds. 103 already precompiled.
ERROR: The following 1 direct dependency failed to precompile:
JellyMe4 [19ac8677-9a15-4623-9afd-84acc6165ce7]
Failed to precompile JellyMe4 [19ac8677-9a15-4623-9afd-84acc6165ce7] to /home/bolker/.julia/compiled/v1.8/JellyMe4/jl_OlsJbi.
signal (11): Segmentation fault
in expression starting at /home/bolker/.julia/packages/JellyMe4/IB8qZ/src/JellyMe4.jl:3
Rf_install at /usr/bin/../lib/libR.so (unknown line)
R_initMethodDispatch at /home/bolker/R/r-build/src/library/methods/src/../../../../../r-devel/src/library/methods/src/methods_list_dispatch.c:159
R_initMethodDispatch at /home/bolker/R/r-build/src/library/methods/src/../../../../../r-devel/src/library/methods/src/methods_list_dispatch.c:156
R_doDotCall at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/dotcode.c:868
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7682
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
forcePromise at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:568
FORCE_PROMISE at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5147 [inlined]
getvar at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:5188
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:6878
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
bcEval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:7094
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:748
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:871
Rf_evalList at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:3079
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:842
do_if at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:2237
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:823
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:823
do_begin at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:2529
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:823
R_execClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1918
Rf_applyClosure at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:1844
Rf_eval at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/eval.c:871
setup_Rmainloop at /home/bolker/R/r-build/src/main/../../../r-devel/src/main/main.c:1061
initEmbeddedR at /home/bolker/.julia/packages/RCall/Wyd74/src/setup.jl:151
__init__ at /home/bolker/.julia/packages/RCall/Wyd74/src/setup.jl:186
unknown function (ip: 0x7f6819115c74)
_jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549
jl_apply at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/julia.h:1839 [inlined]
jl_module_run_initializer at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:75
ijl_init_restored_modules at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/dump.c:2602
_include_from_serialized at ./loading.jl:831
_require_search_from_serialized at ./loading.jl:1039
_require at ./loading.jl:1315
_require_prelocked at ./loading.jl:1200
macro expansion at ./loading.jl:1180 [inlined]
macro expansion at ./lock.jl:223 [inlined]
require at ./loading.jl:1144
jfptr_require_47742.clone_1 at /usr/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549
jl_apply at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/julia.h:1839 [inlined]
call_require at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:462 [inlined]
eval_import_path at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:499
jl_toplevel_eval_flex at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:725
jl_eval_module_expr at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:203 [inlined]
jl_toplevel_eval_flex at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:709
jl_toplevel_eval_flex at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:850
ijl_toplevel_eval_in at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
include_string at ./loading.jl:1428
_jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549
_include at ./loading.jl:1488
include at ./Base.jl:419 [inlined]
include_package_for_output at ./loading.jl:1554
jfptr_include_package_for_output_34856.clone_1 at /usr/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549
jl_apply at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/julia.h:1839 [inlined]
do_call at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:126
eval_value at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:215
eval_stmt_value at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:166 [inlined]
eval_body at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:612
jl_interpret_toplevel_thunk at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:750
jl_toplevel_eval_flex at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:906
jl_toplevel_eval_flex at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:850
ijl_toplevel_eval_in at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
include_string at ./loading.jl:1428
include_string at ./loading.jl:1438
_jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549
exec_options at ./client.jl:301
_start at ./client.jl:522
jfptr__start_56736.clone_1 at /usr/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549
jl_apply at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/julia.h:1839 [inlined]
true_main at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/jlapi.c:575
jl_repl_entrypoint at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/jlapi.c:719
main at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/cli/loader_exe.c:59
unknown function (ip: 0x7f681a829d8f)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x401098)
Allocations: 3872811 (Pool: 3870630; Big: 2181); GC: 5
Stacktrace:
[1] pkgerror(msg::String)
@ Pkg.Types /usr/share/julia/stdlib/v1.8/Pkg/src/Types.jl:67
[2] precompile(ctx::Pkg.Types.Context, pkgs::Vector{String}; internal_call::Bool, strict::Bool, warn_loaded::Bool, already_instantiated::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Pkg.API /usr/share/julia/stdlib/v1.8/Pkg/src/API.jl:1432
[3] precompile
@ /usr/share/julia/stdlib/v1.8/Pkg/src/API.jl:1063 [inlined]
[4] #precompile#225
@ /usr/share/julia/stdlib/v1.8/Pkg/src/API.jl:1062 [inlined]
[5] precompile (repeats 2 times)
@ /usr/share/julia/stdlib/v1.8/Pkg/src/API.jl:1062 [inlined]
[6] top-level scope
@ REPL[4]:1
Respect contrast coding when re-constructing models in the other language.
contrasts()
on a DataFrame to a contrasts Dict
in JuliaDict
to R contrasts
contrasts=
in lme4 (maybe just document lack of support?)Hi
I've been having problems trying to use @rput to get a mixed effects model from Julia into R. To try to figure out what was going wrong, I ran the code from this tutorial: https://docs.juliahub.com/JellyMe4/xBPpY/0.1.2/ "Fitting a model in Julia and moving it to R". But I got the same error as I got when trying the same thing with my own model: The model runs fine, but when I try @rput it says it needs a Tuple. But it is a Tuple?!
julia> using MixedModels, RCall, JellyMe4
julia> machines = rcopy(R"nlme::Machines")
54×3 DataFrame
│ Row │ Worker │ Machine │ score │
│ │ Cat… │ Cat… │ Float64 │
├─────┼────────┼─────────┼─────────┤
│ 1 │ 1 │ A │ 52.0 │
│ 2 │ 1 │ A │ 52.8 │
│ 3 │ 1 │ A │ 53.1 │
│ 4 │ 2 │ A │ 51.8 │
│ 5 │ 2 │ A │ 52.8 │
│ 6 │ 2 │ A │ 53.1 │
│ 7 │ 3 │ A │ 60.0 │
⋮
│ 47 │ 4 │ C │ 66.2 │
│ 48 │ 4 │ C │ 64.0 │
│ 49 │ 5 │ C │ 72.1 │
│ 50 │ 5 │ C │ 72.0 │
│ 51 │ 5 │ C │ 71.1 │
│ 52 │ 6 │ C │ 62.0 │
│ 53 │ 6 │ C │ 61.4 │
│ 54 │ 6 │ C │ 60.5 │
julia> m = fit(MixedModel, @formula(score ~ 1 + Machine + (1 + Machine|Worker)), machines)
Linear mixed model fit by maximum likelihood
score ~ 1 + Machine + (1 + Machine | Worker)
logLik -2 logLik AIC AICc BIC
-108.2089 216.4178 236.4178 241.5341 256.3077
Variance components:
Column Variance Std.Dev. Corr.
Worker (Intercept) 13.817604 3.717204
Machine: B 28.684965 5.355835 +0.49
Machine: C 11.240978 3.352757 -0.36 +0.30
Residual 0.924634 0.961579
Number of obs: 54; levels of grouping factors: 6
Fixed-effects parameters:
──────────────────────────────────────────────────
Coef. Std. Error z Pr(>|z|)
──────────────────────────────────────────────────
(Intercept) 52.3556 1.53437 34.12 <1e-99
Machine: B 7.96667 2.20988 3.61 0.0003
Machine: C 13.9167 1.40579 9.90 <1e-22
──────────────────────────────────────────────────
julia> m_machines = Tuple([m, machines]);
julia> @rput m_machines;
Error happens in Julia.
ArgumentError: You must use a tuple with the data -- (MixedModel, DataFrame) -- not just a model
Stacktrace:
[1] sexp(::Type{RCall.RClass{:merMod}}, ::LinearMixedModel{Float64}) at /Users/benambridge/.julia/packages/JellyMe4/ZhG68/src/merMod.jl:17
[2] sexp(::LinearMixedModel{Float64}) at /Users/benambridge/.julia/packages/RCall/eRsxl/src/convert/default.jl:214
[3] setindex!(::Ptr{VecSxp}, ::LinearMixedModel{Float64}, ::Int64) at /Users/benambridge/.julia/packages/RCall/eRsxl/src/methods.jl:188
[4] sexp(::Type{RCall.RClass{:list}}, ::Array{Any,1}) at /Users/benambridge/.julia/packages/RCall/eRsxl/src/convert/base.jl:295
[5] sexp at /Users/benambridge/.julia/packages/RCall/eRsxl/src/convert/default.jl:214 [inlined]
[6] sexp(::Tuple{LinearMixedModel{Float64},DataFrames.DataFrame}) at /Library/Frameworks/R.framework/Versions/4.1/Resources/library/JuliaCall/julia/convert.jl:8
[7] setindex!(::Ptr{EnvSxp}, ::Tuple{LinearMixedModel{Float64},DataFrames.DataFrame}, ::Symbol) at /Users/benambridge/.julia/packages/RCall/eRsxl/src/methods.jl:546
[8] setindex!(::RObject{EnvSxp}, ::Tuple{LinearMixedModel{Float64},DataFrames.DataFrame}, ::Symbol) at /Users/benambridge/.julia/packages/RCall/eRsxl/src/methods.jl:555
[9] top-level scope at none:1
[10] eval(::Module, ::Any) at ./boot.jl:331
[11] eval_string(::String) at /Library/Frameworks/R.framework/Versions/4.1/Resources/library/JuliaCall/julia/setup.jl:203
[12] docall(::Ptr{Nothing}) at /Library/Frameworks/R.framework/Versions/4.1/Resources/library/JuliaCall/julia/setup.jl:176
maxeval
||
@rget
(cf. #37)GLIBCXX
pain)The info messages for deviance and log-likelihood for GLMM need to be double checked and a help page summarizing the lme4 deviance and log-likelihood tables added.
These are the families with dispersion parameters, so this is blocked by JuliaStats/MixedModels.jl#291.
Functionality:
glmerMod
to GeneralizedLinearMixedModel
GeneralizedLinearMixedModel
to glmerMod
Tests:
glmerMod
to GeneralizedLinearMixedModel
GeneralizedLinearMixedModel
to glmerMod
Functionality:
lmerMod
to LinearMixedModel
LinearMixedModel
to lmerMod
Tests:
lmerMod
to LinearMixedModel
LinearMixedModel
to lmerMod
dummy
in FE~~ not happening, too much effort in wrangling contrasts for models going the wrong directiondummy
in REfulldummy
in RE (may interact with JuliaStats/MixedModels.jl#268)fullydummy
in FETheir cheapest plan is waaaaay too expensive and their FOSS support has died. And that's even before we look at the extra costs for testing on Mac.
This will make life easier for people who can't remember the (admittedly) arbitrary sequence.
The difficulty here is that we need both R and Julia and several packages in each (lme4, MixedModels, RCall, dependencies).
CIs:
Hi
I'm probably doing something really obvious wrong here, but I'm trying and failing to get lmerTest style p values calculated via Satterthwaite or Kenward-Roger ddf, but all I get is the lme4 style ones (approximated via the z distribution). Can anyone see what I'm doing wrong?
library(JuliaCall)
j=julia_setup() # Setup Julia
j$assign("Data", contextdata) # Copy the data from R into Julia
# Maximal model for Predictions 1 and 2
j$assign("Maximal1", Response ~ SentenceType/ContextType + (1+SentenceType/ContextType|Verb) + (1+SentenceType/ContextType|Participant)) #Get the formula into Julia
j$assign("Maximal2", Response ~ SentenceType*ContextType + (1+SentenceType*ContextType|Verb) + (1+SentenceType*ContextType|Participant)) #Get the formula into Julia
julia_console()
ENV["LMER"] = "lmerTest::lmer" # if you really need Satterthwaite or Kenward-Roger ddf
using MixedModels, RCall, JellyMe4 # Need to use JellyMe4 to use the lmerTest backend for the better p values
Julia_Model1 = fit(LinearMixedModel, Maximal1, Data) ###Hmm it still reports it as z and Pr(>|z|) - is it really using Satterthwaite or Kenward-Roger?
Julia_Model2 = fit(LinearMixedModel, Maximal2, Data) ###Hmm it still reports it as z and Pr(>|z|) - is it really using Satterthwaite or Kenward-Roger?
Thanks
Ben
zerocorr!
vs. ||
I apologize for any ignorance on my part, as I'm far more well versed in R than I am in Julia. Been trying to come up with a way to run some large mixed models in Julia from R. I've noticed that when I load JellyMe4.jl, it breaks the fitting of mixed models using MixedModels.jl
dyn.load('C:\\Users\\edwar\\AppData\\Local\\Programs\\Julia-1.6.1\\bin\\libopenlibm.DLL')
julia.dir = JuliaCall::julia_setup(JULIA_HOME = 'C:\\Users\\edwar\\AppData\\Local\\Programs\\Julia-1.6.1\\bin')
#> Julia version 1.6.1 at location C:\Users\edwar\AppData\Local\Programs\JULIA-~1.1\bin will be used.
#> Loading setup script for JuliaCall...
#> Finish loading setup script for JuliaCall.
julia.dir$library("MixedModels")
julia.dir$library("RCall")
julia.dir$library("DataFrames")
julia.dir$library("StatsModels")
julia.dir$library("JellyMe4")
julia.dir$assign("dat",nlme::Machines)
julia.dir$eval("my_mod = fit(MixedModel, @formula(score ~ 1 + Machine + (1 + Machine|Worker)),dat)")
#> Error: Error happens in Julia.
#> ArgumentError: You must use a tuple with the data -- (MixedModel, DataFrame) -- not just a model
#> Stacktrace:
#> [1] sexp(#unused#::Type{RCall.RClass{:merMod}}, x::LinearMixedModel{Float64})
#> @ JellyMe4 C:\Users\edwar\.julia\packages\JellyMe4\rvLx5\src\merMod.jl:17
#> [2] sexp(s::LinearMixedModel{Float64})
#> @ RCall C:\Users\edwar\.julia\packages\RCall\3mHXJ\src\convert\default.jl:214
#> [3] docall(call1::Ptr{Nothing})
#> @ Main.JuliaCall C:\Users\edwar\Documents\R\win-library\4.1\JuliaCall\julia\setup.jl:185
Created on 2021-06-18 by the reprex package (v2.0.0)
If I call julia.dir$library("JellyMe4")
after fitting the model, then the code behaves correctly until I try to fit the mixed model again, when the same error pops up.
dyn.load('C:\\Users\\edwar\\AppData\\Local\\Programs\\Julia-1.6.1\\bin\\libopenlibm.DLL')
julia.dir = JuliaCall::julia_setup(JULIA_HOME = 'C:\\Users\\edwar\\AppData\\Local\\Programs\\Julia-1.6.1\\bin')
#> Julia version 1.6.1 at location C:\Users\edwar\AppData\Local\Programs\JULIA-~1.1\bin will be used.
#> Loading setup script for JuliaCall...
#> Finish loading setup script for JuliaCall.
julia.dir$library("MixedModels")
julia.dir$library("RCall")
julia.dir$library("DataFrames")
julia.dir$library("StatsModels")
julia.dir$assign("dat",nlme::Machines)
julia.dir$eval("my_mod = fit(MixedModel, @formula(score ~ 1 + Machine + (1 + Machine|Worker)),dat)")
#> Julia Object of type LinearMixedModel{Float64}.
#> Linear mixed model fit by maximum likelihood
#> score ~ 1 + Machine + (1 + Machine | Worker)
#> logLik -2 logLik AIC AICc BIC
#> -108.2089 216.4178 236.4178 241.5341 256.3077
#>
#> Variance components:
#> Column Variance Std.Dev. Corr.
#> Worker (Intercept) 13.817604 3.717204
#> Machine: B 28.684965 5.355835 +0.49
#> Machine: C 11.240978 3.352757 -0.36 +0.30
#> Residual 0.924634 0.961579
#> Number of obs: 54; levels of grouping factors: 6
#>
#> Fixed-effects parameters:
#> --------------------------------------------------
#> Coef. Std. Error z Pr(>|z|)
#> --------------------------------------------------
#> (Intercept) 52.3556 1.53437 34.12 <1e-99
#> Machine: B 7.96667 2.20988 3.61 0.0003
#> Machine: C 13.9167 1.40579 9.90 <1e-22
#> --------------------------------------------------
julia.dir$library("JellyMe4")
model = julia.dir$eval("robject(:lmerMod, Tuple([my_mod,dat]))", need_return="R")
print(model)
#> Linear mixed model fit by maximum likelihood ['lmerMod']
#> Formula: score ~ 1 + Machine + (1 + Machine | Worker)
#> Data: jellyme4_data
#> AIC BIC logLik deviance df.resid
#> 236.4178 256.3077 -108.2089 216.4178 44
#> Random effects:
#> Groups Name Std.Dev. Corr
#> Worker (Intercept) 3.7172
#> MachineB 5.3558 0.49
#> MachineC 3.3528 -0.36 0.30
#> Residual 0.9616
#> Number of obs: 54, groups: Worker, 6
#> Fixed Effects:
#> (Intercept) MachineB MachineC
#> 52.356 7.967 13.917
#> optimizer (LN_BOBYQA) convergence code: 5 (fit with MixedModels.jl) ; 0 optimizer warnings; 0 lme4 warnings
julia.dir$eval("my_mod = fit(MixedModel, @formula(score ~ 1 + Machine + (1 + Machine|Worker)),dat)")
#> Error: Error happens in Julia.
#> ArgumentError: You must use a tuple with the data -- (MixedModel, DataFrame) -- not just a model
#> Stacktrace:
#> [1] sexp(#unused#::Type{RCall.RClass{:merMod}}, x::LinearMixedModel{Float64})
#> @ JellyMe4 C:\Users\edwar\.julia\packages\JellyMe4\rvLx5\src\merMod.jl:17
#> [2] sexp(s::LinearMixedModel{Float64})
#> @ RCall C:\Users\edwar\.julia\packages\RCall\3mHXJ\src\convert\default.jl:214
#> [3] docall(call1::Ptr{Nothing})
#> @ Main.JuliaCall C:\Users\edwar\Documents\R\win-library\4.1\JuliaCall\julia\setup.jl:185
Created on 2021-06-18 by the reprex package (v2.0.0)
What's unusual to me is that the Julia-equivalent code to me seems to work just fine, ex.
julia> using MixedModels, RCall, DataFrames, StatsModels
julia> machines = rcopy(R"nlme::Machines")
54×3 DataFrame
Row │ Worker Machine score
│ Cat… Cat… Float64
─────┼──────────────────────────
1 │ 1 A 52.0
2 │ 1 A 52.8
3 │ 1 A 53.1
4 │ 2 A 51.8
5 │ 2 A 52.8
6 │ 2 A 53.1
7 │ 3 A 60.0
8 │ 3 A 60.2
9 │ 3 A 58.4
10 │ 4 A 51.1
11 │ 4 A 52.3
⋮ │ ⋮ ⋮ ⋮
45 │ 3 C 71.0
46 │ 4 C 64.1
47 │ 4 C 66.2
48 │ 4 C 64.0
49 │ 5 C 72.1
50 │ 5 C 72.0
51 │ 5 C 71.1
52 │ 6 C 62.0
53 │ 6 C 61.4
54 │ 6 C 60.5
33 rows omitted
julia> m = fit(MixedModel, @formula(score ~ 1 + Machine + (1 + Machine|Worker)), machines)
Linear mixed model fit by maximum likelihood
score ~ 1 + Machine + (1 + Machine | Worker)
logLik -2 logLik AIC AICc BIC
-108.2089 216.4178 236.4178 241.5341 256.3077
Variance components:
Column Variance Std.Dev. Corr.
Worker (Intercept) 13.817604 3.717204
Machine: B 28.684965 5.355835 +0.49
Machine: C 11.240978 3.352757 -0.36 +0.30
Residual 0.924634 0.961579
Number of obs: 54; levels of grouping factors: 6
Fixed-effects parameters:
──────────────────────────────────────────────────
Coef. Std. Error z Pr(>|z|)
──────────────────────────────────────────────────
(Intercept) 52.3556 1.53437 34.12 <1e-99
Machine: B 7.96667 2.20988 3.61 0.0003
Machine: C 13.9167 1.40579 9.90 <1e-22
──────────────────────────────────────────────────
This very well might be an RCall
bug, but given that this specific interaction occurs between JellyMe4.jl
and MixedModels.jl
, I thought to post this here first and see if I could get any insight into why this is happening.
These are the model families without dispersion parameters.
Functionality:
glmerMod
to GeneralizedLinearMixedModel
GeneralizedLinearMixedModel
to glmerMod
Tests:
glmerMod
to GeneralizedLinearMixedModel
GeneralizedLinearMixedModel
to glmerMod
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.