我有两个变量(y,x)的数据:80,000组的7年每周数据(364周)。我需要按组进行数据去均值,并对(y加上8个需要创建的虚拟变量)的x做回归。共有364*80,000*10,约30百万数据点。我“借用”了服务器上的帐户,发现回归需要至少144GB的内存。我通常无法访问此服务器,我的计算机只有24GB的RAM。
我想把回归分成8个部分,而不是inv(X'X)X'Y。 回归1使用前10,000组的数据。这给出X1'X1和X1'y1 回归2使用第10,001到20,000组的数据,给出X2'X2,X2'y2, 以此类推,其中X_j=x_j+群体_j的虚拟变量。
然后我的估计将是inv(X1'X1+..X8'X8)(X1y1+ ... X8y8)。
问题在于高效地读取数据来完成此操作。数据保存在csv文件中,但未按组织。我打算将整个数据集读入并将其转储到一个组织良好的新csv文件中。然后我每次读取10,000*360行,并重复8次。
我的问题是:
1. 有没有更有效的方法来进行这种回归? 2. 是否有一种方法可以跳过创建新的csv文件?如果我必须创建新的数据文件,那么第一个格式是什么?(从未使用过pytable或h5py,并且愿意考虑) 3. 如果我调整LASSO以执行OLS而不是正则化回归,scikit-learn是否比sm.OLS更有效?
非常感谢您提供建议。预先感谢您。
我想把回归分成8个部分,而不是inv(X'X)X'Y。 回归1使用前10,000组的数据。这给出X1'X1和X1'y1 回归2使用第10,001到20,000组的数据,给出X2'X2,X2'y2, 以此类推,其中X_j=x_j+群体_j的虚拟变量。
然后我的估计将是inv(X1'X1+..X8'X8)(X1y1+ ... X8y8)。
问题在于高效地读取数据来完成此操作。数据保存在csv文件中,但未按组织。我打算将整个数据集读入并将其转储到一个组织良好的新csv文件中。然后我每次读取10,000*360行,并重复8次。
我的问题是:
1. 有没有更有效的方法来进行这种回归? 2. 是否有一种方法可以跳过创建新的csv文件?如果我必须创建新的数据文件,那么第一个格式是什么?(从未使用过pytable或h5py,并且愿意考虑) 3. 如果我调整LASSO以执行OLS而不是正则化回归,scikit-learn是否比sm.OLS更有效?
非常感谢您提供建议。预先感谢您。