Ошибка в lm.fit (x, y, offset = offset, singular.ok,) 0 случаев без NA с формулой boxcox

Я пытаюсь запустить преобразование boxcox со следующим кодом:

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

Но я продолжаю получать эту ошибку:

Ошибка в lm.fit (x, y, offset = offset, singular.ok = singular.ok, ...): 0 (не NA) случаев Вызовы: ... eval -> eval -> boxcar -> boxcar. формула -> lm -> lm.fit Выполнение остановлено

Заранее спасибо!


person Vickie Ip    schedule 28.04.2017    source источник
comment
Вы уверены насчет 2-го ряда? Если в вашем коде отсутствует значение, вы заменяете свои данные неверными значениями. Могу я предложить вам преобразовать ваш код во вселенную tidyverse и особенно dplyr?   -  person YCR    schedule 28.04.2017


Ответы (2)


Сообщение об ошибке

lm.fit (x, y, offset = offset, singular.ok = singular.ok, ...): 0 (не-NA) случаев

генерируется командой lm(y ~ x), когда переменные x или y (или оба) имеют только NA.
Вот пример:

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

В вашем коде я предлагаю проверить (непосредственно перед вашими lm командами), есть ли у одной из ваших переменных все NA, использующие:

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

В моем примере:

all(is.na(y))
[1] TRUE
person Marco Sandri    schedule 28.04.2017
comment
Я получаю эту ошибку после удаления всех столбцов, которые полностью являются NA. Может быть дополнительная причина появления этой ошибки? - person Tom; 04.09.2018
comment
@TomKisters, пожалуйста, Том, не могли бы вы поделиться информацией о своей проблеме? - person Marco Sandri; 09.09.2018

Ошибка может быть вызвана Н / Д в ваших данных или неправильным преобразованием.

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

Обратите внимание на аргумент na.action=. Установка этого параметра в na.exclude позволит функции lm игнорировать NA в ваших данных. Другой вариант - na.omit, который действует немного иначе.

Другая проблема может заключаться в неправильном преобразовании ваших данных - дважды проверьте условия взаимодействия и манипуляции.

person ToastyDre    schedule 26.10.2018