尝试在函数(包)产生的对象上model.avg
使用包的函数时遇到问题。尽管手动列表兼容,但该函数不会像我预期的那样返回解释变量的模型平均系数。 MuMin
multinom
nnet
multinom
model.avg
我知道当响应变量仅作为 2 个级别时问题不存在multinom
,所以我猜这取决于生成的 multinom 对象的结构。但是,我不知道如何解决这个问题。
这是函数model.avg
按预期工作的示例代码:
#### MuMIn example
library(MuMIn)
data(Cement)
fm1 <- lm(y ~ ., data = Cement)
dd <- dredge(fm1)
summary(model.avg(dd, subset = delta < 4))$coefmat
结果:
Estimate Std. Error Adjusted SE z value Pr(>|z|)
(Intercept) 64.69312754 22.2354794 22.4624137 2.8800613 0.0039760
X1 1.45579791 0.2036676 0.2193043 6.6382554 0.0000000
X2 0.62502598 0.1202570 0.1291705 4.8387682 0.0000013
X4 -0.47600710 0.2215167 0.2309395 2.0611767 0.0392862
X3 -0.02153196 0.3767120 0.3924356 0.0548675 0.9562440
在这种情况下,“model.avg”函数按预期返回解释变量(即 X1-X4)的Model-averaged coefficients
(列Estimate
)。
现在,如果我想将其应用于multinom
对象(至少具有 3 个级别的响应变量):
#### application to multinomial regression
library(foreign) ; library(nnet) ; library(MuMIn)
ml <- read.dta("http://www.ats.ucla.edu/stat/data/hsbdemo.dta")
ml$prog2 <- relevel(ml$prog, ref = "academic")
test <- multinom(prog2 ~ ses + write + schtyp, data = ml)
# [...] verbosity not displayed here
dd <- dredge(test)
# [...] verbosity not displayed here
summary(model.avg(dd, subset = delta < 4))$coefmat
结果
Estimate Std. Error z value Pr(>|z|)
general 2.850316 1.169132 2.437977 0.014769732
vocation 5.134921 1.173878 4.374322 0.000012181
在这里,函数返回响应变量(即general
和vocation
)的不同水平的“模型平均系数”,而不是解释变量的模型平均系数。
如果这是可能的,你能告诉我如何从对象中获取Model average coefficients
解释变量吗?multinom
提前谢谢了。