This is is an introductory presentation of the
somspace package, as implemented in the study of Markonis and Strnad , to detect spatial drought patterns in Europe.
In this study the Old World Drought Atlas [Cook et al., 2016] was used, as pre-processed by Markonis et al. . The file can be downloaded here, and is a
data.table object saved as an
.rds file. Alternatively, the
owda data object that is included in the package can be used, which covers only period 1500-2012.
First of all, we have to transform the raw data from
somin class. If the original data have different structure/type them it is important to transform them to a 4-column
data.table, containing time, lat, lon and the variable.
inp <- sominp(owda) #depending on data set size may take some time
somin class is a list with three elements. The first one,
input_for_som, is a
matrix that will be used by
kohonen::som function to generate the SOM. The second one,
coords, is a
data.table with the point ids and their coordinates. The last one,
input_dt is also a
data.table with the raw data that were used to generate
The generation of SOM is straightforward:
my_som <- somspa(inp)
Which creates a
somsp object that contains the som, the nodes properties and the original data.
somspa() uses the function
kohonen package it can also take
som() arguments. For instance, to create a 6 x 6 map after 1000 iterations:
my_som <- somspa(inp, grid = somgrid(6, 6), rlen = 1000)
somsp objects can be easily plotte by
plot() or summarized by
Additionaly, the average time series of specific SOMs can be plotted by
plot_ts(my_som, 12) plot_ts(my_som, c(1, 12, 21, 39)) plot_ts(my_som, 1:max(my_som$summary$node)) #plots all soms
To further reduce the number of regions with similar characteristics
somregs() is applied. It uses the
hclust() function for Hierarchical cluster analysis and its default arguments can be changed accordingly. Please not that the
n argument refers to the maximum number of regions and not to a single one.
somregs() will merge SOMs to similar regions starting from 2 and reachinh
n and will keep them all in the resulting
my_regions <- somregs(my_som, 12) my_regions <- somregs(my_som, 17, method = "ward.D2")
regs objects which are two-element lists. The
regions element contains the information about the regions and the
input_dt the time series of the original dataset. Similarly to
regs can be plot as maps or time series.
plot(my_regions, c(2, 5, 9, 13), 2, 2) plot_ts(my_regions, 2)
Finally, a specific classification of certain number of regions can be analysed through canonical networks and ploted as map with
cnet(). The threshold,
thres, refers to the cross-correlation coefficient between the averaged time series of each region; only values above
thres are considered to be network connections.
cnet(my_regions, 12, 0.3)