lm.fit(x,y,offset = offset,singular.ok,...) 中的错误 0 个使用 boxcox 公式的非 NA 案例
Posted
技术标签:
【中文标题】lm.fit(x,y,offset = offset,singular.ok,...) 中的错误 0 个使用 boxcox 公式的非 NA 案例【英文标题】:Error in lm.fit(x,y,offset = offset, singular.ok,...) 0 non-NA cases with boxcox formula 【发布时间】:2017-09-26 10:24:18 【问题描述】:我正在尝试使用以下代码运行 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.formula -> lm -> lm.fit 执行停止
提前致谢!
【问题讨论】:
你确定第二行吗?如果代码中缺少值,则将数据替换为不正确的值。我可以建议你在tidyverse, and especially dplyr 宇宙中转换你的代码吗? 【参考方案1】:错误信息
lm.fit(x,y,offset = offset,singular.ok =singular.ok, ...) : 0 (非NA)案例
当变量 x
或 y
(或两者)只有 NA 时,由 lm(y ~ x)
命令生成。
这是一个例子:
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
【讨论】:
删除所有完全不适用的列后,我收到此错误。出现此错误是否还有其他原因? @TomKisters 请汤姆,你能分享更多关于你的问题的信息吗?【参考方案2】:错误可能由数据中的NA或错误的转换
触发#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
,它的行为方式略有不同。
另一个问题可能是您的数据转换不当 - 仔细检查您的交互条款和操作。
【讨论】:
以上是关于lm.fit(x,y,offset = offset,singular.ok,...) 中的错误 0 个使用 boxcox 公式的非 NA 案例的主要内容,如果未能解决你的问题,请参考以下文章