seasadj.m (504B)
1 % seasadj.m y=seasadj(x,nums); 2 % 3 % Seasonally adjusts data by removing the coefficient on dummy variables 4 % and adding back in the mean of the dummies. 5 % 6 % x=data 7 % nums=number of seasons (4=quarterly, 12=monthly, etc) 8 9 function y=seasadj(x,nums); 10 11 [T N]=size(x); 12 y=zeros(T,N)*NaN; 13 for i=1:N; 14 xi=packr(x(:,i)); 15 Ti=length(xi); 16 D=kron(ones(Ti/nums,1),eye(nums)); 17 D=D(1:Ti,:); 18 b=inv(D'*D)*D'*xi; 19 y(1:Ti,i)=xi-D*b; 20 y(1:Ti,i)=plus(y(1:Ti,i),mean(b)); 21 end;