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
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.
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.
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
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.