Updated use of weights in procrustes analysis (update to #1647) #2313
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi Michael,
I noticed that the use of the weights parameter can lead to incorrect results, e.g., undesired shifts in the transformed points. I reviewed my own changes two years ago in #1647, and I noticed that I oversimplified the problem. Apparently, a procrustes analysis with non-uniform weights cannot be solved analytically but requires iterative optimization approaches. I updated the documentation and also changed the translation and scaling computation of b to also incorporate the weights to avoid some of the undesired effects. As it is now, the code should yield the optimal solution for uniform weights (as usual) and for binary weights; for the latter, I added some code to filter out zero-weighted points from the transform computations. For general non-uniform weights, the optimal translation and scaling are computed, but they're based on a possibly suboptimal rotation. If we wanted to find a better rotation, an iterative optimization approach would need to be added, but I was too lazy to do that haha
Cheers
Till