我想计算Pandas DataFrame中各列滞后长度为1的自相关系数。
RF PC C D PN DN P
year
1890 NaN NaN NaN NaN NaN NaN NaN
1891 -0.028470 -0.052632 0.042254 0.081818 -0.045541 0.047619 -0.016974
1892 -0.249084 0.000000 0.027027 0.067227 0.099404 0.045455 0.122337
1893 0.653659 0.000000 0.000000 0.039370 -0.135624 0.043478 -0.142062
沿着年,我想计算每列(RF、PC等)滞后一的自相关。
为了计算自相关性,我为每列提取了两个时间序列,它们的开始和结束数据相差一年,然后用numpy.corrcoef
计算相关系数。
例如,我写道:numpy.corrcoef(data[['C']][1:-1],data[['C']][2:])
(the整个 Dataframe 称为data
)。
然而,命令不幸返回:
array([[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
...,
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan]])
有人能告诉我如何计算自相关吗?
4条答案
按热度按时间5uzkadbs1#
这是一个迟来的答案,但是对于未来的用户,您还可以使用panda.Series.autocorr(),它计算Series上的lag-N(默认值=1)自相关:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.autocorr.html#pandas.Series.autocorr
os8fio9y2#
.autocorr
applies应用于序列,而不是 Dataframe 。可以使用.apply
应用于 Dataframe :你也可以用一个指定的窗口计算滚动自相关,如下所示(这就是.autocorr在幕后所做的):
zynd9foi3#
您应该使用:
df[['C']]
表示只有一列的 Dataframe ,而df['C']
是包含C列中的值的序列。pw9qyyiw4#
由于我相信我们需要对应于最高相关性的窗口的用例更为常见,因此我添加了另一个函数,该函数返回每个特征的窗口长度。