楼主: 凌真凌真
311 1

统计学AR(p)模型——自适应过滤法(程序对数据进行标准化处理) [推广有奖]

  • 0关注
  • 0粉丝

小学生

21%

还不是VIP/贵宾

-

威望
0
论坛币
28 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
108 点
帖子
7
精华
0
在线时间
3 小时
注册时间
2015-11-19
最后登录
2017-3-2

楼主
凌真凌真 发表于 2016-5-15 18:41:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
QQ图片20160515183834.png %程序对数据进行了标准化处理,输出的残差标准差不可以做区间估计
%自适应过滤法模型一第六次修改
clc
clear
[filename,pathname]=uigetfile({'*.xlsx';'*.xls'},'请选择数据文件:');
LUJING=strcat(pathname,filename);
PD=LUJING(strfind(LUJING,'.'):length(LUJING));%裁切小数点后后缀名
if strcmp('.xlsx',PD)||strcmp('.xls',PD)
tic
[data,txt,raw]=xlsread(LUJING);
T=data(:,1);
xt=data(:,2);
p=input('请输入权数个数p=');
%标准化模块开始
for i=1:length(T)
    xtp(i)=xt(i)^2;
    if i<=p
        at(i)=NaN;
        continue;
    end
    at(i)=sum(xtp(i-p:i-1));
end
at=at';
at(1:p)=[];
bt=sqrt(at);
for i=1:p
    xt21(:,i)=xt(i:length(xt)-p+i-1)./bt;
    q(i)=1/p;%初始权数
end
x_New=xt(p+1:length(xt))./bt;
%标准化模块结束
%开启主迭代模块
%精度确定标准:以前一个大循环MSE除以后一个大循环MSE,也就是循环结束标志为精度趋向于1
JIAN=sort(x_New,'descend');%对标准化xt进行降序排列
k=1/sum(JIAN(1:p));%对降序排列的标准化xt去前p项值进行计算学习常数
%以下对k进行判别与选择
if k<=1/p
    k=k;
else
    k=1/p;
end
%以上判别结束,并返回k值
t=T(p+1:length(T));
J=input('\n精度确定标准:\n以新的大循环MSE除以旧的大循环MSE,\n也就是循环结束标志为精度趋向于1。\n请输入循环结束精度J=');
MSE=inf;%初始化MSE
C_MSE=0;%初始化精度
n=0;%初始化大循环次数
while C_MSE<J%&&C_MSE~=NaN
for i=1:length(t)
    xt_G(i)=q*rot90(xt21(i,:));%rot90为逆时针旋转90度,对下一期进行估计
    e(i)=x_New(i)-xt_G(i);%获得残差
    Q=q+2*k*e(i)*rot90(xt21(i,:),2);%rot90(A,2)为逆时针旋转180度,其中Q为新的权数
    q=Q;
end
n=n+1;%大循环计数器
A_Q(n,:)=Q;
Q_MSE=MSE;
MSE=sum(e.^2)/length(t);
A_MSE(n,:)=MSE;
C_MSE=MSE/Q_MSE;
end
fprintf(2,'************************************输出模块*********************************\n');
fprintf(2,'执行大循环次数:%d次\n',n);
fprintf(2,'执行总循环次数:%d次\n',n*(length(t)));
min_MSE=min(A_MSE);
fprintf('最小均方MSE=%d\n',min_MSE);
fprintf('残差标准差=%f\n',sqrt(min_MSE));
YOU_Q=A_Q(find(A_MSE==min_MSE),:);
if size((YOU_Q),1)>1
    YOU_Q=YOU_Q(2,:);
else
    YOU_Q=YOU_Q;
end
fprintf('最优权为:\n');
YOU_Q
fprintf(2,'******************对下一期进行预测*********************\n');
JISHU=length(xt);
YUCE=xt(JISHU-p+1:JISHU)'*rot90(YOU_Q);
fprintf(2,'第%d期的预测值为:%f\n',JISHU+1,YUCE);
toc
else
    errordlg('读入数据文件格式错误!本程序仅支持excel文件');
end
fprintf(2,'\n**************湖南工程-统计学1301**********************\n');





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:标准化 统计学 filename xlsread length 统计学 程序 模型

沙发
凌真凌真 发表于 2016-5-15 18:47:55 来自手机
凌真凌真 发表于 2016-5-15 18:41
%程序对数据进行了标准化处理,输出的残差标准差不可以做区间估计
%自适应过滤法模型一第六次修改
clc
仅供matlab2014以上版本使用

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-27 10:02