Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: RE: how many d.f. in the vcv for the within estimator?


From   "Schaffer, Mark E" <[email protected]>
To   <[email protected]>
Subject   st: RE: how many d.f. in the vcv for the within estimator?
Date   Wed, 12 Dec 2012 00:55:17 -0000

Gregorio,

The classical VCV does indeed need to incorporate the dof adjustment
associated with the N individual effects.  See e.g. Hayashi's
Econometrics p. 334 (the textbook I have at hand - you can find it in
other texts as well).

HTH,
Mark

> -----Original Message-----
> From: [email protected] [mailto:owner-
> [email protected]] On Behalf Of Impavido, Gregorio
> Sent: 12 December 2012 00:41
> To: [email protected]
> Subject: st: how many d.f. in the vcv for the within estimator?
> 
> Dear all,
> 
> I am trying to replicate the result of -xtreg, fe- in mata. Given that
the
> individual effects are not estimated after the within transform,
shouldn't the
> degrees of freedom used for the estimate of the variance of the
residuals be
> (N*T-k-1) instead of N*(T-1)-k (where N=number of panels,
> T=periods,k=number of regressors)?  I have added the intercept = the
meant
> of the dep variable as in STATA manual.
> 
> I paste the code used below which reproduces the results after if
force df_r=
> N*(T-1)-k.  Any suggestion would be welcome.
> 
> With kind regards
> Gregorio
> ==================
> * this do file reproduces the results of -xtreg, fe- using mata
> * it works only with balanced panels
> * For corrections and suggestions, Gregorio Impavido
([email protected])
> **********************************************************
> *********************
> ************************************ START
> ************************************
> **********************************************************
> *********************
> use "http://www.stata-press.com/data/r9/grunfeld.dta ", clear rename
> invest I rename mvalue F rename kstock C sort company time
> gen touse=(I!=. & F!=. & C!=.)      // ignore eventual missing obs
> 
> * example of panel within estimator
> mata:
> mata clear                          // clear the workspace
> 
> T = 20                              // Number of observations per
groups
> N = 10                              // Number of groups
> 
> Z = st_data(.,("F","C"),"touse")    // (NTxk) matrix of regressors
> Y = st_data(.,("I"),"touse")        // (NTx1) vector of dep var
> i = J(rows(Z),1,1)                  // (NTx1) vector of ones, declare
a
> X = Z,i
> it = J(T,1,1)                       // (Tx1) vector of ones, declare a
> in = J(N,1,1)                       // (Tx1) vector of ones, declare a
> B = pinv(T)*I(N)#(it*it')           // (NTxNT) between-individual
operator
> Bbar = pinv(N)*(in*in')#I(T)        // (NTxNT) between-individual
operator
> Q = I(N*T)-B                        // (NTxNT) Q within transform
> * Qbar = I(N*T)-Bbar                  // (NTxNT) Qbar within period
operator
> Ybar = B*Bbar*Y                     // (NTx1) vector of mean dep var
> Zbar = B*Bbar*Z                     // (NTxk) matrix of mean regressor
var
> Ytilda = Q*Y + Ybar                 // added overall mean
> Ztilda = Q*Z + Zbar                 // added overall mean
> Xtilda = Ztilda,i                   // (NTxk+1) add column of 1s
(intercept)
> b_fe = pinv(Xtilda'Xtilda)*Xtilda'*Ytilda	// (k+1x1) vector of
beta hat
> k = cols(Z)                         // (1x1) No of regressors
> u = (Ytilda-Xtilda*b_fe)            // (NTx1) uhat, fitted residuals
> df_r = (N*(T-1)-k)                  // (1x1) residual d.f. (shouldn't
be NT-k-1??)
> rss = (u'*u)                        // (1x1) unrestricted residual sum
of squares
> mse = rss/df_r                      // (1x1) mean squared error
> vcv = mse*pinv(Xtilda'Xtilda)       // (NTxk+1) VCOV matrix
> se = sqrt(diagonal(vcv))            // (k+1x1) vector of s.e. of the
beta hat
> t = b_fe:/se                        // (k+1x1) vector of t statistics
> pt = 2*ttail(df_r,abs(t))           // (k+1x1) vector of pvalues
> crit = invttail(df_r,0.025)         // (k+1x1) bhat~T(df_r)(b,V(b))
> cil = b_fe-crit*se                  // (k+1x1) vector of low CI
> cih = b_fe+crit*se                  // (k+1x1) vector of high CI
> 
> rss, df_r, mse
> b_fe, se, t, pt, cil, cih
> 
> end
> xtset company time
> xtreg I F C, fe                     // to cross check
> **********************************************************
> *********************
> ************************************* END
> *************************************
> **********************************************************
> *********************
> 
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/faqs/resources/statalist-faq/
> *   http://www.ats.ucla.edu/stat/stata/


----- 
Sunday Times Scottish University of the Year 2011-2013
Top in the UK for student experience
Fourth university in the UK and top in Scotland (National Student Survey 2012)


We invite research leaders and ambitious early career researchers to 
join us in leading and driving research in key inter-disciplinary themes. 
Please see www.hw.ac.uk/researchleaders for further information and how
to apply.

Heriot-Watt University is a Scottish charity
registered under charity number SC000278.


*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index