Person-Specific (Idiographic) and Heterogeneous Complex Networks
Overview
Person-specific and within-person network estimation from intensive longitudinal and panel data. Estimators include ordinary vector autoregression (VAR), graphical vector autoregression (graphical VAR), multilevel vector autoregression (mlVAR), rolling ordinary and graphical VAR, native Bayesian VAR and multilevel Bayesian VAR, unified Structural Equation Modeling (uSEM), and Group Iterative Multiple Model Estimation (GIMME). All estimators are native clean-room implementations. All functions are validated against authoritative literature. Also provides preprocessing audits, edge-stability diagnostics, model-comparison reports, and rolling forecast validation. Methods are described in doi:10.1007/978-3-031-95365-1_20 and doi:10.1080/00273171.2018.1454823.
New features
- The pure-R graphical-lasso kernel that powers
fit_graphical_var()is now a supported public API:glasso_fit(),glasso_path(), andglasso_kkt().glasso_fit()returns aglasso_resultwhose$wiand$welements are named exactly asglasso::glasso()'s, so existing call sites port unchanged, and it supports element-wise penalty matrices and hard zero constraints in addition to a scalar penalty.glasso_kkt()certifies a solution from the graphical-lasso stationarity conditions rather than against another solver. Both results haveprint()and tidyas.data.frame()methods. This exists so sibling packages can drop their own copies of the same kernel and depend on this one; seeOFFLOAD.mdin the repository. matrices()gains aprintargument. The default (print = TRUE) is unchanged: it prints each matrix and returns the list invisibly. Withprint = FALSEthe function prints nothing and returns the list visibly, which is the form dependent packages and resampling loops need. Threaded through everymatrices()method, including those that delegate to another method.printfollows...in every method, so it must be named in full and can never be matched positionally or by partial name.
Show all changes in 0.3.4Hide the rest of the changes in 0.3.4
Bug fixes
glasso_kkt()no longer reports optimal zero-constrained fits as non-optimal. At an entry hard-constrained byzero, the inactive-edge condition|W_ij - S_ij| <= rho_ijdoes not apply: the equality constraint carries its own Lagrange multiplier, which absorbs the residual. Constrained pairs are now excluded from the check. A fit matchingglasso's Fortran kernel to 2e-12 previously certified as violating optimality by 0.028.glasso_fit()now rejects a covariance matrix that is not positive semi-definite (classed conditionidiographic_not_psd). A negative eigenvalue produced a precision matrix with a negative diagonal, from which every partial correlation wasNaN. Singular but positive semi-definite covariances remain valid input. The tidy accessor also refuses a precision matrix with a non-positive diagonal (idiographic_bad_precision) rather than lettingstats::cov2cor()warn and emitNaNweights.- An asymmetric element-wise penalty matrix is now rejected by
glasso_fit()and byfit_graphical_var()'sregularize_mat_kappa. The penalty on edge(i, j)is a single scalar over a symmetricTheta, so an asymmetric penalty is ill-posed rather than stricter; previously it was accepted and produced a fit that failed the package's own optimality check. glasso_kkt()validatespenalize_diagonalinstead of lettingisTRUE()silently mapNAand other invalid values toFALSE, and warns (idiographic_glasso_kkt_override) when a suppliedrhoorpenalize_diagonaldiffers from the one the fit was made with, since the returned violation then certifies a different problem.- The internal graphical-lasso optimality checker used to measure the *unpenalised* diagonal stationarity condition (
W_ii = S_ii) even for fits made withpenalize.diagonal = TRUE, whose condition isW_ii - S_ii = rho. It therefore reported a spurious violation of exactlyrhofor every such fit — includingglasso's own Fortran output, which is how this was found. It now takes the diagonal-penalty flag into account. No estimator result and no previously published number changes; only the diagnostic was wrong.
Documentation
matrices()now documents that it is a display verb by default, and points atprint = FALSEfor programmatic extraction.- The three most computationally expensive vignettes -- Graphical VAR, Bayesian VAR/DSEM, and GIMME -- are now pkgdown articles rather than installed vignettes. Their content is unchanged and they remain published at <https://pak.dynasite.org/idiographic/>, but they are no longer rebuilt during
R CMD check. Rebuilding all ten vignettes took 574 seconds on Windows R-devel (68% of the total check time, against CRAN's 10-minute guideline); these three accounted for the large majority of it. The remaining seven vignettes are renumbered 1-7.
From NEWS.md in the release
Install
Health
- OK13 OKNow
- OK8 OK2026-08-04
Documentation
The repository also keeps web-only articles.
- Help pages
- 73includes a package overview page
- Examples that run
- 70%30 run in a plain check (1 of them under a condition) · 12 only when donttest examples are enabled (R CMD check --as-cran) · 1 never run
- Exported functions with examples
- 100%
- Documented parameters
- 92%
- Return-value docs
- 100%
- Help pages citing references
- 3%
Downloads
Repository
Commits over time
5 development-tooling and community-health practices detected across 2 families in the upstream repository
Checks run against github.com/mohsaqr/idiographic on 2026-10-18.
The R CMD check workflow runs on Linux
GitHub Pages site last deployed 2026-10-18 · The repository has a site deploy workflow
pkgdown site last built 2026-10-18
Dependencies
Installing idiographic adds no packages beyond those that come with R.
Code & Tests
Datasets
People & History
Pick two releases to compare their code metrics.
- 0.3.4Latest
- 0.3.22026-08-03
- RR 4.6.0 released · 2026-04-24
Package metadata
- First published
- 2026-08-03
- Total releases
- 2 / 1 yrs
- License
- GPL-3 OSI
- Minimum R
- ≥ 4.1
- Bundled data
- 90 KB / 2 files
- Download size
- 1.5 MB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("idiographic")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-22, which the citation names so these numbers can be found later. More on citing and the projects behind them.