首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型运行于glm,而不是较大的

模型运行于glm,而不是较大的
EN

Stack Overflow用户
提问于 2014-06-19 22:45:59
回答 3查看 3.2K关注 0票数 8

我试图对32万行数据(6个变量)进行逻辑回归。对数据样本(10000)的逐步模型选择给出了一个具有5个交互项的相当复杂的模型:Y~X1+ X2*X3+ X2*X4+ X2*X5+ X3*X6+ X4*X5glm()函数可以用10000行数据来拟合这个模型,但不能与整个数据集(320,000)相匹配。

使用bigglm逐个从SQL server读取数据块会导致错误,我无法理解来自traceback()的结果

代码语言:javascript
复制
fit <- bigglm(Y~X1+ X2*X3+ X2*X4+ X2*X5+ X3*X6+ X4*X5, 
       data=sqlQuery(myconn,train_dat),family=binomial(link="logit"), 
       chunksize=1000, maxit=10)

Error in coef.bigqr(object$qr) : 
NA/NaN/Inf in foreign function call (arg 3)

> traceback()
11: .Fortran("regcf", as.integer(p), as.integer(p * p/2), bigQR$D, 
    bigQR$rbar, bigQR$thetab, bigQR$tol, beta = numeric(p), nreq = as.integer(nvar), 
    ier = integer(1), DUP = FALSE)
10: coef.bigqr(object$qr)
9: coef(object$qr)
8: coef.biglm(iwlm)
7: coef(iwlm)
6: bigglm.function(formula = formula, data = datafun, ...)
5: bigglm(formula = formula, data = datafun, ...)
4: bigglm(formula = formula, data = datafun, ...)

bigglm能够用较少的交互条件来拟合一个较小的模型。但是bigglm不能用一个小数据集(10000行)来适应相同的模型。

以前有人遇到过这个问题吗?还有其他方法来运行复杂的大数据物流模型吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-23 00:06:00

我遇到过很多次这个问题,它总是由这样一个事实引起的:由大的块处理的块没有包含一个分类(因子)变量中的所有级别。

较大的块按块处理数据,块的默认大小为5000。如果您的分类变量中有5个级别,例如(a,b,c,d,e)和第一个块(从1:5000开始),则只包含(a,b,c,d),但没有"e“,您将得到此错误。

您可以做的是增加“块大小”参数的大小和/或巧妙地重新排序数据帧,以便每个块包含所有级别。

希望这能帮上忙(至少有人)

票数 16
EN

Stack Overflow用户

发布于 2014-06-20 17:45:58

好的,我们找到了这个问题的原因:

对于交互术语中的一个类别,没有观察到。"glm“函数能够运行,并提供"NA”作为估计系数,但“大”不喜欢它。如果我放弃这个交互术语,"bigglm“就能够运行这个模型。

我将做更多的研究如何处理这种情况。

票数 4
EN

Stack Overflow用户

发布于 2014-06-20 15:09:03

我以前遇到过这个错误,以为是来自randomForest而不是biglm。原因可能是函数无法处理字符变量,因此需要将字符转换为因素。希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24317418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档