Turing.jl icon indicating copy to clipboard operation
Turing.jl copied to clipboard

Bound error when trying to provide initial parameters for optimization in a model with LKJCholesky

Open touste opened this issue 4 months ago • 2 comments

Minimal working example

using Turing
using LinearAlgebra

@model function random_intercept_slope_LKJ(X, g, y;
    n_groups=maximum(g),
    predictors=size(X, 2)
)
    # Population-level means
    μ ~ MvNormal(zeros(predictors), 5.0)

    # Correlation structure among random effects
    Ω ~ LKJCholesky(predictors, 2.0)   # correlation matrix L

    # Group-level scales
    τ ~ filldist(Exponential(1.0), predictors)

    # Random effects in std-normal space
    γ ~ filldist(Normal(0, 1), predictors, n_groups)

    # Reconstruct group-level coefficients
    Σ_L = Diagonal(τ) * Ω.L
    β = μ .+ Σ_L * γ

    # Observation noise
    σ ~ Exponential(1)

    # Likelihood
    for i in eachindex(y)
        y[i] ~ Normal(X[i, :]' * β[:, g[i]], σ)
    end
end


N = 300
n_groups = 6
predictors = 2

X = hcat(ones(N), randn(N))
g = rand(1:n_groups, N)

# True parameters
true_μ = [1.0, 2.0]

# True correlation matrix
true_R = [1.0 0.6;
    0.6 1.0]
true_L = cholesky(Symmetric(true_R)).L

# True scales
true_τ = [0.7, 0.8]

# Full covariance Cholesky
Σ_L = Diagonal(true_τ) * true_L

# Random group effects
true_γ = randn(predictors, n_groups)

# Group-level coefficients
β = true_μ .+ Σ_L * true_γ

# Noise
true_σ = 0.3

# Generate y
y = similar(X[:, 1])
for i in 1:N
    y[i] = X[i, :]' * β[:, g[i]] + true_σ * randn()
end

model = random_intercept_slope_LKJ(X, g, y)

map = maximum_a_posteriori(model) #OK, returns a solution vector of length 20


true_param_vec = Float64[]
append!(true_param_vec, true_μ)
append!(true_param_vec, [true_L[1, 1], true_L[2, 1], true_L[2, 2]])
append!(true_param_vec, true_τ)
for g in 1:n_groups
    append!(true_param_vec, true_γ[:, g])
end
push!(true_param_vec, true_σ)
# true_param_vec has length 20


map = maximum_a_posteriori(model; initial_params=true_param_vec) # Bounds error

Description

See the example.

initial_params expects a vector of length 21. It looks like the confusion comes from the fact that Ω has 4 components but the map estimates only returns Ω.L, so 3 components. This is also inconsistent with how initial parameters are defined for sampling, where Turing expects a vector of length 20 and not 21 here.

Julia version info

versioninfo()
versioninfo()
Julia Version 1.12.2
Commit ca9b6662be4 (2025-11-20 16:25 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 20 × 13th Gen Intel(R) Core(TM) i9-13900H
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, alderlake)
  GC: Built with stock GC
Threads: 10 default, 1 interactive, 10 GC (on 20 virtual cores)
Environment:
  JULIA_EDITOR = code
  JULIA_VSCODE_REPL = 1
  JULIA_NUM_THREADS = 10

Manifest

]st --manifest
  [47edcb42] ADTypes v1.20.0
  [621f4979] AbstractFFTs v1.5.0
  [99985d1d] AbstractGPs v0.5.24
  [80f14c24] AbstractMCMC v5.10.0
  [7a57a42e] AbstractPPL v0.13.6
  [1520ce14] AbstractTrees v0.4.5
  [7d9f7c33] Accessors v0.1.43
  [79e6a3ab] Adapt v4.4.0
  [35492f91] AdaptivePredicates v1.2.0
  [0bf59076] AdvancedHMC v0.8.3
  [5b7e9947] AdvancedMH v0.8.9
  [576499cb] AdvancedPS v0.7.0
  [b5ca4192] AdvancedVI v0.6.0
  [66dad0bd] AliasTables v1.1.3
  [27a7e980] Animations v0.4.2
  [dce04be8] ArgCheck v2.5.0
  [ec485272] ArnoldiMethod v0.4.0
  [4fba245c] ArrayInterface v7.22.0
  [67c07d97] Automa v1.1.0
  [13072b0f] AxisAlgorithms v1.1.0
  [39de3d68] AxisArrays v0.4.8
  [198e06fe] BangBang v0.4.6
  [18cc8868] BaseDirs v1.3.2
  [9718e550] Baselet v0.1.1
  [6e4b80f9] BenchmarkTools v1.6.3
  [76274a88] Bijectors v0.15.14
  [d1d4a3ce] BitFlags v0.1.9
  [fa961155] CEnum v0.5.0
  [96374032] CRlibm v1.0.2
  [159f3aea] Cairo v1.1.1
  [13f3f980] CairoMakie v0.15.8
  [082447d4] ChainRules v1.72.6
  [d360d2e6] ChainRulesCore v1.26.0
  [0ca39b1e] Chairmarks v1.3.1
  [9e997f8a] ChangesOfVariables v0.1.10
  [0b6fb165] ChunkCodecCore v1.0.0
  [4c0bbee4] ChunkCodecLibZlib v1.0.0
  [55437552] ChunkCodecLibZstd v1.0.0
  [a2cac450] ColorBrewer v0.4.2
  [35d6a980] ColorSchemes v3.31.0
  [3da002f7] ColorTypes v0.12.1
  [c3611d14] ColorVectorSpace v0.11.0
  [5ae59095] Colors v0.13.1
  [861a8166] Combinatorics v1.0.3
  [38540f10] CommonSolve v0.2.4
  [bbf7d656] CommonSubexpressions v0.3.1
  [34da2185] Compat v4.18.1
  [a33af91c] CompositionsBase v0.1.2
  [95dc2771] ComputePipeline v0.1.6
  [2569d6c7] ConcreteStructs v0.2.3
  [992eb4ea] CondaPkg v0.2.33
  [88cd18e8] ConsoleProgressMonitor v0.1.2
  [187b0558] ConstructionBase v1.6.0
  [d38c429a] Contour v0.6.3
  [a8cc5b0e] Crayons v4.1.1
  [9a962f9c] DataAPI v1.16.0
  [a93c6f00] DataFrames v1.8.1
  [864edb3b] DataStructures v0.19.3
  [e2d170a0] DataValueInterfaces v1.0.0
  [244e2a9f] DefineSingletons v0.1.2
  [927a84f5] DelaunayTriangulation v1.6.5
  [8bb1440f] DelimitedFiles v1.9.1
  [b429d917] DensityInterface v0.4.0
  [163ba53b] DiffResults v1.1.0
  [b552c78f] DiffRules v1.15.1
  [a0c0ee7d] DifferentiationInterface v0.7.12
  [8d63f2c5] DispatchDoctor v0.4.26
  [b4f34e82] Distances v0.10.12
  [31c24e10] Distributions v0.25.122
  [ced4e74d] DistributionsAD v0.6.58
  [ffbed154] DocStringExtensions v0.9.5
  [366bfd00] DynamicPPL v0.39.1
  [cad2338a] EllipticalSliceSampling v2.0.0
  [4e289a0a] EnumX v1.0.5
  [429591f6] ExactPredicates v2.2.9
  [e2ba6199] ExprTools v0.1.10
  [55351af7] ExproniconLite v0.10.14
  [95c220a8] ExtendableSparse v1.7.1
  [411431e0] Extents v0.1.6
  [7a1cc6ca] FFTW v1.10.0
  [9aa1b823] FastClosures v0.3.2
  [5789e2e9] FileIO v1.17.1
  [8fc22ac5] FilePaths v0.9.0
  [48062228] FilePathsBase v0.9.24
  [1a297f60] FillArrays v1.15.0
  [6a86dc24] FiniteDiff v2.29.0
  [53c48c17] FixedPointNumbers v0.8.5
  [08572546] FlameGraphs v1.1.0
  [1fa38f19] Format v1.3.7
  [f6369f11] ForwardDiff v1.3.0
  [b38be410] FreeType v4.1.1
  [663a7486] FreeTypeAbstraction v0.10.8
  [069b7b12] FunctionWrappers v1.1.3
  [77dc65aa] FunctionWrappersWrappers v0.1.3
  [d9f16b24] Functors v0.5.2
  [f7f18e0c] GLFW v3.4.5
  [38e38edf] GLM v1.9.0
  [e9467ef8] GLMakie v0.13.8
  [46192b85] GPUArraysCore v0.2.0
  [5c1252a2] GeometryBasics v0.5.10
  [a2bd30eb] Graphics v1.1.3
  [86223c79] Graphs v1.13.2
  [3955a311] GridLayoutBase v0.11.2
  [42e2da0e] Grisu v1.0.2
  [9db2cae5] Gtk4 v0.7.11
  [8710efd8] GtkObservables v2.2.1
  [076d061b] HashArrayMappedTries v0.2.0
  [34004b35] HypergeometricFunctions v0.3.28
  [88f59080] ILUZero v0.2.0
  [7869d1d1] IRTools v0.4.15
  [2803e5a7] ImageAxes v0.6.12
  [c817782e] ImageBase v0.1.7
  [a09fc81d] ImageCore v0.10.5
  [82e4d734] ImageIO v0.6.9
  [bc367c6b] ImageMetadata v0.9.10
  [9b13fd28] IndirectArrays v1.0.0
  [5903a43b] Infiltrator v1.9.4
  [d25df0c9] Inflate v0.1.5
  [22cec73e] InitialValues v0.3.1
  [842dd82b] InlineStrings v1.4.5
  [18e54dd8] IntegerMathUtils v0.1.3
  [a98d9a8b] Interpolations v0.16.2
  [d1acc4aa] IntervalArithmetic v1.0.2
  [8197267c] IntervalSets v0.7.13
  [3587e190] InverseFunctions v0.1.17
  [41ab1584] InvertedIndices v1.3.1
  [92d709cd] IrrationalConstants v0.2.6
  [f1662d9f] Isoband v0.1.1
  [c8e1da08] IterTools v1.10.0
  [42fd0dbc] IterativeSolvers v0.9.4
  [82899510] IteratorInterfaceExtensions v1.0.0
  [033835bb] JLD2 v0.6.3
  [692b3bcd] JLLWrappers v1.7.1
⌃ [682c06a0] JSON v0.21.4
  [0f8b85d8] JSON3 v1.14.3
  [ae98c720] Jieko v0.2.1
  [b835a17e] JpegTurbo v0.1.6
  [5ab0869b] KernelDensity v0.6.10
  [ec8451be] KernelFunctions v0.10.66
  [b964fa9f] LaTeXStrings v1.4.0
  [a5e1c1ea] LatinHypercubeSampling v1.9.0
  [73f95e8e] LatticeRules v0.0.1
  [8cdb02fc] LazyModules v0.3.1
  [0fc2ff8b] LeastSquaresOptim v0.8.7
  [1d6d02ad] LeftChildRightSiblingTrees v0.2.1
  [6f1fad26] Libtask v0.9.10
  [d3d80556] LineSearches v7.5.1
  [6fdf6af0] LogDensityProblems v2.2.0
  [996a588d] LogDensityProblemsAD v1.13.1
  [2ab3a3ac] LogExpFunctions v0.3.29
  [e6f89c97] LoggingExtras v1.2.0
  [c7f686f2] MCMCChains v7.6.0
  [be115224] MCMCDiagnosticTools v0.3.15
  [e80e1ace] MLJModelInterface v1.12.0
  [1914dd2f] MacroTools v0.5.16
  [ee78f7c6] Makie v0.24.8
  [dbb5928d] MappedArrays v0.4.2
  [0a4f8689] MathTeXEngine v0.6.7
  [442fdcdd] Measures v0.3.3
  [7269a6da] MeshIO v0.5.3
  [85b6ec6f] MethodAnalysis v1.0.0
  [128add7d] MicroCollections v0.2.0
  [0b3b1443] MicroMamba v0.1.14
  [e1d29d7a] Missings v1.2.0
  [dbe65cb8] MistyClosures v2.1.0
  [66fc600b] ModernGL v1.1.8
  [da2b9cff] Mooncake v0.4.182
  [e94cdb99] MosaicViews v0.3.4
  [2e0e35c7] Moshi v0.3.7
  [d41bc354] NLSolversBase v7.10.0
  [77ba4419] NaNMath v1.1.3
  [86f7a689] NamedArrays v0.10.5
  [d9ec5142] NamedTupleTools v0.14.3
  [c020b1a1] NaturalSort v1.0.0
  [f09324ee] Netpbm v1.1.1
  [510215fc] Observables v0.5.5
  [6fe1bfb0] OffsetArrays v1.17.0
  [52e1d378] OpenEXR v0.3.3
  [429524aa] Optim v1.13.3
  [3bd65402] Optimisers v0.4.6
  [7f7a1694] Optimization v5.2.0
  [bca83a33] OptimizationBase v4.0.2
  [36348300] OptimizationOptimJL v0.4.8
  [bac558e1] OrderedCollections v1.8.1
  [90014a1f] PDMats v0.11.36
  [f57f5aa1] PNGFiles v0.4.4
  [19eb6ba3] Packing v0.5.1
  [5432bcbf] PaddedViews v0.5.12
  [43a3c2be] PairPlots v3.0.3
  [69de0a69] Parsers v2.8.3
  [fa939f87] Pidfile v1.3.0
  [eebad327] PkgVersion v0.3.3
  [995b91a9] PlotUtils v1.4.4
  [647866c9] PolygonOps v0.1.2
  [2dfb63ee] PooledArrays v1.4.3
  [85a6dd25] PositiveFactorizations v0.2.4
  [d236fae5] PreallocationTools v0.4.34
  [aea7be01] PrecompileTools v1.3.3
  [21216c6a] Preferences v1.5.0
  [08abe8d2] PrettyTables v3.1.2
  [27ebfcd6] Primes v0.5.7
  [c46f51b8] ProfileView v1.10.2
  [33c8b6b6] ProgressLogging v0.1.6
  [92933f4c] ProgressMeter v1.11.0
  [43287f4e] PtrArrays v1.3.0
  [6099a3de] PythonCall v0.9.30
  [4b34888f] QOI v1.0.2
  [1fd47b50] QuadGK v2.11.2
  [8a4e6c94] QuasiMonteCarlo v0.3.3
  [74087812] Random123 v1.7.1
  [e6cf234a] RandomNumbers v1.6.0
  [b3c3ace0] RangeArrays v0.3.2
  [c84ed2f1] Ratios v0.4.5
  [c1ae055f] RealDot v0.1.0
  [3cdcf5f2] RecipesBase v1.3.4
  [731186ca] RecursiveArrayTools v3.39.0
  [189a3867] Reexport v1.2.2
  [05181044] RelocatableFolders v1.0.1
  [ae029012] Requires v1.3.1
  [37e2e3b7] ReverseDiff v1.16.1
  [79098fc4] Rmath v0.9.0
  [f2b01f46] Roots v2.2.10
  [5eaf0fd0] RoundingEmulator v0.2.1
  [d5f540fe] RoundingIntegers v1.1.0
  [7e49a35a] RuntimeGeneratedFunctions v0.5.16
  [fdea26ae] SIMD v3.7.2
⌅ [26aad666] SSMProblems v0.5.2
  [0bca4576] SciMLBase v2.128.0
  [a6db7da4] SciMLLogging v1.6.0
  [c0aeaf25] SciMLOperators v1.14.0
  [431bcebd] SciMLPublic v1.0.0
  [53ae85a6] SciMLStructures v1.7.0
  [30f210dd] ScientificTypesBase v3.0.0
  [7e506255] ScopedValues v1.5.0
  [6c6a2e73] Scratch v1.3.0
  [91c51154] SentinelArrays v1.4.8
  [efcf1570] Setfield v1.1.2
  [65257c39] ShaderAbstractions v0.5.0
  [1277b4bf] ShiftedArrays v2.0.0
  [992d4aef] Showoff v1.0.3
  [73760f76] SignedDistanceFields v0.4.0
  [699a6c99] SimpleTraits v0.9.5
  [45858cf5] Sixel v0.1.5
  [ed01d8cd] Sobol v1.5.0
  [a2af1166] SortingAlgorithms v1.2.2
  [9f842d2f] SparseConnectivityTracer v1.1.3
  [dc90abb0] SparseInverseSubset v0.1.2
  [0a514795] SparseMatrixColorings v0.4.23
  [e56a9233] Sparspak v0.3.14
  [276daf66] SpecialFunctions v2.6.1
  [171d559e] SplittablesBase v0.1.15
  [860ef19b] StableRNGs v1.0.4
  [cae243ae] StackViews v0.1.2
  [90137ffa] StaticArrays v1.9.15
  [1e83bf80] StaticArraysCore v1.4.4
  [64bff920] StatisticalTraits v3.5.0
  [10745b16] Statistics v1.11.1
  [82ae8749] StatsAPI v1.8.0
  [2913bbd2] StatsBase v0.34.9
  [4c63d2b9] StatsFuns v1.5.2
  [3eaba693] StatsModels v0.7.7
  [892a3eda] StringManipulation v0.4.2
  [09ab397b] StructArrays v0.7.2
  [856f2bd8] StructTypes v1.11.0
  [6fc51010] Surrogates v7.1.0
  [89f642e6] SurrogatesBase v1.1.0
  [2efcf032] SymbolicIndexingInterface v0.3.46
  [ab02a1b2] TableOperations v1.2.0
  [3783bdb8] TableTraits v1.0.1
  [bd369af6] Tables v1.12.1
  [62fd8b95] TensorCore v0.1.1
  [5d786b92] TerminalLoggers v0.1.7
  [731e570b] TiffImages v0.11.6
  [3bb67fe8] TranscodingStreams v0.11.3
  [28d57a85] Transducers v0.4.85
  [981d1d27] TriplotBase v0.1.0
  [fce5fe82] Turing v0.42.0
  [1cfade01] UnicodeFun v0.4.1
  [1986cc42] Unitful v1.25.1
  [e17b2a0c] UnsafePointers v1.0.0
  [e3aaa7dc] WebP v0.1.3
  [efce3f68] WoodburyMatrices v1.0.0
  [e88e6eb3] Zygote v0.7.10
  [700de1a5] ZygoteRules v0.2.7
  [6e34b625] Bzip2_jll v1.0.9+0
  [4e9b3aee] CRlibm_jll v1.0.1+0
  [83423d85] Cairo_jll v1.18.5+0
  [ee1fde0b] Dbus_jll v1.16.2+0
  [5ae413db] EarCut_jll v2.2.4+0
  [2702e6a9] EpollShim_jll v0.0.20230411+1
  [2e619515] Expat_jll v2.7.3+0
  [b22a6f82] FFMPEG_jll v8.0.0+0
  [f5851436] FFTW_jll v3.3.11+0
  [a3f928ae] Fontconfig_jll v2.17.1+0
  [d7e528f0] FreeType2_jll v2.13.4+0
  [559328eb] FriBidi_jll v1.0.17+0
  [0656b61e] GLFW_jll v3.4.0+2
  [6ebb71f1] GTK4_jll v4.18.6+0
  [b0724c58] GettextRuntime_jll v0.22.4+0
  [59f7168a] Giflib_jll v5.2.3+0
  [7746bdde] Glib_jll v2.86.2+0
  [75302f13] Graphene_jll v1.10.8+0
  [3b182d85] Graphite2_jll v1.3.15+0
  [2e76f6c2] HarfBuzz_jll v8.5.1+0
  [905a6f67] Imath_jll v3.1.11+0
  [1d5cc7b8] IntelOpenMP_jll v2025.2.0+0
  [aacddb02] JpegTurbo_jll v3.1.3+0
  [c1c5ebd0] LAME_jll v3.100.3+0
  [88015f11] LERC_jll v4.0.1+0
  [1d63c593] LLVMOpenMP_jll v18.1.8+0
  [dd4b983a] LZO_jll v2.10.3+0
  [42c93a91] Libepoxy_jll v1.5.11+0
⌅ [e9f186c6] Libffi_jll v3.4.7+0
  [7e76a0d4] Libglvnd_jll v1.7.1+1
  [94ce4f54] Libiconv_jll v1.18.0+0
  [4b2f31a3] Libmount_jll v2.41.2+0
  [925c91fb] Librsvg_jll v2.54.7+0
  [89763e89] Libtiff_jll v4.7.2+0
  [38a345b3] Libuuid_jll v2.41.2+0
  [856f044c] MKL_jll v2025.2.0+0
  [e7412a2a] Ogg_jll v1.3.6+0
  [6cdc7f73] OpenBLASConsistentFPCSR_jll v0.3.29+0
  [18a262bb] OpenEXR_jll v3.2.4+0
  [efe28fd5] OpenSpecFun_jll v0.5.6+0
  [91d4177d] Opus_jll v1.5.2+0
  [36c8627f] Pango_jll v1.57.0+0
⌅ [30392449] Pixman_jll v0.44.2+0
  [f50d1b31] Rmath_jll v0.5.1+0
  [a2964d1f] Wayland_jll v1.24.0+0
  [2381bf8a] Wayland_protocols_jll v1.44.0+0
⌅ [02c8fc9c] XML2_jll v2.13.9+0
  [ffd25f8a] XZ_jll v5.8.1+0
  [4f6342f7] Xorg_libX11_jll v1.8.12+0
  [0c0b7dd1] Xorg_libXau_jll v1.0.13+0
  [935fb764] Xorg_libXcursor_jll v1.2.4+0
  [0aeada51] Xorg_libXdamage_jll v1.1.6+0
  [a3789734] Xorg_libXdmcp_jll v1.1.6+0
  [1082639a] Xorg_libXext_jll v1.3.7+0
  [d091e8ba] Xorg_libXfixes_jll v6.0.2+0
  [a51aa0fd] Xorg_libXi_jll v1.8.3+0
  [d1454406] Xorg_libXinerama_jll v1.1.6+0
  [ec84b674] Xorg_libXrandr_jll v1.5.5+0
  [ea2f1a96] Xorg_libXrender_jll v0.9.12+0
  [c7cfdc94] Xorg_libxcb_jll v1.17.1+0
  [cc61e674] Xorg_libxkbfile_jll v1.1.3+0
  [35661453] Xorg_xkbcomp_jll v1.4.7+0
  [33bec58e] Xorg_xkeyboard_config_jll v2.44.0+0
  [c5fb5394] Xorg_xtrans_jll v1.6.0+0
  [3161d3a3] Zstd_jll v1.5.7+1
  [b437f822] adwaita_icon_theme_jll v43.0.1+0
  [da03df04] gdk_pixbuf_jll v2.42.13+0
  [059c91fe] hicolor_icon_theme_jll v0.18.0+0
  [bf975903] iso_codes_jll v4.18.0+0
  [9a68df92] isoband_jll v0.2.3+0
  [a4ae2306] libaom_jll v3.13.1+0
  [0ac62f75] libass_jll v0.17.4+0
  [1183f4f0] libdecor_jll v0.2.2+0
  [f638f0a6] libfdk_aac_jll v2.0.4+0
  [b53b4c65] libpng_jll v1.6.51+0
  [075b6546] libsixel_jll v1.10.5+0
  [f27f6e37] libvorbis_jll v1.3.8+0
  [c5f90fcd] libwebp_jll v1.6.0+0
⌅ [f8abcde7] micromamba_jll v1.5.12+0
  [1317d2d5] oneTBB_jll v2022.0.0+1
  [4d7b5844] pixi_jll v0.41.3+0
  [1270edf5] x264_jll v10164.0.1+0
  [dfaa095f] x265_jll v4.1.0+0
  [d8fb68d0] xkbcommon_jll v1.13.0+0
  [0dad84c5] ArgTools v1.1.2
  [56f22d72] Artifacts v1.11.0
  [2a0f44e3] Base64 v1.11.0
  [8bf52ea8] CRC32c v1.11.0
  [ade2ca70] Dates v1.11.0
  [8ba89e20] Distributed v1.11.0
  [f43a241f] Downloads v1.7.0
  [7b1f6079] FileWatching v1.11.0
  [9fa8497b] Future v1.11.0
  [b77e0a4c] InteractiveUtils v1.11.0
  [ac6e5ff7] JuliaSyntaxHighlighting v1.12.0
  [4af54fe1] LazyArtifacts v1.11.0
  [b27032c2] LibCURL v0.6.4
  [76f85450] LibGit2 v1.11.0
  [8f399da3] Libdl v1.11.0
  [37e2e46d] LinearAlgebra v1.12.0
  [56ddb016] Logging v1.11.0
  [d6f4376e] Markdown v1.11.0
  [a63ad114] Mmap v1.11.0
  [ca575930] NetworkOptions v1.3.0
  [44cfe95a] Pkg v1.12.0
  [de0858da] Printf v1.11.0
  [9abbd945] Profile v1.11.0
  [3fa0cd96] REPL v1.11.0
  [9a3f8284] Random v1.11.0
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization v1.11.0
  [1a1011a3] SharedArrays v1.11.0
  [6462fe0b] Sockets v1.11.0
  [2f01184e] SparseArrays v1.12.0
  [f489334b] StyledStrings v1.11.0
  [4607b0f0] SuiteSparse
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [8dfed614] Test v1.11.0
  [cf7118a7] UUIDs v1.11.0
  [4ec0a83e] Unicode v1.11.0
  [e66e0078] CompilerSupportLibraries_jll v1.3.0+1
  [deac9b47] LibCURL_jll v8.15.0+0
  [e37daf67] LibGit2_jll v1.9.0+0
  [29816b5a] LibSSH2_jll v1.11.3+1
  [14a3606d] MozillaCACerts_jll v2025.5.20
  [4536629a] OpenBLAS_jll v0.3.29+0
  [05823500] OpenLibm_jll v0.8.7+0
  [458c3c95] OpenSSL_jll v3.5.4+0
  [efcefdf7] PCRE2_jll v10.44.0+1
  [bea87d4a] SuiteSparse_jll v7.8.3+2
  [83775a58] Zlib_jll v1.3.1+2
  [8e850b90] libblastrampoline_jll v5.15.0+0
  [8e850ede] nghttp2_jll v1.64.0+1
  [3f19e933] p7zip_jll v17.7.0+0

touste avatar Dec 09 '25 15:12 touste

Hello - thanks for reporting! Yes, this is quite ugly unfortunately.

As you identified the output of the moderesult is generated via

julia> using AbstractPPL; collect(AbstractPPL.varname_and_value_leaves(@varname(x), rand(LKJCholesky(2, 1.0))))
3-element Vector{Tuple{VarName{:x, ComposedFunction{Accessors.IndexLens{Tuple{Int64, Int64}}, Accessors.PropertyLens{:L}}}, Float64}}:
 (x.L[1, 1], 1.0)
 (x.L[2, 1], 0.5057385879036544)
 (x.L[2, 2], 0.8626867801845682)

but the input to initial_params expects the full matrix because

julia> using DynamicPPL; @model f() = x ~ LKJCholesky(2, 1.0); VarInfo(f())[:]
4-element Vector{Float64}:
 1.0
 0.14727480025638529
 0.0
 0.9890956137853619

In the short term I would suggest to just use the full matrix i.e. you will need to include true_L[1,2].

Long term, vectors are just not the correct format to provide values in (it is honestly a bit silly the way you are forced to reconstruct the vector for initial inputs with the chain of append!).

This is also inconsistent with how initial parameters are defined for sampling, where Turing expects a vector of length 20 and not 21 here.

Since v0.41 MCMC sampling no longer accepts vectors for initial_params and the reason for removing that is precisely because it leads to quite meaningless code, as well as ambiguities over which elements need to be provided and in what order. A similar change will be made to optimisation (in the near future) so that you instead pass parameters as a NamedTuple or a Dict, like:

true_params = (; Ω = true_L, ...)
maximum_a_posteriori(model; initial_params=InitFromParams(true_params))

penelopeysm avatar Dec 09 '25 15:12 penelopeysm

Thanks for the detailed answer! Yes having a NamedTuple for providing initial parameters for optimization would be ideal, I'm glad that's planned!

touste avatar Dec 09 '25 19:12 touste