MATLAB Answers

time-lagged correlation coefficient between two time series

113 views (last 30 days)
eduardoq
eduardoq on 23 Jan 2013
Commented: wasswa peter on 26 Jul 2020
I am trying to find the time-lagged correlation coefficient between two time series (two sea pressure time series at different points). I have two series of exactly the same length and with the same number of records, and I just want to see at what time lag the two series have the highest correlation. I obtained the correlation coeficient from corr.m but are looking for one that handles lag options to obtain the highest correlation at a given time.
Any help would be appreciated.
Thanks.
  3 Comments
wasswa peter
wasswa peter on 26 Jul 2020
Hello,I think better use R,here is the code I developed to find the time lag between meteorological drought and hydrological drought
library("ggpubr")
library("Kendall")
library("trend")
library("astsa")
my_data <- read.csv(file.choose())
my_data
names(my_data)
attach(my_data)
x <-SPI3
y <-SDI3
SPI3=ts (SPI3)
SDI3 = ts(SDI3)
ccfvalues = ccf(SPI3, SDI3)
ccfvalues
ccf (SPI3, SDI3, main = "SPI3 & SDI3 FOR STATION B",xlab = "Lag Time (months)",ylab= "Autocorrelation")

Sign in to comment.

Answers (2)

Naomi Krauzig
Naomi Krauzig on 12 Dec 2019
In case this is still an open question [r,lags] = xcorr(x,y) also returns the lags at which the correlations are computed.

Youssef  Khmou
Youssef Khmou on 8 Feb 2013
Edited: Youssef Khmou on 8 Feb 2013
hi,i propose two ways :
1)as you have to series P1, P2 of length N both:
y=xcorr(P1,P2); % Len= 2*N-1
plot(y)
2)Or logically, you can compute the quadratic error, as
( P1(i,j)-P2(i,j) )² for 1<=i,j <=N :
err=(P1-P2).^2;
f=1./err;
figure, plot(f), xlabel(' Measurments'), ylabel(' E^2'),
[Max,time_index]=max(f);
The "time_index" is when there is high correlation between p1 and p2 .

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!