2015-05-10 13 views
7

Ich habe mehrere Regressionsmodelle in R, die ich in einem schönen Tabellenformat zusammenfassen möchte, die in der Publikation enthalten sein könnte. Ich habe alle Ergebnisse bereit, konnte aber keine Möglichkeit finden, sie zu exportieren, und es wäre nicht effizient, dies manuell zu tun, da ich ungefähr 20 Tabellen benötige.Exportieren R Regression Zusammenfassung für publishable Papier

Also, eines meiner Modelle ist:

felm1=felm(ROA~BC+size+sizesq+age | stateyeard+industryyeard, data=data) 

Und ich bin immer gewünscht Zusammenfassung in R.

jedoch, was ich für meine Arbeit möchte nur die folgenden in der Tabelle zu haben ist , die Schätzungen mit t-Statistik in den Klammern und auch die Signifikanzcodes (*,, etc.).

Gibt es eine Möglichkeit, jede Art von Tabelle zu erstellen, die die oben genannten enthält? Lyx, übertreffe, Wort, .rft, alles wirklich.

Noch besser ist, ein anderes Modell, das ich habe, ist (mit einigen Variablen verschieden):

felm2=felm(ROA~BC+BCHHI+size+sizesq+age | stateyeard+industryyeard, data=data) 

könnte ich Zusammenfassung der beiden in einer Tabelle zusammengefasst Regressionen (wo gleiche Variablen in derselben Zeile sein würde, und andere würden leere Zellen produzieren)?

Vielen Dank im Voraus, und ich werde jeden Versuch der Hilfe geschätzt.

ist hier ein reproduzierbares Beispiel:

x<-rnorm(1:20) 

y<-(1:20)/10+x 

summary(lm(y~x)) 



    Coefficients: 
      Estimate Std. Error t value Pr(>|t|)  

(Itercept) 1.0539  0.1368 7.702 4.19e-07 *** 

    x   1.0257  0.1156 8.869 5.48e-08 *** 

Dies ist das Ergebnis in R. möchte ich das Ergebnis in einer Tabelle wie

(Itercept) 1.0539*** (7.702) 
     X  1.0257*** (8.869) 

Ist das möglich aussehen?

+1

Es würde helfen, wenn Sie ein [reproduzierbares Beispiel] enthalten (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) mit einigen Beispieleingangsdaten und gewünschter Ausgabe. Sei klar, welches Paket die 'flem()' -Funktions-Hauben bilden. Ist LaTeX-Ausgabe akzeptabel? – MrFlick

+0

Leider kann ich keine Bilder posten, da ich neu bin. Aber ich denke, die Antwort auf eine allgemeine Regression würde ausreichen. So gibt summary (fittedmodel) die Schätzungen zurück, st. Fehler, etc., aber ich möchte nur die Schätzungen, T-Statistik in Klammern, und die Bedeutung in Bezug auf die Anzahl der Sterne exportieren. Ich benutze das Paket 'lfe', aber nehmen wir der Einfachheit halber an, dass es sich um eine normale lm-Regression handelt. Latex kenne ich nicht, aber ist es nicht lyx ähnlich? –

+0

LyX ist ein Frontend für LaTeX. Sie können LaTeX-Markup darin verwenden. –

Antwort

2

Für Texttabelle, versuchen Sie dies:

x<-rnorm(1:20) 
y<-(1:20)/10+x 
result <- lm(y~x) 

library(stargazer) 
stargazer(result, type = "text") 

Ergebnisse in ...

=============================================== 
         Dependent variable:  
        --------------------------- 
           y    
----------------------------------------------- 
x       0.854***   
           (0.108)   

Constant      1.041***   
           (0.130)   

----------------------------------------------- 
Observations     20    
R2        0.777   
Adjusted R2     0.765   
Residual Std. Error  0.579 (df = 18)  
F Statistic   62.680*** (df = 1; 18) 
=============================================== 
Note:    *p<0.1; **p<0.05; ***p<0.01 

Für multiple Regression, tun nur

stargazer(result, result, type = "text") 

Und nur im Interesse der das gestellte Ergebnis machen.

addStars <- function(coeffs) { 
    fb <- format(coeffs[, 1], digits = 4) 
    s <- cut(coeffs[, 4], 
      breaks = c(-1, 0.01, 0.05, 0.1, 1), 
      labels = c("***", "**", "*", "")) 
    sb <- paste0(fb, s) 
} 
addPar <- function(coeffs) { 
    se <- format(coeffs[, 2], digits = 3) 
    pse <- paste0("(", se, ")") 
} 
textTable <- function(result){ 
    coeffs <- result$coefficients 
    lab <- rownames(coeffs) 
    sb <- addStars(coeffs) 
    pse <- addPar(coeffs) 
    out <- cbind(lab,sb, pse) 
    colnames(out) <- NULL 
    out 
} 
print(textTable(result), quote = FALSE) 

Sie können xtable::xtable, Hmisc::latex, Gmisc::htmltable usw. benutzen, wenn Sie eine Texttabelle haben. Jemand hat einen Link in Kommentaren gepostet. :)

+0

Vielen Dank, das ist, was ich gesucht habe. Entschuldigung für die Verwirrung. –

6

Besen ist sehr gut für die Erstellung von Regressionstabellen für den Export. Ergebnisse und dann exportiert nach CSV für die Erstellung mit Excel oder man kann Rmarkdown und die Kable-Funktion von Knitr verwenden, um Word-Dokumente (oder Latex) zu erstellen.

require(broom) # for tidy() 
require(knitr) # for kable() 

x<-rnorm(1:20) 

y<-(1:20)/10+x 

model <- lm(y~x) 
out <- tidy(model) 
out 
     term estimate std.error statistic  p.value 
1 (Intercept) 1.036583 0.1390777 7.453261 6.615701e-07 
2   x 1.055189 0.1329951 7.934044 2.756835e-07 

kable(out) 


|term  | estimate| std.error| statistic| p.value| 
|:-----------|--------:|---------:|---------:|-------:| 
|(Intercept) | 1.036583| 0.1390777| 7.453261| 7e-07| 
|x   | 1.055189| 0.1329951| 7.934044| 3e-07| 

Ich sollte erwähnen, dass ich jetzt die hervorragende pixiedust Ergebnisse für den Export Regression verwenden, da es viel feinere Steuerung der Ausgabe ermöglicht, so dass der Benutzer mehr in R und weniger in einem anderen Paket zu tun.

see the vignette on Cran

library(dplyr) # for pipe (%>%) command 
library(pixiedust) 

dust(model) %>% 
     sprinkle(cols = c("estimate", "std.error", "statistic"), round = 2) %>% 
     sprinkle(cols = "p.value", fn = quote(pvalString(value))) %>% 
     sprinkle_colnames("Term", "Coefficient", "SE", "T-statistic", 
         "P-value") 

     Term Coefficient SE T-statistic P-value 
1 (Intercept)  1.08 0.14  7.44 < 0.001 
2   x  0.93 0.14  6.65 < 0.001 
Verwandte Themen