rpanelchi-squaredplmregression-testing

R code to test the difference between coefficients of regressors from one panel regression


I am trying to compare two coefficient from the same panel regression used over two different time periods in order to confirm the statistical significance of difference. Therefore, running my panel regression first with observations over 2007-2009, I get an estimate of one coefficient I am interested in to compare with the estimate of the same coefficient obtained from the same panel model applied over the period 2010-2017.

Based on R code to test the difference between coefficients of regressors from one regression, I tried to compute a likelihood ratio test. In the linked discussion, they use a simple linear equation. If I use the same commands in R than described in the answer, I get results based on a distribution and I don't understand if and how I can interpret that or not.

In , I did the following:

linearHypothesis(reg.pannel.recession.fe, "Exp_Fri=0.311576")

where reg.pannel.recession.fe is the panel regression over the period 2007-2009, Exp_Fri is the coefficient of this regression I want to compare, 0.311576 is the estimated coefficient over the period 2010-2017.

I get the following results using linearHypothesis():

Results Likelihood ratio test

How can I interpret that? Should I use another function as it is objects? Thank you very much for your help.


Solution

  • You get a F test in that example because as stated in the vignette:

    The method for "lm" objects calls the default method, but it changes the default test to "F" [...]

    You can also set the test to F, but basically linearHypothesis works whenever the standard error of the coefficient can be estimated from the variance-covariance matrix, as also said in the vignette:

    The default method will work with any model object for which the coefficient vector can be retrieved by ‘coef’ and the coefficient-covariance matrix by ‘vcov’ (otherwise the argument ‘vcov.’ has to be set explicitly)

    So using an example from the package:

    library(plm)
    
    data(Grunfeld)
    wi <- plm(inv ~ value + capital,
    data = Grunfeld, model = "within", effect = "twoways")
    
    linearHypothesis(wi,"capital=0.3",test="F")
    Linear hypothesis test
    
    Hypothesis:
    capital = 0.3
    
    Model 1: restricted model
    Model 2: inv ~ value + capital
    
      Res.Df Df      F  Pr(>F)  
    1    170                    
    2    169  1 6.4986 0.01169 *
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    linearHypothesis(wi,"capital=0.3")
    Linear hypothesis test
    
    Hypothesis:
    capital = 0.3
    
    Model 1: restricted model
    Model 2: inv ~ value + capital
    
      Res.Df Df  Chisq Pr(>Chisq)  
    1    170                       
    2    169  1 6.4986     0.0108 *
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    

    And you can also use a t.test:

    tested_value = 0.3
    BETA = coefficients(wi)["capital"]
    SE = coefficients(summary(wi))["capital",2]
    tstat =  (BETA- tested_value)/SE
    pvalue = as.numeric(2*pt(-tstat,wi$df.residual))
    pvalue
    [1] 0.01168515