Le forum du Master ESA économétrie et statistique appliquée - Université d'Orléans

Vous n'êtes pas identifié.

Annonce

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

#1 14-02-2014 10:03:06

RM
membre extérieur
Date d'inscription: 14-02-2014
Messages: 2

Les panels sous matlab

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

 

#2 14-02-2014 13:08:23

Adrien_Bey
Member
Lieu: the Complex Plane
Date d'inscription: 10-09-2012
Messages: 131
Site web

Re: Les panels sous matlab

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 :


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

 

#3 15-02-2014 08:38:30

esa_ch
Moderator
Date d'inscription: 21-02-2007
Messages: 1415

Re: Les panels sous matlab

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,smile

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(smile;           % Index of Individuals
   
sample(:,3)=repmat((1:T),1,N)';                                         % Index of Time
   
Xadj=X(sample(:,1)==1,smile;                                               % Values of Xit on the Adjuted Sample

Yadj=Y(sample(:,1)==1,smile;

sampleAdj=sample(sample(:,1)==1,smile;                                     % 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),smile=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),smile=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,smile=mean(X((sample(:,1)==1)&(sample(:,2)==i),smile);

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

 

#4 15-02-2014 08:40:22

esa_ch
Moderator
Date d'inscription: 21-02-2007
Messages: 1415

Re: Les panels sous matlab

Note : le code matlab ne comprend pas les smiley... ce sont les expressions smile qui ont été remplacées bien sûr..

Hors ligne

 

#5 15-02-2014 17:20:03

esa_sr
Administrator
Date d'inscription: 21-02-2007
Messages: 5898
Site web

Re: Les panels sous matlab

ESA_CH connait peut être mathlab mais il ne connait pas les balises BBCODE

(code)
je rentre mon code
(/code)

remplacer les parenthèses par des crochets ;-)

Hors ligne

 

#6 19-02-2014 14:16:34

RM
membre extérieur
Date d'inscription: 14-02-2014
Messages: 2

Re: Les panels sous matlab

Merci à tous je vais expérimenter ce que vous m'avez transmis et je reviendrai vers vous en cas de souci !

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

[ Generated in 0.017 seconds, 9 queries executed ]