我在具有64位操作系统和7.8 GB RAM的PC上使用spdep软件包的errorsarlm()函数。我的管理员分配的配额是12 GB。
输入我的errorsarlm()是:
1)非对称权重矩阵,从.gwt(通过nb2listw函数; 1.7 mb)转换而来。它是85684个区域(观测数量)的k = 4最近邻矩阵:
Characteristics of weights list object:
Neighbour list object:
Number of regions: 85684
Number of nonzero links: 342736
Percentage nonzero weights: 0.004668316
Average number of links: 4
Non-symmetric neighbours list
Link number distribution:
4
85684
Weights style: W
Weights constants summary:
n nn S0 S1 S2
W 85684 7341747856 85684 34664.44 377277.6
Characteristics of weights list object:
2)一个246.3 mb的CSV数据集,我在errorsarlm()模型中使用了80个变量。每个变量有85684个观测值。
当我根据80个变量运行简单的线性回归(lm)时,我没有问题。但是,当我使用默认参数运行errorsalm模型时,我立即得到以下消息:
'Error in matrix(0, nrow = n, ncol = n) : too many elements specified'
traceback()告诉我:
6: matrix(0, nrow = n, ncol = n)
5: listw2mat(listw)
4: eigenw(get("listw", envir = env))
3: eigen_setup(env, which = which)
2: jacobianSetup(method, env, con, pre_eig = con$pre_eig, trs = trs,
interval = interval)
1: errorsarlm(Lnp_N ~ Lnlivings_ + Yearofcon_ + Garden + Lnkirche_N +
Station_N + Bus_N + LnschuleA_ + Lnind200_N + Dem_N + Slope_N +
Aspect_N + Income_N + InhaHa_N + Lnlake_N + Lnriver_N + Riversize5 +
Riversize6 + Riversize7 + Riversize8 + Riversize9 + Riversize1 +
Greensp_N + Lnpark_N + Lnhighw_N + Lnbadi_N + LakeNat + LakeAlt_N +
LakeArea_N + Zh + Be + Lu + Ur + Sz + Ow + Nw + Gl + Zg +
Fr + So + Bs + Bl + Sh + Ar + Ai + Sg + Gr + Ag + Ti + Vd +
Vs + Ne + Ju + Tg + Q052 + Q053 + Q054 + Q061 + Q062 + Q063 +
Q064 + Q071 + Q072 + Q073 + Q074 + Q081 + Q082 + Q083 + Q084 +
Q091 + Q092 + Q093 + Q094 + Q101 + Q102 + Q103 + Q104, heddata,
w4n)
使用read.gwt2nb从.gwt转换的矩阵nb对象的sum(card())的矩阵密度检查告诉我:
[1] 342736
由于错误消息的即时出现,内存使用量不会增加。是否有某种spdep允许的最大矩阵大小,我已经超过了?还是有不同的解释?
当我在我的errorsarlm()中包含method="LU"
和method "MC"
时,模型运行正常并给出结果。
希望有人可以帮助我理解这一点。
感谢,
黛安娜