The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

An integrated co-occurrence matrix (incoma) representation

Jakub Nowosad

2023-11-28

This vignette explains what an integrated co-occurrence matrix (incoma) representation is and how to calculate it using the comat package. If you do not know what a co-occurrence matrix is, it could be worth to read the first package vignette first. This representation is inspired by the work of Vadivel et al. (2007) and explained in details in Nowosad and Stepinski (2021). The examples below assume the comat package is attached, and the raster_x and raster_y datasets are loaded:

library(comat)
data(raster_x, package = "comat")
data(raster_y, package = "comat")

The raster_x object is a matrix with three rows and columns with values of 1, 2, and 3.

raster_x
#>      [,1] [,2] [,3]
#> [1,]    1    1    3
#> [2,]    1    3    3
#> [3,]    2    2    3

We can imagine that the yellow color represents agriculture, green is forest, and orange color represents grassland.

The raster_y object is also a matrix of the same dimensions. It has values 5 and 6.

raster_y
#>      [,1] [,2] [,3]
#> [1,]    5    5    5
#> [2,]    6    6    5
#> [3,]    5    5    6

We can imagine that light yellow color represents flat plains and brown color represents mountains.

The integrated co-occurrence matrix (incoma) representation consists of co-occurrence matrices (coma) and co-located co-occurrence matrices (cocoma). In the co-occurrence matrix, we only use one matrix and count adjacent categories of each cell. The co-located co-occurrence matrix uses two matrices and counts neighbors in the second matrix for each cell in the first matrix.

We can use the get_incoma() function to calculate this integrated co-occurrence matrix (incoma) representation. It requires a list of two or more matrices of the same dimensions.

get_incoma(list(raster_x, raster_y))
#>   1 2 3 5 6
#> 1 4 1 3 5 3
#> 2 1 2 2 2 3
#> 3 3 2 6 8 3
#> 5 5 2 8 8 7
#> 6 3 3 3 7 2
#> attr(,"no_unique")
#> [1] 3 2

The incoma representation, for two matrices, consists of four sectors:

  1. A co-occurrence matrix for the first matrix. It is between the first and third column and the first and third row.
  2. A co-located co-occurrence matrix between the first matrix and the second matrix. It is between the first and third column and the third and fourth row.
  3. A co-located co-occurrence matrix between the second and the first matrix. It is between the fourth and fifth column and the third and fourth row.
  4. A co-occurrence matrix for the second matrix. It is between the fourth and fifth column and the fourth and fifth row.

For example, there are four times a cell of class 1 in the first matrix is adjacent to another cell of class 1 in the second matrix (agriculture next to agriculture). Also, five times agriculture is adjacent to flat plains, etc.

Similarly to the co-occurrence matrix (coma), it is possible to convert incoma to its 1D representation. This new form is called an integrated co-occurrence vector (incove), and can be created using the get_incove() function, which accepts an output of get_incoma():

my_incoma = get_incoma(list(raster_x, raster_y))
get_wecove(my_incoma, normalization = "pdf")
#>            [,1]       [,2]    [,3]       [,4]    [,5]       [,6]       [,7]
#> [1,] 0.04166667 0.01041667 0.03125 0.05208333 0.03125 0.01041667 0.02083333
#>            [,8]       [,9]   [,10]   [,11]      [,12]  [,13]      [,14]   [,15]
#> [1,] 0.02083333 0.02083333 0.03125 0.03125 0.02083333 0.0625 0.08333333 0.03125
#>           [,16]      [,17]      [,18]      [,19]      [,20]   [,21]   [,22]
#> [1,] 0.05208333 0.02083333 0.08333333 0.08333333 0.07291667 0.03125 0.03125
#>        [,23]      [,24]      [,25]
#> [1,] 0.03125 0.07291667 0.02083333

References

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.