Search code examples
rstargazer

Unprecise p-values in Stargazer


I want the same stars for significancies in regression output in stargazer as in the "normal output".

I produce data

library("stargazer"); library("lmtest"); library("sandwich")
set.seed(1234)
df <- data.frame(y=1001:1100)
df$x <- c(1:70,-100:-71) + rnorm(100, 0, 74.8)
model <- lm(log(y) ~ x, data=df)

and get some model estimates where the coefficient on x has a p-value of 0.1023

coeftest(model, vcov = vcovHC(model, type="HC3"))

I want to have these results in LaTeX. Based on the same function I calculate heteroscedasticity consistent standard estimates and let stargazer use them.

stderr_HC3_model <- sqrt(diag(vcovHC(model, type = "HC3")))
stargazer(model, se=list(stderr_HC3_model))

The stargazer output has a star at the coefficient indicating significance when alpha=10%. I want stargazer to give the same as the coeftest. (Because of the comparability with Stata where reg L_y x, vce(hc3) gives exactly the coeftest results.)

I played around with the stargazer options p.auto, t.auto which did not help. When I execute "stargazer" I cannot view the underlying code as it is possible in other cases. What to do?


Richards answer helped me. I indicate the steps I used to give out more than one regression (let's say ols_a and ols_b).

ses <- list(coeftest(ols_a, vcov = vcovHC(ols_a, type="HC3"))[,2],
        coeftest(ols_b, vcov = vcovHC(ols_b, type="HC3"))[,2])
pvals <- list(coeftest(ols_a, vcov = vcovHC(ols_a, type="HC3"))[,4],
          coeftest(ols_b, vcov = vcovHC(ols_b, type="HC3"))[,4])
stargazer(ols_a, ols_b, type="text", p=pvals, se=ses)

Solution

  • You need to provide the p values associated with your coeftest. From the man page.

    p a list of numeric vectors that will replace the default p-values for each model. Matched by element names. These will form the basis of decisions about significance stars

    The following should work.

    test <- coeftest(model, vcov = vcovHC(model, type="HC3"))
    ses <- test[, 2]
    pvals <- test[, 4]
    stargazer(model, type="text", p=pvals, se=ses)
    

    This provides the following.

    ===============================================
                            Dependent variable:    
                        ---------------------------
                                  log(y)           
    -----------------------------------------------
    x                            -0.00005          
    
    
    Constant                     6.956***          
                                  (0.003)          
    
    -----------------------------------------------
    Observations                    100            
    R2                             0.026           
    Adjusted R2                    0.016           
    Residual Std. Error       0.027 (df = 98)      
    F Statistic             2.620 (df = 1; 98)     
    ===============================================
    Note:               *p<0.1; **p<0.05; ***p<0.01