0

我有一个看起来(部分)像这样的模型: m = lm(log(y)~ID+x),这给了我以下错误:

Error in rep.int(c(1, numeric(n)), n - 1L) : 
  negative length vectors are not allowed

y是 500,000 长,ID是一个有 60,000 个级别的因子。500Kx60K >2^31,这是 R 的对象大小限制。

如果我升级到新的 R (3.0.1),这个问题会解决吗? 还是错误消息来自其他地方?(我并不完全清楚如何从我使用的 Ubuntu 13.04 升级 R。)

编辑:这个因素实际上并不是可以解释的。该因素类似于“固定效应”回归中的贬义。模型的其他组件 ( x) 是令人感兴趣的。问题是:在控制不可观察的时不变异质性的情况下,y 对 x 变化的反应是什么?数据集是一个面板。我应该补充一点,我没有使用plm,因为感兴趣的主要模型将是随机系数模型或广义加法模型。我不希望在手动消除含义后手动修复标准错误,并且我希望获得一个适合的模型对象以用于蒙特卡罗分析。

4

1 回答 1

0

要回答有限的问题,是的,该级别数小于向量大小的新限制,即数字类(64-位浮点)变量:

>  500000*60000 > 2^32
[1] TRUE
> 500000*60000 > 2^52
[1] FALSE

为了解决更大的问题。我怀疑升级会解决这个问题。这不是我所期望的由于索引过大而导致分配给向量时溢出的错误消息:

a <- numeric(10)
> a[ 2^56] <- 0
Error in a[2^56] <- 0 : vector is too large

...所以我猜你对错误来源的猜测是不正确的。您的模型中有日志,并且在记录变量后会得到负值。

于 2013-06-30T19:00:34.427 回答