The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.

Phytosociological analysis

For this example we’ll use a database of forestry inventories done in the amazon forest, and make a phytosociological analysis of the area.

library(forestmangr)
data(exfm20)
data_ex <- exfm20

data_ex
#> # A tibble: 12,295 × 18
#>   cod   transect  tree common.name scientific.name family   dbh canopy.pos light
#>   <fct> <fct>    <int> <fct>       <fct>           <fct>  <dbl> <fct>      <int>
#> 1 CAU_… T01          2 macucu      Licania guiane… Chrys…  10.3 S              2
#> 2 CAU_… T01          5 casca seca  Licania canesc… Chrys…  14.6 S              2
#> 3 CAU_… T01          6 cajuacu     Anacardium spr… Anaca…  78.8 E              1
#> 4 CAU_… T01          7 breu branco Protium panicu… Burse…  14.7 S              2
#> 5 CAU_… T01          9 breu branco Protium panicu… Burse…  10.6 E              3
#> 6 CAU_… T01         10 caramuxi    Pouteria hispi… Sapot…  27.1 C              2
#> # ℹ 12,289 more rows
#> # ℹ 9 more variables: dead <lgl>, Hcom <dbl>, Htot <dbl>, date <int>,
#> #   utm.east <dbl>, utm.north <dbl>, vol <dbl>, plot.area <int>,
#> #   total.area <int>

First we’ll calculate the diversity indexes of the area, with the species_diversity function. It just needs the data and column name for species:

species_diversity(data_ex, "scientific.name")
#> # A tibble: 1 × 5
#>   Shannon Simpson EqMaxima Pielou Jentsch
#>     <dbl>   <dbl>    <dbl>  <dbl>   <dbl>
#> 1     3.9    0.95     5.15   0.76    0.01

We can evaluate similarity between plots by the Jaccard index, using the similarity_matrix function:

similarity_matrix(data_ex, "scientific.name", "transect", index = "Jaccard")
#>       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
#>  [1,] 1.00 0.38 0.44 0.42 0.36 0.29 0.44 0.39 0.37  0.38  0.39  0.34  0.35
#>  [2,] 0.38 1.00 0.30 0.36 0.30 0.20 0.49 0.34 0.34  0.30  0.37  0.18  0.35
#>  [3,] 0.44 0.30 1.00 0.34 0.33 0.30 0.35 0.36 0.38  0.35  0.37  0.28  0.34
#>  [4,] 0.42 0.36 0.34 1.00 0.29 0.28 0.40 0.36 0.40  0.37  0.35  0.26  0.31
#>  [5,] 0.36 0.30 0.33 0.29 1.00 0.34 0.33 0.44 0.40  0.39  0.32  0.32  0.31
#>  [6,] 0.29 0.20 0.30 0.28 0.34 1.00 0.26 0.44 0.42  0.41  0.33  0.29  0.28
#>  [7,] 0.44 0.49 0.35 0.40 0.33 0.26 1.00 0.36 0.34  0.35  0.34  0.30  0.33
#>  [8,] 0.39 0.34 0.36 0.36 0.44 0.44 0.36 1.00 0.48  0.34  0.37  0.29  0.32
#>  [9,] 0.37 0.34 0.38 0.40 0.40 0.42 0.34 0.48 1.00  0.42  0.43  0.29  0.34
#> [10,] 0.38 0.30 0.35 0.37 0.39 0.41 0.35 0.34 0.42  1.00  0.36  0.26  0.31
#> [11,] 0.39 0.37 0.37 0.35 0.32 0.33 0.34 0.37 0.43  0.36  1.00  0.23  0.33
#> [12,] 0.34 0.18 0.28 0.26 0.32 0.29 0.30 0.29 0.29  0.26  0.23  1.00  0.35
#> [13,] 0.35 0.35 0.34 0.31 0.31 0.28 0.33 0.32 0.34  0.31  0.33  0.35  1.00
#> [14,] 0.32 0.23 0.33 0.31 0.32 0.41 0.24 0.41 0.33  0.32  0.30  0.39  0.35
#> [15,] 0.42 0.31 0.38 0.41 0.35 0.34 0.33 0.36 0.40  0.35  0.42  0.31  0.38
#> [16,] 0.22 0.28 0.31 0.29 0.35 0.34 0.33 0.40 0.30  0.31  0.30  0.26  0.31
#> [17,] 0.24 0.26 0.30 0.22 0.29 0.28 0.28 0.30 0.30  0.29  0.27  0.25  0.28
#> [18,] 0.28 0.25 0.32 0.29 0.29 0.34 0.27 0.36 0.36  0.33  0.25  0.31  0.29
#> [19,] 0.29 0.31 0.26 0.28 0.36 0.29 0.31 0.31 0.33  0.29  0.31  0.29  0.36
#> [20,] 0.26 0.24 0.29 0.29 0.30 0.31 0.23 0.37 0.35  0.26  0.39  0.24  0.38
#> [21,] 0.36 0.33 0.26 0.30 0.31 0.28 0.39 0.38 0.34  0.27  0.42  0.33  0.30
#> [22,] 0.28 0.31 0.27 0.32 0.31 0.32 0.33 0.40 0.38  0.35  0.28  0.29  0.27
#>       [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22]
#>  [1,]  0.32  0.42  0.22  0.24  0.28  0.29  0.26  0.36  0.28
#>  [2,]  0.23  0.31  0.28  0.26  0.25  0.31  0.24  0.33  0.31
#>  [3,]  0.33  0.38  0.31  0.30  0.32  0.26  0.29  0.26  0.27
#>  [4,]  0.31  0.41  0.29  0.22  0.29  0.28  0.29  0.30  0.32
#>  [5,]  0.32  0.35  0.35  0.29  0.29  0.36  0.30  0.31  0.31
#>  [6,]  0.41  0.34  0.34  0.28  0.34  0.29  0.31  0.28  0.32
#>  [7,]  0.24  0.33  0.33  0.28  0.27  0.31  0.23  0.39  0.33
#>  [8,]  0.41  0.36  0.40  0.30  0.36  0.31  0.37  0.38  0.40
#>  [9,]  0.33  0.40  0.30  0.30  0.36  0.33  0.35  0.34  0.38
#> [10,]  0.32  0.35  0.31  0.29  0.33  0.29  0.26  0.27  0.35
#> [11,]  0.30  0.42  0.30  0.27  0.25  0.31  0.39  0.42  0.28
#> [12,]  0.39  0.31  0.26  0.25  0.31  0.29  0.24  0.33  0.29
#> [13,]  0.35  0.38  0.31  0.28  0.29  0.36  0.38  0.30  0.27
#> [14,]  1.00  0.40  0.39  0.27  0.37  0.37  0.41  0.40  0.35
#> [15,]  0.40  1.00  0.32  0.32  0.36  0.34  0.40  0.37  0.27
#> [16,]  0.39  0.32  1.00  0.38  0.27  0.28  0.40  0.30  0.36
#> [17,]  0.27  0.32  0.38  1.00  0.30  0.26  0.31  0.26  0.28
#> [18,]  0.37  0.36  0.27  0.30  1.00  0.32  0.33  0.30  0.36
#> [19,]  0.37  0.34  0.28  0.26  0.32  1.00  0.35  0.41  0.34
#> [20,]  0.41  0.40  0.40  0.31  0.33  0.35  1.00  0.33  0.33
#> [21,]  0.40  0.37  0.30  0.26  0.30  0.41  0.33  1.00  0.28
#> [22,]  0.35  0.27  0.36  0.28  0.36  0.34  0.33  0.28  1.00

We can also generate a dendrogram for this analysis:

similarity_matrix(exfm20, "scientific.name", "transect", index = "Jaccard", dendrogram = TRUE, n_groups = 3)
#> $Dendrogram
#> $Dendrogram[[1]]

#> 
#> 
#> $Matrix
#>       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
#>  [1,] 1.00 0.38 0.44 0.42 0.36 0.29 0.44 0.39 0.37  0.38  0.39  0.34  0.35
#>  [2,] 0.38 1.00 0.30 0.36 0.30 0.20 0.49 0.34 0.34  0.30  0.37  0.18  0.35
#>  [3,] 0.44 0.30 1.00 0.34 0.33 0.30 0.35 0.36 0.38  0.35  0.37  0.28  0.34
#>  [4,] 0.42 0.36 0.34 1.00 0.29 0.28 0.40 0.36 0.40  0.37  0.35  0.26  0.31
#>  [5,] 0.36 0.30 0.33 0.29 1.00 0.34 0.33 0.44 0.40  0.39  0.32  0.32  0.31
#>  [6,] 0.29 0.20 0.30 0.28 0.34 1.00 0.26 0.44 0.42  0.41  0.33  0.29  0.28
#>  [7,] 0.44 0.49 0.35 0.40 0.33 0.26 1.00 0.36 0.34  0.35  0.34  0.30  0.33
#>  [8,] 0.39 0.34 0.36 0.36 0.44 0.44 0.36 1.00 0.48  0.34  0.37  0.29  0.32
#>  [9,] 0.37 0.34 0.38 0.40 0.40 0.42 0.34 0.48 1.00  0.42  0.43  0.29  0.34
#> [10,] 0.38 0.30 0.35 0.37 0.39 0.41 0.35 0.34 0.42  1.00  0.36  0.26  0.31
#> [11,] 0.39 0.37 0.37 0.35 0.32 0.33 0.34 0.37 0.43  0.36  1.00  0.23  0.33
#> [12,] 0.34 0.18 0.28 0.26 0.32 0.29 0.30 0.29 0.29  0.26  0.23  1.00  0.35
#> [13,] 0.35 0.35 0.34 0.31 0.31 0.28 0.33 0.32 0.34  0.31  0.33  0.35  1.00
#> [14,] 0.32 0.23 0.33 0.31 0.32 0.41 0.24 0.41 0.33  0.32  0.30  0.39  0.35
#> [15,] 0.42 0.31 0.38 0.41 0.35 0.34 0.33 0.36 0.40  0.35  0.42  0.31  0.38
#> [16,] 0.22 0.28 0.31 0.29 0.35 0.34 0.33 0.40 0.30  0.31  0.30  0.26  0.31
#> [17,] 0.24 0.26 0.30 0.22 0.29 0.28 0.28 0.30 0.30  0.29  0.27  0.25  0.28
#> [18,] 0.28 0.25 0.32 0.29 0.29 0.34 0.27 0.36 0.36  0.33  0.25  0.31  0.29
#> [19,] 0.29 0.31 0.26 0.28 0.36 0.29 0.31 0.31 0.33  0.29  0.31  0.29  0.36
#> [20,] 0.26 0.24 0.29 0.29 0.30 0.31 0.23 0.37 0.35  0.26  0.39  0.24  0.38
#> [21,] 0.36 0.33 0.26 0.30 0.31 0.28 0.39 0.38 0.34  0.27  0.42  0.33  0.30
#> [22,] 0.28 0.31 0.27 0.32 0.31 0.32 0.33 0.40 0.38  0.35  0.28  0.29  0.27
#>       [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22]
#>  [1,]  0.32  0.42  0.22  0.24  0.28  0.29  0.26  0.36  0.28
#>  [2,]  0.23  0.31  0.28  0.26  0.25  0.31  0.24  0.33  0.31
#>  [3,]  0.33  0.38  0.31  0.30  0.32  0.26  0.29  0.26  0.27
#>  [4,]  0.31  0.41  0.29  0.22  0.29  0.28  0.29  0.30  0.32
#>  [5,]  0.32  0.35  0.35  0.29  0.29  0.36  0.30  0.31  0.31
#>  [6,]  0.41  0.34  0.34  0.28  0.34  0.29  0.31  0.28  0.32
#>  [7,]  0.24  0.33  0.33  0.28  0.27  0.31  0.23  0.39  0.33
#>  [8,]  0.41  0.36  0.40  0.30  0.36  0.31  0.37  0.38  0.40
#>  [9,]  0.33  0.40  0.30  0.30  0.36  0.33  0.35  0.34  0.38
#> [10,]  0.32  0.35  0.31  0.29  0.33  0.29  0.26  0.27  0.35
#> [11,]  0.30  0.42  0.30  0.27  0.25  0.31  0.39  0.42  0.28
#> [12,]  0.39  0.31  0.26  0.25  0.31  0.29  0.24  0.33  0.29
#> [13,]  0.35  0.38  0.31  0.28  0.29  0.36  0.38  0.30  0.27
#> [14,]  1.00  0.40  0.39  0.27  0.37  0.37  0.41  0.40  0.35
#> [15,]  0.40  1.00  0.32  0.32  0.36  0.34  0.40  0.37  0.27
#> [16,]  0.39  0.32  1.00  0.38  0.27  0.28  0.40  0.30  0.36
#> [17,]  0.27  0.32  0.38  1.00  0.30  0.26  0.31  0.26  0.28
#> [18,]  0.37  0.36  0.27  0.30  1.00  0.32  0.33  0.30  0.36
#> [19,]  0.37  0.34  0.28  0.26  0.32  1.00  0.35  0.41  0.34
#> [20,]  0.41  0.40  0.40  0.31  0.33  0.35  1.00  0.33  0.33
#> [21,]  0.40  0.37  0.30  0.26  0.30  0.41  0.33  1.00  0.28
#> [22,]  0.35  0.27  0.36  0.28  0.36  0.34  0.33  0.28  1.00

To evaluate the level of aggregation among species in the area, we can use the species_aggreg function:

species_aggreg(data_ex, "scientific.name", "transect")
#> # A tibble: 172 × 7
#>   especie               Payandeh Pay.res    Hazen Haz.res       Morisita Mor.res
#>   <fct>                    <dbl> <chr>      <dbl> <chr>            <dbl> <chr>  
#> 1 Abarema cochleata          0.9 Regular      18  Not aggregat…      0   Rare   
#> 2 Abarema jupunba            0.9 Regular      19  Not aggregat…      0   Rare   
#> 3 Abuta grandifolia         16   Aggregated  337. Aggregated        11.9 Aggreg…
#> 4 Aiouea sp.                 9.5 Aggregated  200  Aggregated        10.4 Aggreg…
#> 5 Ambelania acida           10   Aggregated  210  Aggregated        22   Aggreg…
#> 6 Anacardium spruceanum      9.3 Aggregated  195. Aggregated         7.7 Aggreg…
#> # ℹ 166 more rows

We can also evaluate the horizontal structure of the forest. To do this, we can use the forest_structure function:

forest_structure(data_ex, "scientific.name", "dbh", "transect", 10000)
#> # A tibble: 172 × 9
#>   especie                  AF     RF    AD     DR       ADo    RDo    IVC    IVI
#>   <fct>                 <dbl>  <dbl> <dbl>  <dbl> <dbl[1d]> <dbl[>  <dbl>  <dbl>
#> 1 Abarema cochleata     18.2  0.392  0.182 0.0343   0.0359  0.137  0.0859 0.188 
#> 2 Abarema jupunba       13.6  0.294  0.136 0.0258   0.0302  0.116  0.0707 0.145 
#> 3 Abuta grandifolia      9.09 0.196  1.36  0.258    0.0162  0.0621 0.160  0.172 
#> 4 Aiouea sp.             9.09 0.196  0.909 0.172    0.0413  0.158  0.165  0.175 
#> 5 Ambelania acida        4.55 0.0979 0.454 0.0859   0.00379 0.0145 0.0502 0.0661
#> 6 Anacardium spruceanum 27.3  0.588  1.23  0.232    0.159   0.608  0.420  0.476 
#> # ℹ 166 more rows

It’s also possible to calculate the vertical and internal structures:

forest_structure(data_ex, "scientific.name", "dbh", "transect", 10000, "canopy.pos", "light") 
#> # A tibble: 172 × 19
#>   especie        AF     RF    AD     DR     ADo    RDo    IVC    IVI   VFC   VFE
#>   <fct>       <dbl>  <dbl> <dbl>  <dbl> <dbl[1> <dbl[>  <dbl>  <dbl> <dbl> <dbl>
#> 1 Abarema co… 18.2  0.392  0.182 0.0343 0.0359  0.137  0.0859 0.188   51.2   0  
#> 2 Abarema ju… 13.6  0.294  0.136 0.0258 0.0302  0.116  0.0707 0.145   25.6   0  
#> 3 Abuta gran…  9.09 0.196  1.36  0.258  0.0162  0.0621 0.160  0.172    0     0  
#> 4 Aiouea sp.   9.09 0.196  0.909 0.172  0.0413  0.158  0.165  0.175    0     0  
#> 5 Ambelania …  4.55 0.0979 0.454 0.0859 0.00379 0.0145 0.0502 0.0661   0     0  
#> 6 Anacardium… 27.3  0.588  1.23  0.232  0.159   0.608  0.420  0.476   38.4  13.4
#> # ℹ 166 more rows
#> # ℹ 8 more variables: VFS <dbl>, PSA <dbl>, PSR <dbl>, QF1 <dbl>, QF2 <dbl>,
#> #   QF3 <dbl>, QAF <dbl>, QRF <dbl>

To check if the forest is regulated, we can use the BDq method, with the bdq_meyer function:

bdq_meyer(data_ex, "transect", "dbh", 1000,licourt_index = 2)
#>    Class_Center NumIndv IndvHectare Meyer   q MeyerBalan
#> 1          12.5    4730      2150.0   564 1.8       5101
#> 2          17.5    2700      1227.3   434 1.5       2550
#> 3          22.5    1840       836.4   335 2.0       1275
#> 4          27.5     930       422.7   258 1.4        638
#> 5          32.5     670       304.5   199 1.8        319
#> 6          37.5     369       167.7   153 1.3        159
#> 7          42.5     291       132.3   118 1.4         80
#> 8          47.5     208        94.5    91 1.2         40
#> 9          52.5     180        81.8    70 1.6         20
#> 10         57.5     116        52.7    54 1.9         10
#> 11         62.5      60        27.3    42 1.2          5
#> 12         67.5      49        22.3    32 1.2          2
#> 13         72.5      40        18.2    25 1.9          1
#> 14         77.5      21         9.5    19 0.7          1
#> 15         82.5      29        13.2    15 1.5          0
#> 16         87.5      20         9.1    11 1.5          0
#> 17         92.5      13         5.9     9 1.6          0
#> 18         97.5       8         3.6     7 2.6          0
#> 19        102.5       3         1.4     5 0.8          0
#> 20        107.5       4         1.8     4 1.3          0
#> 21        112.5       3         1.4     3 2.8          0
#> 22        117.5       1         0.5     2 0.4          0
#> 23        122.5       3         1.4     2 2.8          0
#> 24        127.5       1         0.5     1 1.0          0
#> 25        142.5       1         0.5     1 1.0          0
#> 26        147.5       1         0.5     0 0.6          0
#> 27        152.5       2         0.9     0 1.8          0
#> 28        162.5       1         0.5     0 1.0          0
#> 29        202.5       1         0.5     0  NA          0

With the diameter_class function it’s possible to divide the data in diameter classes, and get the number of individuals per species in each class:

classified <- diameter_class(data_ex,"dbh", "transect", 10000, 10, 10, "scientific.name") 

head(classified)
#>         scientific.name CC NumIndv IndvHA          G        G_ha       RD
#> 1     Abuta grandifolia 15      30    1.4 0.35676712 0.016216687 100.0000
#> 2            Aiouea sp. 15      10    0.5 0.09331316 0.004241507  50.0000
#> 3       Ambelania acida 15      10    0.5 0.08332289 0.003787404 100.0000
#> 4 Anacardium spruceanum 15      10    0.5 0.27171635 0.012350743  37.0370
#> 5       Aniba canelilla 15      10    0.5 0.08332289 0.003787404  90.9091
#> 6      Aniba parviflora 15      10    0.5 0.10568318 0.004803781 100.0000

Another way of visualizing this table is to spread the center of class to columns. We can do this with the cc_to_column argument:

classified <- diameter_class(data_ex,"dbh", "transect", 10000, 10, 10,
               "scientific.name", cc_to_column=TRUE)
head(classified)
#>         scientific.name  15  25  35  45  55  65  75 85 95 105 115 125 145 155
#> 1     Abarema cochleata             0.1 0.1                                  
#> 2       Abarema jupunba                 0.1                                  
#> 3     Abuta grandifolia 1.4                                                  
#> 4            Aiouea sp. 0.5     0.5                                          
#> 5       Ambelania acida 0.5                                                  
#> 6 Anacardium spruceanum 0.5 0.5             0.1 0.1                          
#>   165 205 Total
#> 1           0.2
#> 2           0.1
#> 3           1.4
#> 4             1
#> 5           0.5
#> 6           1.2

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.
Health stats visible at Monitor.