Ryan J. Kinnear
2016-07-14 04:16:15 UTC
Dear list,
I'm working on implementing an ARMA(p, q) modeling method in Python.
The particular method is described in section 4.7.1 of Statistical
Digital Signal Processing and Modeling by Hayes.
The upshot is that I need to calculate the roots of a polynomial.
I've learned that this is a numerically ill conditioned problem, and
have found many cases where np.roots produces roots that are clearly
spurious. This is causing me a lot of issues.
I have done some further searching and learned of the "Jenkins-Traub"
algorithm for root finding, which seems to be considered the most robust
method. I found a Python implementation of this method here
(https://github.com/vrdabomb5717/jenkins_traub), and it is certainly
much more robust than np.roots.
Are there reasons for Jenkins-Traub not being implemented as part of
Numpy? It is built into Scilab
(https://help.scilab.org/docs/6.0.0/en_US/roots.html) Is anyone working
on getting it into Numpy?
-RJK
I'm working on implementing an ARMA(p, q) modeling method in Python.
The particular method is described in section 4.7.1 of Statistical
Digital Signal Processing and Modeling by Hayes.
The upshot is that I need to calculate the roots of a polynomial.
I've learned that this is a numerically ill conditioned problem, and
have found many cases where np.roots produces roots that are clearly
spurious. This is causing me a lot of issues.
I have done some further searching and learned of the "Jenkins-Traub"
algorithm for root finding, which seems to be considered the most robust
method. I found a Python implementation of this method here
(https://github.com/vrdabomb5717/jenkins_traub), and it is certainly
much more robust than np.roots.
Are there reasons for Jenkins-Traub not being implemented as part of
Numpy? It is built into Scilab
(https://help.scilab.org/docs/6.0.0/en_US/roots.html) Is anyone working
on getting it into Numpy?
-RJK