⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arfit2.m

📁 MATLAB的时间序列分析相关函数,涵盖对时间序列分析所需要所有重要函数
💻 M
字号:
function [w, MAR, C, sbc, fpe, th] = arfit2(Y, pmin, pmax, selector, no_const)% ARFIT2 estimates multivariate autoregressive parameters% of the MVAR process Y%%   Y(t,:)' = w' + A1*Y(t-1,:)' + ... + Ap*Y(t-p,:)' + x(t,:)'%% ARFIT2 uses the Nutall-Strand method (multivariate Burg algorithm) % which provides better estimates the ARFIT [1], and uses the % same arguments. Moreover, ARFIT2 is faster and can deal with % missing values encoded as NaNs. %% [w, A, C, sbc, fpe] = arfit2(v, pmin, pmax, selector, no_const)%% INPUT: %  v		data - each channel in a column%  pmin, pmax 	minimum and maximum model order%  selector	'fpe' or 'sbc' [default] %  no_const	'zero' indicates no bias/offset need to be estimated %		in this case is w = [0, 0, ..., 0]'; %% OUTPUT: %  w		mean of innovation noise%  A		[A1,A2,...,Ap] MVAR estimates	%  C		covariance matrix of innovation noise%  sbc, fpe	criteria for model order selection %% see also: ARFIT, MVAR%% REFERENCES:%  [1] A. Schloegl, 2006, Comparison of Multivariate Autoregressive Estimators.%       Signal processing, p. 2426-9.%  [2] T. Schneider and A. Neumaier, 2001. %	Algorithm 808: ARFIT-a Matlab package for the estimation of parameters and eigenmodes %	of multivariate autoregressive models. ACM-Transactions on Mathematical Software. 27, (Mar.), 58-65.%       $Id: arfit2.m 5090 2008-06-05 08:12:04Z schloegl $%	Copyright (C) 1996-2005,2008 by Alois Schloegl <a.schloegl@ieee.org>	%%%%% checking of the input arguments was done the same way as ARFITif (pmin ~= round(pmin) | pmax ~= round(pmax))        error('Order must be integer.');endif (pmax < pmin)        error('PMAX must be greater than or equal to PMIN.')end% set defaults and check for optional argumentsif (nargin == 3)              	% no optional arguments => set default values        mcor       = 1;         % fit intercept vector        selector   = 'sbc';	% use SBC as order selection criterionelseif (nargin == 4)          	% one optional argument        if strcmp(selector, 'zero')                mcor     = 0;   % no intercept vector to be fitted                selector = 'sbc';	% default order selection         else                mcor     = 1;	% fit intercept vector        endelseif (nargin == 5)		% two optional arguments        if strcmp(no_const, 'zero')                mcor     = 0;   	% no intercept vector to be fitted        else                error(['Bad argument. Usage: ', '[w,A,C,SBC,FPE,th]=AR(v,pmin,pmax,SELECTOR,''zero'')'])        endend%%%%% Implementation of the MVAR estimation [N,M]=size(Y);    if mcor,        [m,N] = sumskipnan(Y,1);                    % calculate mean         m = m./N;	Y = Y - repmat(m,size(Y)./size(m));    % remove mean    end;[MAR,RCF,PE] = mvar(Y, pmax, 2);   % estimate MVAR(pmax) modelN = min(N);%if 1;nargout>3;ne = N-mcor-(pmin:pmax);for p=pmin:pmax,         % Get downdated logarithm of determinant        logdp(p-pmin+1) = log(det(PE(:,p*M+(1:M))*(N-p-mcor))); end;% Schwarz's Bayesian Criterionsbc = logdp/M - log(ne) .* (1-(M*(pmin:pmax)+mcor)./ne);% logarithm of Akaike's Final Prediction Errorfpe = logdp/M - log(ne.*(ne-M*(pmin:pmax)-mcor)./(ne+M*(pmin:pmax)+mcor));% Modified Schwarz criterion (MSC):% msc(i) = logdp(i)/m - (log(ne) - 2.5) * (1 - 2.5*np(i)/(ne-np(i)));% get index iopt of order that minimizes the order selection % criterion specified by the variable selectorif strcmpi(selector,'fpe');     [val, iopt]  = min(fpe); else %if strcmpi(selector,'sbc');     [val, iopt]  = min(sbc); end; % select order of modelpopt = pmin + iopt-1; % estimated optimum order if popt<pmax,         [MAR, RCF, PE] = mvar(Y, popt, 2);end;%endC = PE(:,size(PE,2)+(1-M:0));if mcor,        I = eye(M);                for k = 1:popt,                I = I - MAR(:,k*M+(1-M:0));        end;        w = -I*m';else        w = zeros(M,1);end;if nargout>3, 	warning('model order criteria SBC and FPE are presumably incorrect and must not be trusted.')end;	if nargout>5,	th=[];	fprintf(2,'Warning ARFIT2: output TH not defined\n'); end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -