@@ -325,20 +325,23 @@ struct MRTVCModel{T <: BlasReal} <: VCModel
325
325
Σcov :: Union{Nothing, Matrix{T}} # for fisher_Σ!
326
326
# original data for reml
327
327
Y_reml :: Union{Nothing, Matrix{T}}
328
+ Ỹ_reml :: Union{Nothing, Matrix{T}}
328
329
X_reml :: Union{Nothing, Matrix{T}}
330
+ X̃_reml :: Union{Nothing, Matrix{T}}
329
331
V_reml :: Union{Nothing, Vector{Matrix{T}}}
332
+ U_reml :: Union{Nothing, Matrix{T}}
333
+ D_reml :: Union{Nothing, Vector{T}}
334
+ logdetV2_reml :: Union{Nothing, T}
330
335
# fixed effects parameters for reml
331
336
B_reml :: Union{Nothing, Matrix{T}}
332
337
# working arrays for reml
333
- Ω_reml :: Union{Nothing, Matrix{T}}
334
- R_reml :: Union{Nothing, Matrix{T}}
335
- storage_nd_nd_reml :: Union{Nothing, Matrix{T}}
336
- storage_pd_pd_reml :: Union{Nothing, Matrix{T}}
337
- storage_n_p_reml :: Union{Nothing, Matrix{T}}
338
+ ỸΦ_reml :: Union{Nothing, Matrix{T}}
339
+ R̃_reml :: Union{Nothing, Matrix{T}}
340
+ R̃Φ_reml :: Union{Nothing, Matrix{T}}
341
+ storage_nd_pd_reml :: Union{Nothing, Matrix{T}}
338
342
storage_nd_1_reml :: Union{Nothing, Vector{T}}
339
343
storage_nd_2_reml :: Union{Nothing, Vector{T}}
340
- storage_n_d_reml :: Union{Nothing, Matrix{T}}
341
- storage_p_d_reml :: Union{Nothing, Matrix{T}}
344
+ storage_pd_pd_reml :: Union{Nothing, Matrix{T}}
342
345
storage_pd_reml :: Union{Nothing, Vector{T}}
343
346
logl_reml :: Union{Nothing, Vector{T}}
344
347
Bcov_reml :: Union{Nothing, Matrix{T}}
@@ -376,25 +379,26 @@ function MRTVCModel(
376
379
n, p = size (Y, 1 ), 0
377
380
nd, pd = n * d, p * d
378
381
nd_reml, pd_reml = n_reml * d, p_reml * d
382
+ D_reml, U_reml = eigen (Symmetric (V_reml[1 ]), Symmetric (V_reml[2 ]))
383
+ logdetV2_reml = logdet (V_reml[2 ])
384
+ Ỹ_reml = transpose (U_reml) * Y_reml
385
+ X̃_reml = transpose (U_reml) * X_reml
379
386
B_reml = Matrix {T} (undef, p_reml, d)
380
- Ω_reml = Matrix {T} (undef, nd_reml, nd_reml)
381
- R_reml = Matrix {T} (undef, n_reml, d)
382
- storage_nd_nd_reml = Matrix {T} (undef, nd_reml, nd_reml)
383
- storage_pd_pd_reml = Matrix {T} (undef, pd_reml, pd_reml)
384
- storage_n_p_reml = Matrix {T} (undef, n_reml, p_reml)
387
+ ỸΦ_reml = Matrix {T} (undef, n_reml, d)
388
+ R̃_reml = Matrix {T} (undef, n_reml, d)
389
+ R̃Φ_reml = Matrix {T} (undef, n_reml, d)
390
+ storage_nd_pd_reml = Matrix {T} (undef, nd_reml, pd_reml)
385
391
storage_nd_1_reml = Vector {T} (undef, nd_reml)
386
392
storage_nd_2_reml = Vector {T} (undef, nd_reml)
387
- storage_n_d_reml = Matrix {T} (undef, n_reml, d)
388
- storage_p_d_reml = Matrix {T} (undef, p_reml, d)
393
+ storage_pd_pd_reml = Matrix {T} (undef, pd_reml, pd_reml)
389
394
storage_pd_reml = Vector {T} (undef, pd_reml)
390
- logl_reml = zeros (T, 1 )
395
+ logl_reml = zeros (T, 1 )
391
396
else
392
- Y_reml = X_reml = V_reml = B_reml = Ω_reml = R_reml =
393
- storage_nd_nd_reml = storage_pd_pd_reml =
394
- storage_n_p_reml = storage_nd_1_reml =
395
- storage_nd_2_reml = storage_n_d_reml =
396
- storage_p_d_reml = storage_pd_reml =
397
- logl_reml = Bcov_reml = nothing
397
+ Y_reml = Ỹ_reml = X_reml = X̃_reml = V_reml = U_reml = D_reml =
398
+ logdetV2_reml = B_reml = ỸΦ_reml = R̃_reml = R̃Φ_reml =
399
+ storage_nd_pd_reml = storage_nd_1_reml =
400
+ storage_nd_2_reml = storage_pd_pd_reml = storage_pd_reml =
401
+ logl_reml = Bcov_reml = nothing
398
402
end
399
403
if se
400
404
Bcov = Matrix {T} (undef, pd, pd)
@@ -439,11 +443,11 @@ function MRTVCModel(
439
443
storage_d_1, storage_d_2, storage_d_d_1, storage_d_d_2,
440
444
storage_p_p, storage_pd, storage_pd_pd,
441
445
storage_nd_1, storage_nd_2, storage_nd_pd, logl, Bcov, Σcov,
442
- Y_reml, X_reml, V_reml, B_reml, Ω_reml, R_reml ,
443
- storage_nd_nd_reml, storage_pd_pd_reml, storage_n_p_reml ,
444
- storage_nd_1_reml, storage_nd_2_reml, storage_n_d_reml,
445
- storage_p_d_reml, storage_pd_reml, logl_reml, Bcov_reml ,
446
- se, reml
446
+ Y_reml, Ỹ_reml, X_reml, X̃_reml, V_reml, U_reml, D_reml ,
447
+ logdetV2_reml, B_reml, ỸΦ_reml, R̃_reml, R̃Φ_reml ,
448
+ storage_nd_pd_reml, storage_nd_1_reml,
449
+ storage_nd_2_reml, storage_pd_pd_reml, storage_pd_reml ,
450
+ logl_reml, Bcov_reml, se, reml
447
451
)
448
452
end
449
453
0 commit comments