function results=ols(y,x)
% PURPOSE: least-squares regression
%—————————————————
% USAGE: results = ols(y,x)
Copyright By PowCoder代写 加微信 powcoder
% where: y = dependent variable vector (nobs x 1)
% x = independent variables matrix (nobs x nvar)
%—————————————————
% RETURNS: a structure
% results.meth = ‘ols’
% results.beta = bhat (nvar x 1)
% results.tstat = t-stats (nvar x 1)
% results.bstd = std deviations for bhat (nvar x 1)
% results.yhat = yhat (nobs x 1)
% results.resid = residuals (nobs x 1)
% results.sige = e’*e/(n-k) scalar
% results.rsqr = rsquared scalar
% results.rbar = rbar-squared scalar
% results.dw = Durbin-Watson Statistic
% results.nobs = nobs
% results.nvar = nvars
% results.y = y data vector (nobs x 1)
% results.bint = (nvar x2 ) vector with 95% confidence intervals on beta
%—————————————————
% SEE ALSO: prt(results), plt(results)
%—————————————————
% written by:
% . LeSage, Dept of Economics
% University of Toledo
% 2801 W. ,
% Toledo, OH 43606
% (CICG Equity)
% added the 95% confidence intervals on bhat
if (nargin ~= 2); error(‘Wrong # of arguments to ols’);
[nobs nvar] = size(x); [nobs2 junk] = size(y);
if (nobs ~= nobs2); error(‘x and y must have same # obs in ols’);
results.meth = ‘ols’;
results.y = y;
results.nobs = nobs;
results.nvar = nvar;
if nobs < 10000 [q r] = qr(x,0); xpxi = (r'*r)\eye(nvar); else % use Cholesky for very large problems xpxi = (x'*x)\eye(nvar); results.beta = xpxi*(x'*y); results.yhat = x*results.beta; results.resid = y - results.yhat; sigu = results.resid'*results.resid; results.sige = sigu/(nobs-nvar); tmp = (results.sige)*(diag(xpxi)); sigb=sqrt(tmp); results.bstd = sigb; tcrit=-tdis_inv(.025,nobs); results.bint=[results.beta-tcrit.*sigb, results.beta+tcrit.*sigb]; results.tstat = results.beta./(sqrt(tmp)); ym = y - mean(y); rsqr1 = sigu; rsqr2 = ym'*ym; results.rsqr = 1.0 - rsqr1/rsqr2; % r-squared rsqr1 = rsqr1/(nobs-nvar); rsqr2 = rsqr2/(nobs-1.0); if rsqr2 ~= 0 results.rbar = 1 - (rsqr1/rsqr2); % rbar-squared results.rbar = results.rsqr; ediff = results.resid(2:nobs) - results.resid(1:nobs-1); results.dw = (ediff'*ediff)/sigu; % durbin-watson 程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com