2014-02-09 5 views
2

Я запустил функцию multinom() в R, но когда я пытаюсь предсказать новый образец, он продолжает давать ошибку.Как использовать прогноз с multinom() с перехватом в R?

это код:

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, содержащий 1 с именем «Перехват» (как он вызывается в summary()), но он по-прежнему дает ту же ошибку.

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

ответ

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 
+0

Спасибо, это сработало отлично! – DaReal