擅长:python、mysql、java
<p>据我所知,没有一个内置的方法能完全满足您的要求。但是,如果您查看pandas系列方法<code>autocorr</code>的源代码,就会发现您的想法是正确的:</p>
<pre><code>def autocorr(self, lag=1):
"""
Lag-N autocorrelation
Parameters
----------
lag : int, default 1
Number of lags to apply before performing autocorrelation.
Returns
-------
autocorr : float
"""
return self.corr(self.shift(lag))
</code></pre>
<p>所以一个简单的时间相关的互协方差函数</p>
<pre><code>def crosscorr(datax, datay, lag=0):
""" Lag-N cross correlation.
Parameters
----------
lag : int, default 0
datax, datay : pandas.Series objects of equal length
Returns
----------
crosscorr : float
"""
return datax.corr(datay.shift(lag))
</code></pre>
<p>如果你想看看每个月的相互关系,你可以</p>
<pre><code> xcov_monthly = [crosscorr(datax, datay, lag=i) for i in range(12)]
</code></pre>