R 中的大型固定效应二项式回归

2023-12-26

我需要在一个相对较大的数据框架上运行逻辑回归,该数据框架包含 480.000 个条目和 3 个固定效应变量。固定效应 var A 有 3233 个级别,var B 有 2326 个级别,var C 有 811 个级别。所以总共我有 6370 个固定效果。数据是横截面数据。如果我无法使用正常运行此回归glm函数,因为回归矩阵对于我的记忆来说似乎太大了(我收到消息“Error: cannot allocate vector of size 22.9 Gb")。我正在寻找在我的 Macbook Air(OS X 10.9.5 8GB RAM)上运行此回归的替代方法。我还可以访问具有 16GB RAM 的服务器。

我尝试用几种不同的方式解决这个问题,但到目前为止都没有取得令人满意的结果:

lfe/felm: 使用 felm 回归函数lfe package http://cran.r-project.org/web/packages/lfe/lfe.pdf在运行回归之前减去固定效应。这非常有效,并允许我在短短几分钟内将上述回归作为正常的线性模型运行。然而,lfe不支持逻辑回归和glm。因此,felm 非常适合了解不同模型的模型拟合情况,但不适用于最终的逻辑回归模型。

比格勒姆: 我想过使用bigglm http://cran.r-project.org/web/packages/biglm/biglm.pdf将我的功能分解为更易于管理的块。然而,有几个来源(例如link1 https://stackoverflow.com/questions/10502882/r-biglm-with-categorical-variables, link2 https://stackoverflow.com/questions/24317418/model-run-with-glm-but-not-bigglm, link3 http://blog.revolutionanalytics.com/2014/05/quick-history-2-glms-r-and-large-data-sets.html)提到为了使其发挥作用,因子水平需要在块之间保持一致,即每个块必须至少包含每个因子变量的每个因子之一。因子 A 和 B 包含仅出现一次的级别,因此我无法将这些集合拆分为具有一致级别的不同块。如果我删除 10 个固定效应 A 的因子和 8 个 B 的因子(一个微小的变化),我将只剩下 4 个以上级别的因子,并且将我的数据分成 4 个块将使其更易于管理。然而,我仍然需要弄清楚如何对 df 进行排序,以确保我的 480.000 个条目被排序为 4 个块,其中 3 个因子中的每个因子的每个因子级别至少出现一次。

GLMMGS/GLMGS: The glmmgs http://cran.r-project.org/web/packages/glmmGS/glmmGS.pdf包中同名的函数执行固定效果减法,如下所示lfe使用“Gauss-Seidel”算法进行逻辑回归的包。不幸的是,该软件包已不再开发。作为 R 的新手,并且对统计没有深入的经验,我无法理解输出,也不知道如何以给我正常的“效果大小”、“模型拟合”、“的方式对其进行转换” glm 回归摘要提供的“显着性区间”指标。

我向该包的作者发送了一条消息。他们善意地回复如下:

该包不提供与 glm 对象格式相同的输出。然而,你 可以轻松计算大部分拟合统计量(标准误差 给定当前输出(在 CRAN 中) 版本,我相信当前的输出是估计的向量 系数和相关的标准误差向量;同样对于 协方差分量,但如果您 是没有随机效应的拟合模型)。只需要注意的是 用于计算标准误差的协方差矩阵是 与相关的精度矩阵的对角线块的逆 Gauss-Seidel 算法,因此他们倾向于低估 联合似然的标准误。我不维护 包不再长,我没有时间进入具体的 细节;该包背后的开创性理论可以在手册中引用的纸张 http://www.stat.missouri.edu/~guhasu/gauss_seidel.pdf,其他一切都需要解决 由您用笔和纸:)。

如果有人可以解释如何“轻松计算大部分拟合统计数据”,以便没有任何统计学教育的人可以理解它(可能是不可能的),或者提供 R 代码来显示如何完成此操作的示例,我会的多谢!

革命分析: 我在 Mac 上模拟 Windows 7 的虚拟机上安装了 Revolution Analytics Enterprise。该程序有一个函数叫做RxLogit针对大型逻辑回归进行了优化。使用RxLogit我得到的函数the error (Failed to allocate 326554568 bytes. Error in rxCall("RxLogit", params) : bad allocation),所以这个函数似乎也遇到了内存问题。但是,该软件使我能够在分布式计算集群上运行回归。因此,我可以通过在具有大量内存的集群上购买计算时间来“解决问题”。然而,我想知道革命分析程序是否提供了任何我不知道的公式或方法,可以让我做某种lfe-类似固定效应减法运算或bigglm-类似考虑因素的分块操作。

矩阵模型/glm4: 一个人建议我使用glm4的功能MatrixModels包与sparse = TRUE属性来加速计算。如果我运行一个glm4具有所有固定效应的回归我得到"Error in Cholesky(crossprod(from), LDL = FALSE) : internal_chm_factor: Cholesky factorization failed“错误。如果我仅使用固定效应变量 B 或 A 和 C 运行它,则计算有效并返回"glpModel"目的。与glmmGS自标准以来,我在将该输出转换为对我有意义的形式时遇到一些问题summary()方法似乎不起作用。

我很乐意就上述任何问题提供建议,或者也很乐意就在 R 中运行带有内存限制的多个大型固定效应的逻辑回归的完全不同的方法提供建议。


查看

glmmboot{glmmML}

http://cran.r-project.org/web/packages/glmmML/glmmML.pdf http://cran.r-project.org/web/packages/glmmML/glmmML.pdf

Brostrom 和 Holmberg 还提供了一份很好的文档(http://cran.r-project.org/web/packages/eha/vignettes/glmmML.pdf http://cran.r-project.org/web/packages/eha/vignettes/glmmML.pdf)

这是他们文档中的示例:

dat <- data.frame(y = rbinom(5000, size = 1, prob = 0.5),
               x = rnorm(5000), group = rep(1:1000, each = 5))
fit1 <- glm(y ~ factor(group) + x, data = dat, family = binomial)

require(glmmML)
fit2 <- glmmboot(y ~ x, cluster = group,data = dat)

计算时间差异“巨大”!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中的大型固定效应二项式回归 的相关文章

随机推荐

  • Fiddler 无法在任何版本的 Internet Explorer 中工作

    Fiddler 在 Firefox 中工作正常 但我无法让它在 Internet Explorer 中工作 我尝试卸载IE9 但它在IE8中也不起作用 我通常不会太在意 因为我在 Firefox 中工作 然而 我在 ie9 中读到 loca
  • 从 SQL Server 2005 中的日期时间减去分钟

    假设我有一个日期时间字段 其值为2000 01 01 08 30 00和一个持续时间字段 其值为00 15 意思是15分钟 如果我减去这两个 我应该得到2000 01 01 08 15 00 另外如果我想减去1 15 表示1小时15分钟 输
  • typescript,无法处理缺失属性的并集。 [tsserver 2339] 类型上不存在属性“数据”

    我有两个对象 一个有属性数据 另一个没有 const jsonWithNoData const jsonWithData data 1 2 3 采取联合后 我尝试执行类型缩小 const jsonWithNoData const jsonW
  • Ruby rubocop:如何冻结使用 splat 生成的数组常量

    我正在分配一个像这样的数组常量 NUMS 2 9 鲁博科普 说 C 冻结分配给常量的可变对象 数值 2 9 So I try NUMS 2 9 freeze 鲁博科普 说 C 冻结分配给常量的可变对象 NUMS 2 9 冻结 Tried N
  • 滚动到页面底部 100px 时,jQuery 加载内容,触发多个事件

    我希望当用户滚动并到达页面底部附近时加载更多内容 例如距底部约 100 像素 问题是每次您在页面的下部 100 像素中滚动时都会触发事件 所以这是一个明显的问题 由于显而易见的原因 不可能发生 所以我想知道如何才能做到最好 我已经在这里查看
  • 带有加密 JWT 访问令牌的 Spring Boot OAuth2

    在我的 Spring Boot 应用程序中 我使用授权 资源服务器配置了自己的 OAuth2 我已经实现了以下 JwtAccessTokenConverter Bean public JwtAccessTokenConverter acce
  • SwiftUI 应用程序的 NavigationView 中的 onAppear 和 onDisappear 是否按预期运行?

    我想知道 SwiftUI 我写这篇文章时是 Xcode 11 beta 6 中的 onAppear 和 onDisappear 行为是否对开发人员来说更有用 或者它只是一个问题而不是一个功能 现在 如果我们使用级联导航 正如您在我附加的示例
  • Postgres 默认按 id 排序 - worldship

    我需要设置 worldship 以从我们的 postgres 数据库之一中提取数据 我需要它 以便包按 id 排序 我无法 据我所知 让 worldship 发送 order by 子句 因此我需要将返回的记录默认为按 id 返回 第二点
  • 在 ionic vue 中创建持久更新通知

    一般来说 在手机上 至少在 Android 上 打开时钟应用程序并启动秒表 或计时器 后 当您最小化该应用程序 甚至关闭它时 通常会出现一条持续通知 其中包含当前秒表 计时器值不断更新 这是一个示例 GIF 演示了这一点 https gfy
  • 春季批次 |必须至少存在一个 JPA 元模型

    我正进入 状态java lang IllegalArgumentException At least one JPA metamodel must be present 尝试运行简单的 Spring Batch 应用程序时出错 相关代码和配
  • 使用 LifecycleCallbacks 时找不到该文件

    我有问题form validation in symfony2 就我而言 form gt isValid 命令结果为The file could not be found 即使我在填写表格时提供了文件 另外调试setFile函数于docum
  • 从 numpy 数组中随机选择

    我有两个相关的 numpy 数组 X and y 我需要选择n随机行来自X并将其存储在数组中 对应的y值并附加随机选择的点的索引 我有另一个数组index它存储了我不想采样的索引列表 我怎样才能做到这一点 样本数据 index 2 3 X
  • 如何在 VBA 中打印大型用户表单

    我在 VBA 中有一个大型用户表单 表单上已经有一个 打印 选项 可以打印一半的表单 请告诉我如何在两页内打印横向和整个表格 Thanks Userform PrintForm 方法不提供任何选项 另一方面 工作表提供了无数的选项 I wo
  • 定时器精度:c Clock( ) 与 WinAPI 的 QPC 或 timeGetTime( )

    我想表征软件计时器的准确性 我不太关心它的准确性 但确实需要知道准确性是多少 我研究了c函数clock 以及WinAPI的函数QPC和timeGetTime 我知道它们都依赖于硬件 我正在测量一个可能需要大约 5 10 秒的过程 我的要求很
  • 如何在 Linux 中避免通过本地堆栈进行路由

    我有以下环境 2 台主机 每台主机都有 2 个相互连接的以太网接口 如下图所示 1 2 host1 host2 3 4 我想编写客户端 服务器套接字工具 它将在 host1 上打开客户端和服务器套接字 我希望客户端通过接口 1 发
  • 在 XCode 5 中使用 iOS 5 模拟器?

    XCode 5 似乎仅附带 iOS 6 和 7 模拟器 有没有办法将 iOS 5 模拟器与 XCode 5 一起使用 如果您在 OS X v10 8 下使用 Xcode 5 那么如果您转到 首选项 gt 下载 您应该会在 组件 下看到可用的
  • 如何锁定文件

    我有一个write应该将数据安全写入文件的方法 The current file I am writing to FileOutputStream file null Synchronized version private void wr
  • 如何使用 Rspec 测试 Sinatra 中的辅助块?

    我正在编写一个 sinatra 应用程序并使用 rspec 和rack test 对其进行测试 如 sinatrarb com 上所述 到目前为止 一切都很棒 直到我将一些相当程序化的代码从我的域对象移到 西纳特拉的帮手 从那时起 我一直试
  • 使用 Firebase OAuth 保护 RESTful API?

    我在 iOS 和 Web 应用程序中使用 Firebase 来处理用户身份验证 我需要确保用户已登录 然后才能向我的 API 发出任何请求 我如何使用 Firebase 完成这样的事情 我正在考虑使用 Kong https getkong
  • R 中的大型固定效应二项式回归

    我需要在一个相对较大的数据框架上运行逻辑回归 该数据框架包含 480 000 个条目和 3 个固定效应变量 固定效应 var A 有 3233 个级别 var B 有 2326 个级别 var C 有 811 个级别 所以总共我有 6370