时间序列预测下个月因变量数据

2021-03-31 09:45发布

有三个月的自和因变量数据,预测下个月的因变量数据?(下个月自变量数据没有)。有什么方法预测(不用黑箱)

有三个月的自和因变量数据,预测下个月的因变量数据?(下个月自变量数据没有)。有什么方法预测(不用黑箱)

3条回答
20200921文 -做更棒的自己!
1楼 · 2021-03-31 20:21.采纳回答

对于预测,有定性和定量两类方法,定性的方法主要是作一些趋势性或转折点的判定。常用的方法有专家座谈会法,德尔菲法等。常用的定量预测方法有两种,一种是回归分析法,另一种常用方法就是时间序列分析法。这一章主要介绍有关时间序列分析法的有关内容。
所谓时间序列就是一组按照一定的时间间隔排列的一组数据。这一组数据可以表示各种各样的含义的数值,如对某种产品的需求量、产量,销售额,等。其时间间隔可以是任意的时间单位,如小时、日、周、月等。通常,对于这些量的预测,由于很难确定它与其他因变量的关系,或收集因变量的数据非常困难,这时我们就不能采用回归分析方法进行预测,或者说,有时对预测的精度要求不是特别高,这时我们都可以使用时间序列分析方法来进行预测。

小磊子
2楼 · 2021-04-01 10:01

应用背景:

通过分析序列进行合理预测,做到提前掌握未来的发展趋势,为业务决策提供依据,这也是决策科学化的前提。

时间序列分析:

时间序列就是按时间顺序排列的一组数据序列。

时间序列分析就是发现这组数据的变动规律并用于预测的统计技术。

分析工具:

SPSS(数据分析的重量级应用,与SAS二选一)

实践案例:通过历史数据预测未来数据,所涉及的都是最简单的实践,抛砖引玉,重在方法,不论多复杂的数据,方法是一样的。

如已知前几年每月的销售量,预测未来的销售量。

一、时间序列分析简介

时间序列分析有三个基本特点

  1. 假设事物发展趋势会延伸到未来

  2. 预测所依据的数据具有不规则性

  3. 不考虑事物发展之间的因果关系

并不是所有的时间序列都一定包含四种因素,如以年为单位的诗句就可能不包含季节变动因素。

四种因素通常有两种组合方式:

  1. 四种因素相互独立,即时间序列是四种因素直接叠加而成的,可用加法模型表示:Y=T+S+C+I

  2. 四种因素相互影响。即时间序列是四种因素相互综合的结果,可用乘法模型表示:Y=T*S*C*I

其中,原始时间序列值和长期趋势可用绝对数表示;季节变动、循环变动、不规则变动可用相对数(变动百分比)表示。

二、季节分解法

当我们对一个时间序列进行预测时,应该考虑将上述四种因素从时间序列中分解出来。

为什么要分解这四种因素?

  1. 分解之后,能够克服其他因素的影响,仅仅考量一种因素对时间序列的影响。

  2. 分解之后,也可以分析他们之间的相互作用,以及他们对时间序列的综合影响。

  3. 当去掉这些因素后,就可以更好的进行时间序列之间的比较,从而更加客观的反映事物变化发展规律。

  4. 分解之后,序列可以用来建立回归模型,从而提高预测精度。

所有的时间序列都要分解这四种因素吗?

通常情况下,我们考虑进行季节因素的分解,也就是将季节变动因素从原时间序列中去除,并生成由剩余三种因素构成的序列来满足后续分析需求。

为什么只进行季节因素的分解?

  1. 时间序列中的长期趋势反映了事物发展规律,是重点研究的对象;

  2. 循环变动由于周期长,可以看做是长期趋势的反映;

  3. 不规则变动由于不容易测量,通常也不单独分析。

  4. 季节变动有时会让预测模型误判其为不规则变动,从而降低模型的预测精度

综上所述:当一个时间序列具有季节变动特征时,在预测值钱会先将季节因素进行分解。

步骤:

  1. 定义日期标示变量:即先将序列的时间定义好,才能分析其时间特征。

  2. 了解序列发展趋势:即序列图,确定乘性还是加性

  3. 进行季节因素分解

  4. 建模

  5. 分析结果解读

  6. 预测

1、定义日期标示变量

时间序列的特点就是数据根据时间点的顺序进行排列,因此分析之前,SPSS需要知道序列的时间定义,然后才能进行分析时间特征。

根据源数据的格式进行选择,并输入第一个个案的具体数值。

此时会在源文件中生成三个新的变量。

2、了解序列发展趋势

完成日期标示变量的定义之后,需要先对时间序列的变化趋势有所了解,便于选择合适的模型。即通过序列图,确定模型是乘性还是加性。

变量为”销售数据“,时间轴标签为”DATE–“,也就是我们自定义的时间。

数据销量序列图

如何根据序列图来判断模型的乘性或加性?

  1. 如果随着时间的推移,序列的季节波动变得越来越大,则建议使用乘法模型。

  2. 如果序列的季节波动能够基本维持恒定,则建议使用加法模型。

本例很明显:随着时间变化,销售数据的季节波动越来越大,那么使用乘法模型会更精确。

3、进行季节因素分解

变量为”销售数据“,且根据序列图我们知道时间序列模型为乘性。

提示您会新生成四个变量

  1. ERR(误差序列):从时间序列中移除季节因素、长期趋势、和循环变动之后留下的序列,也就是原始序列中的不规则变动构成的序列。

  2. SAS(季节因素校正后序列):是移除原始序列中的季节因素后的校正序列。

  3. SAF(季节因子):是从序列中分解出的季节因素。其中的变量值根据季节周期的变动进行重复,如本例中季节周期为12个月,所以这些季节因子没12个月重复一次。

  4. STC(长期趋势和循环变动趋势):这是原始序列中长期趋势和循环变动构成的序列。

如图,周期为12个月,季节因子12个月循环一次。

完成季节因素分解后的序列和原始序列之间有什么差异?

通过回执序列图的方法把原始序列和除去季节因子的三个序列(误差序列、季节因素校正后序列、长期无视和循环变动序列)进行比较。

要做四个序列图,会有四个变量:

  1. 原始序列:使用变量”销售数据“;

  2. 误差序列:使用变量”ERR“;

  3. 季节因素校场后序列:使用变量”SAS“

  4. 长期趋势和循环变动序列:使用变量”STC“

  • 蓝色线:原始序列

  • 紫色线:长期趋势和循环变动序列

  • 浅棕色:季节因素校正后序列

  • 绿色线:误差序列(不规则变动)

因为误差序列数值非常小,所以长期趋势和循环变动序列(长期趋势+循环变动)与季节因素校正后序列(长期趋势+循环变动+不规则变动,即误差)能够基本重合。

在单独做”季节因子SAF“的序列图:

因为是做”季节因子“的序列图,所以只有一个变量”季节因子SAF“

我们看出:季节因素的周期是12个月,先下降,然后上升到第一个顶点,再有略微的下降后,出现明显的上升趋势,到第七个月时达到峰值,然后一路下跌,直到最后一个月份有所回升,之后进入第二个循环周期。

通过对原始序列的季节分解,我们更好的掌握了原始序列所包含的时间特征,从而选用适当的模型进行预测。

三、专家建模法

时间序列的预测步骤有四步:

  1. 绘制时间序列图观察趋势

  2. 分析序列平稳性并进行平稳化

  3. 时间序列建模分析

  4. 模型评估与预测

平稳性主要是指时间序列的所有统计性质都不会随着时间的推移而发生变化。

对于一个平稳的时间序列,具备以下特征:

  1. 均数和方差不随时间变化

  2. 自相关系数只与时间间隔有关,与所处的时间无关

自相关系数是研究序列中不同时期的相关系数,也就是对时间序列计算其当前和不同滞后期的一系列相关系数。

平稳化的方法——差分。

差分就是指序列中相邻的两期数据之差。

  • 一次差分=Yt-Yt-1

  • 二次差分=(Yt-Yt-1)-(Yt-1-Yt-2)

具体的平稳化操作过程会有专家建模法自动处理,我们只需要哼根据模型结果独处序列经过了几阶差分即可。

时间序列分析操作:

要分析所有变量,所以选择”销售数据“。

【专家建模器】–【条件】,勾选”专家建模器考虑季节性模型“。

勾选”预测值“,目的是生成预测值,并保存模型。

时间序列分析结果解读

该表显示了经过分析得到的最优时间序列模型及其参数,最优时间U型猎魔性为ARIMA(0,1,1)(0,1,1)

求和自回归移动平均模型ARIMA(p,d,q)(P,D,Q)

  • p:出去季节性变化之后的序列所滞后的p期,通常为0或1,大于1的情况很少;

  • d:除去季节性变化之后的序列进行了d阶差分,通常取值为0,1或2;

  • q:除去季节性变化之后的序列进行了q次移动平均,通常取值0或1,很少会超过2;

P,D,Q分别表示包含季节性变化的序列所做的事情。

因此本例可解读为:对除去季节性变化的序列和包含季节性变化的序列分别进行了一阶差分和一次移动平均,综合两个模型而建立出来的时间序列模型。

该表主要通过R方或平稳R方来评估模型拟合度,以及在多个模型时,通过比较统计量找到最优模型。

由于原始变量具有季节性变动因素,所以平稳的R方更具有参考意义,等于32.1%,拟合效果一般。

该表提供了更多的统计量可以用来评估时间序列模型的拟合效果。

虽然平稳R方仅仅是32.1%,但是”杨-博克斯Q(18)“统计量的显著性P=0.706,大于0.05(此处P>0.05是期望得到的结果),所以接受原假设,认为这个序列的残差符合随机分布,同时没有离群值出现,也都反映出数据的拟合效果还可以接受。

时间序列应用预测:

未来一年是到2016年12月,手动输入即可。

这是未来一年的销售趋势。

如果想从全局来观察预测趋势,可以在把这一年的趋势和以前的数据连接起来

此时的变量应该是”原始的销售数量“和”2016年的预测销售数量“。

结果如下:

也可以在表中查看具体的数值:


小新没有蜡笔
3楼 · 2021-04-21 16:53

对于预测,有定性和定量两类方法,定性的方法主要是作一些趋势性或转折点的判定。常用的方法有专家座谈会法,德尔菲法等。常用的定量预测方法有两种,一种是回归分析法,另一种常用方法就是时间序列分析法。这一章主要介绍有关时间序列分析法的有关内容。
所谓时间序列就是一组按照一定的时间间隔排列的一组数据。这一组数据可以表示各种各样的含义的数值,如对某种产品的需求量、产量,销售额,等。其时间间隔可以是任意的时间单位,如小时、日、周、月等。通常,对于这些量的预测,由于很难确定它与其他因变量的关系,或收集因变量的数据非常困难,这时我们就不能采用回归分析方法进行预测,或者说,有时对预测的精度要求不是特别高,这时我们都可以使用时间序列分析方法来进行预测。

相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问