Vous n'êtes pas identifié.
Vous êtes sur le forum du master ESA !
Le site du master ESA - description de la formation, notes de cours, contacts... vient de déménager !!!
Venez visiter notre nouveau site : www.master-esa.fr
Bonjour,
Je souhaite effectuer une régression sur un modèle en panels à effets fixes sous Matlab. Est-ce que quelqu'un aurait un code déjà tout fait qui permettrait de faire cela ?
Hors ligne
Pour les codes Matlab (peu importe le sujet) je vais la plupart du temps voir sur le site de Kevin Sheppard. Il n'a pas de quoi faire directement une telle régression, mais a de quoi te permettre de la recoder à partir de la théorie.
Le code suivant peut aussi t'aider à faire ton propre code :
%% Classical estimation of the fixed effects panel data model %% %% function[coeff,COVb]=panFE(Y,X,T) % Y and X stacked by cross-section; T is the time dimension % Estimator for panel data with fixed effects (balanced panel) % coeff contains the estimator of the slope (slope) and the fixed effects (fe) % COVb contains the estimated covariance matrix of the slope estimator [NT,m] = size(Y); [S,K]=size(X); N=NT/T; %within estimator %build the matrix D D=zeros(NT,N); c=1; for i=1:N, D(c:T*i,i)=ones(T,1); c=T*i+1; end; M=eye(NT)-D*inv(D'*D)*D'; b=inv(X'*M*X)*X'*M*Y; a=inv(D'*D)*D'*(Y-X*b); coeff.slope=b; coeff.fe=a; %compute the covariance matrix for the estimated coefficients Xm=M*X; Ym=M*Y; res=Ym-Xm*b; varres=(1/(NT-N-K))*res'*res; COVb=varres*inv(X'*M*X);
Hors ligne
Un autre code
% PURPOSE: Within Estimates
% -------------------------------------------------------
% Function : panel_effet(data,T), with unbalanced data
%
% Where:
% data : is a matrix which contains the panel data (Yit Xit)
% Yit : the dependant variable, size : vector (N*T,1)
% Xit : the regressor, size : matrix (N*T,K)
%
%--------------------------------------------------------------------------------------------------
%RETURNS:
%
% C Hurlin September 2011
% LEO, University of Orléans
%
function [res]=Within(data,T,N)
%-------------------------
%---- Balanced Sample ----
%-------------------------
Y=data(:,1);
X=data(:,2:end);
K=size(X,2);
balanced=1; % balanced=1 if the sample is balanced
if sum(sum(isnan(data)))>0 % Not Balanced Sample
disp(' '),disp(' WARNING: The sample is not balanced'),disp(' ')
balanced=0; % balanced=0 if the sample is not balanced
end
missing=sum(isnan(data)')'; % Location of Missing Values
%data_adj=data(missing==0,
sample=zeros(N*T,3); % Sample of Complete Data
sample(:,1)=ones(length(Y),1);sample(missing>0)=0; % Sample of Complete Data
balanced_indi=repmat((1:N),T,1);sample(:,2)=balanced_indi(; % Index of Individuals
sample(:,3)=repmat((1:T),1,N)'; % Index of Time
Xadj=X(sample(:,1)==1,; % Values of Xit on the Adjuted Sample
Yadj=Y(sample(:,1)==1,;
sampleAdj=sample(sample(:,1)==1,; % Adjusted Sample
NT=sum(sample(:,1)); % Total number of observations
% Centered Endogeneous Variable
Ycent=ones(size(Y))*NaN;
for i=1:N
Ycent((sample(:,1)==1)&(sample(:,2)==i),=Y((sample(:,1)==1)&(sample(:,2)==i))-mean(Y((sample(:,1)==1)&(sample(:,2)==i)));
end
Ycent=Ycent(isfinite(Ycent));
y_cent=Ycent;
% Centered Explicative Variables X(i,t)
for k=1:K % Loop on the number of explicative variable
Ycent=ones(size(X(:,k)))*NaN;
for i=1:N
Ycent((sample(:,1)==1)&(sample(:,2)==i),=X((sample(:,1)==1)&(sample(:,2)==i),k)-mean(X((sample(:,1)==1)&(sample(:,2)==i),k));
end
Ycent=Ycent(isfinite(Ycent));
x_cent(:,k)=Ycent; % Centered Vector of X
end
coef=x_cent\y_cent; % Estimated Coefficients Linear Model
% Fixed effects
ybar=zeros(N,1);
xbar=zeros(N,K);
for i=1:N
ybar(i)=mean(Y(sample(:,1)==1));
xbar(i,=mean(X((sample(:,1)==1)&(sample(:,2)==i),
);
end
effet=ybar-xbar*coef;
% Statistic
e=y_cent-x_cent*coef;
rss=e'*e; % Sum of Squared Linear Model
var=inv(x_cent'*x_cent)*(rss/(length(y_cent)-N-K));
std_coef=sqrt(diag(var));
for i=1:K
Stat(i)=coef(i)/sqrt(var(i,i));
end
coef_tstat=[coef Stat'];
res.coef=coef;
res.std=std_coef;
res.individual_effects=effet;
res.tstat=Stat;
res.rss=rss;
res.coef_tstat=coef_tstat;
res.nobs=length(y_cent);
Hors ligne
Note : le code matlab ne comprend pas les smiley... ce sont les expressions qui ont été remplacées bien sûr..
Hors ligne
Merci à tous je vais expérimenter ce que vous m'avez transmis et je reviendrai vers vous en cas de souci !
Hors ligne