使用 nnet 包评估 R 中多项式 logit 的拟合优度

Kob*_*oba 5 r multinomial logistic-regression goodness-of-fit

我使用multinom()nnet 包中的函数在 R 中运行多项逻辑回归。 nnet 包不包括 p 值计算和 t 统计量计算。我找到了一种使用此页面中的两个带尾 z 检验来计算 p 值的方法。举一个计算多项式 logit 的检验统计量的例子(不是真正的 t-stat,而是等价的),我计算了 Wald 统计量:

mm<-multinom(Empst ~ Agegroup + Marst + Education + State, 
             data = temp,weight=Weight)
W <- (summary(mm1)$coefficients)^2/(summary(mm1)$standard.errors)^2
Run Code Online (Sandbox Code Playgroud)

我取系数的平方并除以系数的标准误差的平方。然而,似然比检验是衡量逻辑回归拟合优度的首选方法。由于对似然函数的理解不完整,我不知道如何编写代码来计算每个系数的似然比统计量。使用multinom()函数的输出计算每个系数的似然比统计量的方法是什么?谢谢你的帮助。

jos*_*ber 3

让我们看一下使用(分类变量)和(连续变量)Sepal.Length从 iris 数据集进行预测。让我们首先使用并构建我们的神经网络将因子变量转换为多个二进制变量:SpeciesPetal.Lengthmodel.matrix

library(nnet)
data(iris)
mat <- as.data.frame(model.matrix(~Species+Petal.Length+Sepal.Length, data=iris))
mm <- multinom(Sepal.Length~.+0, data=mat, trace=F)
Run Code Online (Sandbox Code Playgroud)

现在我们可以对模型中的变量进行似然比检验:

library(lmtest)
lrtest(mm, "Speciesversicolor")
# Likelihood ratio test
# 
# Model 1: Sepal.Length ~ `(Intercept)` + Speciesversicolor + Speciesvirginica + 
#     Petal.Length + 0
# Model 2: Sepal.Length ~ `(Intercept)` + Speciesvirginica + Petal.Length - 
#     1
#   #Df  LogLik  Df  Chisq Pr(>Chisq)
# 1 136 -342.02                      
# 2 102 -346.75 -34 9.4592          1
Run Code Online (Sandbox Code Playgroud)

要对所有变量运行似然比测试,我想您可以使用循环并针对每个变量名称运行。我仅提取了此循环中的 p 值。

for (var in mm$coefnames[-1]) {
  print(paste(var, "--", lrtest(mm, var)[[5]][2]))
}
# [1] "Speciesversicolor -- 0.999990077592342"
# [1] "Speciesvirginica -- 0.998742545590864"
# [1] "Petal.Length -- 3.36995663002528e-14"
Run Code Online (Sandbox Code Playgroud)