Search code examples
revallm

Error in lm.fit(x,y,offset = offset, singular.ok,...) 0 non-NA cases with boxcox formula


I am trying to run a boxcox transformation with the following code:

urban1 <- subset(ski,urban <= 4,na.rm=TRUE)
ski$gender <- as.numeric((as.character(ski$gender)),na.rm=TRUE)
urban1 <- as.numeric((as.character(urban1)))
x <- (ski$gender*urban1)
y <- ski$EPSI.
bc <- boxcox(y ~ x) 
(trans <- bc$x[which.max(bc$y)]) 
model3 <- lm(y ~ x) 
model3new <- lm(y^trans ~ x)
ski$EPSI. <- ski$EPSI. + 1

But I keep getting this error:

Error in lm.fit(x,y,offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases Calls: ... eval -> eval -> boxcar -> boxcar.formula -> lm -> lm.fit Execution halted

Thanks in advance!


Solution

  • The error message

    lm.fit(x,y,offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases

    is generated by the lm(y ~ x) command when variables x or y (or both) have only NAs.
    Here is an example:

    n <- 10
    x <- rnorm(n,1)
    y <- rep(NA,n)
    lm(y ~ x)
    
    Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
      0 (non-NA) cases
    

    In your code I suggest to test (just before your lm commands) if one of your variables has all NAs using:

    all(is.na(x))
    all(is.na(y))
    all(is.na(y^trans))
    

    In my example:

    all(is.na(y))
    [1] TRUE