Next Article in Journal
Inconsistent Variations in Components of Functional Stability Under Heterogeneous Conditions: A Case Study from the Maolan Karst Forest Ecosystems in Guizhou Province, Southwest of China
Next Article in Special Issue
Enhancing Deforestation Detection Through Multi-Domain Adaptation with Uncertainty Estimation
Previous Article in Journal
Genome-Wide Identification of the SRS Gene Family in Poplar and Expression Analysis Under Drought Stress and Salt Stress
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Communication

forestPSD: An R Package for Analyzing the Forest Population Structure and Numeric Dynamics

College of Forestry, Guizhou University, Guiyang 550025, China
*
Author to whom correspondence should be addressed.
Forests 2025, 16(2), 303; https://doi.org/10.3390/f16020303
Submission received: 18 January 2025 / Revised: 7 February 2025 / Accepted: 8 February 2025 / Published: 9 February 2025
(This article belongs to the Special Issue Modeling Forest Dynamics)

Abstract

:
Forest population structure and dynamics represent core research areas in forest ecology, encompassing multiple components such as quantitative analyses of population changes, age structure, life tables, and species dynamics within specific spatial and temporal contexts. These elements provide crucial insights into tree adaptation mechanisms and inform evidence-based strategies for population conservation and management. However, traditional analyses of forest population structure and dynamics face significant challenges due to the absence of specialized analytical software. This limitation not only increases data processing complexity and workload but also elevates the risk of analytical errors. To address these challenges, we developed forestPSD, a novel R package based on established principles of forest population structure and dynamics analysis. This package provides researchers with an efficient and user-friendly tool for analyzing forest population structures and their temporal changes, thereby facilitating advancement in this field.

1. Introduction

The analysis of forest population structure and dynamics is a fundamental research area in forest ecology, with crucial implications for ecosystem functionality and stability [1,2,3]. Through the comprehensive investigation of forest population structures, researchers can elucidate the operational mechanisms and developmental patterns of forest ecosystems [4,5]. Specifically, population structure analysis reveals the spatial distribution patterns of trees across different age classes and size categories, evaluates the optimization of population age structures, and forecasts population trajectories [1,6,7]. These insights provide valuable indicators for assessing ecosystem health status and resilience capacity. The demographic dynamics of forest populations fundamentally shape ecosystem material cycling and energy flows. Long-term monitoring and analysis of forest population changes enable a deeper understanding of key ecological processes, including population growth, mortality, and regeneration, thereby evaluating ecosystem self-regulation capabilities. Such analyses are essential for predicting forest ecosystem responses to environmental changes and informing adaptive management strategies to maintain ecosystem stability. In particular, these analyses provide crucial baseline information for the monitoring and conservation of rare and endangered forest populations [2,8].
Population statistics serve as cornerstone methodologies for investigating demographic dynamics, incorporating critical components such as age structure analysis, life table compilation, survival curve fitting, dynamic index quantification, and time series prediction [1,4,5]. The population age structure reflects current states and developmental trajectories while illuminating population–environment relationships and community roles. Life tables systematically present vital parameters, including survival rates, mortality rates, disappearance rates, and life expectancy, serving as essential tools for characterizing population structure and demographic changes. Dynamic indices and time series predictions derived from life tables not only capture population life processes and survival conditions but also forecast future trajectories and reproductive potential under specific scenarios. The integrated application of these analytical approaches facilitates a comprehensive understanding of population status, ecological characteristics, formation mechanisms, and succession patterns, providing scientific foundations for sustainable population management and community conservation [1,4,5].
In recent years, traditional analyses of forest population structure and dynamics have faced significant challenges due to the absence of specialized analytical software. This limitation not only increases data processing complexity and workload but also elevates the risk of analytical errors. Therefore, developing specialized software tools for analyzing forest population structure and dynamics has become imperative. Such tools can enhance research efficiency, ensure analytical accuracy, promote methodological standardization, and facilitate forest ecology research advancement. In response to these needs, we have developed the forestPSD R package, grounded in theoretical frameworks and methodologies of forest population structure and dynamics analysis, to provide researchers with an efficient and user-friendly analytical tool, thereby advancing this field of study.

2. Materials and Methods

2.1. Age Class Data Acquisition

In general, accurately determining the age of individual trees, especially those with longer growth cycles, presents a substantial challenge. Consequently, in many research endeavors, the strategy of spatial extrapolation of time is frequently adopted. This involves using diameter classes as a substitute for age classes. The rationale behind this approach lies in the positive correlation that exists between the diameter and age of trees during their growth process. By leveraging this relationship, researchers can indirectly estimate the age of trees based on measurements of the diameter at breast height (DBH). This method has been widely employed in numerous similar studies, as evidenced by references [1,4,5,9]. Forest population age structure classifications are generally established based on prevailing forest survey conditions and observed tree growth patterns. Common DBH thresholds used for age class delineation include 2 cm, 4 cm, 5 cm, and 10 cm. For instance, in a survey where tree diameters range from 0 to 58.5 cm and a 5 cm DBH class interval is employed, the first diameter class would be defined as DBH < 5 cm, the second as 5 cm ≤ DBH < 10 cm, the third as 10 cm ≤ DBH < 15 cm, and so on. Trees with DBH ≥ 50 cm would constitute the final (XIth) diameter class. If the number of trees with DBH ≥ 50 cm is relatively small, all diameter classes above a certain threshold (e.g., ≥5 cm) may be combined into the XIth class for the analysis of population structure and dynamics. The specific criteria used for diameter and age class delineation in this study are presented in Table 1. In addition, it is important to emphasize that in the current case, the classification of diameter and age classes is presented solely based on a diameter class interval of 5 cm. Nevertheless, in actual and specific research scenarios, the determination of age class division requires a comprehensive consideration of various factors, including, but not limited to, the characteristics of the research itself, tree species, environmental conditions, and site-specific circumstances.

2.2. Dynamic Index Quantification

Age class data are adopted to quantitatively describe population dynamics as a proxy for detailed age structure [1,4,5]. The indices that are employed include the following: V n , the dynamic index of individual number changes between two adjacent age classes; V p i , the dynamic index of overall population size changes without considering external disturbances; and V p i , the dynamic index of overall population size change accounting for potential external disturbances. Furthermore, P, the risk rate of the most significant disturbance factor affecting population survival or development, is incorporated. The impact on population dynamics is maximized when P reaches its maximum value. The specific formulas for these indices are presented below:
V n = S n S n + 1 max S n , S n + 1 × 100 %
V p i = 1 Σ n = 1 1 S n × Σ n = 1 k 1 S n × V n
V p i = Σ n = 1 k 1 S n × V n k × min S 1 , S 2 , S 3 , , S k × Σ n = 1 k 1 S n
P m a x = 1 K   min S 1 , S 2 , S 3 , , S k
The provided formulas utilize Vn to represent the dynamic index of change in individual numbers between adjacent age classes n and n + 1. Vpi denotes the dynamic index of overall population size change in the absence of external disturbances, calculated by weighting the age-class-specific dynamic indices Vn according to the abundance Sn within each age class. Sn and Sn+1 represent the abundances in age classes n and n + 1, respectively. K represents the total number of age classes within the population. The functions max(…) and min(…) denote the maximum and minimum values of the enclosed sequence. The indices Vn, Vpi, and Vpi are constrained to the range [−1, 1]. Positive, negative, and zero values for these indices indicate growth, decline, or stability, respectively, in the dynamic relationship between adjacent age classes or in the overall population age structure for Vpi, and Vpi. When incorporating the potential impact of future external disturbances, the dynamic index of the population age structure, Vpi, is influenced by both the number of age classes (K) and the abundance within each age class (Sn). Specifically, K and Sn exert a “dilution effect” on the impact of future external disturbances. This effect implies that with increasing numbers of age classes and individuals, the influence of any single external disturbance on the overall population structure is potentially mitigated, distributed across a larger pool of individuals and age classes.

2.3. Life Table Compilation

A life table is constructed based on the age-specific mortality rates observed in a population during a specific period. It uses cross-sectional data to provide a snapshot of mortality and survival at a given time, rather than tracking a cohort over its lifespan. The formulas for calculating a static life table are as follows:
l x = a x a 0 × 100
q x = d x l x
L x = l x + l x + 1 2
T x = Σ L x
e x = T x l x
S x = l x + 1 l x
K x = ln l x ln l x + 1
where x represents the age class level. The parameter ax denotes the number of individuals currently present within age class x, where a0 represents the initial value. lx indicates the standardized number of surviving individuals in age class x, typically normalized to a base of 1000 to facilitate comparison and interpretation. dx represents the standardized number of deaths occurring between age classes x and x + 1. The mortality rate between age classes x and x + 1 is denoted by qx, which represents the proportion of individuals in age class x who do not survive to reach age class x + 1. Lx indicates the number of individuals who survive and transition from age class x to x + 1. Tx represents the total number of individuals surviving from age class x onwards, measuring the cumulative survival beyond age class x. The life expectancy (ex) indicates the average expected remaining lifespan for individuals who have reached age class x. Finally, Kx represents the population disappearance rate at age class x, while Sx denotes the survival rate of the population at age class x [1,4,5].

2.4. Survival Curve Fitting

In this study, population survival curves were constructed by plotting age classes x against the survival numbers y on the horizontal and vertical axes, respectively. Deevey’s survival curves, proposed by ecologist Edward S. Deevey in 1947, are important tools in ecology for depicting the survival patterns of populations [10]. According to Deevey’s classification, population survival curves can be categorized into three fundamental types (Table 2) [10]. Deevey I (linear) is distinguished by consistent mortality rates across all age classes within the population. Deevey II (convex) is characterized by populations where most individuals survive until reaching their average physiological lifespan, followed by rapid mortality within a relatively brief period. Deevey III (concave) exhibits higher mortality rates among younger individuals, with decreased mortality in adults, resulting in relatively stable population dynamics. To determine which of these three Deevey patterns best describes the population’s survival status, three formulas were employed to analyze the survival curve characteristics [11,12].

2.5. Time Series Prediction

This study employed the Simple Moving Average (SMA) method, a time series analysis technique, to simulate and predict the dynamic changes in population age structure [1,4,5]. The mathematical formulations are presented as follows:
M t 1 = 1 n × Σ k = t n + 1 t X k
where n denotes the prediction time horizon; M t 1 represents the projected population size of diameter class t after n years; and Xk indicates the number of surviving individuals in the current age class k.

3. Introduction and Applications of the forestPSD Package

3.1. Package Description

The forestPSD package [13] is written in the language R (Version 4.4.2, Vienna, Austria) and can be installed from the Comprehensive R Archive Network “http://cran.r-project.org/web/packages/forestPSD/ (accessed on 18 January 2025)”. This package includes seven powerful functions designed to comprehensively support the analysis of forest population structure and dynamics of quantity, as detailed in Table 3.

3.2. Working Flowchart

The workflow of the forestPSD package demonstrates both rigor and efficiency (Figure 1). First, the Ntable() function converts raw data into the required format. Next, the dyn() function quantifies dynamic indices. The lifetable() function compiles life tables, while the psdfun() function fits survival curves. Lastly, the Mpre() function focuses on time series forecasting. Additionally, the results from these functions can be presented in various formats, including tables and graphs, which enhances users’ ability to conduct detailed analyses and interpretations.

3.3. Working Example

In order to demonstrate the practicality and accuracy of the forestPSD package, this study provides a working example that illustrates the entire process of dynamic analysis of forest population structure and quantity, which can be completed in eight steps, as detailed below:
  • Step 1: Install and load the package.
  • # Install.packages(“forestPSD”)
  • library(forestPSD)
  • Step 2: Organize the data into a data format suitable for population structure analysis.
  • number=c(8283,5238,1921,1425,926,659,479,228,57,24,10)
  • Npop =Ntable(ax=number)
Taking the age class data in Table 1 as an example, we utilize the Ntable() function to organize the data into a data format (Npop, Table 4) that is suitable for population structure analysis. Here, ax represents the number of tree individuals corresponding to each age class as the age class progresses.
  • Step 3: Plot for population structure analysis.
  • # Install.packages(“ggplot2”)
  • library(ggplot2)
  • fpop.p<-ggplot()+geom_bar(aes(x=rank,y=ax,group=ageclass),data=Npop,stat = “identity”)+
  •  scale_x_continuous(breaks=1:11)+
  •  scale_x_discrete(limits=Npop$ageclass)+
  •  xlab(“Age class”)+ylab(“Number of individuals”)
  • fpop.p
We employed the ggplot2 package to create the plot for the forest population structure (Figure 2). As the age advances, the number of individuals in this forest population gradually decreases. The age structure of the population presents an inverted “J”-shaped distribution, which clearly demonstrates that the population is a progressive one.
  • Step 4: Quantification of population dynamics.
  • dyn(ax=Npop$ax)
We calculated the population dynamic index using the dyn() function, and the key results are presented in Table 5. The results demonstrate that the dynamic indices for each age class are all greater than 0, which indicates that the population can adapt effectively to the local environment and maintain relative stability over a certain period. When external disturbances are ignored, the dynamic index for the entire population V p i = 42.999 % > 0 , suggesting that the population is a growing population. When the influence of external disturbances is considered, V p i = 0.391 % > 0 , which is close to 0, indicating that the population shows a tendency of transition from a growing population to a stable one.
  • Step 5: Generate the static life table to analyze the population dynamic changes.
  • lifetable(ax=Npop$ax)
We generated the life table by using the lifetable() function, and the key results are presented in Table 6.
  • Step 6: Regression analysis for survival curves.
  • psd_D1<-psdfun(ax=Npop$ax,index=“Deevey1”)
  • psd_D1
  • psd_D2<-psdfun(ax=Npop$ax,index=“Deevey2”)
  • psd_D2
  • psd_D3<-psdfun(ax=Npop$ax,index=“Deevey3”)
  • psd_D3
The results of fitting the survival curve using the Deevey formulas were obtained by using the psdfun() function. The key results are presented in Table 7. These results suggest that among the three Deevey formulas, Deevey II yields the best fitting effect, with an R2 value reaching 0.987.
  • Step 7: Plot for regression analysis of survival curves.
  • # Install.packages(“ggplot2”)
  • library(ggplot2)
  • psdnls.p<-ggplot()+geom_bar(aes(x=age,y=ax,group=ageclass),data=psd_D2$Data,stat = “identity”)+
  •  geom_line(aes(x=age,y=predict),color=“blue”,linewidth=1,data=psd_D2$Data)+
     geom_text(aes(x=9,y=7700),label=expression(paste(italic(y),”=15040exp(-0.5828”,italic(x),”)”)))+
  •  geom_text(aes(x=10,y=7300),label=expression(paste(R^2,”=0.987”)))+
  •  scale_x_continuous(breaks=1:11)+
     scale_x_discrete(limits=psd_D2$Data$ageclass)+
  •  xlab(“Age class”)+ylab(“Number of individuals”)
  • psdnls.p
We utilized the ggplot2 package to generate a plot for the regression analysis of survival curves (Figure 3). Meanwhile, the reshape2 package was employed to process the data. The results show that the Deevey II formula exhibits a satisfactory fitting effect.
  • Step 8: Time series prediction for the population dynamic changes.
  • Mdata<-Mpre(ax=Npop$ax,n=c(2,3,5,6,8,10))
  • # Install.packages(“reshape2”)
  • library(reshape2)
  • Mdata.melt<-reshape2::melt(Mdata,id=c(“rank”,”ageclass”))
  • Mdata.melt$ageclass<-factor(Mdata.melt$ageclass,levels=unique(Mdata.melt$ageclass))
  • # Install.packages(“ggplot2”)
  • library(ggplot2)Mpre.p<-ggplot()+geom_line(aes(x=ageclass,y=value,color=variable,group=variable),
  •  linewidth=0.5,data=Mdata.melt)+
  •  xlab(“Age class”)+ylab(“Number of individuals”)+labs(color=“ “)
  • Mpre.p
We predicted the time series by using the Mpre() function and generated a table and a figure for the time series prediction of the population dynamic changes (Table 8 and Figure 4). The results indicate that, in the prediction series, after time intervals corresponding to 2, 3, 5, 6, 8, and 10 age classes in the future, the peaks of the individual numbers in each age class of the population shift backward successively.

3.4. Presentation of a Comprehensive Case

In this section, leveraging the data from our prior publication [13], we offer a comprehensive and in-depth demonstration of the research process related to the structure and numerical dynamics of forest populations. The study area was a secondary forest situated in a typical karst region of Guizhou Province, China. This forest has undergone more than 30 years of natural restoration after being abandoned. Through the establishment of representative sample plots and systematic vegetation surveys, we conducted a comparative analysis of the structural and numerical dynamic characteristics of five dominant populations. Our aim was to establish scientific theoretical underpinnings that can serve as reliable references for the protection and restoration of karst secondary forests. In this study, a total of 41 species and 3251 individuals of woody plants were surveyed. Among them, there were 1038 individuals of Betula luminifera (BL, accounting for 31.9%), 793 of Platycarya strobilacea (PS, 24.4%), 344 of Pinus massoniana (PM, 10.6%), 198 of Liquidambar formosana (LF, 6.1%), and 183 of Populus davidiana (PD, 5.6%). These five populations, with a combined total of 2556 individuals, constituted 78.6% of the surveyed plants and were identified as the dominant populations within the community. The age class data of these five dominant populations are presented in Table 9. The detailed criteria for age class division and relevant basic information are comprehensively elaborated in our published article [13]. Moreover, the R codes utilized in this section are available in the Supplementary File.
As depicted in Figure 5, the age class structures of the five dominant populations are relatively comprehensive. In general, for each population, the number of individuals exhibits a unimodal pattern, initially rising and subsequently declining as the age class advances. Nevertheless, owing to the relatively scarce number of individuals in age classes I—II of each dominant population and the substantial fluctuations observed in these early age classes, there is an overall deficiency in population renewal. This ultimately leads to suboptimal population stability.
The dynamic indices show (Table 10) that the numeric dynamics of the five dominant populations all exhibit a trend of first decline and then growth. The overall dynamic indices Vpi and V′pi of the five dominant populations are both greater than zero, indicating that the five dominant populations are generally in a growth trend. The growth potential is ranked as PM > PS > PD > BL > LF. When affected by the external environment, the Pinus massoniana population has the highest probability of being disturbed, while the Betula luminifera population has the lowest. In addition, the insufficient number of individuals in age classes I, II may hinder the stable and sustainable development of the population.
Through the compilation of static life tables for the five dominant populations (Table 11), it becomes feasible to ascertain the survival status of different populations across various growth stages. This approach allows for a comprehensive understanding of the competitive relationships among populations and a clear elucidation of the disparities in aspects such as resource acquisition and space occupation. Consequently, it offers vital information for the study of niche differentiation within the community and the dynamic development of populations.
The results of fitting the survival curves of the five dominant populations (Table 12) indicate that, among the three Deevey formulas, the Deevey II formula yields the best fitting effect, with a larger R2 value. Evidently, the survival curves of the five dominant populations are all closer to the Deevey II type.
The time series prediction results indicate (Figure 6) that the five dominant populations exhibit roughly the same trend. Specifically, the population size experiences a sharp decline in the early stage and then a stable increase in the later stage. In the future age classes, the advantage in the number of individuals in each dominant population weakens. Subsequently, as the age class increases, the decline in the number of individuals gradually disappears and then shows an increasing trend. The most significant increase in the number of individuals occurs in the VI age class. After six age classes, the structures of various populations gradually become more reasonable, presenting a stable growth trend.
In summary, notable disparities exist in the structure and numerical dynamics of the five dominant populations. Nevertheless, overall, they display a stable growth tendency. The limited number of individuals in the I–II age classes stands out as the primary factor impeding the stable development of the populations. It is advisable to improve the stand quality and the quantity of regeneration through a combination of enclosure protection and artificial tending measures. This integrated approach is expected to foster the stable and sustainable development of the secondary forest community.

3.5. Comparison with Other R Packages Used for Plant Population Structure Analysis

In the realm of plant population structure and numeric dynamics research, various software packages offer distinct forms of support for research endeavors. R packages, including poppr, popbio, ecostats, and TreeSim, each possess unique characteristics and application limitations (Table 13). When compared to other software, forestPSD stands out with remarkable advantages in the research of forest population structure and quantitative dynamics. It can directly and efficiently analyze the structure and numeric dynamics of forest tree populations. The generated visualizations and calculated indices can intuitively and accurately represent the characteristics of forest populations, thereby offering clear directions for research. Leveraging the R language, forestPSD exhibits high expandability and flexibility. This enables researchers to conduct customized development in accordance with the actual requirements of their research, thus catering to a wide range of complex research scenarios. Consequently, it serves as an indispensable tool for forest researchers engaged in relevant studies.

4. Conclusions

In response to the increasing complexity of ecological research, our newly developed forestPSD package presents an innovative and robust approach to studying forest population structure and dynamics. This user-friendly package enables researchers to generate comprehensive ecological analyses through sophisticated built-in algorithms by simply inputting standardized data. It serves as a powerful analytical framework for investigating forest population conservation mechanisms and developing evidence-based management strategies. The forestPSD package demonstrates several notable advantages over conventional methodologies, including enhanced data processing capabilities, streamlined model fitting procedures, and superior visualization functionality. These features facilitate deeper insights into data distribution patterns and temporal trends, thereby improving analytical efficiency and providing reliable empirical evidence for subsequent research and policy decisions. Moreover, our study offers detailed technical guidelines and case analyses, which can help researchers conduct rapid and efficient analyses of forest population structure and numeric dynamics. Moving forward, we are committed to enhancing the forestPSD package through continuous development. Our future improvements will focus on two key aspects: functional expansion and performance optimization. In terms of functionality, we plan to incorporate advanced ecological analysis methods and models to address population dynamics across diverse ecosystems, species characteristics, and research contexts. Regarding performance, we will substantially enhance the package’s computational efficiency and stability through algorithmic optimization and improved data management systems, ensuring robust performance when handling large-scale datasets. Through these systematic improvements, the forestPSD package will evolve into a more comprehensive, precise, and practical analytical tool for forest population research, contributing significantly to the advancement of population ecology.

Supplementary Materials

The following supporting information can be downloaded at https://www.mdpi.com/article/10.3390/f16020303/s1. Code S1: R code for 3.4. Presentation of a comprehensive Case.

Author Contributions

Conceptualization, Z.C.; R package development, Z.C.; writing—original draft, J.L.; writing—review and editing, Z.C. All authors have read and agreed to the published version of this manuscript.

Funding

This research was supported by Guizhou Provincial Basic Research General Program (Natural Science), Grant Number: zk [2025]639, and the National Natural Science Foundation of China, Grant Number: 32001314.

Data Availability Statement

All the data involved in this article were made public in the forestPSD package.

Acknowledgments

We are deeply grateful to the College of Forestry of Guizhou University for supporting this work.

Conflicts of Interest

The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.

References

  1. Zhang, Y.; Wang, J.; Wang, X.; Wang, L.; Wang, Y.; Wei, J.; Niu, Z.; Jian, L.; Jin, B.; Chen, C.; et al. Population Structures and Dynamics of Rhododendron Communities with Different Stages of Succession in Northwest Guizhou, China. Plants 2024, 13, 946. [Google Scholar] [CrossRef] [PubMed]
  2. Farahat, E.A. Age structure and static life tables of the endangered Juniperus phoenicea L. in North Sinai Mountains, Egypt: Implication for conservation. J. Mt. Sci. 2020, 17, 2170–2178. [Google Scholar] [CrossRef]
  3. Sigasa, M.N.; Yessoufou, K.; Magadlela, A.; Otang-Mbeng, W.; Suinyuy, T.N. Population Structure of an African Cycad: Fire May Stimulate the Coning Phenology of Encephalartos lanatus (Zamiaceae) and Also Predispose Its Cones to Damage. Diversity 2023, 15, 1075. [Google Scholar] [CrossRef]
  4. Huang, D.; Ren, Y.; Yang, S.; Zhao, Y.; Zhao, G. Population Structure and Dynamic Characteristics of Three Endemic Chinese Abies Species in Southeastern Tibet, China. Front. Ecol. Evol. 2024, 12, 1487984. [Google Scholar] [CrossRef]
  5. Yuan, G.; Guo, Q.; Xie, N.; Zhang, Y.; Luo, S.; Gui, Q.; Yao, S. Population Dynamics and Protection Strategies of Litsea coreana Levl. var. sinensis with Guizhou Province in China as an Example. J. Mt. Sci. 2023, 20, 1090–1101. [Google Scholar]
  6. Zabek, M.A.; Berman, D.M.; Blomberg, S.P.; Collins, C.W.; Wright, J. Population Dynamics of Feral Horses (Equus caballus) in an Exotic Coniferous Plantation in Australia. Wildl. Res. 2016, 43, 358–367. [Google Scholar] [CrossRef]
  7. Watkinson, A.R.; Powell, J.C. The Life History and Population Structure of Cycas armstrongii in Monsoonal Northern Australia. Oecologia 1997, 111, 341–349. [Google Scholar] [CrossRef] [PubMed]
  8. Li, W.; Zhang, G. Population Structure and Spatial Pattern of the Endemic and Endangered Subtropical Tree Parrotia subaequalis (Hamamelidaceae). Flora 2015, 212, 10–18. [Google Scholar] [CrossRef]
  9. Kang, D.; Guo, Y.; Ren, C.; Zhao, F.; Feng, Y.; Han, X.; Yang, G. Population Structure and Spatial Pattern of Main Tree Species in Secondary Betula platyphylla Forest in Ziwuling Mountains, China. Sci. Rep. 2014, 4, 6873. [Google Scholar] [CrossRef] [PubMed]
  10. Deevey, E.S. Life Tables for Natural Populations of Animals. Q. Rev. Biol. 1947, 22, 283–314. [Google Scholar] [CrossRef] [PubMed]
  11. Peng, C.; Ai, W.; Qi, L.; Tu, J.; Meng, Y.; Yang, M.; Li, M. Cunninghamia lanceolata Sprout Population Structure, Dynamics and Biomass Allocation Changes During Phyllostachys Edulis Expansion in Middleo-Southern China. Trees-Struct. Funct. 2022, 36, 1207–1218. [Google Scholar] [CrossRef]
  12. Liu, D.; Guo, Z.; Cui, X.; Fan, C. Estimation of the Population Dynamics of Taxus cuspidata by Using a Static Life Table for Its Conservation. Forests 2023, 14, 2194. [Google Scholar] [CrossRef]
  13. Wei, H.; Xu, M.; Chai, Z.; Sun, C. Population Structure and Numeric Dynamic of Dominant Species of Karst Secondary Forests. J. Northeast For. Univ. 2023, 51, 80–85. [Google Scholar]
  14. Chai, Z. forestPSD: Forest Population Structure and Numeric Dynamics; R Package Version 1.0.0; R Foundation for Statistical Computing: Vienna, Austria, 2024. [Google Scholar]
  15. Zhian, N. Poppr: Genetic Analysis of Populations with Mixed Reproduction; R Package Version 2.9.6; R Foundation for Statistical Computing: Vienna, Austria, 2024. [Google Scholar]
  16. Chris, S.; Brook, M.; Patrick, N. Popbio: Construction and Analysis of Matrix Population Models; R Package Version 2.8; R Foundation for Statistical Computing: Vienna, Austria, 2024. [Google Scholar]
  17. David, W.; Christopher, C.; Mark, D.; Eve, S. Ecostats: Code and Data Accompanying the Eco-Stats Text (Warton 2022); R Package Version 1.2.1; R Foundation for Statistical Computing: Vienna, Austria, 2024. [Google Scholar]
  18. Tanja, S. TreeSim: Simulating Phylogenetic Trees; R Package Version 2.4; R Foundation for Statistical Computing: Vienna, Austria, 2024. [Google Scholar]
Figure 1. Working flowchart of the forestPSD package.
Figure 1. Working flowchart of the forestPSD package.
Forests 16 00303 g001
Figure 2. Plot for forest population structure.
Figure 2. Plot for forest population structure.
Forests 16 00303 g002
Figure 3. Plot for regression analysis of survival curves.
Figure 3. Plot for regression analysis of survival curves.
Forests 16 00303 g003
Figure 4. Time series prediction of the population dynamic changes.
Figure 4. Time series prediction of the population dynamic changes.
Forests 16 00303 g004
Figure 5. Age class structure of five dominant populations in typical karst secondary forests.
Figure 5. Age class structure of five dominant populations in typical karst secondary forests.
Forests 16 00303 g005
Figure 6. Time series prediction of five dominant populations in typical karst secondary forests.
Figure 6. Time series prediction of five dominant populations in typical karst secondary forests.
Forests 16 00303 g006
Table 1. Classification of diameter and age classes.
Table 1. Classification of diameter and age classes.
RankDiameter Class (cm)Age ClassNumber
1(0,5)I8283
2[5,10)II5238
3[10,15)III1921
4[15,20)IV1425
5[20,25)V926
6[25,30)VI659
7[30,35)VII479
8[35,40)VIII228
9[40,45)IX57
10[45,50)X24
11 [ 50 , )XI10
Table 2. Deevey formulas for survival curve fitting.
Table 2. Deevey formulas for survival curve fitting.
ItemFormulaID
Deevey Iy = a + bx(12)
Deevey IIy = aexp(−bx)(13)
Deevey IIIy = ax−b(14)
Table 3. Composition of the forestPSD package.
Table 3. Composition of the forestPSD package.
FunctionDescription
dynQuantification of population dynamics.
goodnessModel quality assessment.
lifetableGenerate the static life table to analyze the population dynamic changes.
MpreTime series prediction for the population dynamic changes.
NpopData for forest population number within different age class.
NtableOrganize the data into a data format suitable for population structure analysis.
PsdfunRegression analysis for survival curves.
Table 4. A standard data format that is suitable for population structure analysis.
Table 4. A standard data format that is suitable for population structure analysis.
RankAge Class ax
1I8283
2II5238
3III1921
4IV1425
5V926
6VI659
7VII479
8VIII228
9IX57
10X24
11XI10
Note: ax represents the number of tree individuals corresponding to each age class as the age class progresses.
Table 5. Dynamic index quantification.
Table 5. Dynamic index quantification.
Age Class I–IIII–IIIIII–IVIV–VV–VIVI–VIIVII–VIIIVIII–IXIX–XX–XI V p i V p i
Dynamic Index RangeV1V2V3V4V5V6V7V8V9V10
Dynamic index (%)36.76263.32625.82035.01828.83427.31452.40175.00057.89558.33342.9990.391
Note: Vn is the dynamic index of the individual number of the population from age class n to n + 1, V p i is the dynamic index of population change when external interference is ignored, and V p i is the dynamic index of population change when external interference is considered in the future.
Table 6. Life table compilation.
Table 6. Life table compilation.
Age Class (x)axlxlnlxdxqxLxTxexKxSx
I828310006.9083680.36881618241.8250.4590.632
II52386326.4494000.63343210081.5961.0020.367
III19212325.447600.2592025762.4850.2990.741
IV14251725.147600.3491423742.1770.4290.651
V9261124.718320.286962322.0760.3360.714
VI659804.382220.275691361.7060.3220.725
VII479584.060300.51743681.1640.7280.483
VIII228283.332210.75018240.8751.3860.250
IX5771.94640.571571.0000.8470.429
X2431.09920.667220.6671.0990.333
XI1010.000
Note: x is the age class level, ax is the number of individuals currently present within age class x, lx is the standardized number of surviving individuals in age class x, dx is the standardized number of deaths occurring between age classes x and x + 1, qx is the mortality rate between age classes x and x + 1, Lx is the number of individuals who survive and transition from age class x to x + 1, Tx is the total number of individuals surviving from age class x onwards, ex is the average expected remaining lifespan for individuals who have reached age class x, Kx is the population disappearance rate at age class x, and Sx is the x.
Table 7. Deevey formulas for survival curve fitting.
Table 7. Deevey formulas for survival curve fitting.
ItemFormulaR2
Deevey Iy = 5603.9 – 642.3x0.652
Deevey IIy = 15,040exp(–0.5828x)0.987
Deevey IIIy = 8691.1232x−1.25980.949
Table 8. Time series prediction of the population dynamic changes.
Table 8. Time series prediction of the population dynamic changes.
RankAge ClassM0 (ax)M2M3M5M6M8M10
1I8283
2II52386760
3III192135805147
4IV142516732861
5V926117614243559
6VI659792100320343075
7VII47956968810821775
8VIII2283544557439402395
9IX571422554706291367
10X24401032893967151924
11XI1017301602434761097
Note: M0 is ax and represents the number of tree individuals corresponding to each age class as the age class progresses; M2, M3, M5, M6, M8, and M10 represent the predicted values of the population size after 2, 3, 5, 6, 8 and 10 age classes, respectively.
Table 9. Age class data of five dominant populations in typical karst secondary forests.
Table 9. Age class data of five dominant populations in typical karst secondary forests.
RankDiameter Class (cm)Age Class ax
BLPSPMLFPD
1(0,1)I82044209
2[1,3)II3057994
3[3,5)III3523861174770
4[5,7)IV247221643147
5[7,9)V17181442528
6[9,11)VI8312271212
s7[11,13)VII54916165
8[13,15)VIII39411114
9[15,17)IX28110122
10[17,19)X141162
11[19,21)XI6114
12[21, )XII65
Note: BL is Betula luminifera, PS is Platycarya strobilacea, PM is Pinus massoniana, LF is Liquidambar formosana, and PD is Populus davidiana. ax represents the number of tree individuals corresponding to each age class as the age class progresses.
Table 10. Dynamic index of five dominant populations in typical karst secondary forests.
Table 10. Dynamic index of five dominant populations in typical karst secondary forests.
Age ClassDynamic
Index Class
Dynamic Index (%)
BLPSPMLFPD
I–IIV1−73.333 −64.912 79.545 55.000 55.556
II–IIIV2−91.477 −85.233 −92.308 −80.851 −94.286
III–IVV329.830 42.746 45.299 34.043 32.857
IV–VV430.769 63.348 31.250 19.355 40.426
V–VIV551.462 85.185 38.636 52.000 57.143
VI–VIIV634.940 25.000 40.741 −25.000 58.333
VII–VIIIV727.778 55.556 31.250 31.250 20.000
VIII–IXV828.205 75.000 9.091 −8.333 50.000
IX–XV950.000 0.000 90.000 50.000 0.000
X–XIV1057.143 0.000 0.000 33.333 -
XI–XIIV110.000 --−20.000 -
Vpi 30.299 40.838 41.601 24.356 38.248
Vpi 0.421 3.713 3.782 0.507 1.912
Pmax 1.389 9.091 9.091 2.083 5.000
Table 11. Static life tables of five dominant populations in typical karst secondary forests.
Table 11. Static life tables of five dominant populations in typical karst secondary forests.
PopulationAge Class (x)axa′xlxlnlxdxqxLxTxexKxSx
BLI842010006.908 1170.117 94237573.757 0.124 0.883
II303718836.783 450.051 86028163.189 0.052 0.949
III3523528386.731 2500.298 71319552.333 0.354 0.702
IV2472475886.377 1810.308 49812422.112 0.368 0.692
V1711714076.009 2090.514 3027441.829 0.721 0.486
VI83831985.288 690.348 1644422.232 0.428 0.652
VII54541294.860 360.279 1112782.159 0.327 0.721
VIII3939934.533 260.280 801681.801 0.328 0.720
IX2828674.205 340.507 50881.306 0.708 0.493
X1414333.497 190.576 24381.136 0.857 0.424
XI66142.639 00.000 14141.000 0.000 1.000
XII66142.639
PSI2055010006.908 2110.211 89425902.590 0.237 0.789
II574347896.671 870.110 74616962.149 0.117 0.890
III3863867026.554 3000.427 5529501.353 0.557 0.573
IV2212214025.996 2550.634 2743980.990 1.006 0.366
V81811474.990 1250.850 841240.840 1.899 0.150
VI1212223.091 60.273 19391.773 0.318 0.727
VII99162.773 90.563 12201.250 0.827 0.438
VIII4471.946 50.714 481.214 1.253 0.286
IX1120.693 00.000 242.000 0.000 1.000
X1120.693 00.000 221.000 0.000 1.000
XI1120.693
PMI4426510006.908 3090.309 84622892.289 0.370 0.691
II91836916.538 2490.360 56614442.089 0.447 0.640
III1171174426.091 2000.452 3428771.984 0.602 0.548
IV64642425.489 760.314 2045352.211 0.377 0.686
V44441665.112 640.386 1343311.994 0.487 0.614
VI27271024.625 420.412 811971.931 0.531 0.588
VII1616604.094 180.300 511161.933 0.357 0.700
VIII1111423.738 40.095 40651.548 0.100 0.905
IX1010383.638 340.895 21250.658 2.251 0.105
X1141.386 00.000 441.000 0.000 1.000
XI1141.386
LFI206510006.908 2000.200 90038623.863 0.223 0.800
II9528006.685 770.096 76229623.703 0.101 0.904
III47477236.583 2460.340 60022013.044 0.416 0.660
IV31314776.168 920.193 43116013.356 0.214 0.807
V25253855.953 2000.519 28511703.039 0.733 0.481
VI12121855.220 −61−0.330 2168854.784 −0.285 1.330
VII16162465.505 770.313 2086702.722 0.375 0.687
VIII11111695.130 −16−0.095 1774622.734 −0.090 1.095
IX12121855.220 930.503 1382851.541 0.699 0.497
X66924.522 300.326 771461.592 0.395 0.674
XI44624.127 −15−0.242 70701.121 −0.217 1.242
XII55774.344
PDI99010006.908 2000.200 90031773.177 0.223 0.800
II4728006.685 220.028 78922772.846 0.028 0.973
III70707786.657 2560.329 65014881.913 0.399 0.671
IV47475226.258 2110.404 4168381.605 0.518 0.596
V28283115.740 1780.572 2224221.355 0.849 0.428
VI12121334.890 770.579 942001.500 0.865 0.421
VII55564.025 120.214 501051.875 0.241 0.786
VIII44443.784 220.500 33551.250 0.693 0.500
IX22223.091 00.000 22221.000 0.000 1.000
X22223.091
Note: ax is ax after smoothing treatment; the other codes are shown in the “NOTE” of Table 6.
Table 12. Deevey formulas for survival curve fitting of five dominant populations in typical karst secondary forests.
Table 12. Deevey formulas for survival curve fitting of five dominant populations in typical karst secondary forests.
PopulationItemFormulaR2
BLDeevey Iy = 415.7270 − 40.9970x0.880
Deevey IIy = 623.2204exp(0.2771x)0.941
Deevey IIIy = 495.4938x0.79310.767
PSDeevey Iy = 489.3450 − 55.800x0.791
Deevey IIy = 886.5610exp(0.3894x)0.937
Deevey IIIy = 621.1776x0.99150.800
PMDeevey Iy = 203.7090 − 22.7550x0.759
Deevey IIy = 421.3343exp(0.4433x)0.997
Deevey IIIy = 284.3897x1.07670.927
LFDeevey Iy = 58.1970 − 5.2867x0.860
Deevey IIy = 86.2053exp(0.2513x)0.976
Deevey IIIy = 72.7050x0.7490.867
PDDeevey Iy = 91.6670 − 10.6300x0.901
Deevey IIy = 134.4295exp(0.3139x)0.933
Deevey IIIy = 102.3071x0.83030.777
Note: y is ax in Table 11.
Table 13. Comparison with other R packages used for plant population structure analysis.
Table 13. Comparison with other R packages used for plant population structure analysis.
R PackageDescriptionCitation
forestPSDforestPSD encompasses quantitative analyses of population changes, age structure, life tables, and population dynamics within specific spatial and temporal frameworks. This package provides researchers with an efficient and user-friendly instrument for analyzing forest population structures and their temporal alterations.[14]
popprpoppr mainly focuses on processing population genetic data with repeated measurements and has advantages in the analysis of plant population genetic structure and dynamics. It can help researchers understand the genetic diversity and evolutionary history of plant populations and provide information for population structure and quantity dynamics research from a genetic perspective. However, its application scope is relatively narrow, only suitable for the analysis of specific genetic data, and it has difficulties meeting the needs of a comprehensive analysis of plant populations with multiple factors. It cannot effectively analyze the impact of non-genetic factors on population structure and quantity dynamics.[15]
popbiopopbio is good at predicting the long-term dynamic changes in populations. In the research of plant population quantity dynamics, it can simulate the development process of plant populations under different environmental conditions, calculate key indicators such as the population growth rate and extinction probability, and provide a reference basis for the management and protection of plant populations. But when dealing with the impact of complex multi-species interactions and spatial structure relationships on plant population structure and quantity dynamics, its analysis ability is slightly insufficient.[16]
ecostatsecostats provides a wealth of ecological statistical analysis tools. It can calculate community diversity indices, analyze species richness, etc., helping researchers understand the structure and dynamic changes in plant communities from multiple perspectives. It can also explore the key factors affecting plant population structure and quantity dynamics through correlation analysis and other methods. However, it requires users to have a high level of statistical knowledge. It may be difficult for researchers with a weak statistical foundation to use, and its running speed is slow when processing large-scale data.[17]
TreeSimTreeSim can simulate and generate evolutionary trees, helping researchers understand the evolutionary relationships and phylogenetic history of plant species and providing certain references for plant population structure and quantity dynamics research from an evolutionary perspective. But when analyzing the plant population structure and quantity dynamics that have nothing to do with evolutionary trees, its functions are relatively weak, and the application scenarios are relatively limited.[18]
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Lei, J.; Chai, Z. forestPSD: An R Package for Analyzing the Forest Population Structure and Numeric Dynamics. Forests 2025, 16, 303. https://doi.org/10.3390/f16020303

AMA Style

Lei J, Chai Z. forestPSD: An R Package for Analyzing the Forest Population Structure and Numeric Dynamics. Forests. 2025; 16(2):303. https://doi.org/10.3390/f16020303

Chicago/Turabian Style

Lei, Jiaxing, and Zongzheng Chai. 2025. "forestPSD: An R Package for Analyzing the Forest Population Structure and Numeric Dynamics" Forests 16, no. 2: 303. https://doi.org/10.3390/f16020303

APA Style

Lei, J., & Chai, Z. (2025). forestPSD: An R Package for Analyzing the Forest Population Structure and Numeric Dynamics. Forests, 16(2), 303. https://doi.org/10.3390/f16020303

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop