时间序列数据平稳性检验与随机性分析

2024-03-06 01:04

本文主要是介绍时间序列数据平稳性检验与随机性分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、实验内容:

分析1964年到1999年中国纱产量的时间序列,主要内容包括:

(1)、通过图分析时间序列的平稳性,这个方法很直观,但比较粗糙;

(2)、通过计算序列的自相关和偏自相关系数,绘出自相关图,根据平稳时间序列的性质分析其平稳性;

(3)、进行纯随机性检验,并分析其随机性;

(4)、平稳性的ADF检验,并分析其平稳性;

(5)、平稳性的pp检验,并分析其平稳性。

实验代码

import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.stattools import adfuller
# 创建一个包含数据的DataFrame
data = {'Year': [1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999],'Production': [97.0, 130.0, 156.5, 135.2, 137.7, 180.5, 205.2, 190.0, 188.6, 196.7, 180.3, 210.8, 196.0, 223.0, 238.2, 263.5, 292.6, 317.0, 335.4, 327.0, 321.9, 353.5, 397.8, 436.8, 465.7, 476.7, 462.6, 460.8, 501.8, 501.5, 489.5, 542.3, 512.2, 559.8, 542.0, 567.0]
}df = pd.DataFrame(data)# 将年份列转换为日期时间格式
df['Year'] = pd.to_datetime(df['Year'], format='%Y')# 设置年份列为索引
df.set_index('Year', inplace=True)
# ADF检验
result_adf = adfuller(df['Production'])
print('ADF Test:')
print('ADF Statistic:', result_adf[0])
print('p-value:', result_adf[1])
print('Critical Values:', result_adf[4])# 判断序列是否平稳
if result_adf[1] < 0.05:print('序列是平稳的')
else:print('序列不是平稳的')
#  PP检验
result_pp = adfuller(df['Production'], autolag='AIC', regression='c', regresults=True)
print('Phillips-Perron Test:')
print('PP Statistic:', result_pp[0])
print('p-value:', result_pp[1])# 检查元组长度以避免 IndexError
if len(result_pp) > 4:print('Critical Values:', result_pp[4])
else:print('Not enough elements in result_pp tuple')# 分析平稳性
if result_pp[1] < 0.05:print('序列是平稳的')
else:print('序列不是平稳的')
# 绘制折线图
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['Production'], marker='o', color='b', linestyle='-')
plt.title('Cotton Production Over Time')
plt.xlabel('Year')
plt.ylabel('Production')
plt.grid(True)
plt.show()# 绘制自相关图
plt.figure(figsize=(12, 6))
plot_acf(df['Production'], lags=20, title='Autocorrelation Plot')
plt.show()

实验结果

 

这篇关于时间序列数据平稳性检验与随机性分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/778377

相关文章

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

golang获取prometheus数据(prometheus/client_golang包)

《golang获取prometheus数据(prometheus/client_golang包)》本文主要介绍了使用Go语言的prometheus/client_golang包来获取Prometheu... 目录1. 创建链接1.1 语法1.2 完整示例2. 简单查询2.1 语法2.2 完整示例3. 范围值

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数