我正在尝试使用以下代码运行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 - &gt; eval - &gt; boxcar - &gt; boxcar.formula - &gt; lm - &gt; lm.fit执行暂停
提前致谢!
答案 0 :(得分:6)
错误消息
当变量lm.fit(x,y,offset = offset,singular.ok = singular.ok,...):0 (非NA)案件
$user->datChaned = date('Y-m-d H:i:s');
或lm(y ~ x)
(或两者)只有NA时,由x
命令生成。
这是一个例子:
y
在您的代码中,我建议您测试(在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
命令之前),如果您的某个变量中包含所有NAs:
lm
在我的例子中:
all(is.na(x))
all(is.na(y))
all(is.na(y^trans))
答案 1 :(得分:2)
错误可能由数据中的不适用或错误的转换
触发#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
,其作用方式略有不同。
另一个问题可能是您的数据转换不正确-请仔细检查您的交互条件和操作。