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

📄 olspanelj.m

📁 时间序列分析中常用到的matlab代码
💻 M
字号:
function results = olspanelJ(p,y,x);

% PURPOSE: Computes regression with fully robust standard
%          errors (see Woolridge (2002) eqn (7.26))
%          NOTE:  Automatically adds constant
%---------------------------------------------------
% USAGE:     results = olspanelJ(p,y,x)
% where:     p = NTx1 vector of panel variables
%            y = NTx1 vector of independent variables
%            x = NTxK matrix of regressors (excluding constant)
%---------------------------------------------------
% RETURNS: a structure
%        results.meth  = 'ols'
%        results.beta  = bhat     (nvar x 1)
%        results.tstat = t-stats  (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.varmat= nvar x nvar covariance matrix
%---------------------------------------------------
% Requires ols() function from LeSage Econometrics toolbox
%---------------------------------------------------
% Judson Caskey
% University of Michigan
% jcaskey@umich.edu
%---------------------------------------------------

if size(p,1) ~= size(y,1) | size(p,1) ~= size(x,1) | size(y,1) ~= size(x,1)
    error('p,x and y must have same number of rows');
elseif size(p,2) ~= 1 | size(y,2) ~= 1
    error('p and y must be column vectors');
end;

panelitems = unique(p);

x=[x,ones(size(x,1),1)];
resultstmp = ols(y,x);

bmat=zeros(size(x,2),size(x,2));

for k=1:1:size(panelitems,1);
    xtmp=x(p==panelitems(k),:);
    utmp=resultstmp.resid(p==panelitems(k));
    gtmp=utmp'*xtmp;
    bmat=bmat+gtmp'*gtmp;
end;

% Add robust variance and replace t-statistics

m = size(panelitems,1);
n = size(x,1);

results=resultstmp;
results = rmfield(results,'bint');
results.varmat=m*n/(m-1)/(n-1)*inv(x'*x)*bmat*inv(x'*x);
results.tstat=results.beta./sqrt(diag(results.varmat));

⌨️ 快捷键说明

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