资源描述:
《时间序列MATLAB 程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、时间序列移动平均法clc,cleary=[533.8574.6606.9649.8705.1772.0816.4892.7963.91015.11102.7];m=length(y);n=[4,5];%n为移动平均的项数fori=1:length(n)%由于n的取值不同,下面使用了细胞数组forj=1:m-n(i)+1yhat{i}(j)=sum(y(j:j+n(i)-1))/n(i);endy12(i)=yhat{i}(end);%提出第12月份的预测值s(i)=sqrt(mean((y(n(i)
2、+1:end)-yhat{i}(1:end-1)).^2));%求预测的标准误差endy12,s%分别显示两种方法的预测值和预测的标准误差指数平滑一次指数平滑程序:clc,clearyt=load('dianqi.txt');%读取dianqi.txt的数据,n=length(yt);%求yt的长度alpha=[0.20.50.8];%输入a的值m=length(alpha)yhat(1,[1:m])=(yt(1)+yt(2))/2;%求第一个预测值索引fori=2:nyhat(i,:)=alpha
3、*yt(i-1)+(1-alpha).*yhat(i-1,:);endyhat%求预测值err=sqrt(mean((repmat(yt,1,m)-yhat).^2))%求预测的标准误差xlswrite('dianqi.xls',yhat)%把预测数据写到Excel文件,准备在word表格中使用yhat1988=alpha*yt(n)+(1-alpha).*yhat(n,:)%求1988的预测值二次指数平滑程序clc,clearyt=load('c:UsersasusDesktop剑魔fa
4、dian.txt');%原始发电总量数据以列向量的方式存放在纯文本文件中n=length(yt);alpha=0.3;st1(1)=yt(1);st2(1)=yt(1);fori=2:nst1(i)=alpha*yt(i)+(1-alpha)*st1(i-1);st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1);endxlswrite('fadian.xls',[st1',st2'])%把数据写入表单Sheet1中的前两列at=2*st1-st2;bt=alpha/(1-a
5、lpha)*(st1-st2);yhat=at+bt;%最后的一个分量为1986年的预测值xlswrite('fadian.xls',yhat','Sheet1','C2')%把预测值写入第3列str=['C',int2str(n+2)];%准备写1987年预测值位置的字符串xlswrite('fadian.xls',at(n)+2*bt(n),'Sheet1',str)%把1987年预测值写到相应位置yt=load('c:UsersasusDesktop剑魔fadian.txt');%原
6、始发电总量数据以列向量的方式存放在纯文本文件中n=length(yt);alpha=0.3;st1(1)=yt(1);st2(1)=yt(1);fori=2:nst1(i)=alpha*yt(i)+(1-alpha)*st1(i-1);st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1);endxlswrite('fadian.xls',[st1',st2'])%把数据写入表单Sheet1中的前两列at=2*st1-st2;bt=alpha/(1-alpha)*(st1-st
7、2);yhat=at+bt;%最后的一个分量为1986年的预测值xlswrite('fadian.xls',yhat','Sheet1','C2')%把预测值写入第3列str=['C',int2str(n+2)];%准备写1987年预测值位置的字符串xlswrite('fadian.xls',at(n)+2*bt(n),'Sheet1',str)%把1987年预测值写到相应位置