【问题标题】:min-max-normalized spatial matrix最小最大归一化空间矩阵
【发布时间】:2021-07-26 02:44:28
【问题描述】:

我有一个 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

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

注意,空间矩阵包括两个时间段:id1t1 到 id6t1 是时间 t=1 的受试者之间的连通性,而 id1t2 到 id1t2 表示时间 t=2 的受试者之间的连通性。

我的目标是创建一个最小最大归一化空间矩阵。

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

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

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

非常感谢您的帮助!

【问题讨论】:

  • 您需要考虑时间吗?

标签: r normalization spatial


【解决方案1】:

我们可以使用collapse

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

【讨论】:

    【解决方案2】:

    您可以使用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
    

    【讨论】:

      猜你喜欢
      • 2012-07-08
      • 2015-06-06
      • 2015-05-04
      • 1970-01-01
      • 2014-04-08
      • 2023-03-05
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多