Skip to content

Commit 8b5de2e

Browse files
refactor minus2ll
1 parent 1db3106 commit 8b5de2e

1 file changed

Lines changed: 9 additions & 14 deletions

File tree

src/frontend/fit/fitmeasures/minus2ll.jl

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,31 @@
33
44
Return the negative 2* log likelihood.
55
"""
6-
function minus2ll end
6+
minus2ll(fit::SemFit) = minus2ll(fit, fit.model)
77

88
############################################################################################
99
# Single Models
1010
############################################################################################
1111

12-
minus2ll(fit::SemFit) = minus2ll(fit, fit.model)
13-
1412
function minus2ll(fit::SemFit, model::AbstractSemSingle)
15-
minimum = objective(model, fit.solution)
16-
return minus2ll(minimum, model)
13+
check_single_lossfun(model; throw_error = true)
14+
return minus2ll(model.loss.functions[1], fit, model)
1715
end
1816

19-
minus2ll(minimum::Number, model::AbstractSemSingle) =
20-
sum(lossfun -> minus2ll(lossfun, minimum, model), model.loss.functions)
21-
2217
# SemML ------------------------------------------------------------------------------------
23-
function minus2ll(lossfun::SemML, minimum::Number, model::AbstractSemSingle)
18+
function minus2ll(::SemML, fit::SemFit, model::AbstractSemSingle)
2419
obs = observed(model)
25-
return nsamples(obs) * (minimum + log(2π) * nobserved_vars(obs))
20+
return nsamples(obs) * (fit.minimum + log(2π) * nobserved_vars(obs))
2621
end
2722

2823
# WLS --------------------------------------------------------------------------------------
29-
minus2ll(lossfun::SemWLS, minimum::Number, model::AbstractSemSingle) = missing
24+
minus2ll(::SemWLS, ::SemFit, ::AbstractSemSingle) = missing
3025

3126
# compute likelihood for missing data - H0 -------------------------------------------------
32-
# -2ll = (∑ log(2π)*(nᵢ + mᵢ)) + F*n
33-
function minus2ll(lossfun::SemFIML, minimum::Number, model::AbstractSemSingle)
27+
# -2ll = (∑ log(2π)*(nᵢ*mᵢ)) + F*n
28+
function minus2ll(::SemFIML, fit::SemFit, model::AbstractSemSingle)
3429
obs = observed(model)::SemObservedMissing
35-
F = minimum * nsamples(obs)
30+
F = fit.minimum * nsamples(obs)
3631
F += log(2π) * sum(pat -> nsamples(pat) * nmeasured_vars(pat), obs.patterns)
3732
return F
3833
end

0 commit comments

Comments
 (0)