【问题标题】:What is the difference between auto-correlation in matplotlib and auto-correlation in pandas.tools.plotting?matplotlib 中的自相关和 pandas.tools.plotting 中的自相关有什么区别?
【发布时间】:2015-11-26 01:11:49
【问题描述】:

matplotlib 中的自相关计算与 pandas.tools.plotting、sm.graphics.tsa.plot_acf 等其他库有何不同?

从下面的代码我们可以注意到这两个库返回的自相关值是不同的,比如 matplotlib 返回所有大于零的自相关值和 pandas.tools.plotting 返回一些 -ve 自相关值(除了置信区间,负 x 轴)。

import matplotlib.pyplot as plt
import statsmodels.api as sm
import pandas as pd
from pandas.tools.plotting import autocorrelation_plot

dta = sm.datasets.sunspots.load_pandas().data
dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008'))
del dta["YEAR"]

plt.acorr(dta['SUNACTIVITY'],maxlags = len(dta['SUNACTIVITY']) -1, linestyle = "solid", usevlines = False, marker='')
plt.show()

autocorrelation_plot(dta['SUNACTIVITY'])
plt.show()

【问题讨论】:

    标签: python math pandas matplotlib


    【解决方案1】:

    pandas 绘图和 statsmodel 图形中的自相关在计算自相关之前对数据进行标准化。这些库减去平均值并除以数据的标准差。

    在使用标准化时,他们假设您的数据是按照高斯定律生成的(具有一定的均值和标准差)。实际情况可能并非如此。

    相关性很敏感。这些函数(matplotlib 和 pandas 绘图)都有其缺点。

    以下代码使用 matplotlib 生成的图将与 pandas 绘图或 statsmodels 图形生成的图相同

    dta['SUNACTIVITY_2'] = dta['SUNACTIVITY']
    dta['SUNACTIVITY_2'] = (dta['SUNACTIVITY_2'] - dta['SUNACTIVITY_2'].mean()) /     (dta['SUNACTIVITY_2'].std())
    plt.acorr(dta['SUNACTIVITY_2'],maxlags = len(dta['SUNACTIVITY_2']) -1, linestyle = "solid", usevlines = False, marker='')
    plt.show()
    

    源代码:

    Matplotlib

    Pandas

    【讨论】:

      猜你喜欢
      • 2016-09-05
      • 1970-01-01
      • 2023-03-11
      • 2012-11-15
      • 2021-12-30
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 2015-12-07
      相关资源
      最近更新 更多