Performance for circular correlation coefficient
serrano
Hi all,
I'm trying to calculate the correlation coefficient between two waves containing angles. From what I gathered, StatsCircularCorrelationTest() provides the functionality I want. However, I run into issues when the waves become very long (Igor locking up, beach ball etc). I want to do the calculation for waves containing >10k points.
Here is a minimal example:
Function test()
Make/O/N=1000 one, two //barely works for 1000, locks up for large numbers, e.g. 10000
setscale/I x, 0, 1, one, two
one = gnoise(1)
two = gnoise(1)
StatsCircularCorrelationTest/PAA/Q one, two
Wave W_StatsCircularCorrelationTest
print W_StatsCircularCorrelationTest[0]
End
Make/O/N=1000 one, two //barely works for 1000, locks up for large numbers, e.g. 10000
setscale/I x, 0, 1, one, two
one = gnoise(1)
two = gnoise(1)
StatsCircularCorrelationTest/PAA/Q one, two
Wave W_StatsCircularCorrelationTest
print W_StatsCircularCorrelationTest[0]
End
This is on Igor 8.04B01 (Mac).
Is there a better way to only get the correlation coefficient?
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More
/PAA is a particularly difficult calculation because it involves looping over the data and recomputing some stats after removing one pair of points. Can you describe the motivation for choosing this option?
August 14, 2019 at 05:59 pm - Permalink
I see. The motivation for choosing /PAA was just because it is the first example that came up in the circular correlation demo. To be honest, I haven't looked much into the actual theory at all. All I'm interested in at the moment is something like Pearson's r but for angles, e.g. dihedral angles of an MD trajectory with ~10k time points.
August 19, 2019 at 12:26 am - Permalink