1

Another user asked How do I add confidence intervals to odds ratios in stargazer table? and outlined their solution to the problem (I've included the relevant lines of code here)

OR.vector <- exp(mylogit$coef)
CI.vector <- exp(confint(mylogit))
p.values <- summary(mylogit)$coefficients[, 4]

# Table with ORs and CIs`
stargazer(mylogit, coef = list(OR.vector), ci = T, 
          ci.custom = list(CI.vector), p = list(p.values), 
          single.row = T, type = "text")

When I try to run the same code for my own model, I receive the following error

Error in summary(ml.TatC)$coefficients[, 4] : 
  incorrect number of dimensions

Might anyone know why this is happening? Thank you in advance for your help!

UPDATE: Here is a link to the .txt file used.

The code I have used is as follows:

tattoo <- read.table("https://ndownloader.figshare.com/files/6920972", 
                          header=TRUE, na.strings=c("unk", "NA"))    

library(mlogit)

Tat<-mlogit.data(tattoo, varying=NULL, shape="wide", choice="size", id.var="date")

ml.Tat<-mlogit(size~1|age+sex+yy, Tat, reflevel="small", id.var="date")

library(stargazer)

OR.vector<-exp(ml.Tat$coef)
CI.vector<-exp(confint(ml.Tat))
p.values<-summary(ml.Tat)$coefficients[,4] #incorrect # of dimensions, how am I supposed to determine dimensions?

stargazer(ml.Tat, coef=list(OR.vector), ci=TRUE, ci.custom=list(CI.vector), single.row=T, type="text", star.cutoffs=c(0.05,0.01,0.001), out="table1.txt", digits=4) 
Community
  • 1
  • 1
Blundering Ecologist
  • 1,199
  • 2
  • 14
  • 38
  • Hard to tell without seeing the code you are using. Could you include it and a minimally reproducible example? – paqmo Nov 20 '16 at 17:19
  • My guess is that you want `summary(ml.Tat)$CoefTable[, 4]` to extract the p-values. The `mlogit` package object stores things differently in `summary.mlogit` than `summary.glm`, so the example you link to is not parallel. When you get a dimension error, always check out the object using `str(object)` to see what its dimension are. – paqmo Nov 20 '16 at 17:25
  • @paqmo I have added a link to my data file and the code I used. Yes, I want `summary(ml.Tat)$CoefTable[, 4]` to extract my p-values and include them in the model output. – Blundering Ecologist Nov 20 '16 at 17:28

1 Answers1

1

The mlogit package stores p-values through the function summary.mlogit in $CoefTable, not in $coefficients, as with summary.glm. You can see this:

> str(summary(ml.Tat)$coefficients)
atomic [1:8] -4.45e+02 -1.88e+02 2.51e-02 8.04e-03 1.38 ...

summary(ml.Tat)$coefficients is an atomic vector, so has only one dimension. That's why you are getting the error.

Use summary(ml.Tat)$CoefTable[,4] to extract the p-values you want:

> summary(ml.Tat)$CoefTable[,4]
  large:(intercept) medium:(intercept)   large:age         medium:age          large:sexM        medium:sexM 
  0.000000e+00       0.000000e+00       8.536121e-10       1.731441e-03       0.000000e+00       0.000000e+00 
  large:yy          medium:yy 
  0.000000e+00       0.000000e+00 

So your code should read:

library(stargazer)

OR.vector<-exp(ml.Tat$coef)
CI.vector<-exp(confint(ml.Tat))
p.values<-summary(ml.Tat)$CoefTable[,4]

stargazer(ml.Tat, coef=list(OR.vector), ci=TRUE, ci.custom=list(CI.vector),
          p = p.values, single.row=T, type="text",
          star.cutoffs=c(0.05,0.01,0.001), 
          out="table1.txt", digits=4)

Your table:

================================================
                        Dependent variable:     
                   -----------------------------
                               size             
------------------------------------------------
large:(intercept)   0.0000*** (0.0000, 0.0000)  
medium:(intercept)    0.0000 (0.0000, 0.0000)   
large:age             1.0254 (1.0172, 1.0336)   
medium:age            1.0081 (1.0030, 1.0132)   
large:sexM            3.9821 (3.5355, 4.4851)   
medium:sexM           2.0886 (1.9576, 2.2284)   
large:yy              1.2455 (1.2189, 1.2726)   
medium:yy             1.0976 (1.0849, 1.1105)   
------------------------------------------------
Observations                  18,162            
R2                            0.0410            
Log Likelihood             -15,882.7000         
LR Test               1,357.1140*** (df = 8)    
================================================
Note:              *p<0.05; **p<0.01; ***p<0.001

Good to know (if you are new to R) that packages deploy the summary function differently, so always good to explore the object to see what is going on.

paqmo
  • 3,649
  • 1
  • 11
  • 21
  • Thank you for your help. I am definitely facing a steep learning curve. It's much appreciated! And, the code you suggested gives me the same table as the one you included above. – Blundering Ecologist Nov 20 '16 at 19:21