2014-04-02 6 views
7

Ich habe die Ergebnisse einer linearen Regressionsmodell mit einem Faktor Variable in R, die ich ziemlich nach oben möchte und dann Ausgabe in LaTeX. Idealerweise würde die Faktorvariable in der Tabelle über eine Zeile dargestellt, die den Namen der Variablen und des Referenztyps angibt, ansonsten aber leer ist und dann Zeilen mit eingerücktem Text darunter, die die Ebenen des Faktors zusammen mit den entsprechenden Schätzungen angeben.Referenzkategorie in Regressionstabelle

Ich habe lange das stargazer-Paket verwendet, um Regressionsergebnisse von R in LaTeX zu bekommen, sehe aber keine Möglichkeit, das gewünschte Ergebnis zu erzielen. Ein Beispiel:

library(ggplot2) 
library(stargazer) 

levels(diamonds$cut) 

options(contrasts = c("contr.treatment", "contr.treatment")) 
model1 <- lm(price~cut,data=diamonds) 
stargazer(model1,type='text') 

Daraus ergibt sich die Standard-Ausgabe:

=============================================== 
         Dependent variable:  
        --------------------------- 
           price   
----------------------------------------------- 
cutGood      -429.893***   
          (113.849)   

cutVery Good    -376.998***   
          (105.164)   

cutPremium     225.500**   
          (104.395)   

cutIdeal     -901.216***   
          (102.412)   

Constant     4,358.758***   
          (98.788)   

----------------------------------------------- 
Observations     53,940   
R2        0.013   
Adjusted R2     0.013   
Residual Std. Error 3,963.847 (df = 53935) 
F Statistic   175.689*** (df = 4; 53935) 
=============================================== 
Note:    *p<0.1; **p<0.05; ***p<0.01 

Hier ist, was ich will:

=============================================== 
         Dependent variable:  
        --------------------------- 
           price   
----------------------------------------------- 

Cut (Reference: Fair) 

    Good      -429.893***   
          (113.849)   

    Very Good    -376.998***   
          (105.164)   

    Premium     225.500**   
          (104.395)   

    Ideal     -901.216***   
          (102.412)   

Constant     4,358.758***   
          (98.788)   

----------------------------------------------- 
Observations     53,940   
R2        0.013   
Adjusted R2     0.013   
Residual Std. Error 3,963.847 (df = 53935) 
F Statistic   175.689*** (df = 4; 53935) 
=============================================== 
Note:    *p<0.1; **p<0.05; ***p<0.01 

Gibt es eine Möglichkeit, dies in stargazer ohne zu viel hackery zu erreichen? Gibt es andere Pakete, in denen dies einfacher wäre?

Antwort

3

Nicht ganz das, was Sie wollten, aber Sie können kovariate Etiketten über das Argument covariate.labels manuell angeben. Ich konnte jedoch nicht herausfinden, wie Sie eine Kopfzeile hinzufügen können, die Sie manuell den Zeilenumbruch hinzufügen müssen.

stargazer(model1,type='text', 
      covariate.labels=c("Cut (Reference: Fair) Good", 
          ". Very good", 
          ". Premium", 
          ". Ideal")) 


====================================================== 
           Dependent variable:  
          --------------------------- 
             price   
------------------------------------------------------ 
Cut (Reference: Fair) Good   -429.893***   
            (113.849)   

. Very good      -376.998***   
            (105.164)   

. Premium       225.500**   
            (104.395)   

. Ideal       -901.216***   
            (102.412)   

Constant       4,358.758***   
            (98.788)   

------------------------------------------------------ 
Observations       53,940   
R2         0.013   
Adjusted R2       0.013   
Residual Std. Error   3,963.847 (df = 53935) 
F Statistic    175.689*** (df = 4; 53935) 
====================================================== 
Note:      *p<0.1; **p<0.05; ***p<0.01 
2

Dies ergibt einigermaßen nahe, was als ASCII-Ausgabe gewünscht wurde. Ob es in Latex erfolgreich ist, erfordert, dass Sie es testen. Die Behandlung von \n kann dort nicht die gleichen Nebenwirkungen haben.

stargazer(model1,type='text', column.labels="\nCut (Reference: Fair)", 
      covariate.labels=c(". Good", 
          ". Very good", 
          ". Premium", 
          ". Ideal")) 

Console:

================================================= 
          Dependent variable:  
         --------------------------- 
           price   
Cut (Reference: Fair) 
------------------------------------------------- 
. Good      -429.893***   
           (113.849)   

. Very good     -376.998***   
           (105.164)   

. Premium      225.500**   
           (104.395)   

. Ideal      -901.216***   
           (102.412)   

Constant      4,358.758***   
           (98.788)   

------------------------------------------------- 
Observations     53,940   
R2        0.013   
Adjusted R2      0.013   
Residual Std. Error  3,963.847 (df = 53935) 
F Statistic   175.689*** (df = 4; 53935) 
================================================= 
Note:     *p<0.1; **p<0.05; ***p<0.01 
+1

Nice! Das funktioniert nur, wenn es nur eine kategoriale Variable gibt, oder? – RoyalTS

+1

Rechts. Und es ist eher ein Nebeneffekt als das, was die Autoren beabsichtigten, da die "column.labels" eigentlich unter der dep.var-Spalte ausgerichtet sein sollten. Ich denke, dass du die Latexausgabe für mehrere Kovariaten wirklich bearbeiten musst. –

+0

Immer noch kein schlechter Hack! – RoyalTS