it-swarm.com.de

Fehler in lm.fit (x, y, offset = offset, singular.ok, ...) Nicht-NA-Fälle mit Boxcox-Formel

Ich versuche, eine Boxcox-Transformation mit folgendem Code auszuführen:

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

Ich bekomme jedoch immer diesen Fehler:

Fehler in lm.fit (x, y, offset = offset, singular.ok = singular.ok, ...): 0 (Nicht-NA) -Fälle. Formel -> lm -> lm.fit Die Ausführung wurde angehalten

Danke im Voraus!

6
Vickie Ip

Die Fehlermeldung

lm.fit (x, y, offset = offset, singular.ok = singular.ok, ...): 0 (Nicht-NA-Fälle)

wird vom Befehl lm(y ~ x) generiert, wenn die Variablen x oder y (oder beide) nur NAs haben.
Hier ist ein Beispiel:

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 Ihrem Code empfehle ich (kurz vor Ihren lm-Befehlen) zu testen, ob eine Ihrer Variablen alle NAs enthält:

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

In meinem Beispiel:

all(is.na(y))
[1] TRUE
5
Marco Sandri

Der Fehler kann durch NA in Ihren Daten ausgelöst werden oder eine schlechte Transformation

#From the mtcars dataset
mpg.reg3 <- lm(mpg ~ cylinders + displacement + horsepower + weight + acceleration + year + Origin, data=Auto, na.action=na.exclude)

Beachten Sie das na.action=-Argument. Wenn Sie diese Einstellung auf na.exclude setzen, kann die lm-Funktion NA in Ihren Daten ignorieren. Eine andere Option ist na.omit, die etwas anders wirkt. 

Das andere Problem kann eine schlechte Transformation Ihrer Daten sein. Überprüfen Sie Ihre Interaktionsbedingungen und -manipulationen. 

1
ToastyDre