diff --git a/arfit.m b/arfit.m index 9ca2b7a8373790c9f75e3bcb02b43ee9dd8fbf4d..7ae7e616837428a2bddafa2966565d5875f70d76 100644 --- a/arfit.m +++ b/arfit.m @@ -23,7 +23,7 @@ function varargout=arfit(varargin) % end % arfit(x,10) -% Copyright (c) 2002-2006 by AMRON +% Copyright (c) 2002-2007 by AMRON % Norbert Marwan, Potsdam University, Germany % http://www.agnld.uni-potsdam.de % @@ -31,6 +31,9 @@ function varargout=arfit(varargin) % $Revision$ % % $Log$ +% Revision 2.5 2006/02/14 11:45:49 marwan +% *** empty log message *** +% % Revision 2.4 2005/03/16 11:19:02 marwan % help text modified % @@ -211,7 +214,7 @@ switch(action) 'Tag','text',... 'String','Uni Potsdam',... 'Position',[66 2 22 3.5714]); - h2=textwrap(h,{[char(169),' AGNLD'],'University of Potsdam','2002-2006'}); + h2=textwrap(h,{[char(169),' AGNLD'],'University of Potsdam','2002-2007'}); set(h,'String',h2) %%%%% data and model axes @@ -251,7 +254,7 @@ switch(action) set(h,'Position',[66.3333 25.1429-.33 pos(3) pos(4)]) h=axes('NextPlot','add'); for k=1:5, - h2=plot(0,0,'Tag',['criteria_line',num2str(k)],'Visible','off',props.criteria_line(k)); + h2=plot(0,0,'Tag',['criteria_line',num2str(k)],'Visible','off',props.criteria_line(k)); end set(h,props.axes,... 'Tag','criteria_axes',... @@ -435,8 +438,9 @@ switch(action) case 'criteria' set(h_fig,'CurrentAxes',h_criteria_axes) - h=findobj('Tag','significance_line','Parent',h_criteria_axes); + h=findobj('Tag','significance_line1','Parent',h_criteria_axes); signif=get(h,'UserData'); + for k=1:length(noshow_crit) h=findobj('Tag',['criteria_line',num2str(noshow_crit(k))],'Parent',h_criteria_axes); if ~isempty(h) @@ -447,7 +451,8 @@ switch(action) for k=1:length(show_crit) h=findobj('Tag',['criteria_line',num2str(show_crit(k))],'Parent',h_criteria_axes); if isempty(h) - h=plot(1:maxm,crit(:,show_crit(k))); + h=plot(1:maxm,crit(:,show_crit(k)), 'Tag',['criteria_line',num2str(show_crit(k))]); + set(h,'Parent',h_criteria_axes,'Tag','criteria_line',props.criteria_line(k),'Visible','On') set(h_criteria_axes,props.axes,... 'YTickLabel',[],... @@ -461,19 +466,44 @@ switch(action) end end - h=findobj('Tag','significance_line','Parent',h_criteria_axes); + % significance line for PACF + h=findobj('Tag','significance_line1','Parent',h_criteria_axes); + if isempty(h) + h=line([1 maxm],[signif(1) signif(1)]) + set(h,props.criteria_line(6),... + 'Parent',h_criteria_axes,... + 'LineWidth',2,... + 'Tag','significance_line1',... + 'Color', props.criteria_line(2).Color, ... + 'Visible','Off') + else + set(h,'YData',[signif(1) signif(1)],... + 'XData',[1 maxm],... + 'Visible','Off') + end + + if strcmpi(get(findobj('Tag','criteria_line2','Parent',h_criteria_axes),'Visible'),'on') + set(h,'Visible','On') + else + set(h,'Visible','Off') + end + + % significance line for Q criterion + h=findobj('Tag','significance_line2','Parent',h_criteria_axes); if isempty(h) - h=line([1 maxm],[signif signif]); + h=line([1 maxm],[signif(2) signif(2)]); set(h,props.criteria_line(6),... 'Parent',h_criteria_axes,... - 'LineWidth',2,... - 'Tag','significance_line',... + 'LineWidth',2,... + 'Color', props.criteria_line(5).Color, ... + 'Tag','significance_line2',... 'Visible','Off') else - set(h,'YData',[signif signif],... + set(h,'YData',[signif(2) signif(2)],... 'XData',[1 maxm],... 'Visible','Off') end + if strcmpi(get(findobj('Tag','criteria_line5','Parent',h_criteria_axes),'Visible'),'on') set(h,'Visible','On') else @@ -548,7 +578,8 @@ switch(action) % varianz for p=1:maxm; l=1:p; - V(p)=C(1)-sum(a(p+1,l+1).*C(l+1)); +% V(p)=C(1)-sum(a(p+1,l+1).*C(l+1)); + V(p)=C(1)-sum(a(p+1,l+1).^l .*C(l+1)); end % criterias: 1 - residues variance @@ -566,23 +597,27 @@ switch(action) y=filter([0 a(m+1,(1:m)+1)],1,x); epsilon=(x-y); epsilon_mean=mean(epsilon(m:end)); -% sigma=sum(epsilon.^2)/(N); sigma=var(epsilon); -% sigma=mean((x-mean(x)).*(y-mean(y)).^2); clear rho for k=1:25; i=m+1:N-k-1; rho(k)=sum((epsilon(i+1)-epsilon_mean).*(epsilon(i+k+1)-epsilon_mean))/sum((epsilon(i+1)-epsilon_mean).^2); end - crit(m,1)=sigma; - crit(m,2)=a(m+1,m+1); - crit(m,3)=log(sigma)+2*(m+1)/(N); - crit(m,4)=log(sigma)+(m+1)*log(N)/(N); + crit(m,1)=sigma; % Variance of the residues + crit(m,2)=abs(a(m+1,m+1)); % PACF + crit(m,3)=log(sigma)+2*(m)/(N); % AIC + crit(m,4)=log(sigma)+(m)*log(N)/(N); % BIC % crit(m,5)=log(sigma)+2*(m+1)*5*log(log(N-m))/(N-m); crit(m,5)=N*sum(rho.^2); + end - signif=30/(max(crit(:,5))-min(crit(:,5))); % significance level for the Q criterion +% signif(1)=1.96 * std(diag(a(2:end,2:end))) / (max(crit(:,2))-min(crit(:,2))); % significance level for the PACF criterion + signif(1)=1.96 * sqrt(1/N) / (max(crit(:,2))-min(crit(:,2))); % significance level for the PACF criterion + signif(2)=30/(max(crit(:,5))-min(crit(:,5))); % significance level for the Q criterion + for k=1:size(crit,2);crit(:,k)=(crit(:,k)-min(crit(:,k)))/(max(crit(:,k))-min(crit(:,k)));end + + y=make_model(a(2:end,2:end),V,in_m,N); %%%% graphical output @@ -633,18 +668,44 @@ switch(action) 'XData',[1:size(crit,1)],... 'Visible','On') end + end + + % significance line for PACF criterion + h=findobj('Tag','significance_line1','Parent',h_criteria_axes); + if isempty(h) + h=line([1 maxm],[signif(1) signif(1)]); + set(h,props.criteria_line(6),... + 'Parent',h_criteria_axes,... + 'Tag','significance_line1',... + 'Color', props.criteria_line(2).Color, ... + 'UserData',signif,... + 'LineWidth',2,... + 'Visible','Off') + else + set(h,'YData',[signif(1) signif(1)],... + 'XData',[1 maxm],... + 'UserData',signif,... + 'Visible','Off') end - h=findobj('Tag','significance_line','Parent',h_criteria_axes); + if strcmpi(get(findobj('Tag','criteria_line2','Parent',h_criteria_axes),'Visible'),'on') + set(h,'Visible','On') + else + set(h,'Visible','Off') + end + + % significance line for Q criterion + h=findobj('Tag','significance_line2','Parent',h_criteria_axes); if isempty(h) - h=line([1 maxm],[signif signif]); + h=line([1 maxm],[signif(2) signif(2)]); set(h,props.criteria_line(6),... 'Parent',h_criteria_axes,... - 'Tag','significance_line',... - 'UserData',signif,... - 'LineWidth',2,... + 'Tag','significance_line2',... + 'UserData',signif,... + 'Color', props.criteria_line(5).Color, ... + 'LineWidth',2,... 'Visible','Off') else - set(h,'YData',[signif signif],... + set(h,'YData',[signif(2) signif(2)],... 'XData',[1 maxm],... 'UserData',signif,... 'Visible','Off') @@ -654,11 +715,12 @@ switch(action) else set(h,'Visible','Off') end + set(h_criteria_axes,props.axes,... - 'Tag','criteria_axes',... + 'Tag','criteria_axes',... 'YTickLabel',[],... - 'Xlim',[1 maxm],... - 'Ylim',[0 1],... + 'Xlim',[1 maxm],... + 'Ylim',[0 1],... 'UserData',crit,... 'Units','Norm',... 'NextPlot','add')