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 inputs if nargin == 3 nflag = 1; elseif nargin == 2 nflag = 1; fmt = '%10.2f'; elseif nargin == 1 nflag = 0; fmt = '%10.2f'; else error('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