【问题标题】:variable lengths differ (found for 'x')可变长度不同(为“x”找到)
【发布时间】:2016-01-05 03:32:37
【问题描述】:

我已经看到了几个这个错误的案例,但它们似乎都没有解决或适用于我的情况。

我正在使用biglm 构建逻辑回归模型。

我有一个包含约 250 个变量和超过一百万行的 data.frame。

由于bigglm() 不能使用点符号来选择模型中的所有变量,因此我正在构建我的公式,例如this

所以如果f 是我的公式,df 是我的数据框,那么我的模型如下所示:

fit <- bigglm(f, data = df, family=binomial(link="logit"), chunksize=100, maxit=10)

我得到了错误:variable lengths differ (found for 'x')

当我检查x 的长度时,它与df 的长度完全相同。

其他 StackOverflow 问题似乎表明公式的构建方式可能存在问题。或者可能是biglm?的问题

【问题讨论】:

  • 也许您可以编辑您的问题以添加公式?否则我们就没有什么可合作的了。
  • @BryanHanson,公式包含 250 个变量名。也许我可以添加它的缩短版本?我添加了我用来创建它的方法,希望它有助于理解它的外观。你有什么建议?
  • 嗯...所有变量的长度都相同吗?没有缺失值?这可能会导致您的错误。我想您可以通过对自变量进行二进制搜索来解决问题(即仅使用变量的前半部分,如果没有错误,请尝试使用第二半部分,然后将有问题的一半分成两部分进行测试,然后重复直到你找到了错误的变量)。
  • 我注意到了一些有趣的事情。 x 始终是公式 (x[1]) 中的第一个变量。如果我为 NULL x,则 x[2] 变为 x[1],因此如果有意义,则错误现在从另一个公式中显示 variable lengths differ (found for 'x') for x[2]。所有变量都具有相同的长度,数据帧中肯定有 NA,但这是一个问题吗?我不想删除所有包含 NA 的行,因为它们可能包含其他有价值的信息
  • 我刚刚安装了这个包,?bigglmNA 的处理方式非常神秘(你可以尝试传递na.omit = TRUE,它可能会失败并被底层函数接受)。此外,您可以尝试na.omit(your data frame) 并使用它,如果仅用于故障排除。否则,我不确定该尝试什么。

标签: r regression


【解决方案1】:

我能够通过对构建 bigglm() 公式的方式进行轻微修改来解决此问题

如我的问题中附加的链接所示,我正在构建这样的公式:

n <- names(df)
f <- as.formula(paste("y ~", paste(n[!n %in% "y"], collapse = " + ")))

f 缺少的是公式中每个变量名之前的df$。修改 as.formula() 函数以将 "df$" 连接到每个变量名称修复了此问题。

【讨论】:

  • 或者,您通常可以将data = df 添加到您的调用中,该函数将在df 中查找您的变量名称。不管怎样,你修好了!
  • 哦,我实际上有data = df 在那里。我的数据框名为data。我的错误,我将修改问题。但还是很奇怪,一开始这怎么行不通
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多