Skip to content

Commit 273cb02

Browse files
committed
rename n_obs() -> nsamples()
1 parent 00b5184 commit 273cb02

21 files changed

Lines changed: 82 additions & 84 deletions

File tree

src/StructuralEquationModels.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ include("frontend/fit/fitmeasures/BIC.jl")
8080
include("frontend/fit/fitmeasures/chi2.jl")
8181
include("frontend/fit/fitmeasures/df.jl")
8282
include("frontend/fit/fitmeasures/minus2ll.jl")
83-
include("frontend/fit/fitmeasures/n_obs.jl")
8483
include("frontend/fit/fitmeasures/p.jl")
8584
include("frontend/fit/fitmeasures/RMSEA.jl")
8685
include("frontend/fit/fitmeasures/n_man.jl")
@@ -167,7 +166,7 @@ export AbstractSem,
167166
df,
168167
fit_measures,
169168
minus2ll,
170-
n_obs,
169+
nsamples,
171170
p_value,
172171
RMSEA,
173172
n_man,

src/frontend/common.jl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,13 @@ parind[:param_name]
4545
4646
See also [`params`](@ref).
4747
"""
48-
param_indices(semobj) = Dict(par => i for (i, par) in enumerate(params(semobj)))
48+
param_indices(semobj) = Dict(par => i for (i, par) in enumerate(params(semobj)))
49+
50+
"""
51+
nsamples(semobj)
52+
53+
Return the number of samples (observed data points).
54+
55+
For ensemble models, return the sum over all submodels.
56+
"""
57+
function nsamples end

src/frontend/fit/SemFit.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ end
5050

5151
params(fit::SemFit) = params(fit.model)
5252
nparams(fit::SemFit) = nparams(fit.model)
53+
nsamples(fit::SemFit) = nsamples(fit.model)
5354

5455
# access fields
5556
minimum(sem_fit::SemFit) = sem_fit.minimum

src/frontend/fit/fitmeasures/BIC.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
44
Return the bayesian information criterion.
55
"""
6-
BIC(sem_fit::SemFit) = minus2ll(sem_fit) + log(n_obs(sem_fit)) * nparams(sem_fit)
6+
BIC(sem_fit::SemFit) = minus2ll(sem_fit) + log(nsamples(sem_fit)) * nparams(sem_fit)

src/frontend/fit/fitmeasures/RMSEA.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ function RMSEA end
88
RMSEA(sem_fit::SemFit) = RMSEA(sem_fit, sem_fit.model)
99

1010
RMSEA(sem_fit::SemFit, model::AbstractSemSingle) =
11-
RMSEA(df(sem_fit), χ²(sem_fit), n_obs(sem_fit))
11+
RMSEA(df(sem_fit), χ²(sem_fit), nsamples(sem_fit))
1212

1313
RMSEA(sem_fit::SemFit, model::SemEnsemble) =
14-
sqrt(length(model.sems)) * RMSEA(df(sem_fit), χ²(sem_fit), n_obs(sem_fit))
14+
sqrt(length(model.sems)) * RMSEA(df(sem_fit), χ²(sem_fit), nsamples(sem_fit))
1515

16-
function RMSEA(df, chi2, n_obs)
17-
rmsea = (chi2 - df) / (n_obs * df)
16+
function RMSEA(df, chi2, nsamples)
17+
rmsea = (chi2 - df) / (nsamples * df)
1818
rmsea > 0 ? nothing : rmsea = 0
1919
return sqrt(rmsea)
2020
end

src/frontend/fit/fitmeasures/chi2.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ Return the χ² value.
1414

1515
# RAM + SemML
1616
χ²(lossfun::SemML, fit::SemFit, model::AbstractSemSingle) =
17-
(n_obs(fit) - 1) *
17+
(nsamples(fit) - 1) *
1818
(fit.minimum - logdet(obs_cov(observed(model))) - n_man(observed(model)))
1919

2020
# bollen, p. 115, only correct for GLS weight matrix
21-
χ²(lossfun::SemWLS, fit::SemFit, model::AbstractSemSingle) = (n_obs(fit) - 1) * fit.minimum
21+
χ²(lossfun::SemWLS, fit::SemFit, model::AbstractSemSingle) = (nsamples(fit) - 1) * fit.minimum
2222

2323
# FIML
2424
function χ²(lossfun::SemFIML, fit::SemFit, model::AbstractSemSingle)
@@ -51,15 +51,15 @@ function χ²(fit::SemFit, models::SemEnsemble)
5151
end
5252

5353
function χ²(lossfun::SemWLS, fit::SemFit, models::SemEnsemble)
54-
return (sum(n_obs, models.sems) - 1) * fit.minimum
54+
return (nsamples(models) - 1) * fit.minimum
5555
end
5656

5757
function χ²(lossfun::SemML, fit::SemFit, models::SemEnsemble)
5858
G = sum(zip(models.weights, models.sems)) do (w, model)
5959
data = observed(model)
6060
w * (logdet(obs_cov(data)) + n_man(data))
6161
end
62-
return (sum(n_obs, models.sems) - 1) * (fit.minimum - G)
62+
return (nsamples(models) - 1) * (fit.minimum - G)
6363
end
6464

6565
function χ²(lossfun::SemFIML, fit::SemFit, models::SemEnsemble)

src/frontend/fit/fitmeasures/minus2ll.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ minus2ll(minimum::Number, model::AbstractSemSingle) =
2222
# SemML ------------------------------------------------------------------------------------
2323
function minus2ll(lossfun::SemML, minimum::Number, model::AbstractSemSingle)
2424
obs = observed(model)
25-
return n_obs(obs) * (minimum + log(2π) * n_man(obs))
25+
return nsamples(obs) * (minimum + log(2π) * n_man(obs))
2626
end
2727

2828
# WLS --------------------------------------------------------------------------------------
@@ -32,8 +32,8 @@ minus2ll(lossfun::SemWLS, minimum::Number, model::AbstractSemSingle) = missing
3232
# -2ll = (∑ log(2π)*(nᵢ + mᵢ)) + F*n
3333
function minus2ll(lossfun::SemFIML, minimum::Number, model::AbstractSemSingle)
3434
obs = observed(model)::SemObservedMissing
35-
F = minimum * n_obs(obs)
36-
F += log(2π) * sum(pat -> n_obs(pat) * nobserved_vars(pat), obs.patterns)
35+
F = minimum * nsamples(obs)
36+
F += log(2π) * sum(pat -> nsamples(pat) * nobserved_vars(pat), obs.patterns)
3737
return F
3838
end
3939

@@ -44,7 +44,7 @@ function minus2ll(observed::SemObservedMissing)
4444

4545
F = 0.0
4646
for pat in observed.patterns
47-
nᵢ = n_obs(pat)
47+
nᵢ = nsamples(pat)
4848
# implied covariance/mean
4949
Σᵢ = Symmetric(Σ[pat.obs_mask, pat.obs_mask])
5050

@@ -53,13 +53,13 @@ function minus2ll(observed::SemObservedMissing)
5353
μ_diffᵢ = pat.obs_mean - μ[pat.obs_mask]
5454

5555
F_pat = ld + dot(μ_diffᵢ, Σᵢ⁻¹, μ_diffᵢ)
56-
if n_obs(pat) > 1
56+
if nsamples(pat) > 1
5757
F_pat += dot(pat.obs_cov, Σᵢ⁻¹)
5858
end
59-
F += (F_pat + log(2π) * nobserved_vars(pat)) * n_obs(pat)
59+
F += (F_pat + log(2π) * nobserved_vars(pat)) * nsamples(pat)
6060
end
6161

62-
#F *= n_obs(observed)
62+
#F *= nsamples(observed)
6363
return F
6464
end
6565

src/frontend/fit/fitmeasures/n_obs.jl

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/frontend/fit/standard_errors/hessian.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ function H_scaling(model::AbstractSemSingle)
4242
return H_scaling(model.loss.functions[1], model)
4343
end
4444

45-
H_scaling(lossfun::SemML, model::AbstractSemSingle) = 2 / (n_obs(model) - 1)
45+
H_scaling(lossfun::SemML, model::AbstractSemSingle) = 2 / (nsamples(model) - 1)
4646

4747
function H_scaling(lossfun::SemWLS, model::AbstractSemSingle)
4848
@warn "Standard errors for WLS are only correct if a GLS weight matrix (the default) is used."
49-
return 2 / (n_obs(model) - 1)
49+
return 2 / (nsamples(model) - 1)
5050
end
5151

52-
H_scaling(lossfun::SemFIML, model::AbstractSemSingle) = 2 / n_obs(model)
52+
H_scaling(lossfun::SemFIML, model::AbstractSemSingle) = 2 / nsamples(model)
5353

54-
H_scaling(model::SemEnsemble) = 2 / n_obs(model)
54+
H_scaling(model::SemEnsemble) = 2 / nsamples(model)

src/frontend/fit/summary.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function sem_summary(
1717
println("No. iterations/evaluations: $(n_iterations(sem_fit))")
1818
print("\n")
1919
println("Number of parameters: $(nparams(sem_fit))")
20-
println("Number of observations: $(n_obs(sem_fit))")
20+
println("Number of data samples: $(nsamples(sem_fit))")
2121
print("\n")
2222
printstyled(
2323
"----------------------------------- Model ----------------------------------- \n";

0 commit comments

Comments
 (0)