2014-04-02 14 views
7

Mam wyniki z modelu regresji liniowej ze zmienną czynnikową w R, które chciałbym ładnie i następnie wyprowadzić do LaTeX. Idealnie zmienna czynnikowa byłaby prezentowana w tabeli za pomocą wiersza, który podaje nazwę zmiennej i kategorii odniesienia, ale poza tym jest pusta, a następnie wiersze z wciętym tekstem poniżej, które podają poziomy współczynnika wraz z odpowiadającymi szacunkami.Kategoria odniesienia w tabeli regresji

Od dawna używałem pakietu stargazer, aby uzyskać wyniki regresji z R do LaTeXa, ale nie widzę możliwości osiągnięcia pożądanego rezultatu. Przykład:

library(ggplot2) 
library(stargazer) 

levels(diamonds$cut) 

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

Daje wyjście domyślnie:

=============================================== 
         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 

Oto, czego chcę:

=============================================== 
         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 

Czy istnieje jakiś sposób, aby osiągnąć ten cel w stargazer bez zbytniego hackery? Czy istnieją inne pakiety, w których byłoby to łatwiejsze?

Odpowiedz

3

Nie do końca to, co chciałeś, ale możesz ręcznie określać etykiety zmiennych zmiennych za pomocą argumentu covariate.labels. Nie udało mi się jednak dowiedzieć, w jaki sposób można dodać nagłówek, wymagając ręcznego dodania łamania linii.

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

Daje to rozsądnie blisko tego, co było pożądane jako wyjście ASCII. To, czy uda się lateksowi, będzie wymagało przetestowania go. Obsługa \n może nie mieć takich samych efektów ubocznych.

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

konsoli:

================================================= 
          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! Działa to tylko wtedy, gdy istnieje tylko jedna kategoryczna zmienna, prawda? – RoyalTS

+1

Dobrze. I to raczej efekt uboczny, a nie zamierzony przez autorów, ponieważ kolumny "column.labels" powinny być wyrównane w kolumnie dep.var. Myślę, że naprawdę będziesz musiał edytować wyjście Latex dla wielu współzmiennych. –

+0

Nadal niezły hack! – RoyalTS