AndreASousa
AndreASousa

Reputation: 49

R predict() asking for variable excluded in lm() regression model

I intend to apply a regression based on two "x" variables, excluding others present in a dataframe.

As an example:

df <- data.frame(name = c("Paul", "Charles", "Edward", "Iam"),
             age = c(18, 20, 25, 30),
             income = c( 1000, 2000, 2500, 3000),
             workhours = c(35, 40, 45, 40))

regression <- lm(income ~ . -name, data = df)

I face a problem when I try to use the predict function. It demands information about the "name" variable:

predict(object = regression,
    data.frame(age = 22, workhours = 36))

It gives the following message error:

Error in eval(predvars, data, env) : object 'name' not found

I've solved this problem by excluting the "name" variable from the lm() function:

regression2 <- lm(income ~ . , data = df[, -1])
predict(object = regression2,
    data.frame(age = 22, workhours = 36))

Since I have many variables I intend to exclude from the regression, is there a way to solve this inside de predict() function?

Upvotes: 2

Views: 526

Answers (1)

akrun
akrun

Reputation: 887118

We may use update

> regression <- update(regression, . ~ .)
> predict(object = regression,
+     data.frame(age = 22, workhours = 36))
       1 
1714.859 

Upvotes: 4

Related Questions