问题描述
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
>