使用desctools包来归类PseudoR2会返回错误

问题描述

var1<-sample(c('A','B','C'),replace = T,size=100)
var2<-sample(c(0,1),size=100,replace=T)
var3<-rnorm(100,mean=10,sd=2)
df<-data.frame(var1,var2,var3)
library(nnet)
m1<-multinom(var1~var2,data=df)
m2<-multinom(var1~var3,data=df)
m3<-multinom(var1~var2+var3,data=df)
#install.packages('DescTools')
library(DescTools)

PseudoR2(m1,which='all')

我收到此错误代码

as.data.frame.default(data,optional = TRUE)中的错误: 无法将类别“功能”强制转换为data.frame 另外:警告消息: 在PseudoR2(m1,其中=“全部”)中: 找不到用于评估PseudoR2空模型的多项式对象的模型或数据元素。将使空模型具有新的'df'评估值。确保自首次调用以来对象未发生更改,或尝试使用'model = TRUE'运行multinom

但是,m1一个multinom对象,我认为它的格式都正确,不是吗?

解决方法

您需要设置model=T

var1<-sample(c('A','B','C'),replace = T,size=100)
var2<-sample(c(0,1),size=100,replace=T)
var3<-rnorm(100,mean=10,sd=2)
df<-data.frame(var1,var2,var3)
library(nnet)
m1<-multinom(var1~var2,data=df,model=T)
m2<-multinom(var1~var3,data=df)
m3<-multinom(var1~var2+var3,data=df)
#install.packages('DescTools')
library(DescTools)

PseudoR2(m1,which='all')

PseudoR2(m1,which='all')
       McFadden     McFaddenAdj        CoxSnell      Nagelkerke   AldrichNelson VeallZimmermann           Efron McKelveyZavoina            Tjur 
     0.00623116     -0.03030106      0.01355262      0.01526082              NA              NA              NA              NA              NA 
            AIC             BIC          logLik         logLik0              G2 
   225.62024056    236.04092130   -108.81012028   -109.49238485      1.36452914 
>