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)案例

当变量 xy(或两者)只有 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 案例的主要内容,如果未能解决你的问题,请参考以下文章

线性回归训练数据的负R2

以字符为因变量的多元线性回归

盒子阴影——Box-shadow

如何使用R中的createFolds函数处理lm.fit(0个非na情况)中的错误

offset篇

如何在 SQL Server 2005 中使用 LIMIT [X] OFFSET [Y] [重复]