欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

非平稳序列的确定性分析

发布时间:2024/8/1 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 非平稳序列的确定性分析 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

非平稳序列的分析方法:

{{确定性时序分析随机性时序分析

由确定性因素导致的非平稳通常显示出明显的规律性
可以分解为4大类因素:
1、长期趋势
2、循环波动(or交易日因素)
3、季节性因素
4、随机波动
因素之间的相互作用模式
加法模型:xt=Tt+Ct+St+Ttxt=Tt+Ct+St+Tt
乘法模型:xt=Tt×Ct×St×Ttxt=Tt×Ct×St×Tt

分析目的:

  • 单纯测度某一个因素对序列的影响
  • 测度各个因素之间的相互作用以及他们对序列的综合影响
  • 一、 趋势分析

    1、趋势拟合法

    找到序列中的趋势,利用这种趋势对未来做预测

    ①线性拟合

    线性模型:

    {xt=a+bt+ItE(It)=0,Var(It)=σ2{xt=a+bt+ItE(It)=0,Var(It)=σ2
    ItIt为随机波动
    利用 lm( ) 函数拟合线性趋势

    #读入数据 x<-c(8444,9215,8879,8990,8115,9457,8590,9294,8997,9574,9051,9724,9120,+ 10143,9746,10074,9578,10817,10116,10779,9901,11266,10686,10961,10121,+ 11333,10677,11325,10698,11624,11502,11393,10609,12077,11376,11777,+ 11225,12231,11884,12109) #构造时间变量 t<-c(1:40) x.fit<-lm(x~t) summary(x.fit)

    x<-ts(x) plot(x,lwd=2.5) abline(lm(x~t),col="red",lwd=3)

    ②曲线拟合

    对曲线模型估计时,应通过变换将其转换为线性模型,再用最小二乘估计,用 lm( ) 函数拟合;
    不能转换的就用迭代法估计,用 nls()函数

    例如,下面的例子,对1949-2008年的化肥产量进行曲线拟合:xt=a0+a1t+a2t2xt=a0+a1t+a2t2

    a=read.table("D:\\Backup\\桌面\\R\\时间序列分析--基于R\\data\\file12.csv",sep = ",",header = T) x<-ts(a$output,start = 1949) plot(x)


        时序图显示有明显的曲线递增趋势。

    #lm()拟合 t1<-c(1:60) t2<-t1^2 x.fit1<-lm(x~t1+t2) summary(x.fit1)

    #nls拟合 x.fit2<-nls(x~a+b*t1+c*t1^2,start = list(a=1,b=1,c=1)) #start指定迭代初始值 summary(x.fit2)


    可见,两个函数的拟合结果一样:
    xt=319.022557.7690t+2.3551t2+εt,εtN(0,2632)xt=319.0225−57.7690t+2.3551t2+εt,εt∼N(0,2632)

    绘制非线性拟合图:

    y<-predict(x.fit2) #将nls得到的拟合值赋给y y<-ts(y,start = 1949) plot(x,type="p") lines(y,col=2,lwd=2.5)

    2、平滑法

    ①移动平均法

    用一定时间间隔内的加权平均值作为下一期的预测值,权重为 1n1n,说明无论时间远近,过去的 n 期对下一期的影响是一样的。
    如:在一个有30个序列值得时间序列当中,假如用4期的的加权平均值预测第31期,那么x^30(1)=x30+x29+x28+x27+x265x^30(1)=x30+x29+x28+x27+x265

    利用TTR包中的SMA函数进行拟合简单移动平均趋势趋势

    如:对北京1949-2008年的每年最高气温序列做5期移动平均拟合

    library(TTR) a=read.table("D:\\Backup\\桌面\\R\\时间序列分析--基于R\\data\\file6.csv",sep = ",",header = T) x<-ts(a$temp,start = 1949) x.ma<-SMA(x,5) plot(x,type="o",lwd=1.5) lines(x.ma,col=2,lwd=2.5) legend(locator(1),cex=0.75,x.intersp=0.3,xjust = 0,yjust = 1, text.width=17,inset=5,c("观察值序列","5期移动平均拟合值序列"),lty = c(1,1),col = c("black","red"))

    ②指数平滑法

    在实际当中,大多数是近期对现在的影响较大,远期对现在的影响较小,所以在指数平滑法中各期权重随时间间隔的增大而减小

    • 简单指数平滑:

    x^t(1)=x~t=αxt+(1α)x~t1x^t(1)=x~t=αxt+(1−α)x~t−1,指定x~0=x1x~0=x1,变化缓慢的序列,取较小的 α 值,反之取较大的 α 值。
    只能做1期预测

    • Holt两参数指数平滑

      适用于含有线性趋势的序列
      思想:假定序列有较固定的趋势–每期都递增or递减 r ,那么第 t 期的 估计值就等于前一期的值加上固定的趋势变动值 r。但 r 不是固定的,是一个随机序列rtrt

    • Holt三参数指数平滑

      适合序列既含有趋势又含有季节

    利用 HoltWinters( ) 函数做平滑趋势拟合

    例如:对每头奶牛月产量序列做3参数指数平滑,并预测未来两年产量

    b<-read.table("D:\\Backup\\桌面\\R\\时间序列分析--基于R\\data\\file5.csv",sep = ",",header = T) x<-ts(b$milk,start = c(1962,1),frequency = 12) x.fit<-HoltWinters(x) plot(x.fit) legend(locator(1),cex=0.75,x.intersp=0.3,xjust = 0,yjust = 1, text.width=5,inset=5,c("观察值序列","Holt三参数指数平滑序列"),lty = c(1,1),col = c("black","red"))

    #预测序列并绘制预测效果图 x.fore<-forecast(x.fit,h=24) plot(x.fore,main = "HoltWinters三参数指数平滑序列预测图")


    二、 季节效应分析

    有周期性变化的事件—-季节效应

    例如:第 i 年第 j 个月的气温:

    xij=×j+=x¯Sj+Iijxij=总平均气温×第j各月的季节指数+随机波动=x¯⋅Sj+Iij
    季节指数: Sj=Sj=各月平均气温总平均气温,>1说明该月的值高于平均值,=1没有明显的季节效应


    三、综合分析

    分析既有趋势变动又有季节效应的序列

    模型:
    加法模型:xt=Tt+St+Ttxt=Tt+St+Tt
    乘法模型:xt=Tt×St×Ttxt=Tt×St×Tt

    利用函数decompose(x,type= )进行确定性因素分解。
    type=”additive”,加法模型,默认
    type=”mult”,乘法模型

    例:对1993-2000年中国消费品零售总额序列进行确定性因素分解

    c<-read.table("D:\\Backup\\桌面\\R\\时间序列分析--基于R\\data\\file14.csv",sep = ",",header = T) x<-ts(c$sales,start = c(1993,1),frequency = 12) plot(x)

    x.fit<-decompose(x,type = "mult") plot(x.fit)

    输出季节指数图

    plot(x.fit$figure,type="o")


    可见,在冬天零售总额偏高


    总结

    以上是生活随笔为你收集整理的非平稳序列的确定性分析的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。