Why is wcoher function not reccomended?
5 views (last 30 days)
Wayne King on 13 Oct 2016
Edited: Wayne King on 13 Oct 2016
Hi Jakub and Paramonte,
Jakub to answer your question, the new wcoherence is much more robust in its estimation of the phase between the two signals and the wavelet coherence than the older algorithm. Specifically, it is critically important in wavelet coherence to smooth the estimates both in time and scale. This is a similar situation to Fourier coherence. That smoothing should be based on the analyzing wavelet. The old wcoher applied the same smoothing regardless of wavelet. You really should write in a separate smoothing for each wavelet. Also, we have had a lot of feedback from users who have no idea how to specify scales correctly. The say, my data is sampled at such and such sampling rate and I want to find phenomena in this frequency range how do I determine which scales to specify. WCOHER provided no defaults in terms of scale. The new WCOHERENCE allows you to simply input a sampling rate, or a sampling interval if you like to think in periods as opposed to frequency.
For Paramonte, there was already CWTFT in the toolbox for a number of releases that used an FFT-based algorithm (that DFT-based approach to the CWT long preceded Torrence and Compo by the way). The new CWT algorithm features Morse wavelets, which have parameters that can be adjusted to give a very large family of analytic wavelets. In fact, most analytic wavelets in use are just special cases of Morse wavelets as was proved by Lilly and Olhede. We have received a lot of feedback from customers that they are confused by having to specify scales and in fact they quite often get the scale concept wrong and use scales that don't allow them to actually find the phenomena they are looking for. The old CWT had absolutely no defaults. The user had the burden of specifying everything. As I mentioned for many non-experts, having to pick a wavelet was daunting, never mind having to construct a meaningful scale vector. Scale for the wavelet transform should be logarithmically spaced for example and the scales should take into account the support of the wavelet. Neither of those things were built into the old CWT.
For time-frequency (time-scale) analysis which is a major use case for continuous wavelet analysis, many of the orthogonal or biorthogonal wavelets which are quite useful for discrete analysis are inappropriate and lead in many instances to people obtaining a misleading analysis of their data. Orthogonal and biorthogonal wavelets are designed for dyadic scales, which are much more widely spaced that the typical scales in continuous wavelet analysis.
Having said all that, if you want to use the old CWT, that interface still works. In fact, the new CWT parses the input and determines if you are using the old syntax. If so, it will give you the older algorithm. Finally to both of you, I would sincerely welcome the opportunity to discuss these things further. For Jakub, I can concretely demonstrate the advantage of WCOHERENCE over WCOHER. Both of you, feel free to contact me through my profile. I will respond. Paramonte, I would very much be interested in any specific use cases where the old CWT allows one to obtain some insight not obtainable with the new CWT. I am always very interested in getting feedback from users on how to make things better.
We never "not recommend" something lightly. That is not to say that somehow we are infallible, but a lot of thought and customer feedback goes into those decisions.
Hope that helps, Wayne