From d5d7a8193b7d6516e04d4714c69d712a4c3b3ae7 Mon Sep 17 00:00:00 2001 From: Douglas Bates Date: Mon, 16 Jun 2025 12:20:07 -0500 Subject: [PATCH 1/3] Add output from insteval model --- test/prima.jl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/prima.jl b/test/prima.jl index 72d840d1c..1c6b5c569 100644 --- a/test/prima.jl +++ b/test/prima.jl @@ -98,3 +98,17 @@ end @test startswith(out, expected) end + +@testset "instvalfits" begin # repeat the fits from the Blocked Cholesky paper + dat = dataset(:insteval) + f1 = @formula(y ~ 1 + service + (1|s) + (1|d) + (1|dept) + (0 + service|dept)) + progress = false + m1 = fit(MixedModel, f1, dat; progress) + println(m1) + println(m1.optsum) + @test isapprox(objective(m1), 237648.6016) + prfit!(m1; progress) + println(m1) + println(m1.optsum) + @test isapprox(objective(m1), 237648.6016) +end From 2d6658fd0b30be5ac2f9208fcb6a9b446f54ca32 Mon Sep 17 00:00:00 2001 From: Phillip Alday Date: Mon, 25 Aug 2025 12:04:51 +0200 Subject: [PATCH 2/3] no prfit! --- test/prima.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/prima.jl b/test/prima.jl index 695890308..212cae952 100644 --- a/test/prima.jl +++ b/test/prima.jl @@ -116,7 +116,9 @@ end println(m1) println(m1.optsum) @test isapprox(objective(m1), 237648.6016) - prfit!(m1; progress) + m1.optsum.backend = :prima + m1.optsum.optimizer = :bobyqa + refit!(m1; progress) println(m1) println(m1.optsum) @test isapprox(objective(m1), 237648.6016) From ac5bcaebef8ec165868e50dbefe85b5e682eee0b Mon Sep 17 00:00:00 2001 From: Phillip Alday Date: Mon, 25 Aug 2025 12:25:30 +0200 Subject: [PATCH 3/3] bigger comparison --- test/prima.jl | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/test/prima.jl b/test/prima.jl index 212cae952..ce2095457 100644 --- a/test/prima.jl +++ b/test/prima.jl @@ -112,14 +112,13 @@ end dat = dataset(:insteval) f1 = @formula(y ~ 1 + service + (1|s) + (1|d) + (1|dept) + (0 + service|dept)) progress = false - m1 = fit(MixedModel, f1, dat; progress) - println(m1) - println(m1.optsum) - @test isapprox(objective(m1), 237648.6016) - m1.optsum.backend = :prima - m1.optsum.optimizer = :bobyqa - refit!(m1; progress) - println(m1) - println(m1.optsum) - @test isapprox(objective(m1), 237648.6016) + m1 = LinearMixedModel(f1, dat) + methods = [(:nlopt, :LN_NEWUOA), (:nlopt, :LN_BOBYQA), (:prima, :bobyqa), (:prima, :newuoa)] + @testset "$backend-$optimizer" for (backend, optimizer) in methods + m1.optsum.backend = backend + m1.optsum.optimizer = optimizer + refit!(m1; progress) + @test isapprox(objective(m1), 237648.6016) + @test m1.θ ≈ [0.2757238458621397, 0.43528621279418084, 0.04315971015043779, 0.12997375328696648] atol=0.0001 + end end