dfm-python 0.2.5__tar.gz → 0.2.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dfm_python-0.2.5 → dfm_python-0.2.7}/PKG-INFO +21 -4
- {dfm_python-0.2.5 → dfm_python-0.2.7}/README.md +20 -3
- dfm_python-0.2.7/full_tutorial_example.ipynb +1669 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/pyproject.toml +1 -1
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/__init__.py +1 -1
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/em.py +139 -69
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/numeric.py +10 -7
- dfm_python-0.2.7/src/test/test_stability.py +222 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/.gitignore +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/.python-version +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/LICENSE +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/MANIFEST.in +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/config/blocks/default.yaml +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/config/default.yaml +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/config/series/default.yaml +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/data/sample_data.csv +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/data/sample_spec.csv +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/api.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/config.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/config_sources.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/__init__.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/diagnostics.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/helpers.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/data.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/dfm.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/kalman.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/news.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/utils.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/__init__.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_api.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_dfm.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_factor.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_kalman.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_numeric.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/tutorial/basic_tutorial.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/tutorial/hydra_tutorial.py +0 -0
- {dfm_python-0.2.5 → dfm_python-0.2.7}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dfm-python
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.7
|
|
4
4
|
Summary: Dynamic Factor Model (DFM) estimation and nowcasting in Python
|
|
5
5
|
Project-URL: Homepage, https://github.com/yourusername/dfm-python
|
|
6
6
|
Project-URL: Documentation, https://github.com/yourusername/dfm-python#readme
|
|
@@ -709,12 +709,29 @@ Demonstrates:
|
|
|
709
709
|
|
|
710
710
|
## Project Status
|
|
711
711
|
|
|
712
|
-
**Version**: 0.2.
|
|
712
|
+
**Version**: 0.2.7
|
|
713
713
|
**Status**: Stable and production-ready
|
|
714
714
|
**Python**: 3.10+
|
|
715
715
|
**PyPI**: https://pypi.org/project/dfm-python/
|
|
716
716
|
|
|
717
|
-
### Recent Improvements (v0.2.
|
|
717
|
+
### Recent Improvements (v0.2.7)
|
|
718
|
+
|
|
719
|
+
- ✅ **Fixed C normalization issue**: C normalization now only applies when C norm is in reasonable range (0.1 ~ 10)
|
|
720
|
+
- Prevents Q from becoming too small when C norm is very small
|
|
721
|
+
- Prevents factor values from becoming extreme
|
|
722
|
+
- ✅ **Improved stability**: Conditional C normalization prevents pathological factor paths
|
|
723
|
+
- ✅ **Better diagnostics**: Added variance guard binding checks in tutorial
|
|
724
|
+
|
|
725
|
+
### Previous Improvements (v0.2.6)
|
|
726
|
+
|
|
727
|
+
- ✅ **Q matrix cap**: Factor innovation variances bounded above by 1.0 to prevent explosion
|
|
728
|
+
- ✅ **R matrix cap**: Observation error variances bounded above by 10.0 for standardized data
|
|
729
|
+
- ✅ **Improved C normalization**: C norm clipping prevents Q explosion during normalization
|
|
730
|
+
- ✅ **Enhanced initial values**: PCA loadings clipped to prevent extreme initial values
|
|
731
|
+
- ✅ **Bug fix**: Fixed `np.linalg.lu` error by using `np.linalg.slogdet` for determinant computation
|
|
732
|
+
- ✅ **Better stability**: Q and R caps ensure model convergence even with challenging data
|
|
733
|
+
|
|
734
|
+
### Previous Improvements (v0.2.5)
|
|
718
735
|
|
|
719
736
|
- ✅ **Q matrix floor**: Factor innovation variances bounded below by 0.01 to prevent scale issues
|
|
720
737
|
- ✅ **C matrix normalization**: Clock-frequency factor loadings normalized (||C[:,j]|| = 1) for scale stability
|
|
@@ -749,7 +766,7 @@ If you use `dfm-python` in your research, please cite:
|
|
|
749
766
|
author = {DFM Python Contributors},
|
|
750
767
|
year = {2025},
|
|
751
768
|
url = {https://pypi.org/project/dfm-python/},
|
|
752
|
-
version = {0.2.
|
|
769
|
+
version = {0.2.7}
|
|
753
770
|
}
|
|
754
771
|
```
|
|
755
772
|
|
|
@@ -663,12 +663,29 @@ Demonstrates:
|
|
|
663
663
|
|
|
664
664
|
## Project Status
|
|
665
665
|
|
|
666
|
-
**Version**: 0.2.
|
|
666
|
+
**Version**: 0.2.7
|
|
667
667
|
**Status**: Stable and production-ready
|
|
668
668
|
**Python**: 3.10+
|
|
669
669
|
**PyPI**: https://pypi.org/project/dfm-python/
|
|
670
670
|
|
|
671
|
-
### Recent Improvements (v0.2.
|
|
671
|
+
### Recent Improvements (v0.2.7)
|
|
672
|
+
|
|
673
|
+
- ✅ **Fixed C normalization issue**: C normalization now only applies when C norm is in reasonable range (0.1 ~ 10)
|
|
674
|
+
- Prevents Q from becoming too small when C norm is very small
|
|
675
|
+
- Prevents factor values from becoming extreme
|
|
676
|
+
- ✅ **Improved stability**: Conditional C normalization prevents pathological factor paths
|
|
677
|
+
- ✅ **Better diagnostics**: Added variance guard binding checks in tutorial
|
|
678
|
+
|
|
679
|
+
### Previous Improvements (v0.2.6)
|
|
680
|
+
|
|
681
|
+
- ✅ **Q matrix cap**: Factor innovation variances bounded above by 1.0 to prevent explosion
|
|
682
|
+
- ✅ **R matrix cap**: Observation error variances bounded above by 10.0 for standardized data
|
|
683
|
+
- ✅ **Improved C normalization**: C norm clipping prevents Q explosion during normalization
|
|
684
|
+
- ✅ **Enhanced initial values**: PCA loadings clipped to prevent extreme initial values
|
|
685
|
+
- ✅ **Bug fix**: Fixed `np.linalg.lu` error by using `np.linalg.slogdet` for determinant computation
|
|
686
|
+
- ✅ **Better stability**: Q and R caps ensure model convergence even with challenging data
|
|
687
|
+
|
|
688
|
+
### Previous Improvements (v0.2.5)
|
|
672
689
|
|
|
673
690
|
- ✅ **Q matrix floor**: Factor innovation variances bounded below by 0.01 to prevent scale issues
|
|
674
691
|
- ✅ **C matrix normalization**: Clock-frequency factor loadings normalized (||C[:,j]|| = 1) for scale stability
|
|
@@ -703,7 +720,7 @@ If you use `dfm-python` in your research, please cite:
|
|
|
703
720
|
author = {DFM Python Contributors},
|
|
704
721
|
year = {2025},
|
|
705
722
|
url = {https://pypi.org/project/dfm-python/},
|
|
706
|
-
version = {0.2.
|
|
723
|
+
version = {0.2.7}
|
|
707
724
|
}
|
|
708
725
|
```
|
|
709
726
|
|