gpt4 book ai didi

r - 模型使用 glm 但不是 bigglm

转载 作者:行者123 更新时间:2023-12-04 11:08:52 31 4
gpt4 key购买 nike

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

使用 bigglm从 SQL 服务器逐块读取数据导致错误,我无法理解 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, ...)
bigglm能够以更少的交互项拟合更小的模型。但是 bigglm无法用小数据集(10000 行)拟合相同的模型。

有没有人遇到过这个问题?还有其他方法可以使用大数据运行复杂的逻辑模型吗?

最佳答案

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

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

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

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

关于r - 模型使用 glm 但不是 bigglm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24317418/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com