簡體   English   中英

R:如何從數據框中獲取正確的乳膠回歸表?

[英]R :How to get a proper latex regression table from a dataframe?

考慮以下示例

inds <- c('var1','','var2','')
model1 <- c(10.2,0.00,0.02,0.3)
model2 <- c(11.2,0.01,0.02,0.023)

df = df=data.frame(inds,model1,model2)
df
 inds model1 model2
 var1  10.20 11.200
        0.00  0.010
 var2   0.02  0.020
        0.30  0.023

在這里,您可以得到帶有系數和P值的自定義回歸模型的輸出(實際上,如果需要說系數的標准誤差,我可以顯示任何其他統計信息)。

有兩個變量, var1var2

例如,在model1中, var1的系數為10.2 ,P值為0.00var2的系數為0.02 ,P值為0.30

是否有一個程序包可以自動處理這些(自定義)表格,並可以創建一個帶有星號的整潔的Latex表格以提高重要性?

謝謝!

這是使用texreg的解決方案。

注意, texreg > = 1.36.18是必需的。

您在數據框中提供的信息(系數和p值)可以以任意方式在數據框中排列。 因此,我們需要編寫代碼以從數據框中的適當位置選擇這些數據,並使用它們來創建texreg對象。 當您請求通用(可能是可重用)的解決方案時,我們應該將代碼包裝在可重用函數中。 我將這個函數extractFromDataFrame 因此,這里是函數,該函數從數據框中提取信息並為不同模型創建texreg對象的列表:

require("texreg")

extractFromDataFrame <- function (dataFrame) {
  coef.row.indices <- seq(1, nrow(dataFrame) - 1, 2)
  pval.row.indices <- seq(2, nrow(dataFrame), 2)
  texregObjects <- list()
  for (i in 2:ncol(dataFrame)) {
    coefs <- dataFrame[coef.row.indices, i]
    coefnames <- as.character(dataFrame[coef.row.indices, 1])
    pvalues <- dataFrame[pval.row.indices, i]
    tr <- createTexreg(coef = coefs, coef.names = coefnames, pvalues = pvalues)
    texregObjects[i - 1] <- list(tr)
  }
  return(texregObjects)
}

在此函數中,我們首先定義系數存儲在數據幀的哪些行中以及p值存儲在哪些行中。 然后,我們創建了一個空列表,用於存儲texreg對象。 我們遍歷所有列,但第一列只包含標簽。 在每個模型列中,我們保存系數,它們的名稱和p值,然后將它們移交給createTexreg構造函數,該函數是一個根據數據為我們創建texreg對象的函數。 我們將texreg對象添加到列表中。 最后,我們返回texreg對象的列表。

現在,我們可以將該函數應用於任何具有任意列數(> 1)的數據框,該數據框看起來像問題中提供的數據框一樣。 在這種情況下,將函數應用於df對象后,如果我們想確保我們做對了所有事情,我們可能希望打印列表的內容:

tr <- extractFromDataFrame(df)
tr

實際上,結果包含相關數據:

[[1]]

No standard errors were defined for this texreg object.
No decimal places were defined for the GOF statistics.

     coef.   p
var1 10.20 0.0
var2  0.02 0.3

No GOF block defined.

[[2]]

No standard errors were defined for this texreg object.
No decimal places were defined for the GOF statistics.

     coef.     p
var1 11.20 0.010
var2  0.02 0.023

No GOF block defined.

現在,我們可以簡單的手的名單texreg對象到screenreg ,例如, screenreg(tr)結果如下:

========================
      Model 1    Model 2
------------------------
var1  10.20 ***  11.20 *
var2   0.02       0.02 *
========================
*** p < 0.001, ** p < 0.01, * p < 0.05

或使用htmlreg創建HTML表。 或者,按照原始問題的要求,使用texreg創建LaTeX表。 texreg(tr, single.row = TRUE)的輸出如下所示:

\begin{table}
\begin{center}
\begin{tabular}{l c c }
\hline
 & Model 1 & Model 2 \\
\hline
var1 & $10.20^{***}$ & $11.20^{*}$ \\
var2 & $0.02$        & $0.02^{*}$  \\
\hline
\multicolumn{3}{l}{\scriptsize{$^{***}p<0.001$, $^{**}p<0.01$, $^*p<0.05$}}
\end{tabular}
\caption{Statistical models}
\label{table:coefficients}
\end{center}
\end{table}

可以修改此解決方案以適應標准誤差,置信區間或擬合優度統計。

各種texreg參數可用於自定義輸出,例如,包括使用booktabs包或通過dcolumn進行十進制對齊。

請注意,您不應調用數據框df因為該對象名稱已在stats包中定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM