Skip to content

Commit a329450

Browse files
committed
Small adjustments in the tests after review
1 parent b1a3c27 commit a329450

File tree

1 file changed

+86
-41
lines changed

1 file changed

+86
-41
lines changed

tests/statespace/models/test_DFM.py

Lines changed: 86 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -414,13 +414,19 @@ def test_static_factor_no_ar_no_exog_diagonal_error(self):
414414
assert mod.shock_names == ["factor_shock_0"]
415415

416416
def test_dynamic_factor_ar1_error_diagonal_error(self):
417+
k_factors = 2
418+
factor_order = 2
419+
k_endog = 3
420+
error_order = 1
421+
error_var = False
422+
417423
mod = BayesianDynamicFactor(
418-
k_factors=2,
419-
factor_order=2,
420-
k_endog=3,
424+
k_factors=k_factors,
425+
factor_order=factor_order,
426+
k_endog=k_endog,
421427
endog_names=["y0", "y1", "y2"],
422-
error_order=1,
423-
error_var=False,
428+
error_order=error_order,
429+
error_var=error_var,
424430
error_cov_type="diagonal",
425431
measurement_error=True,
426432
verbose=False,
@@ -464,26 +470,33 @@ def test_dynamic_factor_ar1_error_diagonal_error(self):
464470
"L0.error_2",
465471
],
466472
FACTOR_DIM: ["factor_1", "factor_2"],
467-
AR_PARAM_DIM: list(range(1, 2 * 2 + 1)),
468-
ERROR_AR_PARAM_DIM: [1],
473+
AR_PARAM_DIM: list(range(1, k_factors * max(factor_order, 1) + 1)),
474+
ERROR_AR_PARAM_DIM: list(range(1, (error_order * k_endog) + 1))
475+
if error_var
476+
else list(range(1, error_order + 1)),
469477
}
470478

471479
assert mod.param_names == expected_param_names
472480
assert mod.param_dims == expected_param_dims
473481
for k, v in expected_coords.items():
474482
assert mod.coords[k] == v
475-
assert len(mod.state_names) == 7
483+
assert len(mod.state_names) == k_factors * max(factor_order, 1) + k_endog * error_order
476484
assert mod.observed_states == ["y0", "y1", "y2"]
477-
assert len(mod.shock_names) == 5
485+
assert len(mod.shock_names) == k_factors + k_endog
478486

479487
def test_dynamic_factor_ar2_error_var_unstructured(self):
488+
k_factors = 1
489+
factor_order = 1
490+
k_endog = 3
491+
error_order = 2
492+
error_var = True
480493
mod = BayesianDynamicFactor(
481-
k_factors=1,
482-
factor_order=1,
483-
k_endog=3,
494+
k_factors=k_factors,
495+
factor_order=factor_order,
496+
k_endog=k_endog,
484497
endog_names=["y0", "y1", "y2"],
485-
error_order=2,
486-
error_var=True,
498+
error_order=error_order,
499+
error_var=error_var,
487500
error_cov_type="unstructured",
488501
measurement_error=True,
489502
verbose=False,
@@ -527,29 +540,38 @@ def test_dynamic_factor_ar2_error_var_unstructured(self):
527540
"L1.error_2",
528541
],
529542
FACTOR_DIM: ["factor_1"],
530-
AR_PARAM_DIM: [1],
531-
ERROR_AR_PARAM_DIM: list(range(1, 2 * 3 + 1)),
543+
AR_PARAM_DIM: list(range(1, k_factors * max(factor_order, 1) + 1)),
544+
ERROR_AR_PARAM_DIM: list(range(1, (error_order * k_endog) + 1))
545+
if error_var
546+
else list(range(1, error_order + 1)),
532547
}
533548

534549
assert mod.param_names == expected_param_names
535550
assert mod.param_dims == expected_param_dims
536551
for k, v in expected_coords.items():
537552
assert mod.coords[k] == v
538-
assert len(mod.state_names) == 7
553+
assert len(mod.state_names) == k_factors * max(factor_order, 1) + k_endog * error_order
539554
assert mod.observed_states == ["y0", "y1", "y2"]
540-
assert len(mod.shock_names) == 4
555+
assert len(mod.shock_names) == k_factors + k_endog
541556

542557
def test_exog_shared_exog_states_exog_innovations(self):
558+
k_factors = 2
559+
factor_order = 1
560+
k_endog = 3
561+
error_order = 1
562+
k_exog = 2
563+
error_var = False
564+
shared_exog_states = True
543565
mod = BayesianDynamicFactor(
544-
k_factors=2,
545-
factor_order=1,
546-
k_endog=3,
566+
k_factors=k_factors,
567+
factor_order=factor_order,
568+
k_endog=k_endog,
547569
endog_names=["y0", "y1", "y2"],
548-
error_order=1,
549-
error_var=False,
570+
error_order=error_order,
571+
error_var=error_var,
550572
k_exog=2,
551573
exog_names=["x0", "x1"],
552-
shared_exog_states=True,
574+
shared_exog_states=shared_exog_states,
553575
exog_innovations=True,
554576
error_cov_type="diagonal",
555577
measurement_error=True,
@@ -598,30 +620,45 @@ def test_exog_shared_exog_states_exog_innovations(self):
598620
"beta_x1[shared]",
599621
],
600622
FACTOR_DIM: ["factor_1", "factor_2"],
601-
AR_PARAM_DIM: [1, 2],
602-
ERROR_AR_PARAM_DIM: [1],
603-
EXOG_STATE_DIM: [1, 2],
623+
AR_PARAM_DIM: list(range(1, k_factors * max(factor_order, 1) + 1)),
624+
ERROR_AR_PARAM_DIM: list(range(1, (error_order * k_endog) + 1))
625+
if error_var
626+
else list(range(1, error_order + 1)),
627+
EXOG_STATE_DIM: list(range(1, k_exog + 1))
628+
if shared_exog_states
629+
else list(range(1, k_exog * k_endog + 1)),
604630
}
605631

606632
assert mod.param_names == expected_param_names
607633
assert mod.param_dims == expected_param_dims
608634
for k, v in expected_coords.items():
609635
assert mod.coords[k] == v
610-
assert len(mod.state_names) == 7
636+
assert len(mod.state_names) == k_factors * max(factor_order, 1) + k_endog * error_order + (
637+
k_exog if shared_exog_states else k_exog * k_endog
638+
)
611639
assert mod.observed_states == ["y0", "y1", "y2"]
612-
assert len(mod.shock_names) == 7
640+
assert len(mod.shock_names) == k_factors + k_endog + (
641+
k_exog if shared_exog_states else k_exog * k_endog
642+
)
613643

614644
def test_exog_not_shared_no_exog_innovations(self):
645+
k_factors = 1
646+
factor_order = 2
647+
k_endog = 3
648+
error_order = 1
649+
k_exog = 1
650+
error_var = False
651+
shared_exog_states = False
615652
mod = BayesianDynamicFactor(
616-
k_factors=1,
617-
factor_order=2,
618-
k_endog=3,
653+
k_factors=k_factors,
654+
factor_order=factor_order,
655+
k_endog=k_endog,
619656
endog_names=["y0", "y1", "y2"],
620-
error_order=1,
621-
error_var=False,
622-
k_exog=1,
657+
error_order=error_order,
658+
error_var=error_var,
659+
k_exog=k_exog,
623660
exog_names=["x0"],
624-
shared_exog_states=False,
661+
shared_exog_states=shared_exog_states,
625662
exog_innovations=False,
626663
error_cov_type="scalar",
627664
measurement_error=False,
@@ -668,15 +705,23 @@ def test_exog_not_shared_no_exog_innovations(self):
668705
"beta_x0[y2]",
669706
],
670707
FACTOR_DIM: ["factor_1"],
671-
AR_PARAM_DIM: [1, 2],
672-
ERROR_AR_PARAM_DIM: [1],
673-
EXOG_STATE_DIM: [1, 2, 3],
708+
AR_PARAM_DIM: list(range(1, k_factors * max(factor_order, 1) + 1)),
709+
ERROR_AR_PARAM_DIM: list(range(1, (error_order * k_endog) + 1))
710+
if error_var
711+
else list(range(1, error_order + 1)),
712+
EXOG_STATE_DIM: list(range(1, k_exog + 1))
713+
if shared_exog_states
714+
else list(range(1, k_exog * k_endog + 1)),
674715
}
675716

676717
assert mod.param_names == expected_param_names
677718
assert mod.param_dims == expected_param_dims
678719
for k, v in expected_coords.items():
679720
assert mod.coords[k] == v
680-
assert len(mod.state_names) == 8
721+
assert len(mod.state_names) == k_factors * max(factor_order, 1) + k_endog * error_order + (
722+
k_exog if shared_exog_states else k_exog * k_endog
723+
)
681724
assert mod.observed_states == ["y0", "y1", "y2"]
682-
assert len(mod.shock_names) == 7
725+
assert len(mod.shock_names) == k_factors + k_endog + (
726+
k_exog if shared_exog_states else k_exog * k_endog
727+
)

0 commit comments

Comments
 (0)