3 Star 12 Fork 6

庵中十三居士/时间序列分析程序

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

时间序列分析程序

这是什么

计算给定时间序列的平均值、方差、范围分布、自协方差函数、自相关系数函数、偏自相关系数函数和使用混成检验方法算出卡方统计量的程序(源代码)。

如何使用

一,获取源代码

首先通过在命令提示符或者Linux终端克隆仓库的源代码,或者下载源代码的压缩包并解压。

克隆源代码

这需要你的电脑上有安装好的git软件。克隆源代码方法是在命令提示符或者终端执行命令:

$ git clone --depth=1 git@gitee.com:az13js/satool.git

执行成功的话,在当前目录下会生成新的目录satool,里面包含程序的源代码。

下载压缩包

按照下面的两步点击仓库网页,可以直接下载到包含源代码的压缩文件:

图片,下载压缩包的方法

下载后解压。

二,编译源代码

这是使用Java 1.8编写和Maven 3.8.1管理的,首次使用需要先编译。假设你的电脑上已经安装好了Java和Maven,那么编译程序很简单,只需要用普通的方式激活Maven的编译过程即可(第一次使用Maven编译项目时,会从网络上下载项目依赖的包,下载过程可能需要一段时间):

$ mvn compile -Dencoding=UTF8

编译成功后可以直接执行.class文件(注:如果用Windows系统注意把命令中的/替换为\):

$ java -classpath target/classes cn.az13js.satool.App
命令行参数:
-i 数据文件名(必填)
-o 输出目录(必填)
-h 打印此帮助信息
-m 自由度,默认为长度的自然对数值向上取整
-d 统计概率分布时横坐标的精度
示例:program -i input.csv -o output_dir

如果想要,也可以激活Maven的package过程打包成.jar文件:

mvn package -Dencoding=utf8

然后通过指定生成的.jar文件执行(注:如果用Windows系统注意把命令中的/替换为\):

$ java -jar target/satool-0.3.jar
命令行参数:
-i 数据文件名(必填)
-o 输出目录(必填)
-h 打印此帮助信息
-m 自由度,默认为长度的自然对数值向上取整
-d 统计概率分布时横坐标的精度
示例:program -i input.csv -o output_dir

注:为了方便使用可以生成.jar后在环境变量包含的目录下新建一个脚本调用,例如:

可执行脚本satool(Linux):

#!/bin/bash

java -jar ~/satool/target/satool-0.3.jar $*

批处理脚本satool.bat(Windows):

@ECHO OFF
java -jar C:\Users\az13js\satool\target\satool-0.3.jar %*

然后直接输入satool并传入参数就行了:

$ satool -h
命令行参数:
-i 数据文件名(必填)
-o 输出目录(必填)
-h 打印此帮助信息
-m 自由度,默认为长度的自然对数值向上取整
-d 统计概率分布时横坐标的精度
示例:program -i input.csv -o output_dir

三,指定参数

不带参数执行程序可以查看帮助信息:

$ java -jar target/satool-0.3.jar
命令行参数:
-i 数据文件名(必填)
-o 输出目录(必填)
-h 打印此帮助信息
-m 自由度,默认为长度的自然对数值向上取整
-d 统计概率分布时横坐标的精度
示例:program -i input.csv -o output_dir

参数-i:用以指定分析的时间序列文件。时间序列文件是一个csv格式的文本,里面的第一列数据会被程序使用。数据必须全部都是数字,如果掺杂了中文或者英文的话程序执行会出现问题。也就是说需要注意第一行不要添加表头。

参数-o:指定一个目录用来给程序写入计算结果。目录必须存在,不存在会导致程序运行错误。

参数-h:只要有这个参数,程序就会输出帮助信息,效果和不带参数执行程序是一样的。

参数-m:可选的参数,指定混成检验时自由度的值。默认情况下它等于向上取整的ln(序列长度)。自由度需要大于0且小于时间序列长度,否则将提示错误消息并忽视输入的自由度。

参数-d:可选,统计概率分布时横坐标的精度。默认值为200,必须大于0。

程序执行结果

文件夹files内包含一个input.csv文件可以用来查看执行效果(如果使用Windows系统注意把/替换为\):

$ java -jar target/satool-0.3.jar -i files/input.csv -o files -m 20
"********** Basic info **********"
LEN=100
MIN=-3.273609668903302
MAX=3.9946403140242444
AVG=-0.00605672992982714
VAR=1.7717366348110508
"********** Advanced **********"
m=20
Q=56.98212904184351

“Basic info”里面的是基本信息,LEN是序列长度、MIN是序列最小值、MAX是序列最大值、AVG平均值、VAR是方差。“Advanced”里面的是混成检验结果,m是自由度,Q是卡方统计量,结合后面附带给出的卡方统计量表可以得知自由度等于20时出现Q=56.98左右的情况概率小于0.5%。

参数-o指定的文件夹files里生成程序分析结果文件若干个(输出内容保留小数点后9位):

  • sequence.csv是程序读取到的时间序列的值,生成这个可以用于调试需要;
  • distribution.csv是数据的概率分布大概的情况;
  • af.csv是自协方差函数计算结果;
  • acf.csv是自相关系数函数的计算结果;
  • pacf.csv是偏自相关系数函数的计算结果;
  • q.csv是计算出来的前20个自由度的卡方统计值和95%卡方统计值的对比结果。

文件sequence.csv第一列是序号,第二列是时间序列对应的值。

1.000000000,-0.439603640
2.000000000,0.225560653
3.000000000,2.778596490
4.000000000,-0.266824471
5.000000000,-1.072888992
......

文件distribution.csv含有两列,第一列是时间序列取值,第二列是取对应值附近时相对概率的大小。

-3.255439044,0.000181706
-3.219097794,0.000000000
-3.182756544,0.000000000
-3.146415294,0.000363412
-3.110074044,0.000000000
......

文件af.csv的内容是4列,第一列是自协方差的阶数,第二列是自协方差的值,第三列、第四列分别是负两倍标准差和正两倍标准差。

0.000000000,1.771736635,1.521175237,2.022298033
1.000000000,0.660994013,-0.178066232,0.178066232
2.000000000,0.065290021,-0.178972427,0.178972427
3.000000000,0.047757010,-0.179892600,0.179892600
4.000000000,0.331908970,-0.180827113,0.180827113
......

文件acf.csv有4列,第一列是自相关系数函数的阶数,第二列是自相关系数函数的值,第三列、第四列分别是负两倍标准差和正两倍标准差。

0.000000000,1.000000000,1.000000000,1.000000000
1.000000000,0.374902202,-0.209007438,0.189007438
2.000000000,0.036819169,-0.210000000,0.190000000
3.000000000,0.027291721,-0.211007563,0.191007563
4.000000000,0.187956449,-0.212030509,0.192030509
......

文件pacf.csv有5列,第一列是偏自相关系数函数的阶数,第二例是偏自相关系数函数值,第三列、第四列分别是负两倍标准差和正两倍标准差,最后一列是误差的方差。

1.000000000,0.373076901,-2.469927154,2.469927154,1.525135037
2.000000000,-0.118882310,-2.452411301,2.452411301,1.503580298
3.000000000,0.065898408,-2.447080587,2.447080587,1.497050850
4.000000000,0.185430598,-2.404641757,2.404641757,1.445575495
5.000000000,-0.039065830,-2.402806147,2.402806147,1.443369346
......

文件q.csv有3列,第一列是自由度,第二例是对应的自由度的卡方统计值,第三列是有95%把握的卡方统计值。

1.000000000,14.481080230,3.841000000
2.000000000,14.622178620,5.991000000
3.000000000,14.700501792,7.815000000
4.000000000,18.454062128,9.488000000
5.000000000,19.796654863,11.071000000
......

下面是使用第三方的表格处理软件根据生成结果绘制的图:

sequence.csv

sequence.csv

distribution.csv

sequence.csv

af.csv(图片是AF函数前20阶,含20)

af.csv

acf.csv(图片是ACF函数前20阶,含20)

acf.csv

pacf.csv(图片是ACF函数前21阶,含21,这里第5列没画出来)

pacf.csv

q.csv

q.csv

附带卡方统计量表

卡方统计量表

The MIT License (MIT) Copyright © 2021,2022 az13js Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

计算给定时间序列的平均值、方差、概率分布(大致的分布)、自协方差函数、自相关系数函数、偏自相关系数函数和使用混成检验方法(Ljung-Box test,LB检验)算出卡方统计量的程序 展开 收起
Java 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/az13js/satool.git
git@gitee.com:az13js/satool.git
az13js
satool
时间序列分析程序
master

搜索帮助

Cb406eda 1850385 E526c682 1850385