📄 pfixed.asv
字号:
function results = pfixed(y,index,x)
% PURPOSE: performs Fixed Effects Estimation for Panel Data
% (for balanced or unbalanced data)using the within-groups
% estimation procedure.
%----------------------------------------------------------------------------------------
% USAGE: results = pfixed(y,index,x)
% where: y = a (nobs x neqs) matrix of all of the individual's observations
% vertically concatenated. This matrix must include in the firt
% column the dependent variable, the independent variables must follow
% accordingly.
% index = index vector that identifies each observation with an individual
% e.g. 1 (first 2 observations for individual # 1)
% 1
% 2 (next 1 observation for individual # 2)
% 3 (next 3 observations for individual # 3)
% 3
% 3
% x = optional matrix of exogenous variables,
% dummy variables.
%---------------------------------------------------------------------------------------
%RETURNS a structure
% results.meth = 'pfixed'
% results.nobs = nobs, # of observations
% results.nvar = nvars, # of variables
% results.nid = # of observations per individual
% results.beta = bhat
% results.tstat = t-statistics
% results.tprob = t-probabilities
% results.resid = residuals
% results.yhat = predicted values
% results.y = actual values
% results.sige = e'e/(n-k)
% results.rsqr = r-squared
% results.rbar = r-squared adjusted
% results.sige = sigma^2 e
% results.xmat = matrix of independent variables
% results.iintc = individual intercepts
% results.idy = identity of individual;
% results.time = time elapsed during the procedure
% results.crconst = correction of the constant term
%----------------------------------------------------------------------------------------
%Written by:
% Carlos Alberto Castro
% National Planning Department
% Bogota, Colombia
% Email: ccastro@dnp.gov.co
%****************************************************************************************
% NOTE: James P. LeSage provided corrections on the creation and use of the index
% vector used to identify the the individual's observations.
%****************************************************************************************
t0 = clock;
results.meth = 'pfixed';
[nobs equ]= size(y);
nx = 0;
if nargin == 3
[nobs2 nx] = size(x);
if (nobs2 ~= nobs)
error('nobs in x-matrix not the same as y-matrix');
end;
end;
results.nobs = nobs;
% creation of the id matrix using the vector index
nindiv = length(unique(index));
id = zeros(nindiv,3);
id(:,1) = unique(index);
for i=1:nindiv
id(i,2) = length(find(index == i));
end;
id(:,3) = cumsum(id(:,2));
results.nid = id(:,2);
results.idy =id(:,1);
results.crconst = 1; %correction of the constant term
% tranformation of all the variables used
% the variables are expressed as deviations from the individual means
[n u]= size(id);
i=1;
for j=1:n
while i<=id(j,3),
ytemp= y(i:id(j,3),:);
medias(j:id(j,1),:)= mean(ytemp);
madj(i:id(j,3),:)= ytemp-(ones(id(j,2),1)*mean(ytemp));
i= i+ id(j,2);
end;
end;
y= madj;
% form x-matrix
if nx
xmat = [y(:,2:equ) x];
else
xmat = [y(:,2:equ)];
end;
[nobs3 nvars]= size(xmat);
results.nvar = nvars;
results.xmat = xmat;
% run OLS
res = ols(y(:,1),xmat);
results.beta = res.beta; % bhats
results.tstat = res.tstat; % t-stats
% compute t-probs
tstat = zeros(nvars,1);
tstat = res.tstat;
tout = tdis_prb(tstat,nobs-nvars);
results.tprob = tout; % t-probs
results.resid = res.resid; % resids
sigu = res.resid'*res.resid; %sse
results.yhat = res.yhat; % yhats
results.y = y(:,1); % actual y
results.rsqr = res.rsqr; % r-squared
results.rbar = res.rbar; % r-adjusted
results.sige = res.sige; % sigma e
% individual intercepts
if nx
results.iintc = medias(:,1)-(medias(:,2:equ)*(results.beta(2:end,1:equ-1)));
else
results.iintc = medias(:,1)-(medias(:,2:equ)*(results.beta));
end;
results.time = etime(clock,t0); % time elapsed during the procedure
equ
results.medias=medias;
results.id=id;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -