Skip to content

Commit ec88a56

Browse files
authored
Merge pull request #158 from wilsonrljr/fix/152
Fix/152
2 parents 2defc7a + fea7781 commit ec88a56

36 files changed

+126
-125
lines changed

CHANGELOG.md

+16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Changes in SysIdentPy
22

3+
## v0.5.1
4+
5+
### CONTRIBUTORS
6+
7+
- wilsonrljr
8+
9+
### CHANGES
10+
11+
This update addresses a critical bug related to the unbiased estimator. The issue previously impacted all basis functions but has now been resolved. This release keep providing crucial groundwork for the future development of SysIdentPy, making easier to add new features and improve the code, setting the stage for a robust and feature-complete 1.0.0 release in the feature.
12+
13+
- **Documentation:**
14+
- Remove unnecessary code when importing basis functions in many examples.
15+
16+
- **API Changes:**
17+
- Fix unbiased estimator for every basis function.
18+
319
## v0.5.0
420

521
### CONTRIBUTORS

docs/changelog/changelog.md

+17
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,23 @@ template: overrides/main.html
55

66
# Changes in SysIdentPy
77

8+
## v0.5.1
9+
10+
### CONTRIBUTORS
11+
12+
- wilsonrljr
13+
14+
### CHANGES
15+
16+
This update addresses a critical bug related to the unbiased estimator. The issue previously impacted all basis functions but has now been resolved. This release keep providing crucial groundwork for the future development of SysIdentPy, making easier to add new features and improve the code, setting the stage for a robust and feature-complete 1.0.0 release in the feature.
17+
18+
- **Documentation:**
19+
- Remove unnecessary code when importing basis functions in many examples.
20+
21+
- **API Changes:**
22+
- Fix unbiased estimator for every basis function.
23+
24+
825
## v0.5.0
926

1027
### CONTRIBUTORS

docs/examples/NFIR.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"import numpy as np\n",
4848
"from sysidentpy.utils.generate_data import get_siso_data\n",
4949
"from sysidentpy.metrics import root_relative_squared_error\n",
50-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
50+
"from sysidentpy.basis_function import Polynomial\n",
5151
"from sysidentpy.parameter_estimation import LeastSquares, RecursiveLeastSquares\n",
5252
"from sysidentpy.utils.display_results import results\n",
5353
"from sysidentpy.utils.plotting import plot_results\n",

docs/examples/aols.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"import pandas as pd\n",
1919
"from sysidentpy.utils.generate_data import get_siso_data\n",
2020
"from sysidentpy.metrics import root_relative_squared_error\n",
21-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
21+
"from sysidentpy.basis_function import Polynomial\n",
2222
"from sysidentpy.utils.display_results import results\n",
2323
"from sysidentpy.utils.plotting import plot_residues_correlation, plot_results\n",
2424
"from sysidentpy.residues.residues_correlation import (\n",

docs/examples/basic_steps.ipynb

+5-17
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"import pandas as pd\n",
3636
"import matplotlib.pyplot as plt\n",
3737
"from sysidentpy.model_structure_selection import FROLS\n",
38-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
38+
"from sysidentpy.basis_function import Polynomial\n",
3939
"from sysidentpy.parameter_estimation import LeastSquares\n",
4040
"from sysidentpy.metrics import root_relative_squared_error\n",
4141
"from sysidentpy.utils.generate_data import get_siso_data\n",
@@ -51,7 +51,7 @@
5151
"cell_type": "markdown",
5252
"metadata": {},
5353
"source": [
54-
"## Generating 1 input 1 output sample data \n",
54+
"## Generating 1 input 1 output sample data\n",
5555
"\n",
5656
"The data is generated by simulating the following model:\n",
5757
"\n",
@@ -400,9 +400,9 @@
400400
"source": [
401401
"```{note}\n",
402402
" Here we are creating random samples with white noise and letting the algorithm choose\n",
403-
" the number of terms based on the minimum value of information criteria. \n",
404-
" This is not the best approach in System Identification, but serves as a simple example. \n",
405-
" The information criteria must be used as an __auxiliary tool__ to select *n_terms*. \n",
403+
" the number of terms based on the minimum value of information criteria.\n",
404+
" This is not the best approach in System Identification, but serves as a simple example.\n",
405+
" The information criteria must be used as an __auxiliary tool__ to select *n_terms*.\n",
406406
" Plot the information values to help you on that!\n",
407407
"\n",
408408
" If you run the example above several times you might find some cases where the\n",
@@ -416,18 +416,6 @@
416416
"```"
417417
]
418418
},
419-
{
420-
"cell_type": "markdown",
421-
"metadata": {},
422-
"source": [
423-
"```{note}\n",
424-
"This documentation and the examples below are written with MyST Markdown, a form\n",
425-
"of markdown that works with Sphinx. For more information about MyST markdown, and\n",
426-
"to use MyST markdown with your Sphinx website,\n",
427-
"see [the MyST-parser documentation](https://myst-parser.readthedocs.io/)\n",
428-
"```"
429-
]
430-
},
431419
{
432420
"cell_type": "markdown",
433421
"metadata": {},

docs/examples/defining_lags.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"outputs": [],
3333
"source": [
3434
"from sysidentpy.model_structure_selection import FROLS\n",
35-
"from sysidentpy.basis_function._basis_function import Polynomial"
35+
"from sysidentpy.basis_function import Polynomial"
3636
]
3737
},
3838
{

docs/examples/entropic_regression.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"import numpy as np\n",
3333
"import pandas as pd\n",
3434
"from sysidentpy.model_structure_selection import ER\n",
35-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
35+
"from sysidentpy.basis_function import Polynomial\n",
3636
"from sysidentpy.parameter_estimation import RecursiveLeastSquares\n",
3737
"from sysidentpy.metrics import root_relative_squared_error\n",
3838
"from sysidentpy.utils.display_results import results\n",

docs/examples/extended_least_squares.ipynb

+10-12
Large diffs are not rendered by default.

docs/examples/f_16_benchmark.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
"import pandas as pd\n",
5454
"import matplotlib.pyplot as plt\n",
5555
"from sysidentpy.model_structure_selection import FROLS\n",
56-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
56+
"from sysidentpy.basis_function import Polynomial\n",
5757
"from sysidentpy.parameter_estimation import LeastSquares\n",
5858
"from sysidentpy.metrics import root_relative_squared_error\n",
5959
"from sysidentpy.utils.display_results import results\n",

docs/examples/general_estimators.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"from sklearn.ensemble import GradientBoostingRegressor\n",
4040
"from catboost import CatBoostRegressor\n",
4141
"\n",
42-
"from sysidentpy.basis_function._basis_function import Polynomial, Fourier\n",
42+
"from sysidentpy.basis_function import Polynomial, Fourier\n",
4343
"from sysidentpy.utils.plotting import plot_residues_correlation, plot_results\n",
4444
"from sysidentpy.residues.residues_correlation import (\n",
4545
" compute_residues_autocorrelation,\n",

docs/examples/identification_of_an_electromechanical_system.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"import numpy as np\n",
3232
"import pandas as pd\n",
3333
"from sysidentpy.model_structure_selection import FROLS\n",
34-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
34+
"from sysidentpy.basis_function import Polynomial\n",
3535
"from sysidentpy.parameter_estimation import RecursiveLeastSquares\n",
3636
"from sysidentpy.metrics import root_relative_squared_error\n",
3737
"from sysidentpy.utils.display_results import results\n",

docs/examples/information_criteria_examples.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"import pandas as pd\n",
4343
"import matplotlib.pyplot as plt\n",
4444
"from sysidentpy.model_structure_selection import FROLS\n",
45-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
45+
"from sysidentpy.basis_function import Polynomial\n",
4646
"from sysidentpy.parameter_estimation import LeastSquares\n",
4747
"from sysidentpy.metrics import root_relative_squared_error\n",
4848
"from sysidentpy.utils.generate_data import get_siso_data\n",

docs/examples/metamss.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"import matplotlib.pyplot as plt\n",
2121
"from sysidentpy.model_structure_selection import MetaMSS, FROLS\n",
2222
"from sysidentpy.metrics import root_relative_squared_error\n",
23-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
23+
"from sysidentpy.basis_function import Polynomial\n",
2424
"from sysidentpy.parameter_estimation import RecursiveLeastSquares\n",
2525
"from sysidentpy.utils.display_results import results\n",
2626
"from sysidentpy.utils.plotting import plot_residues_correlation, plot_results\n",

docs/examples/multiobjective_parameter_estimation.ipynb

+34-52
Large diffs are not rendered by default.

docs/examples/multiple_inputs_example.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"import pandas as pd\n",
4747
"import matplotlib.pyplot as plt\n",
4848
"from sysidentpy.model_structure_selection import FROLS\n",
49-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
49+
"from sysidentpy.basis_function import Polynomial\n",
5050
"from sysidentpy.parameter_estimation import LeastSquares\n",
5151
"from sysidentpy.metrics import root_relative_squared_error\n",
5252
"from sysidentpy.utils.display_results import results\n",

docs/examples/narx_neural_network.ipynb

+1-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@
5959
"from sysidentpy.utils.generate_data import get_siso_data\n",
6060
"from sysidentpy.neural_network import NARXNN\n",
6161
"\n",
62-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
63-
"from sysidentpy.utils.generate_data import get_siso_data\n",
62+
"from sysidentpy.basis_function import Polynomial\n",
6463
"from sysidentpy.utils.plotting import plot_residues_correlation, plot_results\n",
6564
"from sysidentpy.residues.residues_correlation import (\n",
6665
" compute_residues_autocorrelation,\n",

docs/examples/parameter_estimation.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"source": [
2525
"import pandas as pd\n",
2626
"from sysidentpy.model_structure_selection import FROLS\n",
27-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
27+
"from sysidentpy.basis_function import Polynomial\n",
2828
"from sysidentpy.parameter_estimation import (\n",
2929
" TotalLeastSquares,\n",
3030
" RecursiveLeastSquares,\n",

docs/examples/save_and_load_models.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"source": [
2626
"import pandas as pd\n",
2727
"from sysidentpy.model_structure_selection import FROLS\n",
28-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
28+
"from sysidentpy.basis_function import Polynomial\n",
2929
"from sysidentpy.parameter_estimation import LeastSquares\n",
3030
"from sysidentpy.utils.generate_data import get_siso_data\n",
3131
"from sysidentpy.utils.display_results import results\n",

examples/NFIR.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"import numpy as np\n",
4848
"from sysidentpy.utils.generate_data import get_siso_data\n",
4949
"from sysidentpy.metrics import root_relative_squared_error\n",
50-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
50+
"from sysidentpy.basis_function import Polynomial\n",
5151
"from sysidentpy.parameter_estimation import LeastSquares, RecursiveLeastSquares\n",
5252
"from sysidentpy.utils.display_results import results\n",
5353
"from sysidentpy.utils.plotting import plot_results\n",

examples/aols.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"import pandas as pd\n",
1919
"from sysidentpy.utils.generate_data import get_siso_data\n",
2020
"from sysidentpy.metrics import root_relative_squared_error\n",
21-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
21+
"from sysidentpy.basis_function import Polynomial\n",
2222
"from sysidentpy.utils.display_results import results\n",
2323
"from sysidentpy.utils.plotting import plot_residues_correlation, plot_results\n",
2424
"from sysidentpy.residues.residues_correlation import (\n",

examples/basic_steps.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"import pandas as pd\n",
3636
"import matplotlib.pyplot as plt\n",
3737
"from sysidentpy.model_structure_selection import FROLS\n",
38-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
38+
"from sysidentpy.basis_function import Polynomial\n",
3939
"from sysidentpy.parameter_estimation import LeastSquares\n",
4040
"from sysidentpy.metrics import root_relative_squared_error\n",
4141
"from sysidentpy.utils.generate_data import get_siso_data\n",

examples/defining_lags.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"outputs": [],
3333
"source": [
3434
"from sysidentpy.model_structure_selection import FROLS\n",
35-
"from sysidentpy.basis_function._basis_function import Polynomial"
35+
"from sysidentpy.basis_function import Polynomial"
3636
]
3737
},
3838
{

examples/entropic_regression.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"import numpy as np\n",
3333
"import pandas as pd\n",
3434
"from sysidentpy.model_structure_selection import ER\n",
35-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
35+
"from sysidentpy.basis_function import Polynomial\n",
3636
"from sysidentpy.parameter_estimation import RecursiveLeastSquares\n",
3737
"from sysidentpy.metrics import root_relative_squared_error\n",
3838
"from sysidentpy.utils.display_results import results\n",

examples/extended_least_squares.ipynb

+10-12
Large diffs are not rendered by default.

examples/f_16_benchmark.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
"import pandas as pd\n",
5454
"import matplotlib.pyplot as plt\n",
5555
"from sysidentpy.model_structure_selection import FROLS\n",
56-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
56+
"from sysidentpy.basis_function import Polynomial\n",
5757
"from sysidentpy.parameter_estimation import LeastSquares\n",
5858
"from sysidentpy.metrics import root_relative_squared_error\n",
5959
"from sysidentpy.utils.display_results import results\n",

examples/general_estimators.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"from sklearn.ensemble import GradientBoostingRegressor\n",
4040
"from catboost import CatBoostRegressor\n",
4141
"\n",
42-
"from sysidentpy.basis_function._basis_function import Polynomial, Fourier\n",
42+
"from sysidentpy.basis_function import Polynomial, Fourier\n",
4343
"from sysidentpy.utils.plotting import plot_residues_correlation, plot_results\n",
4444
"from sysidentpy.residues.residues_correlation import (\n",
4545
" compute_residues_autocorrelation,\n",

examples/identification_of_an_electromechanical_system.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"import numpy as np\n",
3232
"import pandas as pd\n",
3333
"from sysidentpy.model_structure_selection import FROLS\n",
34-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
34+
"from sysidentpy.basis_function import Polynomial\n",
3535
"from sysidentpy.parameter_estimation import RecursiveLeastSquares\n",
3636
"from sysidentpy.metrics import root_relative_squared_error\n",
3737
"from sysidentpy.utils.display_results import results\n",

examples/information_criteria_examples.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"import pandas as pd\n",
4343
"import matplotlib.pyplot as plt\n",
4444
"from sysidentpy.model_structure_selection import FROLS\n",
45-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
45+
"from sysidentpy.basis_function import Polynomial\n",
4646
"from sysidentpy.parameter_estimation import LeastSquares\n",
4747
"from sysidentpy.metrics import root_relative_squared_error\n",
4848
"from sysidentpy.utils.generate_data import get_siso_data\n",

examples/metamss.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"import matplotlib.pyplot as plt\n",
2121
"from sysidentpy.model_structure_selection import MetaMSS, FROLS\n",
2222
"from sysidentpy.metrics import root_relative_squared_error\n",
23-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
23+
"from sysidentpy.basis_function import Polynomial\n",
2424
"from sysidentpy.parameter_estimation import RecursiveLeastSquares\n",
2525
"from sysidentpy.utils.display_results import results\n",
2626
"from sysidentpy.utils.plotting import plot_residues_correlation, plot_results\n",

examples/multiobjective_parameter_estimation.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
"import pandas as pd\n",
4949
"from sysidentpy.model_structure_selection import FROLS\n",
5050
"from sysidentpy.multiobjective_parameter_estimation import AILS\n",
51-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
51+
"from sysidentpy.basis_function import Polynomial\n",
5252
"from sysidentpy.parameter_estimation import LeastSquares\n",
5353
"from sysidentpy.utils.display_results import results\n",
5454
"from sysidentpy.utils.plotting import plot_results\n",

examples/multiple_inputs_example.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"import pandas as pd\n",
4747
"import matplotlib.pyplot as plt\n",
4848
"from sysidentpy.model_structure_selection import FROLS\n",
49-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
49+
"from sysidentpy.basis_function import Polynomial\n",
5050
"from sysidentpy.parameter_estimation import LeastSquares\n",
5151
"from sysidentpy.metrics import root_relative_squared_error\n",
5252
"from sysidentpy.utils.display_results import results\n",

examples/narx_neural_network.ipynb

+1-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@
5959
"from sysidentpy.utils.generate_data import get_siso_data\n",
6060
"from sysidentpy.neural_network import NARXNN\n",
6161
"\n",
62-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
63-
"from sysidentpy.utils.generate_data import get_siso_data\n",
62+
"from sysidentpy.basis_function import Polynomial\n",
6463
"from sysidentpy.utils.plotting import plot_residues_correlation, plot_results\n",
6564
"from sysidentpy.residues.residues_correlation import (\n",
6665
" compute_residues_autocorrelation,\n",

examples/parameter_estimation.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"source": [
2525
"import pandas as pd\n",
2626
"from sysidentpy.model_structure_selection import FROLS\n",
27-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
27+
"from sysidentpy.basis_function import Polynomial\n",
2828
"from sysidentpy.parameter_estimation import (\n",
2929
" TotalLeastSquares,\n",
3030
" RecursiveLeastSquares,\n",

examples/save_and_load_models.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"source": [
2626
"import pandas as pd\n",
2727
"from sysidentpy.model_structure_selection import FROLS\n",
28-
"from sysidentpy.basis_function._basis_function import Polynomial\n",
28+
"from sysidentpy.basis_function import Polynomial\n",
2929
"from sysidentpy.parameter_estimation import LeastSquares\n",
3030
"from sysidentpy.utils.generate_data import get_siso_data\n",
3131
"from sysidentpy.utils.display_results import results\n",

sysidentpy/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.5.0"
1+
__version__ = "0.5.1"

sysidentpy/parameter_estimation/estimators_base.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,11 @@ def unbiased_estimator(
8888
lagged_data = im.build_output_matrix(None, e)
8989

9090
e_regressors = basis_function.fit(
91-
lagged_data, max_lag, ylag=elag, predefined_regressors=None
91+
lagged_data,
92+
max_lag,
93+
ylag=elag,
94+
model_type="NAR", # using residuals, but the same method as NAR
95+
predefined_regressors=None,
9296
)
9397

9498
psi_extended = np.concatenate([psi, e_regressors], axis=1)

0 commit comments

Comments
 (0)