【问题标题】:How to use predict with multinom() with intercept in R?如何在 R 中使用带有截距的 multinom() 预测?
【发布时间】:2014-02-09 19:36:39
【问题描述】:

我已经在 R 中运行了 multinom() 函数,但是当我尝试对一个新样本进行预测时,它一直报错。

这是代码:

library(nnet)
dta=data.frame(replicate(10,runif(10)))
names(dta)=c('y',paste0('x',1:9))
res4 <- multinom(y ~ as.matrix(dta[2:10]) , data=dta)
#make new data to predict
nd<-0.1*dta[1,2:10]
pred<-predict(res4, newdata=nd)

这是错误:

Error in predict.multinom(res4, newdata = nd) : 
  NAs are not allowed in subscripted assignments

我认为这与分析中包含的截距有关,但与新的预测输入无关。我尝试通过合并一个 1x1 数据框来手动设置它,该数据框包含一个名为“Intercept”的 1(因为它在 summary() 中被调用),但它仍然给出了相同的错误。

#add intercept manually to prediction row
intercept<-data.frame(1)
names(intercept)[1]<-"Intercept"
nd<-merge(intercept,nd)

【问题讨论】:

    标签: r intercept predict multinomial


    【解决方案1】:

    问题在于你如何指定你的模型:你不能将 R 函数混合到这样的公式中。试试这个:

    res4 <- multinom(y ~ . , data=dta) # You could also specify explicitly: y~x1+x2+x3...
    #make new data to predict
    nd<-0.1*dta[1,2:10]
    predict(res4, newdata=nd)
    # [1] 0.971794712357223
    # 10 Levels: 0.201776991132647 0.211950202938169 0.223103292752057 0.225121688563377 0.372682225191966 0.612373929005116 ... 0.971794712357223
    

    【讨论】:

      猜你喜欢
      • 2012-07-28
      • 2017-01-12
      • 2022-11-26
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      相关资源
      最近更新 更多