3

次の例を考えてみましょう

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 値を含むカスタム回帰モデルの出力があります (たとえば、係数の標準誤差が必要な場合は、他の統計を実際に表示できます)。

と の 2 つの変数がありvar1ますvar2

たとえば、モデル 1 では、の係数と の P 値がvar1付属していますが、 の係数と P 値はです。10.20.00var20.020.30

これらの (カスタム) テーブルを自動的に処理し、意味のある星が付いたきちんとした Latex テーブルを作成できるパッケージはありますか?

ありがとう!

4

1 に答える 1

5

を使った解決方法はこちら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パッケージで既に定義されているため、データ フレームを呼び出さないでください。

于 2016-10-22T23:15:47.823 に答える