Profiling fixed-effects parameters
Initial approach to profiling the fixed-effects parameters for a linear mixed-effects model. The quantities that are stored are ζ, the signed square root of the change in the objective (negative twice the log-likelihood) and the parameters being optimized, θ. Derived parameters, β and σ, are also stored.
This approach depends strongly on the fact that the fixed-effects parameters are coefficients in a linear predictor with identity link and multivariate Gaussian distributions. To profile such a coefficient you simply subtract its contribution to the predictor from the response and fit the reduced model.
To profile other parameters such as standard deviations or correlations of the random effects it will be necessary to change the evaluation of the objective.
The failing CI was related to a failure to download Gadfly for the docs. I've restarted it.
A quick look suggests that this is as embarrassingly parallel as the bootstrap, with the same shared memory issues for the model object. Should I add in multi-threading?
Codecov Report
Merging #249 into master will decrease coverage by
2.12%. The diff coverage is2.63%.
@@ Coverage Diff @@
## master #249 +/- ##
==========================================
- Coverage 95.32% 93.20% -2.13%
==========================================
Files 23 24 +1
Lines 1626 1663 +37
==========================================
Hits 1550 1550
- Misses 76 113 +37
| Impacted Files | Coverage Δ | |
|---|---|---|
| src/MixedModels.jl | 100.00% <ø> (ø) |
|
| src/profile.jl | 0.00% <0.00%> (ø) |
|
| src/linearmixedmodel.jl | 98.88% <100.00%> (ø) |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact),ø = not affected,? = missing dataPowered by Codecov. Last update ff776dc...f5b6321. Read the comment docs.
@palday The number of optimizations of the objective is much lower for profiling than for parametric bootstrapping. The default here is on the order of 10x the number of fixed-effects parameters. I certainly have no objections to incorporating threads as you did for the bootstrapping but it may not be very noticeable.
Then I'll probably leave it alone for now. I've been working on various parallelizable odds and ends lately, so I might come back for the practice reasoning about various concurrency issues.
Starting over with this because the branch is too stale.