【问题标题】:Time series forecasting, analysing stationarity时间序列预测、平稳性分析
【发布时间】:2021-06-12 06:25:01
【问题描述】:

我有一个从 1990 年到 2017 年的年度碳排放数据(28 个数据点),我想对其进行时间序列预测。窗口为 2 的数据的滚动平均值随着时间的推移不断增加,这表明我的数据不是静止的,但 dicky-fuller 检验给出的 p 值为 0.04,小于 0.05,因此这表明数据是静止的。 在这种情况下可以做什么?

def rolling_stats(time_data):
     rolling_mean=time_data.rolling(2).mean()
     rolling_std=time_data.rolling(2).std()
     raw_data=plt.plot(time_data,color="blue",label="Original Data")
     mean=plt.plot(rolling_mean,color="green",label="mean")
     std=plt.plot(rolling_std,color="red",label="std")
     plt.legend(loc="best")
     plt.title("Mean and standard deviation")
     plt.xlabel("Years")
     plt.ylabel("Carbon emitted in megatonnes")
rolling_stats(CarbonEmitted)

【问题讨论】:

  • 看来您的问题不是关于编程,而是关于统计?如果您有需要解决问题的代码,请包含它,并且您可能还希望包含数据和代码以显示绘图,而不是图像,因为图像看起来不是您的样子有问题。
  • 我使用 adfuller 进行 dicky-fuller 测试并使用 pd.rolling().mean() 来找到滚动平均值

标签: python time-series arima


【解决方案1】:

如果不查看代码/数据,很难看出您做错了什么,例如,您可能在标准偏差或其他方面表现得更差。您的数据应采用以下格式

Date Emission
1992-01-01 21
1993-01-01 20.5

日期通常设置为索引,您的日期应该是日期时间类型

【讨论】:

  • 是的,格式相同。我的索引是日期时间类型的日期,我有排放值。
  • 所以如果你输入 df.plot() 它只会给出一条缓慢增加的线?
  • 是的。对于原始数据,没有任何变换或差分,只是一条缓慢增加的线
  • 也许可以尝试其他测试,例如 KPSS 或 Philip Peron,我知道您会希望并且可能需要 ADF 才能工作,但这些测试正在测试单位根,这会推断出非平稳性。也许调查为什么 adf 认为单位根不存在。时间 t 的值应该等于 t-1 的值 + 噪声,以便单位根存在。
【解决方案2】:

ADF 测试用于确定对数据进行差分是否会产生 staionairty,从而推断当前数据不是。我没有你的数据,所以我不知道它是否有,但你想要测试的是差异数据是否会导致以 0 为中心的随机噪声。 如果您在执行 ADF 时没有获得固定数据,那么这可能就是 ADF 在原始数据上失败的原因。

您还可以查看其他测试,有时不需要进行差分即可使数据保持静止,而对数转换更合适,请对您的数据进行试验并查看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2015-09-09
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    相关资源
    最近更新 更多