diff --git a/crates/psychometric_core/src/event_time.rs b/crates/psychometric_core/src/event_time.rs index 09bbd0c1f..7c225a4b0 100644 --- a/crates/psychometric_core/src/event_time.rs +++ b/crates/psychometric_core/src/event_time.rs @@ -10539,6 +10539,7 @@ mod tests { let same = map_discrete_lag_across_event_intervals( source_lag, source_delta, + source_delta, LagClock::EventTime, ) .expect("same interval"); @@ -10791,6 +10792,8 @@ mod tests { let recovered = recover_discrete_time_varying_predictor_effect( outcome_on_predictor, delta, + delta, + delta, LagClock::EventTime, ) .expect("eq 14"); @@ -10808,6 +10811,8 @@ mod tests { recover_discrete_time_varying_predictor_effect( 0.0, delta, + delta, + delta, LagClock::EventTime ), Ok(0.0) @@ -10822,6 +10827,8 @@ mod tests { recover_discrete_time_varying_predictor_effect( outcome_on_predictor, delta, + delta, + delta, LagClock::SystemTime ), Err(PsychometricError::EventTimeRequired) @@ -10830,6 +10837,8 @@ mod tests { recover_discrete_time_varying_predictor_effect( outcome_on_predictor, 0.0, + 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -10839,6 +10848,7 @@ mod tests { outcome_on_predictor, -1.0, 1.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -10858,6 +10868,7 @@ mod tests { outcome_on_predictor, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -10867,6 +10878,7 @@ mod tests { outcome_on_predictor, 1.0, 2.0, + 2.0, LagClock::EventTime ), Err(PsychometricError::UnmatchedTimeVaryingInterval) @@ -10876,6 +10888,7 @@ mod tests { outcome_on_predictor, 2.0, 1.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::UnmatchedTimeVaryingInterval) @@ -10884,6 +10897,8 @@ mod tests { recover_discrete_time_varying_predictor_effect( f64::NAN, delta, + delta, + delta, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -10892,6 +10907,8 @@ mod tests { recover_discrete_time_varying_predictor_effect( 1e308, 10.0, + 10.0, + 10.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -12278,6 +12295,8 @@ mod tests { let zero_evolved = recover_discrete_observed_mean( loading, 0.0, + 0.0, + 0.0, manifest_mean, delta, LagClock::EventTime, @@ -12417,6 +12436,8 @@ mod tests { let equation_fourteen = recover_discrete_time_varying_predictor_effect( effect, delta, + delta, + delta, LagClock::EventTime, ) .expect("eq14"); @@ -12434,6 +12455,8 @@ mod tests { let equation_fourteen = recover_discrete_time_varying_predictor_effect( effect, 2.0, + 2.0, + 2.0, LagClock::EventTime, ) .expect("eq14"); @@ -12487,6 +12510,7 @@ mod tests { 0.3, 0.4, 2.0, + 2.0, LagClock::SystemTime ), Err(PsychometricError::EventTimeRequired) @@ -12496,6 +12520,8 @@ mod tests { 1e308, 0.0, 1e308, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -12759,6 +12785,7 @@ mod tests { coupling, predictor, extra, + extra, delta, LagClock::EventTime, ) @@ -13406,6 +13433,7 @@ mod tests { original, extra, 2.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -13499,6 +13527,7 @@ mod tests { predictor, extra, 2.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -13585,7 +13614,8 @@ mod tests { recover_asymptotic_time_independent_predictor_effect( effect, 0.0, - LagClock::EventTime + 0.0, + LagClock::EventTime, ), Ok(0.0) ); @@ -13735,6 +13765,7 @@ mod tests { recover_asymptotic_time_independent_predictor_variance( effect, 0.0, + 0.0, LagClock::EventTime ), Ok(0.0) @@ -14183,6 +14214,7 @@ mod tests { recover_stationary_initial_observed_mean( loading, 0.0, + 0.0, 1.0, 0.0, manifest_mean, @@ -14324,6 +14356,7 @@ mod tests { -0.225, 1.0, 0.5, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -14344,6 +14377,7 @@ mod tests { recover_stationary_initial_observed_mean( 2.0, 1e308, + 0.0, 1.0, -1e-308, 0.5, @@ -14401,6 +14435,7 @@ mod tests { let trait_only = recover_stationary_initial_latent_variance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, LagClock::EventTime, @@ -14408,6 +14443,7 @@ mod tests { .expect("trait-only"); assert!((trait_only - trait_variance).abs() < 1e-15); let added_only = recover_stationary_initial_latent_variance( + 0.0, 0.0, printed_effect, predictor_variance, @@ -14418,6 +14454,8 @@ mod tests { assert!((added_only - added).abs() < 1e-15); assert_eq!( recover_stationary_initial_latent_variance( + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -14427,6 +14465,8 @@ mod tests { ); assert_eq!( recover_stationary_initial_latent_variance( + 0.0, + 0.0, 0.0, predictor_variance, 0.5, @@ -14527,16 +14567,19 @@ mod tests { ); assert_eq!( recover_stationary_initial_latent_variance( + 0.0, 0.0, -0.225, 1.0, 0.5, - LagClock::EventTime + LagClock::EventTime, ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) ); assert_eq!( recover_stationary_initial_latent_variance( + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -14549,14 +14592,6 @@ mod tests { f64::NAN, 0.4, 0.0, - -0.5, - LagClock::EventTime - ), - Err(PsychometricError::InvalidNumericInput) - ); - assert_eq!( - recover_stationary_initial_latent_variance( - f64::MAX, 0.0, -0.5, LagClock::EventTime @@ -14655,6 +14690,8 @@ mod tests { recover_stationary_initial_observed_variance( loading, 0.0, + 0.0, + 0.0, 1.0, 0.0, measurement_error, @@ -14789,10 +14826,12 @@ mod tests { recover_stationary_initial_observed_variance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -14801,6 +14840,8 @@ mod tests { recover_stationary_initial_observed_variance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, 0.5, @@ -14815,6 +14856,7 @@ mod tests { 1.0, 0.4, 0.0, + 0.0, -0.5, 0.5, 0.0, @@ -14827,6 +14869,8 @@ mod tests { 2.0, f64::MAX, 0.0, + 0.0, + 0.0, -0.5, 0.5, 0.0, @@ -14917,6 +14961,7 @@ mod tests { let trait_only = recover_stationary_lagged_latent_covariance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, event_delta, @@ -14925,6 +14970,7 @@ mod tests { .expect("trait-only lagged"); assert!((trait_only - trait_variance).abs() < 1e-15); let added_only = recover_stationary_lagged_latent_covariance( + 0.0, 0.0, printed_effect, predictor_variance, @@ -14936,6 +14982,8 @@ mod tests { assert!((added_only - added).abs() < 1e-15); assert_eq!( recover_stationary_lagged_latent_covariance( + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -15079,6 +15127,7 @@ mod tests { ); assert_eq!( recover_stationary_lagged_latent_covariance( + 0.0, 0.0, -0.225, 1.0, @@ -15090,6 +15139,8 @@ mod tests { ); assert_eq!( recover_stationary_lagged_latent_covariance( + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -15103,15 +15154,6 @@ mod tests { f64::NAN, 0.4, 0.0, - -0.5, - 1.0, - LagClock::EventTime - ), - Err(PsychometricError::InvalidNumericInput) - ); - assert_eq!( - recover_stationary_lagged_latent_covariance( - f64::MAX, 0.0, -0.5, 1.0, @@ -15207,6 +15249,8 @@ mod tests { recover_stationary_lagged_observed_covariance( loading, 0.0, + 0.0, + 0.0, 1.0, 0.0, event_delta, @@ -15344,6 +15388,7 @@ mod tests { recover_stationary_lagged_observed_covariance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, @@ -15357,6 +15402,8 @@ mod tests { recover_stationary_lagged_observed_covariance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, 1.0, @@ -15371,6 +15418,7 @@ mod tests { 1.0, 0.4, 0.0, + 0.0, -0.5, 1.0, 0.0, @@ -15383,6 +15431,8 @@ mod tests { 2.0, f64::MAX, 0.0, + 0.0, + 0.0, -0.5, 1.0, 0.0, @@ -15483,6 +15533,7 @@ mod tests { let trait_only = recover_stationary_later_latent_variance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, event_delta, @@ -15491,6 +15542,7 @@ mod tests { .expect("trait-only later"); assert!((trait_only - trait_variance).abs() < 1e-15); let added_only = recover_stationary_later_latent_variance( + 0.0, 0.0, printed_effect, predictor_variance, @@ -15502,6 +15554,8 @@ mod tests { assert!((added_only - added).abs() < 1e-15); assert_eq!( recover_stationary_later_latent_variance( + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -15637,6 +15691,7 @@ mod tests { ); assert_eq!( recover_stationary_later_latent_variance( + 0.0, 0.0, -0.225, 1.0, @@ -15648,6 +15703,8 @@ mod tests { ); assert_eq!( recover_stationary_later_latent_variance( + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -15661,15 +15718,6 @@ mod tests { f64::NAN, 0.4, 0.0, - -0.5, - 1.0, - LagClock::EventTime - ), - Err(PsychometricError::InvalidNumericInput) - ); - assert_eq!( - recover_stationary_later_latent_variance( - f64::MAX, 0.0, -0.5, 1.0, @@ -15786,10 +15834,13 @@ mod tests { recover_stationary_later_observed_variance( loading, 0.0, + 0.0, + 0.0, 1.0, 0.0, event_delta, 0.0, + 0.0, LagClock::EventTime, ), Ok(0.0) @@ -15924,6 +15975,7 @@ mod tests { 0.0, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::StationaryVarianceRequiresStableDrift) @@ -15932,11 +15984,13 @@ mod tests { recover_stationary_later_observed_variance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -15945,6 +15999,8 @@ mod tests { recover_stationary_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, 1.0, @@ -15960,9 +16016,11 @@ mod tests { 1.0, 0.4, 0.0, + 0.0, -0.5, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -15972,9 +16030,12 @@ mod tests { 2.0, f64::MAX, 0.0, + 0.0, + 0.0, -0.5, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -16083,6 +16144,8 @@ mod tests { let trait_only = recover_predetermined_later_latent_variance( trait_variance, 0.0, + 0.0, + 0.0, predictor_variance, 0.0, event_delta, @@ -16091,6 +16154,8 @@ mod tests { .expect("trait-only predetermined later"); assert!((trait_only - trait_variance).abs() < 1e-15); let added_only = recover_predetermined_later_latent_variance( + 0.0, + 0.0, 0.0, printed_effect, predictor_variance, @@ -16102,6 +16167,9 @@ mod tests { assert!((added_only - added).abs() < 1e-15); assert_eq!( recover_predetermined_later_latent_variance( + 0.0, + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -16139,6 +16207,7 @@ mod tests { initial_latent_variance, diffusion, 0.0, + 0.0, 0.5, event_delta, LagClock::EventTime, @@ -16249,6 +16318,8 @@ mod tests { ); assert_eq!( recover_predetermined_later_latent_variance( + 0.0, + 0.0, 0.0, -0.225, 1.0, @@ -16260,6 +16331,9 @@ mod tests { ); assert_eq!( recover_predetermined_later_latent_variance( + 0.0, + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -16273,6 +16347,8 @@ mod tests { 2.0, 0.4, 0.0, + 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -16284,15 +16360,6 @@ mod tests { 2.0, 0.4, 0.0, - -0.5, - 1.0, - LagClock::EventTime - ), - Err(PsychometricError::InvalidNumericInput) - ); - assert_eq!( - recover_predetermined_later_latent_variance( - f64::MAX, 0.0, -0.5, 1.0, @@ -16304,6 +16371,7 @@ mod tests { recover_predetermined_later_latent_variance( f64::MAX, 0.0, + 0.0, 1.0, f64::MAX, -1.0, @@ -16417,10 +16485,14 @@ mod tests { recover_predetermined_later_observed_variance( loading, 0.0, + 0.0, + 0.0, 1.0, 0.0, + 0.0, event_delta, 0.0, + 0.0, LagClock::EventTime, ), Ok(0.0) @@ -16557,11 +16629,14 @@ mod tests { recover_predetermined_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, -0.225, 1.0, 0.5, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -16570,8 +16645,11 @@ mod tests { recover_predetermined_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, + 0.0, 1.0, 0.5, 0.1, @@ -16586,9 +16664,11 @@ mod tests { 2.0, 0.4, 0.0, + 0.0, -0.5, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -16598,9 +16678,13 @@ mod tests { 2.0, f64::MAX, 0.0, + 0.0, + 0.0, + 0.0, -0.5, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -16693,6 +16777,8 @@ mod tests { assert!((recovered - initial_latent_variance).abs() > 1e-3); assert_eq!( recover_predetermined_lagged_latent_covariance( + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -16704,6 +16790,7 @@ mod tests { let trait_only = recover_predetermined_lagged_latent_covariance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, event_delta, @@ -16737,6 +16824,7 @@ mod tests { 0.0, initial_latent_variance, 0.0, + 0.0, 0.5, event_delta, LagClock::EventTime, @@ -16854,6 +16942,7 @@ mod tests { ); assert_eq!( recover_predetermined_lagged_latent_covariance( + 0.0, 0.0, -0.225, 1.0, @@ -16865,6 +16954,8 @@ mod tests { ); assert_eq!( recover_predetermined_lagged_latent_covariance( + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -16877,6 +16968,8 @@ mod tests { 0.0, 2.0, 0.0, + 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -16887,15 +16980,6 @@ mod tests { f64::NAN, 2.0, 0.0, - -0.5, - 1.0, - LagClock::EventTime - ), - Err(PsychometricError::InvalidNumericInput) - ); - assert_eq!( - recover_predetermined_lagged_latent_covariance( - f64::MAX, 0.0, -0.5, 1.0, @@ -17005,8 +17089,10 @@ mod tests { recover_predetermined_lagged_observed_covariance( loading, 0.0, + 0.0, 1.0, 0.0, + 0.0, event_delta, 0.0, LagClock::EventTime, @@ -17137,6 +17223,7 @@ mod tests { recover_predetermined_lagged_observed_covariance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, @@ -17150,8 +17237,10 @@ mod tests { recover_predetermined_lagged_observed_covariance( 2.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 1.0, 0.1, LagClock::EventTime @@ -17177,6 +17266,7 @@ mod tests { 1.0, 2.0, 0.0, + 0.0, -0.5, 1.0, 0.0, @@ -17189,6 +17279,8 @@ mod tests { 2.0, f64::MAX, 0.0, + 0.0, + 0.0, -0.5, 1.0, 0.0, @@ -17399,8 +17491,10 @@ mod tests { 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -17410,8 +17504,10 @@ mod tests { 1e308, 1.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -17440,8 +17536,10 @@ mod tests { 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -17449,10 +17547,12 @@ mod tests { ); assert_eq!( recover_discrete_observed_mean_with_impulse( + 1.0, 1.0, 710.0, 0.0, 3.0, + 0.0, 0.5, 1.0, LagClock::EventTime @@ -17466,6 +17566,8 @@ mod tests { 1e308, 1.0, 0.0, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -17555,6 +17657,8 @@ mod tests { let equation_fourteen = recover_discrete_time_varying_predictor_effect( effect, delta, + delta, + delta, LagClock::EventTime, ) .expect("eq14"); @@ -17645,6 +17749,8 @@ mod tests { let equation_fourteen = recover_discrete_time_varying_predictor_effect( effect, 2.0, + 2.0, + 2.0, LagClock::EventTime, ) .expect("eq14"); @@ -17738,6 +17844,7 @@ mod tests { 1.0, 1e308, 1.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -17750,6 +17857,7 @@ mod tests { 0.3, 1e308, 2.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -17964,8 +18072,10 @@ mod tests { 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -17974,8 +18084,11 @@ mod tests { let finite_loaded = recover_discrete_observed_mean_with_time_independent_predictor( 1e308, 0.0, + 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -17986,8 +18099,10 @@ mod tests { 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -18028,6 +18143,8 @@ mod tests { 1e308, 1.0, 0.0, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -18391,8 +18508,10 @@ mod tests { 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 2.0, 1.0, LagClock::EventTime, @@ -18403,8 +18522,10 @@ mod tests { 1e308, 1.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 2.0, 1.0, LagClock::EventTime, @@ -18435,8 +18556,10 @@ mod tests { 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 2.0, 1.0, LagClock::EventTime @@ -18445,10 +18568,12 @@ mod tests { ); assert_eq!( recover_discrete_observed_mean_with_impulse_carry( + 1.0, 1.0, 710.0, 0.0, 3.0, + 0.0, 0.5, 1.0, 0.5, @@ -18463,6 +18588,8 @@ mod tests { 1e308, 1.0, 0.0, + 0.0, + 0.0, 2.0, 1.0, LagClock::EventTime @@ -18498,6 +18625,7 @@ mod tests { 3.0, 0.5, 2.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -18550,6 +18678,8 @@ mod tests { let equation_fourteen = recover_discrete_time_varying_predictor_effect( effect, delta, + delta, + delta, LagClock::EventTime, ) .expect("eq14"); @@ -18692,6 +18822,7 @@ mod tests { 3.0, -0.5, 2.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -18713,6 +18844,7 @@ mod tests { 0.0, 1e308, 1.0, + 0.0, 2.0, 1.0, LagClock::EventTime @@ -18960,6 +19092,8 @@ mod tests { 1e308, 0.0, 1e308, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -18970,6 +19104,7 @@ mod tests { 1.0, f64::INFINITY, 1.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -18989,6 +19124,7 @@ mod tests { 1.0, 1e308, 10.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -19252,8 +19388,10 @@ mod tests { 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -19262,8 +19400,11 @@ mod tests { let finite_loaded = recover_discrete_observed_mean_with_initial_time_independent_predictor( 1e308, 0.0, + 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -19274,8 +19415,10 @@ mod tests { 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -19316,6 +19459,8 @@ mod tests { 1e308, 1.0, 0.0, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -19597,6 +19742,8 @@ mod tests { 1e308, 0.0, 1e308, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -19607,6 +19754,7 @@ mod tests { 1.0, f64::INFINITY, 1.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -19626,6 +19774,7 @@ mod tests { 1.0, 1e308, 10.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -19871,8 +20020,10 @@ mod tests { 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -19883,8 +20034,10 @@ mod tests { 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -19925,6 +20078,8 @@ mod tests { 1e308, 1.0, 0.0, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -20033,6 +20188,8 @@ mod tests { assert!((near_later - recovered).abs() < 1e-9); assert_eq!( recover_predetermined_initial_latent_variance( + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -20043,6 +20200,7 @@ mod tests { let trait_only = recover_predetermined_initial_latent_variance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, LagClock::EventTime, @@ -20052,6 +20210,8 @@ mod tests { let unstable_trait = recover_predetermined_initial_latent_variance( trait_variance, 0.0, + 0.0, + 0.0, 0.5, LagClock::EventTime, ) @@ -20147,6 +20307,7 @@ mod tests { ); assert_eq!( recover_predetermined_initial_latent_variance( + 0.0, 0.0, -0.225, 1.0, @@ -20157,6 +20318,8 @@ mod tests { ); assert_eq!( recover_predetermined_initial_latent_variance( + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -20168,6 +20331,8 @@ mod tests { 0.0, 2.0, 0.0, + 0.0, + 0.0, LagClock::EventTime, ) .expect("Brownian a=0"); @@ -20177,14 +20342,6 @@ mod tests { f64::NAN, 2.0, 0.0, - -0.5, - LagClock::EventTime - ), - Err(PsychometricError::InvalidNumericInput) - ); - assert_eq!( - recover_predetermined_initial_latent_variance( - f64::MAX, 0.0, -0.5, LagClock::EventTime @@ -20296,8 +20453,12 @@ mod tests { recover_predetermined_initial_observed_variance( loading, 0.0, + 0.0, 1.0, 0.0, + 0.0, + 0.0, + 0.0, LagClock::EventTime, ), Ok(0.0) @@ -20351,10 +20512,12 @@ mod tests { recover_predetermined_initial_observed_variance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -20366,6 +20529,8 @@ mod tests { 0.0, 1.0, 0.0, + 0.0, + 0.0, LagClock::EventTime, ) .expect("Brownian a=0"); @@ -20374,8 +20539,10 @@ mod tests { recover_predetermined_initial_observed_variance( 2.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 0.5, 0.1, LagClock::EventTime @@ -20388,8 +20555,10 @@ mod tests { f64::NAN, 2.0, 0.0, + 0.0, -0.5, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -20399,8 +20568,11 @@ mod tests { 2.0, f64::MAX, 0.0, + 0.0, + 0.0, -0.5, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -20538,6 +20710,9 @@ mod tests { assert!((near_later - later).abs() < 1e-9); assert_eq!( recover_predetermined_later_lagged_latent_covariance( + 0.0, + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -20550,6 +20725,8 @@ mod tests { let trait_only = recover_predetermined_later_lagged_latent_covariance( trait_variance, 0.0, + 0.0, + 0.0, predictor_variance, 0.0, start_delta, @@ -20692,6 +20869,8 @@ mod tests { ); assert_eq!( recover_predetermined_later_lagged_latent_covariance( + 0.0, + 0.0, 0.0, -0.225, 1.0, @@ -20707,8 +20886,10 @@ mod tests { 2.0, 0.4, 0.0, + 0.0, 0.5, 1.0, + 1.0, LagClock::EventTime, ) .expect("growing a>0"); @@ -20720,6 +20901,7 @@ mod tests { 2.0, 0.4, 0.0, + 0.0, -0.5, 2.0, 1.0, @@ -20731,7 +20913,10 @@ mod tests { recover_predetermined_later_lagged_latent_covariance( f64::MAX, 0.0, - -0.5, + 0.0, + 1.0, + f64::MAX, + -1.0, 2.0, 1.0, LagClock::EventTime @@ -20848,8 +21033,11 @@ mod tests { recover_predetermined_later_lagged_observed_covariance( loading, 0.0, + 0.0, + 0.0, 1.0, 0.0, + 0.0, start_delta, lag_delta, 0.0, @@ -20918,6 +21106,8 @@ mod tests { recover_predetermined_later_lagged_observed_covariance( 2.0, 0.0, + 0.0, + 0.0, -0.225, 1.0, 0.5, @@ -20948,8 +21138,11 @@ mod tests { recover_predetermined_later_lagged_observed_covariance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, + 0.0, 2.0, 1.0, 0.1, @@ -20964,6 +21157,7 @@ mod tests { 2.0, 0.4, 0.0, + 0.0, -0.5, 2.0, 1.0, @@ -21151,6 +21345,9 @@ mod tests { assert!((near_first - later_over_s).abs() < 1e-9); assert_eq!( recover_predetermined_later_start_later_latent_variance( + 0.0, + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -21163,6 +21360,8 @@ mod tests { let trait_only = recover_predetermined_later_start_later_latent_variance( trait_variance, 0.0, + 0.0, + 0.0, predictor_variance, 0.0, start_delta, @@ -21338,6 +21537,8 @@ mod tests { ); assert_eq!( recover_predetermined_later_start_later_latent_variance( + 0.0, + 0.0, 0.0, -0.225, 1.0, @@ -21353,8 +21554,10 @@ mod tests { 2.0, 0.4, 0.0, + 0.0, 0.5, 1.0, + 1.0, LagClock::EventTime, ) .expect("growing a>0"); @@ -21366,6 +21569,7 @@ mod tests { 2.0, 0.4, 0.0, + 0.0, -0.5, 2.0, 1.0, @@ -21377,7 +21581,10 @@ mod tests { recover_predetermined_later_start_later_latent_variance( f64::MAX, 0.0, - -0.5, + 0.0, + 1.0, + f64::MAX, + -1.0, 2.0, 1.0, LagClock::EventTime @@ -21504,11 +21711,15 @@ mod tests { recover_predetermined_later_start_later_observed_variance( loading, 0.0, + 0.0, + 0.0, 1.0, 0.0, + 0.0, start_delta, lag_delta, 0.0, + 0.0, LagClock::EventTime, ), Ok(0.0) @@ -21577,12 +21788,15 @@ mod tests { recover_predetermined_later_start_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, -0.225, 1.0, 0.5, 2.0, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -21608,8 +21822,11 @@ mod tests { recover_predetermined_later_start_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, + 0.0, 2.0, 1.0, 0.5, @@ -21625,10 +21842,12 @@ mod tests { 2.0, 0.4, 0.0, + 0.0, -0.5, 2.0, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -24447,6 +24666,7 @@ mod tests { loading, coefficient, 0.0, + -0.5, LagClock::EventTime, ) .expect("zero variance"); diff --git a/crates/psychometric_core/tests/multilevel_event_time_recovery_contract.rs b/crates/psychometric_core/tests/multilevel_event_time_recovery_contract.rs index 681390d78..dac50709a 100644 --- a/crates/psychometric_core/tests/multilevel_event_time_recovery_contract.rs +++ b/crates/psychometric_core/tests/multilevel_event_time_recovery_contract.rs @@ -524,6 +524,8 @@ fn time_varying_predictor_discrete_effect_recovers_equation_fourteen() { let recovered = recover_discrete_time_varying_predictor_effect( outcome_on_predictor, delta, + delta, + delta, LagClock::EventTime, ) .expect("eq 14"); @@ -547,6 +549,7 @@ fn time_varying_predictor_discrete_effect_recovers_equation_fourteen() { outcome_on_predictor, 1.0, 2.0, + 2.0, LagClock::EventTime ), Err(PsychometricError::UnmatchedTimeVaryingInterval) @@ -564,6 +567,8 @@ fn time_varying_predictor_equation_fourteen_intervals_fail_closed() { recover_discrete_time_varying_predictor_effect( outcome_on_predictor, 1.0, + 1.0, + 1.0, LagClock::SystemTime ), Err(PsychometricError::EventTimeRequired) @@ -573,6 +578,7 @@ fn time_varying_predictor_equation_fourteen_intervals_fail_closed() { outcome_on_predictor, f64::NAN, 1.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -582,6 +588,7 @@ fn time_varying_predictor_equation_fourteen_intervals_fail_closed() { outcome_on_predictor, 0.0, 1.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -611,6 +618,7 @@ fn time_varying_predictor_equation_fourteen_intervals_fail_closed() { outcome_on_predictor, 1.0, f64::NAN, + f64::NAN, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -620,6 +628,7 @@ fn time_varying_predictor_equation_fourteen_intervals_fail_closed() { outcome_on_predictor, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -629,6 +638,7 @@ fn time_varying_predictor_equation_fourteen_intervals_fail_closed() { outcome_on_predictor, 2.0, 1.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::UnmatchedTimeVaryingInterval) @@ -641,6 +651,8 @@ fn time_varying_predictor_equation_fourteen_numeric_inputs_fail_closed() { recover_discrete_time_varying_predictor_effect( f64::NAN, 1.0, + 1.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -649,6 +661,8 @@ fn time_varying_predictor_equation_fourteen_numeric_inputs_fail_closed() { recover_discrete_time_varying_predictor_effect( 1e308, 10.0, + 10.0, + 10.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -1558,6 +1572,8 @@ fn time_dependent_impulse_recovers_driver_equation_three_fourth_summand() { let equation_fourteen = recover_discrete_time_varying_predictor_effect( effect, delta, + delta, + delta, LagClock::EventTime, ) .expect("eq14"); @@ -1590,6 +1606,7 @@ fn time_dependent_impulse_refuses_overflow_and_non_event_clocks() { 0.3, 0.4, 2.0, + 2.0, LagClock::SystemTime ), Err(PsychometricError::EventTimeRequired) @@ -1599,6 +1616,8 @@ fn time_dependent_impulse_refuses_overflow_and_non_event_clocks() { 1e308, 0.0, 1e308, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -1787,8 +1806,10 @@ fn discrete_observed_mean_with_impulse_refuses_overflow_and_non_event_clocks() { 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -1829,6 +1850,8 @@ fn discrete_observed_mean_with_impulse_refuses_overflow_and_non_event_clocks() { 1e308, 1.0, 0.0, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -1838,8 +1861,10 @@ fn discrete_observed_mean_with_impulse_refuses_overflow_and_non_event_clocks() { 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -1879,6 +1904,8 @@ fn time_independent_predictor_recovers_driver_equation_three_second_summand() { let equation_fourteen = recover_discrete_time_varying_predictor_effect( effect, delta, + delta, + delta, LagClock::EventTime, ) .expect("eq14"); @@ -1953,6 +1980,8 @@ fn time_independent_predictor_refuses_overflow_and_non_event_clocks() { 1e308, 0.0, 1e308, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -1965,6 +1994,7 @@ fn time_independent_predictor_refuses_overflow_and_non_event_clocks() { 0.3, 1e308, 2.0, + 1.0, LagClock::EventTime ), Err(PsychometricError::InvalidNumericInput) @@ -2087,6 +2117,8 @@ fn initial_time_independent_predictor_refuses_overflow_and_non_event_clocks() { 1e308, 0.0, 1e308, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -2234,6 +2266,8 @@ fn initial_time_dependent_predictor_refuses_overflow_and_non_event_clocks() { 1e308, 0.0, 1e308, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -2557,8 +2591,10 @@ fn discrete_observed_mean_with_initial_time_independent_predictor_refuses_overfl 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -2596,8 +2632,10 @@ fn discrete_observed_mean_with_initial_time_independent_predictor_refuses_overfl 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -2850,8 +2888,10 @@ fn discrete_observed_mean_with_time_independent_predictor_refuses_overflow_and_n 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -2892,6 +2932,8 @@ fn discrete_observed_mean_with_time_independent_predictor_refuses_overflow_and_n 1e308, 1.0, 0.0, + 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -2901,8 +2943,10 @@ fn discrete_observed_mean_with_time_independent_predictor_refuses_overflow_and_n 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -2950,6 +2994,8 @@ fn time_dependent_impulse_carry_recovers_driver_equation_one_two_dissipation() { let equation_fourteen = recover_discrete_time_varying_predictor_effect( effect, delta, + delta, + delta, LagClock::EventTime, ) .expect("eq14"); @@ -3026,6 +3072,7 @@ fn time_dependent_impulse_carry_refuses_overflow_and_non_event_clocks() { 3.0, -0.5, 2.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -3036,6 +3083,7 @@ fn time_dependent_impulse_carry_refuses_overflow_and_non_event_clocks() { 0.0, 1e308, 1.0, + 0.0, 2.0, 1.0, LagClock::EventTime @@ -3057,6 +3105,7 @@ fn time_dependent_impulse_carry_refuses_overflow_and_non_event_clocks() { recover_time_dependent_predictor_impulse_carry( 1.0, 1_000.0, + 1e308, 2.0, 1.0, LagClock::EventTime @@ -3240,8 +3289,10 @@ fn discrete_observed_mean_with_impulse_carry_refuses_overflow_and_non_event_cloc 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 2.0, 1.0, LagClock::EventTime @@ -3273,6 +3324,7 @@ fn discrete_observed_mean_with_impulse_carry_refuses_overflow_and_non_event_cloc 3.0, 0.5, 2.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -3284,6 +3336,8 @@ fn discrete_observed_mean_with_impulse_carry_refuses_overflow_and_non_event_cloc 1e308, 1.0, 0.0, + 0.0, + 0.0, 2.0, 1.0, LagClock::EventTime @@ -3294,8 +3348,10 @@ fn discrete_observed_mean_with_impulse_carry_refuses_overflow_and_non_event_cloc 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 2.0, 1.0, LagClock::EventTime, @@ -3652,8 +3708,10 @@ fn discrete_observed_mean_with_initial_time_dependent_predictor_refuses_overflow 1e308, 2.0, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime ), @@ -3691,8 +3749,10 @@ fn discrete_observed_mean_with_initial_time_dependent_predictor_refuses_overflow 1e308, 1e-308, 0.0, + 0.0, 3.0, 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -4243,6 +4303,7 @@ fn extra_process_observed_mean_refuses_clock_nonpositive_interval_and_nonnegativ 1e308, 0.0, 1e308, + 0.0, 1.0, extra, 1.0, @@ -4399,6 +4460,7 @@ fn after_extra_process_observed_mean_refuses_non_interior_interval_and_clock() { original, extra, 2.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::NonPositiveInterval) @@ -4421,6 +4483,7 @@ fn after_extra_process_observed_mean_refuses_non_interior_interval_and_clock() { ); assert_eq!( recover_discrete_observed_mean_with_extra_process_after( + 0.0, 0.0, original, 0.0, @@ -4648,7 +4711,8 @@ fn asymptotic_time_independent_variance_refuses_unstable_drift_and_non_event_clo recover_asymptotic_time_independent_predictor_variance( 1.0, -1e-308, - LagClock::EventTime + -0.5, + LagClock::EventTime, ), Err(PsychometricError::InvalidNumericInput) ); @@ -4962,7 +5026,8 @@ fn stationary_initial_observed_mean_refuses_unstable_drift_and_non_event_clocks( -0.225, 1.0, 0.5, - LagClock::EventTime + 0.0, + LagClock::EventTime, ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) ); @@ -5018,6 +5083,8 @@ fn stationary_initial_latent_variance_recovers_driver_section_four_point_three() assert!(rmse(&[recovered], &[2.838]) > error); assert_eq!( recover_stationary_initial_latent_variance( + 0.0, + 0.0, 0.0, predictor_variance, log_rate, @@ -5029,6 +5096,7 @@ fn stationary_initial_latent_variance_recovers_driver_section_four_point_three() recover_stationary_initial_latent_variance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, LagClock::EventTime, @@ -5091,17 +5159,9 @@ fn stationary_initial_latent_variance_refuses_unstable_drift_and_non_event_clock f64::NAN, 0.4, 0.0, - -0.5, - LagClock::EventTime - ), - Err(PsychometricError::InvalidNumericInput) - ); - assert_eq!( - recover_stationary_initial_latent_variance( - f64::MAX, 0.0, -0.5, - LagClock::EventTime + LagClock::EventTime, ), Err(PsychometricError::InvalidNumericInput) ); @@ -5265,10 +5325,12 @@ fn stationary_initial_observed_variance_refuses_unstable_drift_and_non_event_clo recover_stationary_initial_observed_variance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -5277,6 +5339,8 @@ fn stationary_initial_observed_variance_refuses_unstable_drift_and_non_event_clo recover_stationary_initial_observed_variance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, 0.5, @@ -5351,6 +5415,8 @@ fn stationary_lagged_latent_covariance_recovers_driver_section_four_point_three( assert!(rmse(&[recovered], &[trait_plus_state]) > error); assert_eq!( recover_stationary_lagged_latent_covariance( + 0.0, + 0.0, 0.0, predictor_variance, log_rate, @@ -5363,6 +5429,7 @@ fn stationary_lagged_latent_covariance_recovers_driver_section_four_point_three( recover_stationary_lagged_latent_covariance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, event_delta, @@ -5445,6 +5512,7 @@ fn stationary_lagged_latent_covariance_refuses_unstable_drift_and_non_event_cloc ); assert_eq!( recover_stationary_lagged_latent_covariance( + 0.0, 0.0, -0.225, 1.0, @@ -5456,6 +5524,8 @@ fn stationary_lagged_latent_covariance_refuses_unstable_drift_and_non_event_cloc ); assert_eq!( recover_stationary_lagged_latent_covariance( + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -5610,6 +5680,7 @@ fn stationary_lagged_observed_covariance_refuses_unstable_drift_and_non_event_cl recover_stationary_lagged_observed_covariance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, @@ -5623,6 +5694,8 @@ fn stationary_lagged_observed_covariance_refuses_unstable_drift_and_non_event_cl recover_stationary_lagged_observed_covariance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, 1.0, @@ -5712,6 +5785,8 @@ fn stationary_later_latent_variance_recovers_driver_section_four_point_three() { assert!(rmse(&[recovered], &[process_noise]) > error); assert_eq!( recover_stationary_later_latent_variance( + 0.0, + 0.0, 0.0, predictor_variance, log_rate, @@ -5724,6 +5799,7 @@ fn stationary_later_latent_variance_recovers_driver_section_four_point_three() { recover_stationary_later_latent_variance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, event_delta, @@ -5788,12 +5864,13 @@ fn stationary_later_latent_variance_refuses_unstable_drift_and_non_event_clocks( ); assert_eq!( recover_stationary_later_latent_variance( + 0.0, 0.0, -0.225, 1.0, 0.5, 1.0, - LagClock::EventTime + LagClock::EventTime, ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) ); @@ -5959,6 +6036,7 @@ fn stationary_later_observed_variance_refuses_unstable_drift_and_non_event_clock 0.0, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::StationaryVarianceRequiresStableDrift) @@ -5967,11 +6045,13 @@ fn stationary_later_observed_variance_refuses_unstable_drift_and_non_event_clock recover_stationary_later_observed_variance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -5980,6 +6060,8 @@ fn stationary_later_observed_variance_refuses_unstable_drift_and_non_event_clock recover_stationary_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, 1.0, @@ -6081,6 +6163,9 @@ fn predetermined_later_latent_variance_recovers_driver_section_four_point_three( assert!(rmse(&[from_stationary_start], &[stationary_later]) < 1e-12); assert_eq!( recover_predetermined_later_latent_variance( + 0.0, + 0.0, + 0.0, 0.0, predictor_variance, log_rate, @@ -6093,6 +6178,8 @@ fn predetermined_later_latent_variance_recovers_driver_section_four_point_three( recover_predetermined_later_latent_variance( trait_variance, 0.0, + 0.0, + 0.0, predictor_variance, 0.0, event_delta, @@ -6174,6 +6261,8 @@ fn predetermined_later_latent_variance_refuses_non_event_clocks_and_keeps_growin assert!((growing - 2.4).abs() < 1e-12); assert_eq!( recover_predetermined_later_latent_variance( + 0.0, + 0.0, 0.0, -0.225, 1.0, @@ -6185,6 +6274,9 @@ fn predetermined_later_latent_variance_refuses_non_event_clocks_and_keeps_growin ); assert_eq!( recover_predetermined_later_latent_variance( + 0.0, + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -6347,6 +6439,7 @@ fn predetermined_later_observed_variance_refuses_non_event_clocks_and_keeps_grow 0.0, 1.0, 0.0, + 0.0, LagClock::EventTime, ) .expect("Brownian a=0"); @@ -6355,11 +6448,14 @@ fn predetermined_later_observed_variance_refuses_non_event_clocks_and_keeps_grow recover_predetermined_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, -0.225, 1.0, 0.5, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -6368,8 +6464,11 @@ fn predetermined_later_observed_variance_refuses_non_event_clocks_and_keeps_grow recover_predetermined_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, + 0.0, 1.0, 0.5, 0.1, @@ -6468,6 +6567,8 @@ fn predetermined_lagged_latent_covariance_recovers_driver_section_four_point_thr assert!(rmse(&[from_stationary_start], &[stationary_lagged]) < 1e-12); assert_eq!( recover_predetermined_lagged_latent_covariance( + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -6480,6 +6581,7 @@ fn predetermined_lagged_latent_covariance_recovers_driver_section_four_point_thr recover_predetermined_lagged_latent_covariance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, event_delta, @@ -6563,6 +6665,7 @@ fn predetermined_lagged_latent_covariance_refuses_non_event_clocks_and_keeps_gro 0.0, 2.0, 0.0, + 0.0, 0.5, 1.0, LagClock::EventTime, @@ -6573,6 +6676,8 @@ fn predetermined_lagged_latent_covariance_refuses_non_event_clocks_and_keeps_gro 0.0, 2.0, 0.0, + 0.0, + 0.0, 1.0, LagClock::EventTime, ) @@ -6580,6 +6685,7 @@ fn predetermined_lagged_latent_covariance_refuses_non_event_clocks_and_keeps_gro assert!((brownian - 2.0).abs() < 1e-12); assert_eq!( recover_predetermined_lagged_latent_covariance( + 0.0, 0.0, -0.225, 1.0, @@ -6591,6 +6697,8 @@ fn predetermined_lagged_latent_covariance_refuses_non_event_clocks_and_keeps_gro ); assert_eq!( recover_predetermined_lagged_latent_covariance( + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -6782,6 +6890,7 @@ fn predetermined_lagged_observed_covariance_refuses_non_event_clocks_and_keeps_g recover_predetermined_lagged_observed_covariance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, @@ -6795,8 +6904,10 @@ fn predetermined_lagged_observed_covariance_refuses_non_event_clocks_and_keeps_g recover_predetermined_lagged_observed_covariance( 2.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 1.0, 0.1, LagClock::EventTime @@ -6909,6 +7020,8 @@ fn predetermined_initial_latent_variance_recovers_driver_section_four_point_thre assert!(rmse(&[near_later], &[recovered]) < 1e-9); assert_eq!( recover_predetermined_initial_latent_variance( + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -6920,6 +7033,7 @@ fn predetermined_initial_latent_variance_recovers_driver_section_four_point_thre recover_predetermined_initial_latent_variance( trait_variance, 0.0, + 0.0, predictor_variance, 0.0, LagClock::EventTime, @@ -6974,6 +7088,7 @@ fn predetermined_initial_latent_variance_refuses_non_event_clocks_and_keeps_unst assert!((brownian - 2.0).abs() < 1e-12); assert_eq!( recover_predetermined_initial_latent_variance( + 0.0, 0.0, -0.225, 1.0, @@ -7134,6 +7249,8 @@ fn predetermined_initial_observed_variance_refuses_non_event_clocks_and_keeps_un 0.0, 1.0, 0.0, + 0.0, + 0.0, LagClock::EventTime, ) .expect("Brownian a=0"); @@ -7142,10 +7259,12 @@ fn predetermined_initial_observed_variance_refuses_non_event_clocks_and_keeps_un recover_predetermined_initial_observed_variance( 2.0, 0.0, + 0.0, -0.225, 1.0, 0.5, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -7154,8 +7273,10 @@ fn predetermined_initial_observed_variance_refuses_non_event_clocks_and_keeps_un recover_predetermined_initial_observed_variance( 2.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 0.5, 0.1, LagClock::EventTime @@ -7296,6 +7417,9 @@ fn predetermined_later_lagged_latent_covariance_recovers_driver_section_four_poi assert!(rmse(&[near_later], &[later]) < 1e-9); assert_eq!( recover_predetermined_later_lagged_latent_covariance( + 0.0, + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -7309,6 +7433,8 @@ fn predetermined_later_lagged_latent_covariance_recovers_driver_section_four_poi recover_predetermined_later_lagged_latent_covariance( trait_variance, 0.0, + 0.0, + 0.0, predictor_variance, 0.0, start_delta, @@ -7399,14 +7525,18 @@ fn predetermined_later_lagged_latent_covariance_refuses_non_event_clocks_and_kee 2.0, 0.4, 0.0, + 0.0, 0.5, 1.0, + 1.0, LagClock::EventTime, ) .expect("growing a>0"); assert!(growing.is_finite() && growing > 2.0); assert_eq!( recover_predetermined_later_lagged_latent_covariance( + 0.0, + 0.0, 0.0, -0.225, 1.0, @@ -7419,6 +7549,9 @@ fn predetermined_later_lagged_latent_covariance_refuses_non_event_clocks_and_kee ); assert_eq!( recover_predetermined_later_lagged_latent_covariance( + 0.0, + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -7620,8 +7753,10 @@ fn predetermined_later_lagged_observed_covariance_refuses_non_event_clocks_and_k 2.0, 0.4, 0.0, + 0.0, 0.5, 1.0, + 1.0, 0.0, LagClock::EventTime, ) @@ -7631,6 +7766,8 @@ fn predetermined_later_lagged_observed_covariance_refuses_non_event_clocks_and_k recover_predetermined_later_lagged_observed_covariance( 2.0, 0.0, + 0.0, + 0.0, -0.225, 1.0, 0.5, @@ -7645,8 +7782,11 @@ fn predetermined_later_lagged_observed_covariance_refuses_non_event_clocks_and_k recover_predetermined_later_lagged_observed_covariance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, + 0.0, 2.0, 1.0, 0.1, @@ -7834,6 +7974,9 @@ fn predetermined_later_start_later_latent_variance_recovers_driver_section_four_ assert!(rmse(&[near_first], &[later_over_s]) < 1e-9); assert_eq!( recover_predetermined_later_start_later_latent_variance( + 0.0, + 0.0, + 0.0, 0.0, predictor_variance, 0.0, @@ -7847,6 +7990,8 @@ fn predetermined_later_start_later_latent_variance_recovers_driver_section_four_ recover_predetermined_later_start_later_latent_variance( trait_variance, 0.0, + 0.0, + 0.0, predictor_variance, 0.0, start_delta, @@ -7947,14 +8092,18 @@ fn predetermined_later_start_later_latent_variance_refuses_non_event_clocks_and_ 2.0, 0.4, 0.0, + 0.0, 0.5, 1.0, + 1.0, LagClock::EventTime, ) .expect("growing a>0"); assert!(growing.is_finite() && growing > 2.0); assert_eq!( recover_predetermined_later_start_later_latent_variance( + 0.0, + 0.0, 0.0, -0.225, 1.0, @@ -7967,6 +8116,9 @@ fn predetermined_later_start_later_latent_variance_refuses_non_event_clocks_and_ ); assert_eq!( recover_predetermined_later_start_later_latent_variance( + 0.0, + 0.0, + 0.0, 0.0, 1.0, 0.0, @@ -8180,8 +8332,11 @@ fn predetermined_later_start_later_observed_variance_refuses_non_event_clocks_an 2.0, 0.4, 0.0, + 0.0, 0.5, 1.0, + 1.0, + 0.0, 0.0, LagClock::EventTime, ) @@ -8191,12 +8346,15 @@ fn predetermined_later_start_later_observed_variance_refuses_non_event_clocks_an recover_predetermined_later_start_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, -0.225, 1.0, 0.5, 2.0, 1.0, 0.0, + 0.0, LagClock::EventTime ), Err(PsychometricError::AsymptoticTimeIndependentEffectRequiresStableDrift) @@ -8205,8 +8363,11 @@ fn predetermined_later_start_later_observed_variance_refuses_non_event_clocks_an recover_predetermined_later_start_later_observed_variance( 2.0, 0.0, + 0.0, + 0.0, 1.0, 0.0, + 0.0, 2.0, 1.0, 0.5,