最小最大归一化空间矩阵

min-max-normalized spatial matrix

我有一个 NT-by-NT 空间权重矩阵 W.

M <- structure(c(0, 0.758047801675275, 0.555288888514042, 0.209772803587839, 
+                  0.825744792120531, 0.520467817084864, 0, 0, 0, 0, 0, 0, 0.692437210353091, 
+                  0, 0.354484270326793, 0.80074916779995, 0.848316900897771, 0.695333346258849, 
+                  0, 0, 0, 0, 0, 0, 0.677255709888414, 0.873691915767267, 0, 0.708033675095066, 
+                  0.888929328881204, 0.467107815435156, 0, 0, 0, 0, 0, 0, 0.374244809383526, 
+                  0.926736373687163, 0.544780574040487, 0, 0.917211670428514, 0.621895979624242, 
+                  0, 0, 0, 0, 0, 0, 0.480277524562553, 0.635059213498607, 0.0919311880134046, 
+                  0.477121754549444, 0, 0.493061222601682, 0, 0, 0, 0, 0, 0, 0.314904219238088, 
+                  0.672063720179722, 0.145067517179996, 0.458456297870725, 0.218960420461372, 
+                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0798218175768852, 
+                  0.174890895141289, 0.392556173028424, 0.174170999322087, 0.298141353996471, 
+                  0, 0, 0, 0, 0, 0, 0.432126187486574, 0, 0.259547058260068, 0.951727145817131, 
+                  0.278473319951445, 0.815745891304687, 0, 0, 0, 0, 0, 0, 0.324105946579948, 
+                  0.222478206269443, 0, 0.93699982133694, 0.671706119552255, 0.864175561117008, 
+                  0, 0, 0, 0, 0, 0, 0.322997786104679, 0.347434559138492, 0.663829872850329, 
+                  0, 0.493878246517852, 0.648762248922139, 0, 0, 0, 0, 0, 0, 0.00411964254453778, 
+                  0.100459286244586, 0.411819625180215, 0.174726587720215, 0, 0.952555304858834, 
+                  0, 0, 0, 0, 0, 0, 0.7309863534756, 0.774238996906206, 0.356305604567751, 
+                  0.160813542082906, 0.486538449767977, 0), .Dim = c(12L, 12L), .Dimnames = list(
+                    c("id1t1", "id2t1", "id3t1", "id4t1", "id5t1", "id6t1", "id1t2", 
+                      "id2t2", "id3t2", "id4t2", "id5t2", "id6t2"), c("id1t1", 
+                                                                      "id2t1", "id3t1", "id4t1", "id5t1", "id6t1", "id1t2", "id2t2", 
+                                                                      "id3t2", "id4t2", "id5t2", "id6t2"))) 

矩阵看起来像这样

M
          id1t1     id2t1     id3t1     id4t1      id5t1     id6t1      id1t2     id2t2     id3t2     id4t2       id5t2     id6t2
id1t1 0.0000000 0.6924372 0.6772557 0.3742448 0.48027752 0.3149042 0.00000000 0.0000000 0.0000000 0.0000000 0.000000000 0.0000000
id2t1 0.7580478 0.0000000 0.8736919 0.9267364 0.63505921 0.6720637 0.00000000 0.0000000 0.0000000 0.0000000 0.000000000 0.0000000
id3t1 0.5552889 0.3544843 0.0000000 0.5447806 0.09193119 0.1450675 0.00000000 0.0000000 0.0000000 0.0000000 0.000000000 0.0000000
id4t1 0.2097728 0.8007492 0.7080337 0.0000000 0.47712175 0.4584563 0.00000000 0.0000000 0.0000000 0.0000000 0.000000000 0.0000000
id5t1 0.8257448 0.8483169 0.8889293 0.9172117 0.00000000 0.2189604 0.00000000 0.0000000 0.0000000 0.0000000 0.000000000 0.0000000
id6t1 0.5204678 0.6953333 0.4671078 0.6218960 0.49306122 0.0000000 0.00000000 0.0000000 0.0000000 0.0000000 0.000000000 0.0000000
id1t2 0.0000000 0.0000000 0.0000000 0.0000000 0.00000000 0.0000000 0.00000000 0.4321262 0.3241059 0.3229978 0.004119643 0.7309864
id2t2 0.0000000 0.0000000 0.0000000 0.0000000 0.00000000 0.0000000 0.07982182 0.0000000 0.2224782 0.3474346 0.100459286 0.7742390
id3t2 0.0000000 0.0000000 0.0000000 0.0000000 0.00000000 0.0000000 0.17489090 0.2595471 0.0000000 0.6638299 0.411819625 0.3563056
id4t2 0.0000000 0.0000000 0.0000000 0.0000000 0.00000000 0.0000000 0.39255617 0.9517271 0.9369998 0.0000000 0.174726588 0.1608135
id5t2 0.0000000 0.0000000 0.0000000 0.0000000 0.00000000 0.0000000 0.17417100 0.2784733 0.6717061 0.4938782 0.000000000 0.4865384
id6t2 0.0000000 0.0000000 0.0000000 0.0000000 0.00000000 0.0000000 0.29814135 0.8157459 0.8641756 0.6487622 0.952555305 0.0000000

其中相同 ids W (id1t1,id1t1) 之间的空间权重设置为 0(在对角线上)。

请注意,空间矩阵包括两个时间段:id1t1 到 id6t1 是时间 t=1 时对象之间的连接,而 id1t2 到 id1t2 表示时间 t=2 时对象之间的连接。

我的目标是创建一个 minmax-normalized 空间矩阵。

为此,我需要将矩阵的每个单元格除以 m,定义如下:

其中maxi(ri)是W的最大行和,maxi(ci)是W的最大列和。

有谁知道是否有执行此操作的程序包?否则有谁知道我如何手动执行此操作?

非常感谢您的帮助!

您可以使用 romSumscolSums:

min(max(rowSums(M)),max(colSums(M)))

[1] 3.615018

速度比较:

microbenchmark::microbenchmark(
  min(max(rowSums(M)),max(colSums(M))),
  fmin(c(fmax(dapply(M, fsum)), fmax(dapply(M, fsum, MARGIN = 1))))
)

Unit: microseconds
                                                              expr   min     lq    mean median     uq    max neval cld
                             min(max(rowSums(M)), max(colSums(M)))   6.4   7.15  12.567   8.05   9.20   90.4   100  a 
 fmin(c(fmax(dapply(M, fsum)), fmax(dapply(M, fsum, MARGIN = 1)))) 103.2 114.70 175.225 142.55 204.45 1499.5   100   b

我们可以使用collapse

library(collapse)
fmin(c(fmax(dapply(M, fsum)), fmax(dapply(M, fsum, MARGIN = 1))))
#[1] 3.615018