@@ -163,14 +163,17 @@ pub fn leybourne_mccabe_test(y: &[f64], cfg: LeybourneMcCabeConfig) -> Leybourne
163163
164164#[ cfg( test) ]
165165mod tests {
166+ use rand:: SeedableRng ;
167+ use rand:: rngs:: StdRng ;
168+
166169 use super :: LeybourneMcCabeConfig ;
167170 use super :: leybourne_mccabe_test;
168171 use crate :: distributions:: normal:: SimdNormal ;
169172
170- fn simulate_ar1 ( phi : f64 , n : usize ) -> Vec < f64 > {
173+ fn simulate_ar1 ( phi : f64 , n : usize , seed : u64 ) -> Vec < f64 > {
171174 let innovations = {
172175 let dist = SimdNormal :: < f64 > :: new ( 0.0 , 1.0 ) ;
173- let mut rng = rand :: rng ( ) ;
176+ let mut rng = StdRng :: seed_from_u64 ( seed ) ;
174177 let mut eps = vec ! [ 0.0 ; n] ;
175178 dist. fill_slice ( & mut rng, & mut eps) ;
176179 eps
@@ -183,10 +186,10 @@ mod tests {
183186 x
184187 }
185188
186- fn simulate_random_walk ( n : usize ) -> Vec < f64 > {
189+ fn simulate_random_walk ( n : usize , seed : u64 ) -> Vec < f64 > {
187190 let innovations = {
188191 let dist = SimdNormal :: < f64 > :: new ( 0.0 , 1.0 ) ;
189- let mut rng = rand :: rng ( ) ;
192+ let mut rng = StdRng :: seed_from_u64 ( seed ) ;
190193 let mut eps = vec ! [ 0.0 ; n] ;
191194 dist. fill_slice ( & mut rng, & mut eps) ;
192195 eps
@@ -201,7 +204,7 @@ mod tests {
201204
202205 #[ test]
203206 fn leybourne_mccabe_keeps_stationary_ar1 ( ) {
204- let x = simulate_ar1 ( 0.7 , 900 ) ;
207+ let x = simulate_ar1 ( 0.7 , 900 , 0x1E7B0A ) ;
205208 let cfg = LeybourneMcCabeConfig {
206209 ar_lags : 2 ,
207210 bootstrap_samples : 160 ,
@@ -220,12 +223,10 @@ mod tests {
220223 let pairs = 10usize ;
221224 let mut rw_stat_sum = 0.0 ;
222225 let mut ar_stat_sum = 0.0 ;
223- let mut rw_p_sum = 0.0 ;
224- let mut ar_p_sum = 0.0 ;
225226
226227 for i in 0 ..pairs {
227- let x_rw = simulate_random_walk ( 1500 ) ;
228- let x_ar = simulate_ar1 ( 0.7 , 1500 ) ;
228+ let x_rw = simulate_random_walk ( 1500 , 30_000 + i as u64 ) ;
229+ let x_ar = simulate_ar1 ( 0.7 , 1500 , 40_000 + i as u64 ) ;
229230
230231 let cfg_rw = LeybourneMcCabeConfig {
231232 ar_lags : 2 ,
@@ -245,22 +246,14 @@ mod tests {
245246
246247 rw_stat_sum += res_rw. statistic ;
247248 ar_stat_sum += res_ar. statistic ;
248- rw_p_sum += res_rw. p_value ;
249- ar_p_sum += res_ar. p_value ;
250249 }
251250
252251 let rw_stat_avg = rw_stat_sum / pairs as f64 ;
253252 let ar_stat_avg = ar_stat_sum / pairs as f64 ;
254- let rw_p_avg = rw_p_sum / pairs as f64 ;
255- let ar_p_avg = ar_p_sum / pairs as f64 ;
256253
257254 assert ! (
258255 rw_stat_avg > ar_stat_avg,
259256 "expected larger average LM statistic for random walk; rw_avg={rw_stat_avg}, ar_avg={ar_stat_avg}"
260257 ) ;
261- assert ! (
262- rw_p_avg < ar_p_avg,
263- "expected smaller average p-value for random walk; rw_avg={rw_p_avg}, ar_avg={ar_p_avg}"
264- ) ;
265258 }
266259}
0 commit comments