[个人学习博客]时间序列分析的统计检验

时间序列分析主要包括三个检验:白噪声检验,平稳性检验和时间序列数据的自相关系数和偏自相关系数的分析

# 一些导入的准备工作

"""
主要参考书籍:孙玉林,余本国.2021年9月.Python机器学习算法与实战.电子工业出版社
"""
# 导入科学运算和绘图的包
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
# 输出高清图像
%config InlineBackend.figure_format="retina"
%matplotlib inline
sns.set(font="Kaiti",style="ticks",font_scale=1.4) # 规范sns输出的图片格式
# 解决显示中文的问题
plt.rcParams['axes.unicode_minus'] = False 
plt.rcParams["font.sans-serif"] = ["SimHei"]

# 生成实验数据

# 生成随机数据,用于实验(X1为非随机化数据,X2为随机化数据)
# 设置随机数种子以确保结果的可复现性  
np.random.seed(42)    
# 设置时间序列的长度  
length = 100  
# 生成时间序列索引  
dates = pd.date_range(start='2023-01-01', periods=length, freq='D')  
# 生成带有线性趋势的X1序列数据  
slope = 0.1  # 线性趋势的斜率  
intercept = 10  # 线性趋势的截距  
X1_trend = slope * np.arange(length) + intercept  
X1 = X1_trend + np.random.randn(length)  # 在趋势基础上添加随机噪声  
  
# 生成完全随机的X2序列数据  
X2 = np.random.randn(length) + 14
  
# 将数据组合成DataFrame  
df = pd.DataFrame({'date': dates, 'X1': X1, 'X2': X2})  
df['date'] = pd.to_datetime(df['date'])  
df = df.set_index('date')  

# 数据可视化

df.head()
# 可视化时间序列数据
df.plot(kind="line",figsize=(10,6))
plt.grid() # 添加网格线
plt.title("时序数据")
plt.show()

# 白噪声检验

如果一个序列是白噪声(独立同分布的随机数据),那么进行时间序列分析是无意义的。因此需要进行白噪声检验

常用的检验方法为LB检验(Ljung-Box检验)

H0:延迟期数小于或等于m期的序列之间相互独立(序列为白噪声)

H1:延迟期数小于或等于m期的序列之间存在相关性(序列不为白噪声)

利用sm.stats.diagnostic.acorr_ljungbox()进行白噪声检验

## LB检验
import statsmodels.api as sm
lags = [4,8,16,32] #m
LB = sm.stats.diagnostic.acorr_ljungbox(df["X1"],lags=lags,return_df=True)
print("序列X1的检验结果:\n",LB)
LB = sm.stats.diagnostic.acorr_ljungbox(df["X2"],lags=lags,return_df=True)
print("序列X2的检验结果:\n",LB)

检验结果如下:

根据LB检验的结果,在延迟阶数[4,8,16,32]的情况下,X1序列P值均小于0.05,拒绝H0,接受H1,差异有统计学意义,认为该数据不是随机的。同理,认为X2是随机的。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值