Title: | Forest Health Evaluation System at the Forest Stand Level |
---|---|
Description: | Assessing forest ecosystem health is an effective way for forest resource management.The national forest health evaluation system at the forest stand level using analytic hierarchy process, has a high application value and practical significance. The package can effectively and easily realize the total assessment process, and help foresters to further assess and management forest resources. |
Authors: | Zongzheng Chai [aut, cre] |
Maintainer: | Zongzheng Chai <[email protected]> |
License: | GPL-2 |
Version: | 2.0.1 |
Built: | 2024-11-18 02:51:47 UTC |
Source: | https://github.com/cran/forestHES |
Assessing forest ecosystem health is an effective way for forest resource management.Zhang & Lei (2014) proposed and developed a national forest health evaluation system at the forest stand level using analytic hierarchy process (AHP), has a high application value and practical significance.The R packge concentrates on to relize the calculation of the national forest health evaluation system.
Zongzheng Chai,[email protected]
Zhang HR, and Lei XD. 2014. Health management techniques for typical forest types. Beijing: Publishing house of forestry, China.
##forest health evaluation for singel sample plot tree.singlefhes<-fhes(c1=0.67,c2=1.89,c3=2.04,c4=4,c5=2.04,c6=1,c7=0.3, c8=3.4839,c9=0.75,c10=0.15,c11=0,c12=0.75,c13=0.35, c14=2500,c15=53,c16=1.56,c17=5.49,c18=34.03,c19=2.05, c20=21.38,c21=91.67) tree.singlefhes ##Assigned the threshold of some variables, according to specific ##realistic condition or research contents tree.spefhes<-fhes(c1=0.67,c2=1.89,c3=2.04,c4=4,c5=2.04,c6=1,c7=0.3, c8=3.4839,c9=0.75,c10=0.15,c11=0,c12=0.75,c13=0.35, c14=2500,c15=53,c16=1.56,c17=5.49,c18=34.03,c19=2.05, c20=21.38,c21=91.67, L_18=15,U_18=90,L_19=2,U_19=14, L_20=8,U_20=40,L_21=60,U_21=120) tree.spefhes ##forest health evaluation for multiple sample plot tree.multiplefhes<-fhes(c1=c(0.67,0,0.68),c2=c(1.89,1.33,1.79),c3=c(2.04,1.91,2.19), c4=c(4,3,4),c5=c(2.04,1.47,2.19),c6=c(1,0,1),c7=c(0.3,0.95,0.9), c8=c(3.4839,3.1579,5.9231),c9=c(0.75,0,0.3),c10=c(0.15,0,0.09), c11=c(0,0,0),c12=c(0.75,0.07,0.84),c13=c(0.35,0.11,0.84), c14=c(833.33,833.33,2500),c15=c(53,59,43),c16=c(1.28,1.56,1.33), c17=c(5.49,5.91,5.27),c18=c(38.32,34.03,25.37),c19=c(2.05,1.04,1.27), c20=c(21.38,34.66,14.19),c21=c(86.67,80,91.67)) tree.multiplefhes ##More regulare method of forest health evaluation for multiple sample plot data(testIndex) tree.fhes<-fhes(c1=testIndex$C1,c2=testIndex$C2,c3=testIndex$C3,c4=testIndex$C4, c5=testIndex$C5,c6=testIndex$C6,c7=testIndex$C7,c8=testIndex$C8, c9=testIndex$C9,c10=testIndex$C10,c11=testIndex$C11,c12=testIndex$C12, c13=testIndex$C13,c14=testIndex$C14,c15=testIndex$C15,c16=testIndex$C16, c17=testIndex$C17,c18=testIndex$C18,c19=testIndex$C19,c20=testIndex$C20, c21=testIndex$C21) tree.fhes pie(table(tree.fhes$evaluation$grade))
##forest health evaluation for singel sample plot tree.singlefhes<-fhes(c1=0.67,c2=1.89,c3=2.04,c4=4,c5=2.04,c6=1,c7=0.3, c8=3.4839,c9=0.75,c10=0.15,c11=0,c12=0.75,c13=0.35, c14=2500,c15=53,c16=1.56,c17=5.49,c18=34.03,c19=2.05, c20=21.38,c21=91.67) tree.singlefhes ##Assigned the threshold of some variables, according to specific ##realistic condition or research contents tree.spefhes<-fhes(c1=0.67,c2=1.89,c3=2.04,c4=4,c5=2.04,c6=1,c7=0.3, c8=3.4839,c9=0.75,c10=0.15,c11=0,c12=0.75,c13=0.35, c14=2500,c15=53,c16=1.56,c17=5.49,c18=34.03,c19=2.05, c20=21.38,c21=91.67, L_18=15,U_18=90,L_19=2,U_19=14, L_20=8,U_20=40,L_21=60,U_21=120) tree.spefhes ##forest health evaluation for multiple sample plot tree.multiplefhes<-fhes(c1=c(0.67,0,0.68),c2=c(1.89,1.33,1.79),c3=c(2.04,1.91,2.19), c4=c(4,3,4),c5=c(2.04,1.47,2.19),c6=c(1,0,1),c7=c(0.3,0.95,0.9), c8=c(3.4839,3.1579,5.9231),c9=c(0.75,0,0.3),c10=c(0.15,0,0.09), c11=c(0,0,0),c12=c(0.75,0.07,0.84),c13=c(0.35,0.11,0.84), c14=c(833.33,833.33,2500),c15=c(53,59,43),c16=c(1.28,1.56,1.33), c17=c(5.49,5.91,5.27),c18=c(38.32,34.03,25.37),c19=c(2.05,1.04,1.27), c20=c(21.38,34.66,14.19),c21=c(86.67,80,91.67)) tree.multiplefhes ##More regulare method of forest health evaluation for multiple sample plot data(testIndex) tree.fhes<-fhes(c1=testIndex$C1,c2=testIndex$C2,c3=testIndex$C3,c4=testIndex$C4, c5=testIndex$C5,c6=testIndex$C6,c7=testIndex$C7,c8=testIndex$C8, c9=testIndex$C9,c10=testIndex$C10,c11=testIndex$C11,c12=testIndex$C12, c13=testIndex$C13,c14=testIndex$C14,c15=testIndex$C15,c16=testIndex$C16, c17=testIndex$C17,c18=testIndex$C18,c19=testIndex$C19,c20=testIndex$C20, c21=testIndex$C21) tree.fhes pie(table(tree.fhes$evaluation$grade))
Environmental factors of pine-oak codominant mixed forests in the Qinling Mountains
data("envdata")
data("envdata")
A data frame with 20 observations on the following 16 variables.
plot.id
Identification number of sample plots
Ele
Elevation
SLP
Slope position
Asp
Slope aspect
SLG
Slope gradient
TN
Total nitrogen
TP
Total phosphorus
TK
Total potassium
OM
Organic matter
pH
pH value
AN
Available nitrogen
AP
Available phosphorus
AK
Available potassium
BA
Base area
AD
Average tree DBH
AH
Average tree height
Twenty 20*20 m plots were established for the pine-oak codominant mixed forests within the Qinling National Forest Ecosystem Research Station (Huoditang forest)
Chai ZZ, Wang DX. 2016. Environmental influences on the successful regeneration of pine-oak mixed forests in the Qinling Mountains, China. Scandinavian Journal of Forest Research,31(4):368-381.DOI:10.1080/02827581.2015.1062912
data(envdata) envdata
data(envdata) envdata
Zhang & Lei (2014) proposed and developed a national forest health evaluation system at the forest stand level using analytic hierarchy process (AHP), has a high application value and practical significance.
fhes(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, L_8 = 3.2, U_8 = 6.4, L_15 = 30, U_15 = 60, L_16 = 0.8, U_16 = 1.3, O1_16 = 1.15, O2_16 = 1.25, L_17 = 5, U_17 = 8.5, O1_17 = 6.5, O2_17 = 7, L_18 = 10, U_18 = 80, L_19 = 1.49, U_19 = 13.19, L_20 = 5, U_20 = 30, L_21 = 80, U_21 = 200)
fhes(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, L_8 = 3.2, U_8 = 6.4, L_15 = 30, U_15 = 60, L_16 = 0.8, U_16 = 1.3, O1_16 = 1.15, O2_16 = 1.25, L_17 = 5, U_17 = 8.5, O1_17 = 6.5, O2_17 = 7, L_18 = 10, U_18 = 80, L_19 = 1.49, U_19 = 13.19, L_20 = 5, U_20 = 30, L_21 = 80, U_21 = 200)
c1 |
Tree diversity index |
c2 |
Shrub diversity index |
c3 |
Herb diversity index |
c4 |
Storey quantity |
c5 |
Tree size diversity index |
c6 |
Age structure |
c7 |
Canopy closure |
c8 |
Average volume increment per hectare |
c9 |
Bio-disaster ratio |
c10 |
Non bio-disaster ratio |
c11 |
Crown length ratio |
c12 |
Crown fade ratio |
c13 |
Foliage falling ratio |
c14 |
Regeneration density |
c15 |
Soil depth |
c16 |
Soil density |
c17 |
Soil pH |
c18 |
Soil organic matter |
c19 |
Soil total nitrogen |
c20 |
Soil available phosphorus |
c21 |
Soil available potassium |
L_8 |
Lower limit of Average volume increment per hectare |
U_8 |
Upper limit of average volume increment per hectare |
L_15 |
Lower limit of average volume increment per hectare |
U_15 |
Upper limit of average volume increment per hectare |
L_16 |
Lower limit of soil density |
U_16 |
Upper limit of soil density |
O1_16 |
Effective range of soil density |
O2_16 |
Effective range of soil density |
L_17 |
Lower limit of soil pH |
U_17 |
Upper limit of soil pH |
O1_17 |
Effective range of soil pH |
O2_17 |
Effective range of soil pH |
L_18 |
Lower limit of soil organic matter |
U_18 |
Upper limit of soil organic matter |
L_19 |
Lower limit of soil total nitrogen |
U_19 |
Upper limit of soil total nitrogen |
L_20 |
Lower limit of soil available phosphorus |
U_20 |
Upper limit of soil available phosphorus |
L_21 |
Lower limit of soil available potassium |
U_21 |
Upper limit of soil available potassium |
None
indexSystem |
index system |
legend |
legend |
index |
index |
coverted.Index |
coverted.Index |
weighted.Index |
weighted.Index |
unweighted.Criterion |
unweighted.Criterion |
weighted.Criterion |
weighted.Criterion |
evaluation |
evaluation results |
None
Zongzheng Chai
Zhang HR, and Lei XD. 2014. Health management techniques for typical forest types. Beijing: Publishing house of forestry, China
None
##forest health evaluation for singel sample plot tree.singlefhes<-fhes(c1=0.67,c2=1.89,c3=2.04,c4=4,c5=2.04,c6=1,c7=0.3, c8=3.4839,c9=0.75,c10=0.15,c11=0,c12=0.75,c13=0.35, c14=2500,c15=53,c16=1.56,c17=5.49,c18=34.03,c19=2.05, c20=21.38,c21=91.67) tree.singlefhes ##Assigned the threshold of some variables, according to specific ##realistic condition or research contents tree.spefhes<-fhes(c1=0.67,c2=1.89,c3=2.04,c4=4,c5=2.04,c6=1,c7=0.3, c8=3.4839,c9=0.75,c10=0.15,c11=0,c12=0.75,c13=0.35, c14=2500,c15=53,c16=1.56,c17=5.49,c18=34.03,c19=2.05, c20=21.38,c21=91.67, L_18=15,U_18=90,L_19=2,U_19=14, L_20=8,U_20=40,L_21=60,U_21=120) tree.spefhes ##forest health evaluation for multiple sample plot tree.multiplefhes<-fhes(c1=c(0.67,0,0.68),c2=c(1.89,1.33,1.79),c3=c(2.04,1.91,2.19), c4=c(4,3,4),c5=c(2.04,1.47,2.19),c6=c(1,0,1),c7=c(0.3,0.95,0.9), c8=c(3.4839,3.1579,5.9231),c9=c(0.75,0,0.3),c10=c(0.15,0,0.09), c11=c(0,0,0),c12=c(0.75,0.07,0.84),c13=c(0.35,0.11,0.84), c14=c(833.33,833.33,2500),c15=c(53,59,43),c16=c(1.28,1.56,1.33), c17=c(5.49,5.91,5.27),c18=c(38.32,34.03,25.37),c19=c(2.05,1.04,1.27), c20=c(21.38,34.66,14.19),c21=c(86.67,80,91.67)) tree.multiplefhes ##More regulare method of forest health evaluation for multiple sample plot data(testIndex) tree.fhes<-fhes(c1=testIndex$C1,c2=testIndex$C2,c3=testIndex$C3,c4=testIndex$C4, c5=testIndex$C5,c6=testIndex$C6,c7=testIndex$C7,c8=testIndex$C8, c9=testIndex$C9,c10=testIndex$C10,c11=testIndex$C11,c12=testIndex$C12, c13=testIndex$C13,c14=testIndex$C14,c15=testIndex$C15,c16=testIndex$C16, c17=testIndex$C17,c18=testIndex$C18,c19=testIndex$C19,c20=testIndex$C20, c21=testIndex$C21) tree.fhes pie(table(tree.fhes$evaluation$grade))
##forest health evaluation for singel sample plot tree.singlefhes<-fhes(c1=0.67,c2=1.89,c3=2.04,c4=4,c5=2.04,c6=1,c7=0.3, c8=3.4839,c9=0.75,c10=0.15,c11=0,c12=0.75,c13=0.35, c14=2500,c15=53,c16=1.56,c17=5.49,c18=34.03,c19=2.05, c20=21.38,c21=91.67) tree.singlefhes ##Assigned the threshold of some variables, according to specific ##realistic condition or research contents tree.spefhes<-fhes(c1=0.67,c2=1.89,c3=2.04,c4=4,c5=2.04,c6=1,c7=0.3, c8=3.4839,c9=0.75,c10=0.15,c11=0,c12=0.75,c13=0.35, c14=2500,c15=53,c16=1.56,c17=5.49,c18=34.03,c19=2.05, c20=21.38,c21=91.67, L_18=15,U_18=90,L_19=2,U_19=14, L_20=8,U_20=40,L_21=60,U_21=120) tree.spefhes ##forest health evaluation for multiple sample plot tree.multiplefhes<-fhes(c1=c(0.67,0,0.68),c2=c(1.89,1.33,1.79),c3=c(2.04,1.91,2.19), c4=c(4,3,4),c5=c(2.04,1.47,2.19),c6=c(1,0,1),c7=c(0.3,0.95,0.9), c8=c(3.4839,3.1579,5.9231),c9=c(0.75,0,0.3),c10=c(0.15,0,0.09), c11=c(0,0,0),c12=c(0.75,0.07,0.84),c13=c(0.35,0.11,0.84), c14=c(833.33,833.33,2500),c15=c(53,59,43),c16=c(1.28,1.56,1.33), c17=c(5.49,5.91,5.27),c18=c(38.32,34.03,25.37),c19=c(2.05,1.04,1.27), c20=c(21.38,34.66,14.19),c21=c(86.67,80,91.67)) tree.multiplefhes ##More regulare method of forest health evaluation for multiple sample plot data(testIndex) tree.fhes<-fhes(c1=testIndex$C1,c2=testIndex$C2,c3=testIndex$C3,c4=testIndex$C4, c5=testIndex$C5,c6=testIndex$C6,c7=testIndex$C7,c8=testIndex$C8, c9=testIndex$C9,c10=testIndex$C10,c11=testIndex$C11,c12=testIndex$C12, c13=testIndex$C13,c14=testIndex$C14,c15=testIndex$C15,c16=testIndex$C16, c17=testIndex$C17,c18=testIndex$C18,c19=testIndex$C19,c20=testIndex$C20, c21=testIndex$C21) tree.fhes pie(table(tree.fhes$evaluation$grade))
Undergrowth herb data of pine-oak codominant mixed forests in the Qinling Mountains
data("herbdata")
data("herbdata")
A data frame with 229 observations on the following 4 variables.
plot.id
Identification number of sample plots
spe.id
Identification number of tree species
coverage
Coverage of herb species
abundance
Abundance of herb species
Twenty 20*20 m plots were established for the pine-oak codominant mixed forests within the Qinling National Forest Ecosystem Research Station (Huoditang forest)
Chai ZZ, Wang DX. 2016. Environmental influences on the successful regeneration of pine-oak mixed forests in the Qinling Mountains, China. Scandinavian Journal of Forest Research,31(4):368-381.DOI:10.1080/02827581.2015.1062912
data(herbdata) herbdata
data(herbdata) herbdata
The national forest health evaluation system
data("indexSystem")
data("indexSystem")
A data frame with 21 observations on the following 9 variables.
Criterion
a factor with levels b1
b2
b3
b4
b5
b6
b7
WeightB
a numeric vector
Index
a factor with levels c1
c10
c11
c12
c13
c14
c15*
c16*
c17*
c18*
c19*
c2
c20*
c21*
c3
c4
c5
c6
c7
c8*
c9
WeightC
a numeric vector
Mode
a factor with levels down
mid
up
L
a numeric vector
U
a numeric vector
O1
a numeric vector
O2
a numeric vector
ID see legend
Zhang HR, and Lei XD. 2014. Health management techniques for typical forest types. Beijing: Publishing house of forestry, China.
Zhang HR, and Lei XD. 2014. Health management techniques for typical forest types. Beijing: Publishing house of forestry, China
data(indexSystem)
data(indexSystem)
Converting regular survey data (long data, similar to the treedata and herbdata in the package) to species matrix, and attributes matrix (wide data).
longtowide(longdata, left, up, inner = NULL, fun = rep("sum", length(inner)), freq = FALSE)
longtowide(longdata, left, up, inner = NULL, fun = rep("sum", length(inner)), freq = FALSE)
longdata |
Regular survey data (long data, similar to the treedata and herbdata in the package) |
left |
Row names of matrix data after converted |
up |
Column names of matrix data after converted |
inner |
Attributes data need to converted |
fun |
Functions need to applied in the converting process |
freq |
Frequency of attributes |
Wide data,such species matrix, and attributes matrix, etc.
Zongzheng Chai
#####Example###### ##Following two example data with different subject, pineoakTree ##is for the base data of individual trees, and the herb data is for ##the base data of cluster. data(treedata) data(herbdata) ####Merge a species matrix from base data ##Note: following calculation only for the base data of individual not cluster pineoak.spematrix<-longtowide(longdata=treedata,left="plot.id",up="spe.id") pineoak.spematrix ##Equivalent method to merge species matrix from base data treedata$abundance<-1 head(treedata) tree.spematrix<-longtowide(longdata=treedata,left="plot.id",up="spe.id",inner="abundance") tree.spematrix herb.spematrix<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",inner="abundance") herb.spematrix ####Compute the frequency of species in the multiple plots ##Merge a frequency matrix from base data tree.freq<-longtowide(longdata=treedata,left="plot.id",up="spe.id",freq=TRUE) tree.freq herb.freq<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",freq=TRUE) herb.freq ####Compute the attribute matrix from base data ##Single attribute matrix tree.dbh<-longtowide(longdata=treedata,left="plot.id",up="spe.id",inner="dbh.cm") tree.dbh herb.cover<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",inner="coverage") herb.cover ##Multiple attribute matrix tree.multattr<-longtowide(longdata=treedata,left="plot.id",up="spe.id", inner=c("dbh.cm","ht.m")) tree.multattr herb.multattr<-longtowide(longdata=herbdata,left="plot.id",up="spe.id", inner=c("coverage","abundance")) herb.multattr #######Calculation of Importance value (IV) for species###### ####Calculation of Importance value (IV) for individual tree data ##Covert long data to wide data tree.freq<-longtowide(longdata=treedata,left="plot.id",up="spe.id",freq=TRUE)$frequency tree.density<-longtowide(longdata=treedata,left="plot.id",up="spe.id")/(20*400) treedata$base<-pi*(treedata$dbh.cm)^2/10000 tree.dominance<-longtowide(longdata=treedata,left="plot.id",up="spe.id",inner="base")/(20*400) ##Compute the relative value tree.refreq<-tree.freq/rowSums(tree.freq)*100 tree.redensity<-tree.density/rowSums(tree.density)*100 tree.redominance<-tree.dominance/rowSums(tree.dominance)*100 ##Compute the importance value matrix treeIVmatirx<-(tree.refreq+tree.redensity+tree.redominance)/3 ##Compute the total importance value for species treeTIV<-colSums(treeIVmatirx)/20 ##Order the total importance value for species sortedtreeTIV<-sort(treeTIV,decreasing=TRUE) sortedtreeTIV ####Calculation of Importance value (IV) for clust herb data ##Covert long data to wide data herb.freq<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",freq=TRUE)$frequency herb.dencover<-longtowide(longdata=herbdata,left="plot.id",up="spe.id", inner=c("abundance","coverage")) herb.density<-herb.dencover$abundance/100 herb.coverage<-herb.dencover$coverage/100 ##Compute the relative value herb.refreq<-herb.freq/rowSums(herb.freq)*100 herb.redensity<-herb.density/rowSums(herb.density)*100 herb.recoverage<-herb.coverage/rowSums(herb.coverage)*100 ##Compute the importance value matrix herbIVmatirx<-(herb.refreq+herb.redensity+herb.recoverage)/3 ##Compute the total importance value for species herbTIV<-colSums(herbIVmatirx)/20 ##Order the total importance value for species sortedherbTIV<-sort(herbTIV,decreasing=TRUE) sortedtreeTIV
#####Example###### ##Following two example data with different subject, pineoakTree ##is for the base data of individual trees, and the herb data is for ##the base data of cluster. data(treedata) data(herbdata) ####Merge a species matrix from base data ##Note: following calculation only for the base data of individual not cluster pineoak.spematrix<-longtowide(longdata=treedata,left="plot.id",up="spe.id") pineoak.spematrix ##Equivalent method to merge species matrix from base data treedata$abundance<-1 head(treedata) tree.spematrix<-longtowide(longdata=treedata,left="plot.id",up="spe.id",inner="abundance") tree.spematrix herb.spematrix<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",inner="abundance") herb.spematrix ####Compute the frequency of species in the multiple plots ##Merge a frequency matrix from base data tree.freq<-longtowide(longdata=treedata,left="plot.id",up="spe.id",freq=TRUE) tree.freq herb.freq<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",freq=TRUE) herb.freq ####Compute the attribute matrix from base data ##Single attribute matrix tree.dbh<-longtowide(longdata=treedata,left="plot.id",up="spe.id",inner="dbh.cm") tree.dbh herb.cover<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",inner="coverage") herb.cover ##Multiple attribute matrix tree.multattr<-longtowide(longdata=treedata,left="plot.id",up="spe.id", inner=c("dbh.cm","ht.m")) tree.multattr herb.multattr<-longtowide(longdata=herbdata,left="plot.id",up="spe.id", inner=c("coverage","abundance")) herb.multattr #######Calculation of Importance value (IV) for species###### ####Calculation of Importance value (IV) for individual tree data ##Covert long data to wide data tree.freq<-longtowide(longdata=treedata,left="plot.id",up="spe.id",freq=TRUE)$frequency tree.density<-longtowide(longdata=treedata,left="plot.id",up="spe.id")/(20*400) treedata$base<-pi*(treedata$dbh.cm)^2/10000 tree.dominance<-longtowide(longdata=treedata,left="plot.id",up="spe.id",inner="base")/(20*400) ##Compute the relative value tree.refreq<-tree.freq/rowSums(tree.freq)*100 tree.redensity<-tree.density/rowSums(tree.density)*100 tree.redominance<-tree.dominance/rowSums(tree.dominance)*100 ##Compute the importance value matrix treeIVmatirx<-(tree.refreq+tree.redensity+tree.redominance)/3 ##Compute the total importance value for species treeTIV<-colSums(treeIVmatirx)/20 ##Order the total importance value for species sortedtreeTIV<-sort(treeTIV,decreasing=TRUE) sortedtreeTIV ####Calculation of Importance value (IV) for clust herb data ##Covert long data to wide data herb.freq<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",freq=TRUE)$frequency herb.dencover<-longtowide(longdata=herbdata,left="plot.id",up="spe.id", inner=c("abundance","coverage")) herb.density<-herb.dencover$abundance/100 herb.coverage<-herb.dencover$coverage/100 ##Compute the relative value herb.refreq<-herb.freq/rowSums(herb.freq)*100 herb.redensity<-herb.density/rowSums(herb.density)*100 herb.recoverage<-herb.coverage/rowSums(herb.coverage)*100 ##Compute the importance value matrix herbIVmatirx<-(herb.refreq+herb.redensity+herb.recoverage)/3 ##Compute the total importance value for species herbTIV<-colSums(herbIVmatirx)/20 ##Order the total importance value for species sortedherbTIV<-sort(herbTIV,decreasing=TRUE) sortedtreeTIV
Calculation of mcIntosh diversity index
mcIntosh(x, MARGIN = 1)
mcIntosh(x, MARGIN = 1)
x |
The species matrix |
MARGIN |
Compute the mcIntosh diversity index by row, MARGIN can be set 1; compute the mcIntosh diversity index by column, MARGIN can be set 2; |
The mcIntosh diversity index
Zongzheng Chai
McIntosh RP.1967. An index of diversity and the relation of certain concepts to diversity. Ecol.Soc.Am. 48:329-404.
######Calculation based on multiple plots ####convert raw data to species matrix ##raw data of multiple plots data(herbdata) herb.spematrix<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",inner="abundance") ##compute species mcIntosh diversity index for each plot herb.mcIntosh<-mcIntosh(herb.spematrix) herb.mcIntosh
######Calculation based on multiple plots ####convert raw data to species matrix ##raw data of multiple plots data(herbdata) herb.spematrix<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",inner="abundance") ##compute species mcIntosh diversity index for each plot herb.mcIntosh<-mcIntosh(herb.spematrix) herb.mcIntosh
Obtained indices always can not be used to evaluate the forest health because the indices with different dimension. And three membership functional models were thus used to standardize these indices,
membership(mode = c("up", "down", "mid"), X, L, U, O1, O2)
membership(mode = c("up", "down", "mid"), X, L, U, O1, O2)
mode |
Three membership functional models were thus used to standardize these indices, which are up mode, down mode, and middle mode, respectively. For the up mode, a higher value is better; for the down mode, lower is better; for the middle mode, which have an effective range. |
X |
The actual observed value of indices |
L |
Lower limit of the indices |
U |
Upper limit of the indices |
O1 |
O1 and O2 are the effective range of the indices |
O2 |
O1 and O2 are the effective range of the indices. |
Standardized the indices by membership functional models
Zongzheng Chai
Zhang HR, and Lei XD. 2014. Health management techniques for typical forest types. Beijing: Publishing house of forestry, China.
up.index<-membership(mode="up",X=0.67,L=0,U=2.173) up.index down.index<-membership(mode="down",X=0.8,L=0,U=2.73) down.index mid.index<-membership(mode="mid",X=c(0.1,0.3,0.4,0.6,0.9),L=0.2,U=1.0,O1=0.5,O2=0.7) mid.index
up.index<-membership(mode="up",X=0.67,L=0,U=2.173) up.index down.index<-membership(mode="down",X=0.8,L=0,U=2.73) down.index mid.index<-membership(mode="mid",X=c(0.1,0.3,0.4,0.6,0.9),L=0.2,U=1.0,O1=0.5,O2=0.7) mid.index
Converting species matrix (wide data) to present-absent matrix
preabs(widedata)
preabs(widedata)
widedata |
A species matrix |
A present-absent matrix
herb.spematrix<-longtowide(longdata=herbdata,left="plot.id",up="spe.id", inner="abundance") herb.preabs<-preabs(herb.spematrix) herb.preabs
herb.spematrix<-longtowide(longdata=herbdata,left="plot.id",up="spe.id", inner="abundance") herb.preabs<-preabs(herb.spematrix) herb.preabs
Example data of test Indices for forest health evaluation system
data("testIndex")
data("testIndex")
A data frame with 30 observations on the following 21 variables.
Tree diversity index
Shrub diversity index
Herb diversity index
Storey quantity
Tree size diversity index
Age structure
Canopy closure
Average volume increment per hectare
Bio-disaster ratio
Non bio-disaster ratio
Crown length ratio
Crown fade ratio
Foliage falling ratio
Regeneration density
Soil depth
Soil density
Soil pH
Soil organic matter
Soil total nitrogen
Soil available phosphorus
Soil available potassium
data(testIndex) testIndex
data(testIndex) testIndex
Tree data of pine-oak codominant mixed forests in the Qinling Mountains
data("treedata")
data("treedata")
A data frame with 1054 observations on the following 5 variables.
plot.id
Identification number of sample plots
tree.id
Identification number of trees
spe.id
Identification number of tree species
dbh.cm
Diameter at breast height of trees
ht.m
Tree height of trees
Twenty 20*20 m plots were established for the pine-oak codominant mixed forests.
Chai ZZ, Wang DX. 2016. Environmental influences on the successful regeneration of pine-oak mixed forests in the Qinling Mountains, China. Scandinavian Journal of Forest Research,31(4):368-381.DOI:10.1080/02827581.2015.1062912
data(treedata) treedata
data(treedata) treedata
To show the distribution od species attributes (such as DBH,tree height) in the sample plots
vardis(data, varcat = "numeric", plot.id, var, breaks, include.lowest = FALSE, right = TRUE)
vardis(data, varcat = "numeric", plot.id, var, breaks, include.lowest = FALSE, right = TRUE)
data |
Data class should be a dataframe, the colnames with plot.id, species name, and some attributes (sucha as DBH,tree height), see data (treedata) |
varcat |
Catory of species attributes, numeric and character, respectively. |
plot.id |
Identification number of sample plots |
var |
Attributes of species in the sample plot |
breaks |
Either a numeric vector of two or more unique cut points or a single number (greater than or equal to 2) giving the number of intervals into which x is to be cut.See the explanation of breaks of cut function |
include.lowest |
Labels for the levels of the resulting category. By default, labels are constructed using "(a,b]" interval notation. If labels = FALSE, simple integer codes are returned instead of a factor.See the explanation of include.lowest of cut function |
right |
Logical, indicating if the intervals should be closed on the right (and open on the left) or vice versa.See the explanation of right of cut function |
Distribution od species attributes (such as DBH,tree height) in the sample plots
Zongzheng Chai
######when variabel catogory is numeric###### ####Variable distribution according to the actual range of variable and sizeclass=1 data(treedata) numericVar.actualsize1<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=seq(min(treedata$ht.m),max(treedata$ht.m),1)) numericVar.actualsize1 ####Variable distribution according to the actual range of variable and sizeclass=2 numericVar.actualsize2<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=seq(min(treedata$ht.m),max(treedata$ht.m),2)) numericVar.actualsize2 ##when the lower value of actual range of variable included,include.lowest can set TRUE numericVar.actualInlower<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=seq(min(treedata$ht.m),max(treedata$ht.m),1), include.lowest=TRUE) numericVar.actualInlower ##when the upper value of actual range of variable excluded,include.lowest can be set FALSE numericVar.actualExupper<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=seq(min(treedata$ht.m),max(treedata$ht.m),1), right=FALSE) numericVar.actualExupper ####Variable distribution according to the specific range of variable range(treedata$ht.m) ##[1] 2.6 32.2 ##specific range can be set between 2 and 34, sizeclass is 2 numericVar.specific<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=2*1:17) numericVar.specific ######when variabel catogory is character###### characterVar<-vardis(treedata,varcat="character",plot.id="plot.id",var="spe.id") characterVar
######when variabel catogory is numeric###### ####Variable distribution according to the actual range of variable and sizeclass=1 data(treedata) numericVar.actualsize1<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=seq(min(treedata$ht.m),max(treedata$ht.m),1)) numericVar.actualsize1 ####Variable distribution according to the actual range of variable and sizeclass=2 numericVar.actualsize2<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=seq(min(treedata$ht.m),max(treedata$ht.m),2)) numericVar.actualsize2 ##when the lower value of actual range of variable included,include.lowest can set TRUE numericVar.actualInlower<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=seq(min(treedata$ht.m),max(treedata$ht.m),1), include.lowest=TRUE) numericVar.actualInlower ##when the upper value of actual range of variable excluded,include.lowest can be set FALSE numericVar.actualExupper<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=seq(min(treedata$ht.m),max(treedata$ht.m),1), right=FALSE) numericVar.actualExupper ####Variable distribution according to the specific range of variable range(treedata$ht.m) ##[1] 2.6 32.2 ##specific range can be set between 2 and 34, sizeclass is 2 numericVar.specific<-vardis(treedata,plot.id="plot.id",var="ht.m", breaks=2*1:17) numericVar.specific ######when variabel catogory is character###### characterVar<-vardis(treedata,varcat="character",plot.id="plot.id",var="spe.id") characterVar
Converting wide data, such as species matrix, and attributes matrix to long data,such as the treedata and herbdata.
widetolong(widedata, leftlab = "left", uplab = "up", innerlab = "inner")
widetolong(widedata, leftlab = "left", uplab = "up", innerlab = "inner")
widedata |
Data similar to the species matrix, and attributes matrix, etc. |
leftlab |
Row labels of wide data |
uplab |
Column labels of wide data |
innerlab |
Attributes labels of inner data of wide data |
Long data,such as treedata,herbdata, etc.
Zongzheng Chai
herb.spematrix<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",inner="abundance") herb.spedata<-widetolong(herb.spematrix, leftlab="plot.id",uplab="spe.id",innerlab="abundance") herb.spedata ##After removed zero in innerdata rd0herb.spedata<-herb.spedata[-which(herb.spedata$abundance==0),] rd0herb.spedata
herb.spematrix<-longtowide(longdata=herbdata,left="plot.id",up="spe.id",inner="abundance") herb.spedata<-widetolong(herb.spematrix, leftlab="plot.id",uplab="spe.id",innerlab="abundance") herb.spedata ##After removed zero in innerdata rd0herb.spedata<-herb.spedata[-which(herb.spedata$abundance==0),] rd0herb.spedata