计算给定时间序列的平均值、方差、范围分布、自协方差函数、自相关系数函数、偏自相关系数函数和使用混成检验方法算出卡方统计量的程序(源代码)。
首先通过在命令提示符或者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
distribution.csv
af.csv
(图片是AF函数前20阶,含20)
acf.csv
(图片是ACF函数前20阶,含20)
pacf.csv
(图片是ACF函数前21阶,含21,这里第5列没画出来)
q.csv
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型