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

📄 bkw.m

📁 计量工具箱
💻 M
字号:
function bkw(x,vnames,fmt)% PURPOSE: computes and prints BKW collinearity diagnostics%          variance-decomposition proportions matrix%---------------------------------------------------% USAGE: bkw(x,vnames,fmt)% where:       x = independent variable matrix (from a regression model)%         vnames = (optional) variable name vector    %            fmt = (optional) format string, e.g., '%12.6f' or '%12d' %                  default = %10.2f   %---------------------------------------------------% NOTE: you can use either x-variable names or an ols%       vnames argument containing y-variable + x-variable names% e.g. vnames = strvcat('y','x1','x2') or%      vnames = strvcat('x1','x2') %---------------------------------------------------% RETURNS:%        nothing, just prints the table out% --------------------------------------------------% SEE ALSO: dfbeta, rdiag, diagnose%---------------------------------------------------% REFERENCES: Belsley, Kuh, Welsch, 1980 Regression Diagnostics% ----------------------------------------------------% written by:% James P. LeSage, Dept of Economics% University of Toledo% 2801 W. Bancroft St,% Toledo, OH 43606% jlesage@spatia-econometrics.com[nobs nvar] = size(x);fid = 1;% error checking on inputsif nargin == 3   nflag = 1;elseif nargin == 2 nflag = 1;   fmt = '%10.2f';elseif nargin == 1   nflag = 0;   fmt = '%10.2f';elseerror('Wrong # of arguments to bkw');   end;[u d v] = svd(x,0);lamda = diag(d(1:nvar,1:nvar));lamda2 = lamda.*lamda;v = v.*v;phi = zeros(nvar,nvar);for i=1:nvar;phi(i,:) = v(i,:)./lamda2';end;pi = zeros(nvar,nvar);for i=1:nvar;phik = sum(phi(i,:));pi(i,:) = phi(i,:)/phik;end;% BUG fix suggested by % John P. Burkett <burkett@uriacc.uri.edulmax = lamda(1);lmaxvec = lmax*ones(nvar,1);lout = lmaxvec./lamda;out = pi';% make up some generic names  Vname = [];  for i=1:nvar   if i < 10     snames = 'var ';     name = [snames num2str(i)];     Vname = [Vname               name];     else     snames = 'var';     name = [snames num2str(i)];     Vname = [Vname               name];     end;    end;if nflag == 1  [namsiz nsize] = size(vnames); % error check vnames argument  if namsiz == nvar+1    Vname = [];    for i=1:nvar    Vname = strvcat(Vname,vnames(i+1,:));    end;  elseif namsiz == nvar    Vname = [];    for i=1:nvar    Vname = strvcat(Vname,vnames(i,:));    end;  else fprintf(fid,'Wrong # of variable names in bkw -- check vnames argument \n'); fprintf(fid,'will use generic variable names \n');  end; % end of if-elseif,elseend; % end of ifrnames = strvcat('K(x)',num2str(round(lout)));in.fmt = fmt;in.rnames = rnames;in.cnames = Vname;fprintf('\n Belsley, Kuh, Welsch Variance-decomposition \n');mprint(out,in);

⌨️ 快捷键说明

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