JoeP
JoeP

Reputation: 57

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

Trying to run a OLS regression model in R.

    data = read.csv("C:/.../VOLATILITY.csv")
    head(data)
       volt LfquantBS HfquantBS LfbankVOL HfbankMM HfnonbankMM HfindMM
    1 18.23       3.7       9.2       3.2      2.6        35.3     7.9
    2 16.09       4.1      11.4       3.2      2.7        35.3     8.2
    3 16.79       4.1      11.4       3.2      2.7        35.3     8.2
    4 17.01       4.1      11.4       3.2      2.7        35.3     8.2
    5 16.09       4.1      11.4       3.2      2.7        35.3     8.2
    6 19.66       6.2      10.5       4.2      1.8        30.7     8.6
    model <- lm(volt ~ lfquantBS + HfquantBs + LfbankVOL + HfbankMM + HfnonbankMM 
    + HfindMM)

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

Have done this before without any problem. Any help appreciated.

Upvotes: 1

Views: 2341

Answers (1)

akrun
akrun

Reputation: 887173

It should have the data because the columns volt, lfquantBS, etc. exist only within the frame of the data.frame object named 'data'. In addition, case is important. In the formula, there is lfquantBS while in the dataset, it is named as LfQuantBS

lm(volt ~ LfquantBS + HfquantBS + LfbankVOL + HfbankMM +
        HfnonbankMM + HfindMM, data = data)

-output

Call:
lm(formula = volt ~ LfquantBS + HfquantBS + LfbankVOL + HfbankMM + 
    HfnonbankMM + HfindMM, data = data)

Coefficients:
(Intercept)    LfquantBS    HfquantBS    LfbankVOL     HfbankMM  HfnonbankMM      HfindMM  
    23.2866       1.0846      -0.9858           NA           NA           NA           NA  

Regarding the comment Have done this before without any problem. It is possible that the OP may have attach(data) in the past to create those columns as objects in the global env or have created those as vector objects first before constructing the data.frame

data

data <- structure(list(volt = c(18.23, 16.09, 16.79, 17.01, 16.09, 19.66
), LfquantBS = c(3.7, 4.1, 4.1, 4.1, 4.1, 6.2), HfquantBS = c(9.2, 
11.4, 11.4, 11.4, 11.4, 10.5), LfbankVOL = c(3.2, 3.2, 3.2, 3.2, 
3.2, 4.2), HfbankMM = c(2.6, 2.7, 2.7, 2.7, 2.7, 1.8), HfnonbankMM = c(35.3, 
35.3, 35.3, 35.3, 35.3, 30.7), HfindMM = c(7.9, 8.2, 8.2, 8.2, 
8.2, 8.6)), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5", "6"))

Upvotes: 2

Related Questions