Gentleman's AS75 (+ Miller AS 274) Incremental WLS Algorithms


Has someone already implemented Gentleman’s AS75 WLS code in Julia? It is not only fast and robust, but works nicely with adding single obs, one at a time.

It is not difficult, but if there is a good standard package, I would prefer it. regards, /iaw


I might be able to come up with the implementation as I don’t think there is one at the moment. However, it might be best to identify the missing components in the LinearAlgebra standard library module. For example, #10953 which improves Cholesky decomposition with the LDLt variant for abstract matrices. An alternative is to push for rank updates which aren’t well supported right now #2929. No matter the implementation it has to be build to play nice with the Factorization structs which still might suffer a few changes and are based on the BLAS library. For some aspects such as computing subset of parameters especially in sparse problems one can use the within transformation (I have a package with the implementation and there are others as well) or use an sparse iterative solvers.


thx, N. this is way above my head. I may just roll my own for my own purposes, which (because it won’t have to play with anything else) would be relatively fast and easy.


If you implement the algorithms in a sensitive manner you can share that and let people in the LinearAlgebra module pick it up and work it out. Best of luck.


hi N: I wrote a basic implementation of AS75. where is the right place to share it? or just put it in a long post here? regards, /iaw


You could post it here or share the gist (the link to the code gist). I would then open an issue in Julia for Linear Algebra stdlib for the core functionalities or to make it work better with the Factorization structs. Otherwise, I could look for a repository for it.


here is a julia beginner implementation of AS75. it comes with an example test at the end.

never used this gist before. it is convenient. thanks.


Rather than pasting long snippets of code verbatim, can I suggest that you use something like This has the advantage of allowing updates.