时间序列
来源:互联网 发布:刻字机端口设置 编辑:程序博客网 时间:2024/06/05 00:26
数学建模时间序列
原文:http://blog.csdn.net/qq_34861102/article/details/77075424
- 趋势移动平均法:
- 最简单的,使用线性的预测
指数平滑预测模型:
二次指数平滑
三次指数平滑
曲线预测模型:
- Compertz曲线
- 生长曲线
- 修正指数曲线
ARMA模型:
- armax(p,q)函数
- 定阶
我想的话,直接用aic评估一下,画个图,看哪个点的指标最小
aic(m)
- 预测
predict和forecast
正文:
- 1
yt = [80.8 94.0 88.4 101.5 110.3 121.5 134.7 142.7];m = length(yt);n = 3;%未来一步的预测for i = n+1:m+1 ythat(i) = sum(yt(i-n:i-1))/n;endythat%未来多步的预测for i = m+1:m+3 yt(i) = ythat(i); ythat(i+1) = sum(yt(i-n+1:i))/n;endyhat = ythat(end-3:end)s1 = sqrt(mean(yt(n+1:m)-ythat(n+1:m)).^2)
2
alpha = 0.6; yt = [80.8 94.0 88.4 101.5 110.3 121.5 134.7 142.7]; n = length(yt); st1(1) = mean(yt(1:3)); st2(1) = st1(1); for i = 2:n st1(i) = alpha*yt(i) + (1-alpha)*st1(i-1); st2(i) = alpha*st1(i) + (1-alpha)*st2(i-1); end at = 2*st1 - st2; bt = alpha/(1-alpha)*(st1-st2); yhat = at + bt; sigma = sqrt(mean((yt(2:end)-yhat(1:end-1)).^2)); m = 1:4; yhat2 = at(end) + bt(end)*m;
alpha = 0.3; yt = [80.8 94.0 88.4 101.5 110.3 121.5 134.7 142.7]; n = length(yt); st1(1) = mean(yt(1:3)); st2(1) = st1(1); for i = 2:n st1(i) = alpha*yt(i) + (1-alpha)*st1(i-1); st2(i) = alpha*st1(i) + (1-alpha)*st2(i-1); end at = 2*st1 - st2; bt = alpha/(1-alpha)*(st1-st2); yhat = at + bt; sigma = sqrt(mean((yt(2:end)-yhat(1:end-1)).^2)); m = 1:4; yhat2 = at(end) + bt(end)*m;
同(1)中的指数模型编写方法,参考三次指数:
修正指数曲线
t = 1969:1983;yt = [3.78 4.19 4.83 5.46 6.71 7.99 8.60 9.24 9.67 9.87 10.49 10.92 10.93 12.39 12.59];plot(t,yt,'* -');n = length(yt);m = n/3;dyt = diff(yt);for i = 1:n-2 jy(i) = dyt(i+1)/dyt(i);endfw = minmax(jy);s1 = sum(yt(1:m));s2 = sum(yt(m+1:2*m));s3 = sum(yt(2*m+1:end));b = ((s3-s2)/(s2-s1))^(1/m);a = (s2 - s1)*(b - 1)/(b * (b^m - 1)^2);k = (s1 - a*b*(b^m-1)/(b-1))/m;yuce = @(t) k + a*b.^t;bzcha = sqrt(mean((yt - yuce(1:n)).^2))ythat = yuce([n+2,n+7])
Compertz曲线
解答:
y = [3.78 4.19 4.83 5.46 6.71 7.99 8.60 9.24 9.67 9.87 10.49 10.92 10.93 12.39 12.59];yt = log(y);n = length(yt);m = n/3;s1 = sum(yt(1:m));s2 = sum(yt(m+1:2*m));s3 = sum(yt(2*m+1:end));b = ((s3 - s2)/(s2 - s1))^(1/m);a2 = (s2 - s1)*(b - 1)/(b*(b^m - 1)^2);k2 = (s1 - a2*b*(b^m - 1)/(b - 1))/m;a = exp(a2);k = exp(k2);yuce = @(t) k*a.^(b.^t);yhat = yuce(1:n);bzcha = sqrt(mean((y-yhat).^2))ythat = yuce([n+2,n+7])
生长曲线
y = [3.78 4.19 4.83 5.46 6.71 7.99 8.60 9.24 9.67 9.87 10.49 10.92 10.93 12.39 12.59];yt = 1./y;n = length(yt);m = n/3;s1 = sum(yt(1:m));s2 = sum(yt(m+1:2*m));s3 = sum(yt(2*m+1:end));b = ((s3-s2)/(s2-s1))^(1/m);a = (s2 - s1)*(b - 1)/(b * (b^m - 1)^2);k = (s1 - a*b*(b^m-1)/(b-1))/m;yuce = @(t)1./(k + a*b.^t);bzcha = sqrt(mean((yt - yuce(1:n)).^2))ythat = yuce([n+2,n+7])
ARMA模型拟合实例:
elps = randn(100,1);x = ones(100,1);for i = 3:100 x(i,1) = elps(i) - 0.6*elps(i - 1) - 0.2*elps(i - 2);end%模拟ARMA(0,2)模型%x必须为列向量m = armax(x,[0,2]);%预测dx_Forecast = forecast(m,x,10);x_Forecast = x(end) + cumsum(dx_Forecast)
具体建模的话,先观察时列图
选择差分
确定与非确定结合
然后进行拟合
- 拟合后预测
阅读全文
0 0
- 时间序列
- 时间序列
- 时间序列
- 时间序列
- 时间序列
- 时间序列
- 时间序列预测法
- 时间序列预测模型
- 时间序列作业
- 时间序列作业
- 时间序列作业
- 时间序列知识
- 时间序列分析
- 时间序列 神经网络
- R-xts()时间序列
- 时间序列模型
- 时间序列预测
- 时间序列分析基础
- spring mvc番外篇(五):spring mvc结合ajax,json技术的应用
- css3滤镜
- 《STL源码剖析》-序列式容器(一)vector容器
- 2017.8.10每天五个编程题(六)
- 机器学习基础-学习笔记 矩阵论
- 时间序列
- python学习笔记之013.py
- python学习笔记之014.py
- JAVA烟花原理
- python学习笔记之015.py
- Lambda表达式--让代码更简洁
- python学习笔记之016.py
- 阿里消息队列中间件 RocketMQ 源码分析 —— Message 拉取与消费(上)
- HTML:Expanding Your Vocabulary