rpredictionr-formula

Error in terms.formula(formula) : '.' in formula and no 'data' argument


I'm tring to use neuralnet for prediction.

Create some X:

x <- cbind(seq(1, 50, 1), seq(51, 100, 1))

Create Y:

y <- x[,1]*x[,2]

Give them a names

colnames(x) <- c('x1', 'x2')
names(y) <- 'y'

Make data.frame:

dt <- data.frame(x, y)

And now, I got error

model <- neuralnet(y~., dt, hidden=10, threshold=0.01)

error in terms.formula(formula) : '.' in formula and no 'data' argument

For example, in lm(linear model) this is worked.


Solution

  • As my comment states, this looks like a bug in the non-exported function neuralnet:::generate.initial.variables. As a work around, just build a long formula from the names of dt, excluding y, e.g.

    n <- names(dt)
    f <- as.formula(paste("y ~", paste(n[!n %in% "y"], collapse = " + ")))
    f
    
    ## gives
    > f
    y ~ x1 + x2
    
    ## fit model using `f`
    model <- neuralnet(f, data = dt, hidden=10, threshold=0.01)
    
    > model
    Call: neuralnet(formula = f, data = dt, hidden = 10, threshold = 0.01)
    
    1 repetition was calculated.
    
            Error Reached Threshold Steps
    1 53975276.25     0.00857558698  1967