1. 数据准备

首先,我们需要准备数据。本实验中,我们选择了一个无季节效应的非平稳时间序列数据集,该数据集记录了从2000年1月到2019年12月每个月的全球温度变化情况。数据集包含两列数据:日期和温度。我们将使用Python中的pandas库读取数据并将其转换为时间序列。

import pandas as pd

# 读取数据
data = pd.read_csv('global_temperature.csv')

# 将日期列转换为时间序列
data['Date'] = pd.to_datetime(data['Date'])
data.set_index('Date', inplace=True)

# 打印前5行数据
print(data.head())

输出结果如下:

            Temperature
Date                   
2000-01-01         0.34
2000-02-01         0.47
2000-03-01         0.49
2000-04-01         0.32
2000-05-01         0.34
  1. 一阶差分

接下来,我们需要对时间序列进行一阶差分,以使其变为平稳序列。一阶差分是指每个观测值与前一个观测值之间的差异。我们可以使用pandas库中的diff()函数来计算一阶差分。

# 计算一阶差分
diff = data.diff(periods=1)

# 删除第一个缺失值
diff.dropna(inplace=True)

# 打印前5行数据
print(diff.head())

输出结果如下:

            Temperature
Date                   
2000-02-01         0.13
2000-03-01         0.02
2000-04-01        -0.17
2000-05-01         0.02
2000-06-01         0.04
  1. 平稳性检验

一旦我们得到了一阶差分后的数据,我们需要进行平稳性检验,以确认我们的处理是否有效。我们可以使用pandas库中的plot()函数来可视化时间序列数据,并使用statsmodels库中的adfuller()函数来进行单位根检验。

import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller

# 可视化一阶差分后的数据
diff.plot()
plt.show()

# 进行单位根检验
result = adfuller(diff['Temperature'])
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
    print('\t%s: %.3f' % (key, value))

输出结果如下:

ADF Statistic: -8.883889
p-value: 0.000000
Critical Values:
	1%: -3.433
	5%: -2.863
	10%: -2.567

从可视化图表和单位根检验结果中可以看出,一阶差分后的数据已经趋于平稳。ADF统计量的值为-8.883889,小于1%临界值-3.433,因此我们可以拒绝原假设并得出结论:一阶差分后的数据是平稳的

无季节效应非平稳时间序列分析实验一阶差分

原文地址: http://www.cveoy.top/t/topic/fsCK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录