📄 kss.m
字号:
% Kneip, Sickles, and Song Estimator% Written by Wonho Song, March 2003% E-mail: whsong@kiep.go.kr, whsong73@hotmail.comfunction [beta1p,se_b1p,KSS1P,L1p,pp,R2k]=kss(y,x,n,LS,gr_kss)[nt,p] = size(x); t=nt/n;[L1p,pp]=dim1p(y,x,n,LS,gr_kss); [beta1p,se_b1p,KSS1P,wt1p]=method1p(y,x,n,L1p,pp);ek=y-x*beta1p; ek=ek-mean(ek);% Calculation of R2 ey=y-mean(y);R2k=1-(ek'*ek)/(ey'*ey);R2k=[R2k;1-(1-R2k)*(nt-1)/(nt-p-n)];%save wt wt1p;%**********************************************************************% Selection of Dimension for KSS1P%**********************************************************************function [L1p,pp]=dim1p(y,x,n,LS,gr_kss);[nt,p] = size(x); t=nt/n; t1 = (1:t)';gr_st=gr_kss(1); gr_in=gr_kss(2); gr_en=gr_kss(3);%*************************** % Step1 %***************************ytbar=mean(reshape(y,t,n)')';y_w=y-kron(ones(n,1),ytbar);xtbar=[]; for i=1:pxtbar=[xtbar mean(reshape(x(:,i),t,n)')']; end;x_w=x-kron(ones(n,1),xtbar);kk=gr_st:gr_in:gr_en; ccc=[];for pp=kk [Zh,Wh,beta,vi,viz]=vfun(y_w,x_w,n,pp); bb=sum((vi-viz).^2)/(n*t)/(1-trace(Zh)/t)^2; ccc=[ccc;bb];end;[cc2,I]=sort(ccc);pp=kk(I(1));%*************************** % Step2 %***************************[Zh,Wh,beta,vi,viz]=vfun(y_w,x_w,n,pp);temp2=vi-viz;sig2=sum(temp2.^2)/((n-1)*trace(Wh^2));%*************************** % Step3 %***************************temp=reshape(viz,t,n);SIGMA=temp*temp'/n;[vve,vva] = eig(SIGMA); va = flipud(diag(vva)); % eigenvalues ve = fliplr(vve); % eigenvectorsCl=[];for L=1:LS ff = sum(va(L+1:t)); gg = ve(:,1:L); % number of principals Pl = eye(t)-gg*gg';%*************************** % Step4 %***************************up=n*ff-(n-1)*sig2*trace(Zh*Pl*Zh);dw=sqrt(2*n*sig2^2*trace((Zh*Pl*Zh)^2));cc=up/dw;%disp([up dw cc sig2])Cl=[Cl;cc];end; %*** end of LS loop ***Cl2=(Cl<2.33);for i=1:LSif Cl2(i)==1; L1p=i; break; end;end;if sum(Cl2)==0; L1p=LS; end;%************************************************************************* % METHOD 1P %*************************************************************************function [beta,se_b,KSS1P,wt]=method1p(y,x,n,L,pp);[nt,p] = size(x); t=nt/n; t1 = (1:t)';%*************************** % Step1 %***************************ytbar=mean(reshape(y,t,n)')';y_w=y-kron(ones(n,1),ytbar);xtbar=[]; for i=1:pxtbar=[xtbar mean(reshape(x(:,i),t,n)')']; end;x_w=x-kron(ones(n,1),xtbar);[Zh,Wh,beta,vi,viz]=vfun(y_w,x_w,n,pp);%*************************** % Step2%***************************temp=reshape(viz,t,n);SIGMA=temp*temp'/n;[vve,vva] = eig(SIGMA); va = flipud(diag(vva)); % eigenvalues ve = fliplr(vve); % eigenvectors gt = sqrt(t)*ve(:,1:L); % number of principals%*************************** % Step3 %***************************Zh2=gt*inv(gt'*gt)*gt';Wh2=eye(t)-Zh2;y_til=[]; x_til=[];for i=1:ny_til=[y_til;Wh2*y_w(t*(i-1)+1:t*i)];x_til=[x_til;Wh2*x_w(t*(i-1)+1:t*i,:)];end;beta=inv(x_til'*x_til)*x_til'*y_til;vi=y_w-x_w*beta;wt=Zh2*(ytbar-xtbar*beta);%save wt;%*************************** % Step4 %***************************theta=[]; for i=1:ntheta=[theta inv(gt'*gt)*gt'*vi(t*(i-1)+1:t*i)];end;%*************************** % Step5 %***************************err=y_til-x_til*beta;bsig2=err'*err/(nt-n-p);bcov=bsig2*inv(x_til'*x_til);se_b=sqrt(diag(bcov));KSS1P=[];for i=1:nKSS1P=[KSS1P gt*theta(:,i)+wt]; end;KSS1P=KSS1P-mean(mean(KSS1P));tv=[];for i=1:nv_tmp=vi(t*(i-1)+1:t*i);tht=theta(:,i);ee=v_tmp-gt*tht;s2=ee'*ee/(t-L);thcov=s2*inv(gt'*gt);se_th=sqrt(diag(thcov));tv=[tv tht./se_th];end;%*************************************% Procedure to calculate viz%*************************************function [Zh,Wh,beta,vi,viz]=vfun(y_w,x_w,n,pp);[nt,p] = size(x_w); t=nt/n; t1 = (1:t)';Zh=reshape(csaps(t1,eye(t),pp,t1),t,t);Wh=eye(t)-Zh;y_til=[]; x_til=[];for i=1:ny_til=[y_til;Wh*y_w(t*(i-1)+1:t*i)];x_til=[x_til;Wh*x_w(t*(i-1)+1:t*i,:)];end;beta=inv(x_til'*x_til)*x_til'*y_til;vi=y_w-x_w*beta;viz=[];for i=1:nviz=[viz;Zh*vi(t*(i-1)+1:t*i)];end;%********** End of Program **************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -