我在为多个模型texreg
创建输出文件时遇到了一些麻烦。TeX
multinom
为了具体起见,让我们使用这个多项式 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