1

我在为多个模型texreg创建输出文件时遇到了一些麻烦。TeXmultinom

为了具体起见,让我们使用这个多项式 logit 设置的一个版本:

library(foreign)
library(nnet)
library(data.table)
ml <- data.table(read.dta("http://www.ats.ucla.edu/stat/data/hsbdemo.dta"))

mnl<-lapply(c(model1="male",model2="female"),
            function(x){multinom(prog ~ ses + write,
                                 data = ml[female==x,])})

我想创建两个表:一个对应于“学术”的系数,一个对应于“职业”(prog省略了“一般”的第三个结果)。

基本上,我不知道如何分别从nnet/multinom对象访问级别,因为我不知道系数存储在哪里。如果我们只是运行texreg(mnl),我们将得到一个包含 4 列的表:

model1 & model2 & NA & NA \\

更糟糕的是,这些列被贴错标签——实际顺序是

model1-academic, model1-vocation, model2-academic, model2-vocation

如果我只是想要一张男性系数表和一张女性系数表,我会简单地运行texreg(mnl["model1"])and texreg(mnl["model2"]),但目前尚不清楚如何按 的水平分割系数prog

我怎样才能texreg得到我想要的两个表,它们(骨架)看起来像:

#TABLE 1: ACADEMIC
> cbind(male=coef(mnl[["model1"]])[1,],
+       female=coef(mnl[["model2"]])[1,])
                   male      female
(Intercept) -3.23410968 -3.01401061
sesmiddle    1.15893835  0.17086744
seshigh      2.00007946  0.57690699
write        0.05464579  0.06598217

#TABLE 2: VOCATION
> cbind(male=coef(mnl[["model1"]])[2,],
+       female=coef(mnl[["model2"]])[2,])
                   male      female
(Intercept)  3.69215046  1.57234796
sesmiddle    1.15573930  0.69043245
seshigh      0.67476976 -0.16955825
write       -0.09640053 -0.03412729
4

1 回答 1

1

与包开发人员 Philip Leifeld 教授取得了联系,他非常客气texreglevelsbeside.

我原来的问题的答案是通过以下方式完成的levels

texreg(mnl,levels="vocation")
texreg(mnl,levels="academic")

\begin{table}
\begin{center}
\begin{tabular}{l c c }
\hline
                & vocation & vocation \\
\hline
(Intercept)     & $3.69^{*}$  & $1.57$   \\
                & $(1.77)$    & $(1.84)$ \\
sesmiddle       & $1.16$      & $0.69$   \\
                & $(0.79)$    & $(0.65)$ \\
seshigh         & $0.67$      & $-0.17$  \\
                & $(0.99)$    & $(0.91)$ \\
write           & $-0.10^{*}$ & $-0.03$  \\
                & $(0.04)$    & $(0.04)$ \\
\hline
AIC             & 167.56      & 218.73   \\
BIC             & 187.65      & 240.26   \\
Log\ Likelihood & -75.78      & -101.36  \\
Deviance        & 151.56      & 202.73   \\
Num.\ obs.      & 91          & 109      \\
\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}

(我会抑制输出"academic"以节省空间,但你明白了)。

beside功能的工作方式略有不同,而是堆叠系数,如果这适合您的喜好:

\begin{table}
\begin{center}
\begin{tabular}{l c c }
\hline
                      & model1 & model2 \\
\hline
academic: (Intercept) & $-3.23$     & $-3.01$    \\
                      & $(1.66)$    & $(1.82)$   \\
academic: sesmiddle   & $1.16$      & $0.17$     \\
                      & $(0.75)$    & $(0.58)$   \\
academic: seshigh     & $2.00^{*}$  & $0.58$     \\
                      & $(0.85)$    & $(0.69)$   \\
academic: write       & $0.05$      & $0.07^{*}$ \\
                      & $(0.03)$    & $(0.03)$   \\
vocation: (Intercept) & $3.69^{*}$  & $1.57$     \\
                      & $(1.77)$    & $(1.84)$   \\
vocation: sesmiddle   & $1.16$      & $0.69$     \\
                      & $(0.79)$    & $(0.65)$   \\
vocation: seshigh     & $0.67$      & $-0.17$    \\
                      & $(0.99)$    & $(0.91)$   \\
vocation: write       & $-0.10^{*}$ & $-0.03$    \\
                      & $(0.04)$    & $(0.04)$   \\
\hline
AIC                   & 167.56      & 218.73     \\
BIC                   & 187.65      & 240.26     \\
Log\ Likelihood       & -75.78      & -101.36    \\
Deviance              & 151.56      & 202.73     \\
Num.\ obs.            & 91          & 109        \\
\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}
于 2015-05-05T19:22:41.853 回答