Analyses of heat requirement of species in a plant community

  • Data import & handling
  • Building the reference
  • Scaling of the evaluation data to an ecological-condition index

Data import & handling

We have three data sources for this indicator:

Heat_requirement indicator data
NiN generalized species lists for mountain ecosystems
ANO data
- geography
- locations
- species

ind_swe is a data frame with a range of species indicators for Swedish plant species. Literature reference:

Tyler, T., Herbertsson, L., Olofsson, J., & Olsson, P. A. (2021). Ecological indicator and traits values for Swedish vascular plants. Ecological Indicators, 120. doi:10.1016/j.ecolind.2020.106923

head(ind_swe)
##                            Scientific_name      Family Svenskt_namn
## 1                         Abies alba Mill.    Pinaceae   silvergran
## 2 Abies grandis (Douglas ex D. Don) Lindl.    Pinaceae     kustgran
## 3                        Acer campestre L. Sapindaceae    naverlönn
## 4                          Acer negundo L. Sapindaceae      asklönn
## 5                      Acer platanoides L. Sapindaceae    skogslönn
## 6                   Acer pseudoplatanus L. Sapindaceae     tysklönn
##   Dyntaxa_ID_number Establishment     Red.listed Time_of_immigration
## 1            222135      Resident Not Red-listed                   5
## 2            222138  Non-resident Not Red-listed                  NA
## 3                 5      Resident             CR                   0
## 4            223314  Non-resident Not Red-listed                  NA
## 5            223315      Resident Not Red-listed                   0
## 6            223316      Resident Not Red-listed                   3
##   Index_of_invasive_concern Biodiversity_relevance Nectar_production
## 1                        14                      5                 1
## 2                                                5                 1
## 3                         0                      6                 6
## 4                                                2                NA
## 5                         0                      5                 6
## 6                      14,2                      6                 5
##   Heat_requirement Cold_requirement Temp_optimum Continentality Light Moisture
## 1               10                3            5              3     2        5
## 2               10                4            6              4     3       NA
## 3               13                2            3              5     4        4
## 4               10                3            5              7    NA       NA
## 5                9                4            7              5     4        4
## 6               12                3            4              3     4        5
##   Soil_reaction_pH Nitrogen Phosphorus Salinity Grazing_mowing Soil_disturbance
## 1                5        5          3        1              1                1
## 2               NA        5          3        1              1                1
## 3                6        6          3        1              2                5
## 4               NA       NA          3        1              2               NA
## 5                6        5          3        1              2                5
## 6                6        7          3        1              3                3
##   Longevity Pollinator_dependence Phenology Extreme_phenology Seed_dormancy
## 1         4                    0b        NA                NA             4
## 2         4                    0b        NA                NA             4
## 3         4                    0c         6                 3             4
## 4         4                    0b        NA                NA             4
## 5         4                     2         5                 4             4
## 6         4                    0c         6                 3             4
##   Seed_bank Seed_disperser Nitrogen_fixation Photosynthetic_pathway Mycorrhiza
## 1        NA           AirW                 0                     C3         EM
## 2        NA           AirW                 0                     C3         EM
## 3         1           AirW                 0                     C3      AM/EM
## 4        NA           AirW                 0                     C3      AM/EM
## 5         1           AirW                 0                     C3      AM/EM
## 6         1           AirW                 0                     C3      AM/EM
##   Carnivory Parasitism
## 1         0          0
## 2         0          0
## 3         0          0
## 4         0          0
## 5         0          0
## 6         0          0

Eco_State.RData is an R-list containing the generalized species lists from NiN. References:

Halvorsen, R., Skarpaas, O., Bryn, A., Bratli, H., Erikstad, L., Simensen, T., & Lieungh, E. (2020). Towards a systematics of ecodiversity: The EcoSyst framework. Global Ecology and Biogeography, 29(11), 1887-1906. doi:10.1111/geb.13164

Halvorsen, R., Bryn, A., & Erikstad, L. (2015). NiNs systemkjerne – teori, prinsipper og inndelingskriterier. – Natur i Norge, Artikkel 1 (versjon 2.0.0)

str(Eco_State)

ANOpkt.geo is a data frame with geographical information for each ANO site and point

head(ANOpkt.geo)
##   X OBJECTID        SSBID   ANOID RSIZE ROW  COL  XCOOR   YCOOR ANONUM PakkeNr
## 1 1      818 2.094001e+13 ANO0003   500 402  283  94250 6559750      3       5
## 2 2      601 2.343501e+13 ANO0006   500 901 1326 343750 7081250      6       5
## 3 3      751 2.114501e+13 ANO0007   500 443  146 114750 6491250      7       5
## 4 4      381 2.213501e+13 ANO0010   500 641 1198 213750 7017250     10       5
## 5 5      463 2.048501e+13 ANO0016   500 311 1065  48750 6950750     16       5
## 6 6      777 2.327501e+13 ANO0019   500 869  636 327750 6736250     19       5
##   OvervÃ.kingsÃ.r CountyNr MunicNr            CountyName Region.x RegionNr
## 1            2019        9    4220        Aust-Agder nor        S        4
## 2            2019       50    5038        Trøndelag nor        C        2
## 3            2019        9    4202        Aust-Agder nor        S        4
## 4            2019       15    5061 Møre og Romsdal  nor        C        2
## 5            2019       15    1531 Møre og Romsdal  nor        C        2
## 6            2019        4    3419           Hedmark nor        E        5
##   Kommune_OLD  Kommune            Fylke   Region.y refs_blabar
## 1         938  BYGLAND       Aust-Agder Sørlandet        12.5
## 2        1721   VERDAL  Nord-Trøndelag Midt-Norge        12.5
## 3         904 GRIMSTAD       Aust-Agder Sørlandet        12.5
## 4        1567   RINDAL Møre_og_Romsdal Midt-Norge        12.5
## 5        1531     SULA Møre_og_Romsdal Midt-Norge        12.5
## 6         426 VÃ…LER_H          Hedmark Ã\230stlandet        12.5

ANOpkt is a data frame with ecological information for each ANO-point

head(ANOpkt)
##    Aar ObjectID                             GlobalID ANO_flate_ID ANO_punkt_ID
## 1 2020        4 56e42c9f-6aab-4ba9-a37d-ef6117ad8e59      ANO0073           11
## 2 2020        9 d5ebf2c3-e4e9-43a6-b619-fb1b46a2fbe7      ANO0902           13
## 3 2020        1 b89694ab-9a06-4648-9b7e-7ebd320c8adb      ANO0073           13
## 4 2020     3426 da365fa5-22a0-424f-88cf-2e880720021c      ANO0073           15
## 5 2020     2808 0075712b-88f2-4a96-b846-de635c5b8df0      ANO0073           22
## 6 2020        5 6cd049fb-1921-45a9-a0c9-88716b2ed0a7      ANO0073           24
##   Hovedoekosystem_orig Hovedoekosystem_rute Hovedoekosystem_sirkel
## 1             vaatmark             vaatmark               vaatmark
## 2                 skog                 skog                   skog
## 3                 skog                 skog                   skog
## 4   sterkt_endret_mark   sterkt_endret_mark     sterkt_endret_mark
## 5             vaatmark             vaatmark               vaatmark
## 6   sterkt_endret_mark   sterkt_endret_mark     sterkt_endret_mark
##   Andel_hovedoekosystem_sirkel Punktet_utilgjengelig Begrunnelse_utilgjengelig
## 1                          100                   nei                      <NA>
## 2                          100                   nei                      <NA>
## 3                          100                   nei                      <NA>
## 4                          100                   nei                      <NA>
## 5                          100                   nei                      <NA>
## 6                           75                   nei                      <NA>
##   Hovedtype_rute Hovedtype_rute_navn Kartleggingsenhet_rute Hovedtype_sirkel
## 1             V1                                     V1-C-2               V2
## 2             T4                                     T4-C-1               T4
## 3             T4                                     T4-C-1               T4
## 4            T41                                    T41-C-1              T41
## 5             V1                                     V1-C-1               V2
## 6            T40                                    T40-C-1              T45
##   Hovedtype_sirkel_navn Kartleggingsenhet_sirkel Andel_Kartleggingsenhet_sirkel
## 1                                         V2-C-2                             80
## 2                                         T4-C-1                            100
## 3                                         T4-C-1                            100
## 4                                        T41-C-1                             70
## 5                                         V2-C-1                             70
## 6                                        T45-C-3                             75
##   Groeftingsintensitet Aktuell_bruksintensitet Beitetrykk Slaatteintensitet
## 1                    1                       1         NA                 1
## 2                   NA                      NA          1                NA
## 3                   NA                      NA          1                NA
## 4                   NA                      NA         NA                NA
## 5                    3                       1         NA                 1
## 6                   NA                      NA         NA                NA
##   Spor_etter_ferdsel_med_tunge_kjoeretoey
## 1                                       0
## 2                                       0
## 3                                       0
## 4                                      NA
## 5                                       1
## 6                                      NA
##   Spor_etter_slitasje_og_slitasjebetinget_erosjon
## 1                                               1
## 2                                              NA
## 3                                              NA
## 4                                              NA
## 5                                               1
## 6                                              NA
##                                 Kommentar_NiN
## 1                                 20% myrkant
## 2                                        <NA>
## 3                                        <NA>
## 4 Det går en grusvei på sørsiden av sirkelen.
## 5                                        <NA>
## 6               Punkt ligger mellom to T45-C3
##                                                                                                                                                                                                                                                                                                                                           Arter_registrert
## 1 blåtopp_molinia_caerulea + slåttestarr_carex_nigra_nigra + torvmyrull_eriophorum_vaginatum + kornstarr_carex_panicea + pors_myrica_gale + tepperot_potentilla_erecta + skogstjerne_lysimachia_europaea + stortranebær_oxycoccus_palustris + hvitlyng_andromeda_polifolia + flekkmarihand_dactylorhiza_maculata_maculata + platanlønn_acer_pseudoplatanus
## 2                                                           blåbær_vaccinium_myrtillus + hårfrytle_luzula_pilosa + tepperot_potentilla_erecta + smyle_avenella_flexuosa + blåtopp_molinia_caerulea + linnea_linnaea_borealis + tyttebær_vaccinium_vitis-idaea + maiblom_maianthemum_bifolium + skogstjerne_lysimachia_europaea + hvitveis_anemone_nemorosa
## 3               blåbær_vaccinium_myrtillus + maiblom_maianthemum_bifolium + skogstjerne_lysimachia_europaea + tepperot_potentilla_erecta + stormarimjelle_melampyrum_pratense + hårfrytle_luzula_pilosa + linnea_linnaea_borealis + blåtopp_molinia_caerulea + slåttestarr_carex_nigra_nigra + fugletelg_gymnocarpium_dryopteris + smyle_avenella_flexuosa
## 4                                                                                                                                                                                                                                                                                                                                                     <NA>
## 5                                                                                                       sølvbunke_deschampsia_cespitosa_cespitosa + pors_myrica_gale + blokkebær_vaccinium_uliginosum + blåbær_vaccinium_myrtillus + tepperot_potentilla_erecta + skogstjerne_lysimachia_europaea + røsslyng_calluna_vulgaris + rome_narthecium_ossifragum
## 6                                                                                                                                                                                                                                                                                                                                                     <NA>
##   Arter_tilstede Dekning_karplanter_totalt Dekning_karplanter_feltsjikt
## 1              1                      63,2                         60.0
## 2              1                      31,1                         31.0
## 3              1                        65                         60.0
## 4             NA                      <NA>                           NA
## 5              1                      58,1                         58.1
## 6             NA                      <NA>                           NA
##   Dekning_moser Dekning_torvmoser Dekning_lav Dekning_stroe
## 1            90                95           0             8
## 2            60                 5           0            40
## 3            70                 0           0            30
## 4            NA                NA          NA            NA
## 5            75                 3           0            30
## 6            NA                NA          NA            NA
##   Dekning_bar_substrat Dekning_grov_ved Dekning_alger
## 1                    0               NA            NA
## 2                    0               NA            NA
## 3                    0               NA            NA
## 4                   NA               NA            NA
## 5                    0               NA            NA
## 6                   NA               NA            NA
##                                                Kommentar_ruten
## 1                                Platanlønn i ruta er juvenil.
## 2 Gren av gran henger over midtpunkt, dekker 70 % av ruten\n\n
## 3       Det ligger en sterkt nedbrutt stokk midt gjennom ruta.
## 4                                                         <NA>
## 5                                                Ligger på tue
## 6                                                         <NA>
##   Dekning_krypende_vier Dekning_ikke_krypende_vier Dekning_vedplanter_feltsjikt
## 1                     1                          0                           50
## 2                    NA                         NA                           80
## 3                    NA                         NA                           75
## 4                    NA                         NA                           NA
## 5                     0                          3                            5
## 6                    NA                         NA                           NA
##   Dekning_busk_busksjikt Dekning_traer_tresjikt Dekning_roesslyngskade
## 1                      4                     12                     NA
## 2                      4                     80                     NA
## 3                      1                     85                     NA
## 4                     NA                     NA                     NA
## 5                      8                     20                     NA
## 6                     NA                     NA                     NA
##   Dekning_problemarter Dekning_fremmedarter
## 1                   NA                    1
## 2                   NA                    0
## 3                   NA                    0
## 4                   NA                   NA
## 5                   NA                    0
## 6                   NA                   NA
##                          Kommentar_sirkel     CreationDate
## 1          7 cm platanlønn inne i ruta.\n 17.06.2020 09:20
## 2    Ei stor grøft i østlig del av sirkel 17.06.2020 09:40
## 3                     Hassel i busksjikt. 17.06.2020 08:08
## 4                                    <NA> 15.06.2020 15:00
## 5 Drenert myrflate, ligger litt på høgda. 23.09.2020 07:51
## 6                                    <NA> 17.06.2020 09:21
##                    Creator         EditDate                   Editor
## 1 oyvlyn_miljodirektoratet 31.08.2020 09:36 chrrep_miljodirektoratet
## 2 julmor_miljodirektoratet 17.06.2020 09:40 julmor_miljodirektoratet
## 3 heimyk_miljodirektoratet 17.06.2020 08:08 heimyk_miljodirektoratet
## 4 heimyk_miljodirektoratet 16.06.2020 08:53 heimyk_miljodirektoratet
## 5 chrrep_miljodirektoratet 23.09.2020 07:51 chrrep_miljodirektoratet
## 6 oyvlyn_miljodirektoratet 31.08.2020 09:36 chrrep_miljodirektoratet

sp is a data frame with plant species information (occurrence and abundance) for each ANO-point

head(sp)
##    Aar ObjectID                             GlobalID
## 1 2020        1 2c8884e3-192e-42bf-9627-f0f27b1f9135
## 2 2020        2 665f55e2-4efe-496b-a292-73101afd37c8
## 3 2020        3 d78897b8-b550-4cdf-9f9d-d0e9deb8def0
## 4 2020        4 c4342f5d-27c3-47ed-abde-5ad83ac78aea
## 5 2020        5 713f3335-311e-427d-83a3-6254e1627af4
## 6 2020        6 c839bbb5-def2-4452-9690-4728a7ab173d
##                                 Navn Dekning..
## 1         blåbær_vaccinium_myrtillus        27
## 2       maiblom_maianthemum_bifolium         3
## 3    skogstjerne_lysimachia_europaea         2
## 4         tepperot_potentilla_erecta         1
## 5 stormarimjelle_melampyrum_pratense         2
## 6            hårfrytle_luzula_pilosa         4
##                         ParentGlobalID     CreationDate
## 1 b89694ab-9a06-4648-9b7e-7ebd320c8adb 17.06.2020 08:08
## 2 b89694ab-9a06-4648-9b7e-7ebd320c8adb 17.06.2020 08:08
## 3 b89694ab-9a06-4648-9b7e-7ebd320c8adb 17.06.2020 08:08
## 4 b89694ab-9a06-4648-9b7e-7ebd320c8adb 17.06.2020 08:08
## 5 b89694ab-9a06-4648-9b7e-7ebd320c8adb 17.06.2020 08:08
## 6 b89694ab-9a06-4648-9b7e-7ebd320c8adb 17.06.2020 08:08
##                    Creator         EditDate                   Editor
## 1 heimyk_miljodirektoratet 17.06.2020 08:08 heimyk_miljodirektoratet
## 2 heimyk_miljodirektoratet 17.06.2020 08:08 heimyk_miljodirektoratet
## 3 heimyk_miljodirektoratet 17.06.2020 08:08 heimyk_miljodirektoratet
## 4 heimyk_miljodirektoratet 17.06.2020 08:08 heimyk_miljodirektoratet
## 5 heimyk_miljodirektoratet 17.06.2020 08:08 heimyk_miljodirektoratet
## 6 heimyk_miljodirektoratet 17.06.2020 08:08 heimyk_miljodirektoratet

After some merging and data wrangling we arrive at: (i) NiN species lists for mountains matched with Heat-requirement values (Note that the abundance values in the NiN species lists are maximum abundance). From here we can build the reference.

head(mount.dat.cov)
##                     sp T14-C1 T14-C2 T3-C3C6 T3-C9C12 T3-C2C5 T3-C8C11 T3-C1a
## 1 Abietinella abietina      0      0       0  0.03125       0    0.375      0
## 2     Acer platanoides      0      0       0  0.00000       0    0.000      0
## 3 Achillea millefolium      0      0       0  0.00000       0    0.000      0
## 4    Achillea ptarmica      0      0       0  0.00000       0    0.000      0
## 5      Acinos arvensis      0      0       0  0.00000       0    0.000      0
## 6  Aconitum lycoctonum      0      0       0  0.00000       0    0.000      0
##   T3-C1b T3-C4   T3-C7  T3-C10 T3-C13 T3-C14 T7-C1 T7-C2 T7-C3 T7-C6 T7-C8
## 1      0     0 0.03125 0.03125  0.000    0.0     0     0     0     0     0
## 2      0     0 0.00000 0.00000  0.000    0.0     0     0     0     0     0
## 3      0     0 0.00000 0.00000  0.000    0.0     0     0     0     0     0
## 4      0     0 0.00000 0.00000  0.000    0.0     0     0     0     0     0
## 5      0     0 0.00000 0.00000  0.000    0.0     0     0     0     0     0
## 6      0     0 0.03125 0.03125  0.125    0.8     0     0     0     0     0
##   T7-C12 T7-C13C14 T7-C4 T7-C7C9 T7-C5 T7-C10 T22-C1C3a T22-C1C3b T22-C2C4
## 1      0         0     0       0     0      0         0         0        0
## 2      0         0     0       0     0      0         0         0        0
## 3      0         0     0       0     0      0         0         0        0
## 4      0         0     0       0     0      0         0         0        0
## 5      0         0     0       0     0      0         0         0        0
## 6      0         0     0       0     0      0         0         0        0
##   Heat_requirement
## 1               NA
## 2                9
## 3                3
## 4                4
## 5               NA
## 6                3

…and at (ii) Species data from the ANO monitoring program matched with Heat-requirement values

head(sp)
##                         ParentGlobalID               Species  Aar ObjectID
## 1 0007ef7c-b13d-4950-b8ad-9fdadbea6311 Diphasiastrum alpinum 2021    15469
## 2 0007ef7c-b13d-4950-b8ad-9fdadbea6311         Festuca ovina 2021    15470
## 3 0007ef7c-b13d-4950-b8ad-9fdadbea6311     Hieracium alpinum 2021    15467
## 4 0007ef7c-b13d-4950-b8ad-9fdadbea6311   Vaccinium myrtillus 2021    15468
## 5 0007ef7c-b13d-4950-b8ad-9fdadbea6311     Avenella flexuosa 2021    15471
## 6 0007ef7c-b13d-4950-b8ad-9fdadbea6311 Anthoxanthum odoratum 2021    15472
##                               GlobalID                               Navn
## 1 6280b435-7ce5-43ba-a547-18cbdd97fa73   fjelljamne_diphasiastrum_alpinum
## 2 8652575b-66ab-4e8c-9677-6b075b7ec976          sauesvingel_festuca_ovina
## 3 0a62aa18-9f8b-430b-8e86-80a2dc87886f fjellsvever_hieracium_alpinum_agg.
## 4 fb262080-b939-4edb-b92a-092242f20265         blåbær_vaccinium_myrtillus
## 5 4e3fa791-d67f-4ea6-9cc1-413d9a52cd2c            smyle_avenella_flexuosa
## 6 f08119f7-7ed4-46fe-be7c-dea2f1d1fdc4       gulaks_anthoxanthum_odoratum
##   Dekning     CreationDate                  Creator         EditDate
## 1       4 15.08.2021 10:03 wenfje_miljodirektoratet 15.08.2021 10:03
## 2       1 15.08.2021 10:03 wenfje_miljodirektoratet 15.08.2021 10:03
## 3       3 15.08.2021 10:03 wenfje_miljodirektoratet 15.08.2021 10:03
## 4      26 15.08.2021 10:03 wenfje_miljodirektoratet 15.08.2021 10:03
## 5       7 15.08.2021 10:03 wenfje_miljodirektoratet 15.08.2021 10:03
## 6       3 15.08.2021 10:03 wenfje_miljodirektoratet 15.08.2021 10:03
##                     Editor Heat_requirement Hovedoekosystem_rute Hovedtype_rute
## 1 wenfje_miljodirektoratet               NA                fjell             T3
## 2 wenfje_miljodirektoratet                1                fjell             T3
## 3 wenfje_miljodirektoratet               NA                fjell             T3
## 4 wenfje_miljodirektoratet                3                fjell             T3
## 5 wenfje_miljodirektoratet                2                fjell             T3
## 6 wenfje_miljodirektoratet                8                fjell             T3
##   Kartleggingsenhet_rute
## 1                 T3-C-6
## 2                 T3-C-6
## 3                 T3-C-6
## 4                 T3-C-6
## 5                 T3-C-6
## 6                 T3-C-6

Building the reference (scaling values)

Concept for the reference

We can calculate cumulative cums of cover for all Heat-requirement levels starting with the highest level. Note that (i) it is maximum cover that is represented in the generalized species lists from NiN, and (ii) we use relative cover, i.e. every species’ cover is devided by the total cover of all species summed.

Here is an example illustrating how this cumulative distribution of cover from high to low heat requirement for one ecosystem type in NiN: T3-C4 is a leeside with intermediate access to lime (Intermediær leside)

Under climate warming we’d expect the plant community to show a shift in dominance structure, where the cover of species with higher heat requirement increases. This may be both due to a cover increase of certain alpine species with higher heat requirement or because of colonization by species having a higher heat requirement than what is represented in the reference condition for Alpine systems. Under this scenario, we should expect the cumulative sum of relative cover for higher heat requirement to at some point in time exceed the maximum value in the reference distribution.
Below comes the same plot as above, but now also including the cumulative cover for two ANO-points.

The green ANO-point seems to be better aligned with the reference (black), while the red ANO-points obviously have a larger cover of species with higher Heat-requirement.
All we need to do is now to define at which level of heat requirement the cumulative cover is to be compared between evaluation data and reference? In principal, this should be the heat requirement level before the cumulative curve in the reference reaches its steepest slope. Visual inspection of the plot suggests that to be the case at a Heat_requirement of 3 in the example.

We evaluate all NiN-types visually and create a table holding this information and with space for the scaling values which are to be defined further down.

Definition of scaling values

Next step is to define scaling values for scaling evaluation data to the ecological condition index based on the cumulative cover distributions for each NiN ecosystem type. For this, we bootstrap the NiN species lists, calculate the (relative) cumulative cover for all species at the heat requirement threshold and above in each bootstrap, and then derive limit and reference values from the resulting distribution of bootstraped cumulative cover values.

Bootstrap function

sp…the species names
abun…the species abundances for every ecosystem type
ind…the indicator value for each species
ind_level…the Heat_requirement threshold value for calculating summed cover
iter…number of iterations
obl…allows to specify if certain abundance levels (and above) are to be retained in every sample
rat…ratio of the number of species in the respective ecoystem type (i.e. defines sampling ratio in the bootstrap)

indBoot.HeatOverhang <- function(sp,abun,ind, ind_level,iter,obl,rat) {
  
  # data frame to hold the results
  heat.ind.b <- matrix(nrow=iter,ncol=length(colnames(abun)))
  colnames(heat.ind.b) <- colnames(abun)
  heat.ind.b <- as.data.frame(heat.ind.b)  
  
  # looping through the ecosystem types  
  for (j in 1:length(colnames(abun))) {
    
    # creating the species data for the respective ecosystem type
    dat <- cbind(sp,abun[,j],ind)
    dat <- dat[dat[,2]>0,]            # only species that are present in the ecoystem
    dat <- dat[!is.na(dat[,3]),]      # only species that have Heat requirement values
    dat <- as.data.frame(dat)
    
    # bootstrapping, can specify to always keep certain abundance classes (obl) and how many species to sample (rat)
    for (i in 1:iter) {
      
      speciesSample <- sample(dat$sp[dat[,2] < obl], size=round( (length(dat$sp)-length(dat$sp[dat[,2] >= (obl)])) *rat,0), replace=F)  
      dat.b <- rbind(dat[dat[,2] >= (obl),],
                     dat[match(speciesSample,dat$sp),]
      )
      dat.b[,2] <- as.numeric(dat.b[,2])
      dat.b[,3] <- as.numeric(dat.b[,3])
      colnames(dat.b)[2] <- 'abun'      
      
      # calculating the cumulative cover of species with a certain level of heat requirement and above
      if ( nrow(dat.b)>2 ) {
        
        dat.b[,2] <- dat.b[,2]/sum(dat.b[,2]) # scaling to total cover of 100%
        heat.ind.b[i,j] <- sum(dat.b[dat.b$ind>=ind_level[j],'abun'])
        
      } else {heat.ind.b[i,j] <- NA}
      
      #print(paste(i,"",j)) 
    }
    
  }
  return(heat.ind.b)
}

We run the bootstrap (here with 1000 iterations for now) Here, we keep the two highest abundance classes (4/5 & 1, argument ‘obl’), sampling 1/2 of the original list (argument ‘rat’)
Note that I tried different values for rat (from 1/3 to 4/5)…but the results hardly changed

heat.ind.b <- indBoot.HeatOverhang(sp=mount.dat.cov[,1],
                                   abun=mount.dat.cov[,2:28],
                                   ind=mount.dat.cov[,29],
                                   ind_level=heat.scal.tab.boot$ind_level[1:27],
                                   iter=1000,obl=4/5,rat=1/2)

Then we derive the limit and reference values from the bootstrapped distribution e.g. limit value = 95% percentile, reference value = median, maximum value = 1 (i.e. the cumulative cover already reaching 1 before reaching the heat requirement threshold)

for (i in 1:ncol(heat.ind.b) ) {
  
  tryCatch({
    
    # lim
    heat.scal.tab.boot[i,'lim'] <- quantile(heat.ind.b[,i],probs=0.95)
    # ref
    heat.scal.tab.boot[i,'ref'] <- quantile(heat.ind.b[,i],probs=0.5)
    
  }, error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
}
## ERROR : missing values and NaN's not allowed if 'na.rm' is FALSE
heat.scal.tab.boot
##        NiN ind_level        ref        lim maxmin
## 1  T14-C-1         3 0.15831135 0.30030030      1
## 2  T14-C-2         3 0.06884727 0.12862032      1
## 3   T3-C-3         3 0.26522267 0.43377343      1
## 4   T3-C-9         3 0.13037317 0.18855364      1
## 5   T3-C-2         3 0.39443378 0.48941665      1
## 6   T3-C-8         3 0.13993973 0.19545407      1
## 7   T3-C-1         3 0.43981004 0.51732287      1
## 8   T3-C-4         3 0.26931317 0.33944366      1
## 9   T3-C-7         3 0.21181336 0.25018713      1
## 10 T3-C-10         3 0.19472764 0.24466639      1
## 11 T3-C-13         4 0.07802325 0.13698888      1
## 12 T3-C-14         4 0.09707691 0.14871928      1
## 13  T7-C-1         3 0.05617978 0.10121457      1
## 14  T7-C-2         3 0.10717020 0.17774016      1
## 15  T7-C-3         3 0.13154984 0.19652962      1
## 16  T7-C-6         3 0.13147662 0.16069385      1
## 17  T7-C-8         3 0.04314448 0.09814613      1
## 18 T7-C-12         3 0.16153870 0.21407062      1
## 19 T7-C-13         3 0.05586470 0.08468067      1
## 20  T7-C-4         3 0.02427184 0.04512844      1
## 21  T7-C-7         3 0.02651353 0.07403773      1
## 22  T7-C-5         2 0.30769231 0.50000000      1
## 23 T7-C-10        NA         NA         NA      1
## 24 T22-C-1         3 0.11216354 0.22368421      1
## 25 T22-C-2         3 0.03784299 0.07559395      1
## 26  T3-C-6         3 0.26522267 0.43377343      1
## 27 T3-C-12         3 0.13037317 0.18855364      1
## 28  T3-C-5         3 0.39443378 0.48941665      1
## 29 T3-C-11         3 0.13993973 0.19545407      1
## 30 T7-C-14         3 0.05586470 0.08468067      1
## 31  T7-C-9         3 0.02651353 0.07403773      1
## 32 T22-C-3         3 0.11216354 0.22368421      1
## 33 T22-C-4         3 0.03784299 0.07559395      1

Scaling of the evaluation data to an ecological-condition index

We calculate the relative cumulative cover for species at and above the heat requirement threshold for the ANO data and evaluate these against their respective reference values (i.e. scaling according to reference value=1, limit value=0.6, and maximum value=0) This is just technical, so we don’t show the code.

Here’s the result

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##  0.0000  0.1531  0.3360  0.4396  0.6904  1.0000     107

And here’s the result as boxplots by main ecosystem types
T3 = mountain heat, leeside, & tundra (fjellhei, leeside & tundra)
T14 = ridge (rabbe)
T7 = snowbed (snøleie)
T22 = grassy mountain heath & tundra (fjellgrashei & grastundra)

## Joining, by = "Hovedtype_rute"
## Warning: Removed 107 rows containing non-finite values (stat_ydensity).
## Warning: Removed 107 rows containing non-finite values (stat_boxplot).
## Warning: position_dodge requires non-overlapping x intervals
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font family not
## found in Windows font database

## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font family not
## found in Windows font database

## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font family not
## found in Windows font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## font family not found in Windows font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database

Not quite unexpected it is the leesides that show the strongest signal. They are largely below the threshold value of 0.6, indicating a larger cover of species with higher Heat_requirement than expected for NiN-species-lists.

Klikk here to see the next step in the analysis, aggregation and standardization of the indicator data set.