簡體   English   中英

計算不同時間序列的相關性

[英]Calculating correlation of different time series

我有幾個時間序列,即我在15分鍾內測量了幾個信號。 每個信號每秒采樣幾次,但不同信號的時間戳不相等。 假設我們從時間0開始。 例如,信號一具有以下(時間戳,值):

0.1s: 954
0.2s: 1000
0.24s: 1090
0.3s: 855
0.45s: 600
... 

信號二具有以下內容(時間戳,值):

0.05s: 900
0.13s: 960
0.2s: 1000
0.29s: 850 
0.33s 800
...

現在如何在python或Matlab中計算這些時間序列的值的相關性? 如果這些值將始終處於相同的時間戳,則我可以僅計算各個值之間的相關性,但不幸的是,這些值不在同一時間戳上。

假設您在時間點t1一個數組s1中的值的信號,並且在時間點t2處有一個信號s2求值。 在Python中使用NumPy

  1. 為兩個信號t選擇一組公共的時間點。 您可以選擇t1t2 ,或者使用np.linspace在考慮的時間范圍內計算線性空間。 無論如何,我都會確保t的最小值和最大值在t1t2的范圍內,以避免外推。
  2. 計算兩個信號s1interps2interp 可以使用np.interp來完成,它可以計算線性插值。 如果您需要更復雜的插值方法,可以看看SciPy的interp1d
  3. 計算s1interps2interp之間的相關性。 這是通過np.corrcoef完成的。

您可以對其中一個數據集進行一些簡單的插值(請參見MATLAB的interp1 ),以使它們共享采樣率,如果那是您唯一的問題...

X =[0.1   954
    0.2   1000
    0.24  1090
    0.3   855
    0.45  600];

Y =[0.05  900
    0.13  960
    0.2   1000
    0.29  850 
    0.33  800];

t = Y(:,1); % get time samples from Y
% Interpolate (linearly, with extrapolation) X2 values onto time samples t
X2 = [t, interp1(X(:,1), X(:,2), t, 'linear', 'extrap')];

>> X2 = [0.05  931
         0.13  967.8
         0.2   1000
         0.29  894.1667
         0.33  804];

現在它們具有相同的樣本點,您可以做自己喜歡的事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM