Search code examples
rnar-carettraining-data

NA impact in Caret Train


Following the example reported in the link below I have the following error:

Using nnet for prediction, am i doing it right?

Error in na.fail.default(list(y = c(0, 0.0998334166468282, 0.198669330795061, : missing values in object

To solve this error I use the condition na.action = na.omit

#Fit model
model <- train(y ~ x1 + x2, te, method='nnet', linout=TRUE, trace = FALSE,
               #Grid of tuning parameters to try:
               tuneGrid=expand.grid(.size=c(1,5,10),.decay=c(0,0.001,0.1)),
               na.action = na.omit) 
ps <- predict(model, te)

is.na(te)
nrow(te)
nrow(ps)

Is this condition the only way to proceed?

In fact the consequence is that the number of rows of the ps is different to the number of ps data.


Solution

  • Given that you are lagging the data, this is probably the best approach. Note that:

    > sum(!complete.cases(te))
    [1] 2
    

    The model can't predict these which is why

    > nrow(ps)
    [1] 199
    > nrow(te)
    [1] 201
    

    and this is because:

    > formals(predict.train)$na.action
    na.omit
    

    (Note that this will probably be changed to na.fail in the next version of the package)