模型以glm运行但不是bigglm

ybe*_*ybe 6 r glm logistic-regression

我试图对320,000行数据(6个变量)进行逻辑回归.对数据样本(10000)的逐步模型选择给出了具有5个交互项的相当复杂的模型:Y~X1+ X2*X3+ X2*X4+ X2*X5+ X3*X6+ X4*X5.该glm()函数可以使该行模型具有10000行数据,但不适用于整个数据集(320,000).

使用bigglm由块从SQL Server导致错误读取数据块,而我不能让从结果的意义traceback():

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, ...)
Run Code Online (Sandbox Code Playgroud)

bigglm能够适应较小的模型,交互条件较少.但bigglm无法使用小型数据集(10000行)拟合相同的模型.

有没有人遇到过这个问题?使用大数据运行复杂物流模型的任何其他方法?

小智 12

我多次遇到这个问题,这总是由bigglm处理的块不包含分类(因子)变量中的所有级别的事实引起的.

bigglm通过块来处理数据,并且块的默认大小为5000.如果您的分类变量中有5个级别,例如(a,b,c,d,e)和第一个块(从1:5000) )只包含(a,b,c,d),但没有"e"你会得到这个错误.

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

希望这有帮助(至少有人)