@@ -108,7 +108,8 @@ function RAM(;
108108
109109 # get dimensions of the model
110110 n_par = nparams (ram_matrices)
111- n_var, n_nod = ram_matrices. size_F
111+ n_obs = nobserved_vars (ram_matrices)
112+ n_var = nvars (ram_matrices)
112113 F = zeros (ram_matrices. size_F)
113114 F[CartesianIndex .(1 : n_var, ram_matrices. F_ind)] .= 1.0
114115
@@ -118,23 +119,23 @@ function RAM(;
118119 M_indices = ! isnothing (ram_matrices. M_ind) ? copy (ram_matrices. M_ind) : nothing
119120
120121 # preallocate arrays
121- A_pre = zeros (n_nod, n_nod )
122- S_pre = zeros (n_nod, n_nod )
123- ! isnothing (M_indices) ? M_pre = zeros (n_nod ) : M_pre = nothing
122+ A_pre = zeros (n_var, n_var )
123+ S_pre = zeros (n_var, n_var )
124+ M_pre = ! isnothing (M_indices) ? zeros (n_var ) : nothing
124125
125126 set_RAMConstants! (A_pre, S_pre, M_pre, ram_matrices. constants)
126127
127128 A_pre = check_acyclic (A_pre, n_par, A_indices)
128129
129130 # pre-allocate some matrices
130- Σ = zeros (n_var, n_var )
131- F⨉I_A⁻¹ = zeros (n_var, n_nod )
132- F⨉I_A⁻¹S = zeros (n_var, n_nod )
131+ Σ = zeros (n_obs, n_obs )
132+ F⨉I_A⁻¹ = zeros (n_obs, n_var )
133+ F⨉I_A⁻¹S = zeros (n_obs, n_var )
133134 I_A = similar (A_pre)
134135
135136 if gradient
136- ∇A = matrix_gradient (A_indices, n_nod ^ 2 )
137- ∇S = matrix_gradient (S_indices, n_nod ^ 2 )
137+ ∇A = matrix_gradient (A_indices, n_var ^ 2 )
138+ ∇S = matrix_gradient (S_indices, n_var ^ 2 )
138139 else
139140 ∇A = nothing
140141 ∇S = nothing
@@ -144,7 +145,7 @@ function RAM(;
144145 if meanstructure
145146 has_meanstructure = Val (true )
146147 ! isnothing (M_indices) || throw (ArgumentError (" You set `meanstructure = true`, but your model specification contains no mean parameters." ))
147- ∇M = gradient ? matrix_gradient (M_indices, n_nod ) : nothing
148+ ∇M = gradient ? matrix_gradient (M_indices, n_var ) : nothing
148149 μ = zeros (n_var)
149150 else
150151 has_meanstructure = Val (false )
0 commit comments