Model relational and durational events in a
    counting process framework, with functions for estimating and simulating
    Relational Event Models (REM) and Durational Event Models (DEM). Includes
    support for time-varying covariates, windowed statistics, and
    high-dimensional node-level fixed effects. References include
    Fritz et al. (2026) "Scalable Durational Event Models: Application to
    Physical and Digital Interactions" <doi:10.48550/arXiv.2504.00049>.

Implementation of the Robust Exponential Decreasing Index (REDI),
    proposed in the article by Issa Moussa, Arthur Leroy et al. (2019)
    <https://bmjopensem.bmj.com/content/bmjosem/5/1/e000573.full.pdf>.
    The REDI represents a measure of cumulated workload, robust to missing data,
    providing control of the decreasing influence of workload over time. 
    Various functions are provided to format data, compute REDI, and 
    visualise results in a simple and convenient way.

Biologically relevant, yet mathematically sound constraints are used
    to compute the propensity and thence infer the dominant direction of reactions
    of a generic biochemical network. The reactions must be unique and their 
    number must exceed that of the reactants,i.e., reactions >= reactants + 2.  
            'ReDirection', computes the null space of a user-defined stoichiometry
    matrix. The spanning non-zero and unique reaction vectors (RVs) are 
    combinatorially summed to generate one or more subspaces recursively.  
            Every reaction is represented as a sequence of identical components 
    across all RVs of a particular subspace. The terms are evaluated with 
    (biologically relevant bounds, linear maps, tests of convergence, descriptive
    statistics, vector norms) and the terms are classified into forward-, reverse- 
    and equivalent-subsets. Since, these are mutually exclusive the probability 
    of occurrence is binary (all, 1; none, 0).
            The combined propensity of a reaction is the p1-norm of the 
    sub-propensities, i.e., sum of the products of the probability and maximum
    numeric value of a subset (least upper bound, greatest lower bound). This, 
    if strictly positive is the probable rate constant, is used to infer dominant
    direction and annotate a reaction as "Forward (f)", "Reverse (b)" or 
    "Equivalent (e)".
            The inherent computational complexity (NP-hard) per iteration suggests
    that a suitable value for the number of reactions is around 20.
            Three functions comprise ReDirection. These are check_matrix() and 
    reaction_vector() which are internal, and calculate_reaction_vector()
            which is external.