Search code examples
reviews

Regression in R (vs Eviews)


When you do a regression in Eviews, you get a panel of statistics like this:

enter image description here

Is there a way in R in which I can get all/most of these statistics about a regression in R in one list as well?


Solution

  • See summary, which will produce summaries for most classes of regression object.

    For example, from help(glm):

    > clotting <- data.frame(
    +          u = c(5,10,15,20,30,40,60,80,100),
    +          lot1 = c(118,58,42,35,27,25,21,19,18),
    +          lot2 = c(69,35,26,21,18,16,13,12,12))
    >      summary(glm(lot1 ~ log(u), data = clotting, family = Gamma))
    
    Call:
    glm(formula = lot1 ~ log(u), family = Gamma, data = clotting)
    
    Deviance Residuals: 
         Min        1Q    Median        3Q       Max  
    -0.04008  -0.03756  -0.02637   0.02905   0.08641  
    
    Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
    (Intercept) -0.0165544  0.0009275  -17.85 4.28e-07 ***
    log(u)       0.0153431  0.0004150   36.98 2.75e-09 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    (Dispersion parameter for Gamma family taken to be 0.002446059)
    
        Null deviance: 3.51283  on 8  degrees of freedom
    Residual deviance: 0.01673  on 7  degrees of freedom
    AIC: 37.99
    
    Number of Fisher Scoring iterations: 3
    

    The big win of R over GUI programs is generally that the output from functions is available. So you can do:

    > s =  summary(glm(lot1 ~ log(u), data = clotting, family = Gamma))
    > s$coefficients[1,]
         Estimate    Std. Error       t value      Pr(>|t|) 
    -1.655438e-02  9.275466e-04 -1.784749e+01  4.279149e-07 
    > s$cov.scaled
                  (Intercept)        log(u)
    (Intercept)  8.603427e-07 -3.606457e-07
    log(u)      -3.606457e-07  1.721915e-07
    

    To get the t's and p's and all that for parameters, or the scaled covariance matrix. But always read the docs for the summary method to make sure you are getting what you think you are getting. Sometimes things in the returned object may be calculated on transformed scales, and presented on untransformed scales when the object is printed.

    Note however that what you seem to have shown as an example is an ARIMA model, and there's no nice summary function for arima objects in R:

    > m = arima(lh, order = c(1,0,1))
    > summary(m)
              Length Class  Mode     
    coef       3     -none- numeric  
    sigma2     1     -none- numeric  
    var.coef   9     -none- numeric  
    mask       3     -none- logical  
    loglik     1     -none- numeric  
    aic        1     -none- numeric  
    arma       7     -none- numeric  
    residuals 48     ts     numeric  
    call       3     -none- call     
    series     1     -none- character
    code       1     -none- numeric  
    n.cond     1     -none- numeric  
    model     10     -none- list     
    

    this is just the default summary for a list object with those elements. Simply printing it gets you a few things:

    > m
    
    Call:
    arima(x = lh, order = c(1, 0, 1))
    
    Coefficients:
             ar1     ma1  intercept
          0.4522  0.1982     2.4101
    s.e.  0.1769  0.1705     0.1358
    
    sigma^2 estimated as 0.1923:  log likelihood = -28.76,  aic = 65.52