使用巨大的数据集执行空间回归而不会使计算机崩溃

问题描述 投票:0回答:1

我正在使用

spmodel
在 R 中运行空间回归(SAR:空间自回归)。我的数据集是一个由质心形成的
sf
对象。

该数据集有 100,781 个观测值,我为每个观测值创建了一个包含 3 个邻域的列表。

有了这些信息,我运行以下代码:

library( "spmodel" )

Model_splm <- splm( formula       =  variables, 
                    data          =  subset, 
                    listw         =  NbList, 
                    model         = "pooling",
                    lag           =  T,
                    spatial.error = "b",
                    parallel      =  T,
                    local         =  list( parallel = T )
                    ) 

如您所见,我使用并行处理来加速此回归的性能(我的计算机有 8 个核心和 16 个逻辑处理器)。但是,我无法执行此代码,因为我的计算机崩溃了。我只能在观察数约为 40'000 时运行此回归。

有人对如何在我的计算机中执行回归有建议吗?或者还有其他建议吗?这只是一个例子,但我需要运行多个空间回归,并且我一直在努力解决这个问题。

parallel-processing crash spatial-regression
1个回答
0
投票

Q1 :
“或者还有其他建议吗?”

嗯,

spmodel
作者的论文对计算复杂性的态度是残酷的开放,在未经整理的数据上天真的使用是相当令人望而却步的——明确警告
关于爆炸
指数
EXP-[ TIME?, SPACE? ]
立方二次
POLYNOMIAL-[ TIME?, SPACE? ]
限制了这个包的使用遇到:

对于所有估计方法,与模型拟合相关的计算成本在样本大小上呈指数级增长。对于最大似然和受限最大似然,估计 θ 的计算成本是三次方。对于半变异函数加权最小二乘和半变异函数复合似然,估计 θ 的计算成本是二次的。无论估计方法如何,与估计 β 和预测相关的计算成本在模型拟合样本大小中都是三次方。通常,样本规模接近 10,000 时,模型拟合和预测的计算成本变得不可行,这就需要使用大数据方法。 spmodel 提供大数据方法,通过

splm()
的局部参数对点参考数据进行模型拟合。该方法能够快速拟合具有数十万到数百万个观测值的模型。由于面域数据的邻域结构,用于点参考数据的大数据方法不适用于面域数据。因此,对于区域数据或
spautor()
的局部参数,没有大数据方法,因此模型拟合样本量不能太大。
spmodel
提供了通过
predict()
的局部参数来预测点参考数据或区域数据的大数据方法,能够快速预测数十万到数百万个观测值。

相当清晰和健全,不是吗?


Q2:“有人对如何在我的计算机中执行回归有建议吗?”

除了本文中已经提供的通过预集群等方法消除
EXP-[ TIME?, SPACE? ]

的一些技巧之外,您还可以尝试使用现代管理程序协调的超大规模计算结构并从中受益,例如 Isaac R. Nassi 博士发明的反向虚拟化计算基础设施,(尽管后台有所有技术)对于您的操作系统和 R 代码来说仍然看起来就像是一台“非常大”的 PC,具有几乎无限的 RAM 规模,几乎可以运行无限的 CPU 核心,由 Ike 的和蔼可亲的反向虚拟机管理程序(最近由(真正的)大数据(不仅仅是几十万点)大供应商获得的专利技术协调),因此应该可用于学术或类似的工作,以便在其上运行 PoC场所)。

正如作者警告的那样,用普通计算机做同样的事情似乎是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.