bigglm - 没有迭代,没有收敛

时间:2013-08-20 22:41:15

标签: r bigdata glm

我有一个问题。我在其他地方寻找答案,但无法解决我的问题。有人可以帮助我吗?

我有一个大约100万条记录的数据集,其中包含三个变量:N(数字),X(因子),E(数字)。变量X大约有100个级别。当我尝试运行相同的代码,但用另一个协变量Y(只有4个级别)替换X时,它的工作正常。也许它与变量X本身有关?例如,某些级别的X只有真正的低频率出现,而Y则不是这样。所以这是一个问题(因为bigglm将数据分成块,而不是每个块可能拥有所有级别的X)?< / p>

我的机器只有2 GB RAM。其中一个目标是在R中使用包,这样当在更大的数据集上再现代码时,它仍然有效。

如果您需要更多详细信息,请询问我,我会提供给他们。

str(数据)给出以下内容:

'data.frame'    :   967821 obs. of  13 variables:
 $ E            : num  0.6694 0.418 0.0546 0.1612 0.071 ...
 $ Y            : Factor w/ 4 levels "1","2","3","4": 1 1 3 2 1 1 1 1 1 4 ...
 $ ??           : Factor w/ 2 levels "??",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ ??           : Factor w/ 38 levels "??","??",..: 37 29 11 21 24 23 16 36 19 36 ...
 $ ??           : num  77 43 66 72 96 43 45 78 53 65 ...
 $ ??           : num  7.29 12.42 21.88 5.78 2.62 ...
 $ ??           : Factor w/ 1150 levels "1000","1020",..: 494 1003 456 183 163 1055 881 128 1019 1041 ...
 $ ??           : num  52.5 78 37.7 41.1 64.3 ...
 $ ??           : Factor w/ 31 levels "1","2","3","4",..: 22 11 3 3 11 2 11 11 3 2 ...
 $ ??           : num  34.2 48.9 12.2 19.8 44.3 ...
 $ N            : int  0 0 0 0 0 0 0 0 0 0 ...
 $ ??           : Factor w/ 2 levels "1","2": 1 1 1 2 1 2 2 1 1 1 ...
 $ X            : Factor w/ 89 levels "18","19","20",..: 36 61 21 24 47 36 48 67 17 18 ...

我的代码如下:

library(ffbase)
library(biglm)
data = as.ffdf(data)
regglm2=bigglm.ffdf(N~X+offset(log(E)),data=data, family=poisson(), maxit=100, chunksize=10000)

错误如下:

警告讯息: 在bigglm.function(formula = formula,data = datafun,...)中:   耗尽了迭代而未能收敛

1 个答案:

答案 0 :(得分:1)

两个问题,根据机器资源,其中任何一个都可以被视为答案:

1)您是否增加了控制列表中的迭代次数? maxit控制该值并默认为较小的数字。尝试增加到25

2)您确定需要bigglm吗?您是否仅使用glm进行了尝试?这不是一个非常大的对象。如果您使用的是4GB计算机,那么请确保在启动配置中使用最少的程序和Windoze内容(无论显示器的下边框上的那些小程序是否被调用),并且不要在其他程序中运行R.