Forestry is a long time business that requires patience and careful management. For forest landowners, the tree in the forest is the return in investment, and as businessmen, it is important to track how our investments are performing. Growth measurements are important to telling us how our investments are performing as well as gives insight into how our forest should be managed. Growth measures also gives us information on the optimal time to harvest, as it also shows how the forest performs after tending operation.

There are various characteristics of a stand that can affect the growth of the stand. Those characteristics include:

-   species composition

-   age

-   site quality

-   stand density or stocking

-   competition

-   silvicultural treatment

-   climatic conditions

Increment

Increment is the increase in growth, diameter, basal area, height, volume, quality or value of individual tree crops during a given period. There are some terminologies and measures associated with tree increment.

\[G_a = Y_a− Y_{a-1}\]

\[PAI{a1,a2} = (Y_{a2} - Y_{a1})/a2 − a1\]

G = growth
Y = Volume for year a
a = year (2 is current and 1 is previous)

Questions

We’ll try to:

To do this we use the tvol1012 data which consists of a revised data from 2 separate years, year 1980 and 1987 will be imported.

library(doBy)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:doBy':
## 
##     order_by
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(lattice)
library(ggplot2)
library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
library(data.table)
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
## 
##     between, first, last
library(TukeyC)
library('plotly')
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout

Reading the data*

tvol1012 <- read.table('https://raw.githubusercontent.com/xrander/SLU-Plantation-Experimentation/master/Data/Lab3/tvol1012.txt', header = T, sep = '\t', na.strings = 'NA', dec = '.', strip.white = T)

head(tvol1012)
##   plot nr voldm3.1980 voldm3.1987
## 1   11 10      125.96      219.81
## 2   11 12      122.08      232.79
## 3   11 13       80.61      141.57
## 4   11 14       79.99      154.98
## 5   11 16       94.26      159.08
## 6   11 17      134.58      238.82

Importing Site Information Data

site1012 <- read.table('https://raw.githubusercontent.com/xrander/Slu_experiment/master/Data/Lab3/site1012export.txt',
                       header = T,
                       na.strings = 'NA',
                       strip.white = T,
                       dec = '.',
                       sep = '\t')
head(site1012)
##   plot    ba.sum areaha treatment     baha dm.length   densha  dm.sum  dd.sum
## 1   11 0.9938387 0.0400       2.5 24.84597        64 1600.000  8788.5 1265395
## 2   12 1.0252564 0.0324       2.0 31.64372        72 2222.222  9513.0 1305397
## 3   13 0.9689724 0.0288       1.5 33.64488        82 2847.222  9815.0 1233734
## 4   14 0.9635249 0.0288       1.0 33.45573       108 3750.000 10951.0 1226798
## 5   21 1.0437480 0.0400       2.5 26.09370        62 1550.000  8903.5 1328941
## 6   22 1.0456948 0.0324       2.0 32.27453        80 2469.136 10091.0 1331420
##    dm.mean  dd.mean      amd      qmd
## 1 137.3203 19771.79 13.73203 14.06122
## 2 132.1250 18130.51 13.21250 13.46496
## 3 119.6951 15045.54 11.96951 12.26602
## 4 101.3981 11359.24 10.13981 10.65797
## 5 143.6048 21434.54 14.36048 14.64054
## 6 126.1375 16642.75 12.61375 12.90068

Estimating the PAI**

tvol1012$pai <- (tvol1012$voldm3.1987 - tvol1012$voldm3.1980)/7  # we divide by 7 because that's the difference between 1987 and 1980

#we can estimate the annual increment
tvol1012$ai <- tvol1012$pai/7 #since this is 7 years interval and don't have the value for the immediate previous year, we estimate the average annual increment within that period.
head(tvol1012)
##   plot nr voldm3.1980 voldm3.1987       pai       ai
## 1   11 10      125.96      219.81 13.407143 1.915306
## 2   11 12      122.08      232.79 15.815714 2.259388
## 3   11 13       80.61      141.57  8.708571 1.244082
## 4   11 14       79.99      154.98 10.712857 1.530408
## 5   11 16       94.26      159.08  9.260000 1.322857
## 6   11 17      134.58      238.82 14.891429 2.127347

Next we sum pai, mean volume for 1980 and 1987 for each plots and merge it with the site information data (site1012)

plotvol <- summaryBy(voldm3.1980 +
            voldm3.1987 +
            pai~plot,
          data = tvol1012, FUN = sum)
a_incrment <- summaryBy(ai~plot, data = tvol1012, FUN = sum)

Merging data with the data table ‘site1012’ from RLab2

site1012 <- merge(site1012, plotvol, all = T)
site1012 <- merge(site1012, a_incrment, all = T)

Evaluating the per hectare values

site1012$volm80ha <- site1012$voldm3.1980.sum/(site1012$areaha *1000)

site1012$volm87ha <- site1012$voldm3.1987.sum/(site1012$areaha*1000)
 
site1012$paiha <- round(site1012$pai.sum/(site1012$areaha*1000), 2)

site1012$ai <- round(site1012$ai.sum/(site1012$areaha*1000), 2)

head(site1012)
##   plot    ba.sum areaha treatment     baha dm.length   densha  dm.sum  dd.sum
## 1   11 0.9938387 0.0400       2.5 24.84597        64 1600.000  8788.5 1265395
## 2   12 1.0252564 0.0324       2.0 31.64372        72 2222.222  9513.0 1305397
## 3   13 0.9689724 0.0288       1.5 33.64488        82 2847.222  9815.0 1233734
## 4   14 0.9635249 0.0288       1.0 33.45573       108 3750.000 10951.0 1226798
## 5   21 1.0437480 0.0400       2.5 26.09370        62 1550.000  8903.5 1328941
## 6   22 1.0456948 0.0324       2.0 32.27453        80 2469.136 10091.0 1331420
##    dm.mean  dd.mean      amd      qmd voldm3.1980.sum voldm3.1987.sum  pai.sum
## 1 137.3203 19771.79 13.73203 14.06122         4395.40         7709.99 473.5129
## 2 132.1250 18130.51 13.21250 13.46496         4442.43         7621.58 454.1643
## 3 119.6951 15045.54 11.96951 12.26602         3937.37         7002.56 437.8843
## 4 101.3981 11359.24 10.13981 10.65797         3977.63         6878.00 414.3386
## 5 143.6048 21434.54 14.36048 14.64054         4576.61         7354.41 396.8286
## 6 126.1375 16642.75 12.61375 12.90068         4648.70         8026.96 482.6086
##     ai.sum volm80ha volm87ha paiha   ai
## 1 67.64469 109.8850 192.7498 11.84 1.69
## 2 64.88061 137.1120 235.2340 14.02 2.00
## 3 62.55490 136.7142 243.1444 15.20 2.17
## 4 59.19122 138.1122 238.8194 14.39 2.06
## 5 56.68980 114.4152 183.8603  9.92 1.42
## 6 68.94408 143.4784 247.7457 14.90 2.13
paiviz <- ggplot(site1012, aes(as.factor(plot), paiha, fill = as.factor(treatment))) +
  geom_bar(stat = 'identity')+
  labs(title = 'Periodic Annual Increment',
       x = 'plots',
       y ='m3/ ha /yr ',
       fill = 'Spacing treatments') +
  theme(plot.title = element_text(face = 'bold'),
        axis.title.x = element_text(face = 'bold'),
        axis.title.y = element_text(face = 'bold'))

ggplotly(paiviz)

The plot shows the PAI of each plots for the different spacing treatment while showing the annual increment of each plots.

dens <- ggplot(site1012, aes(as.factor(plot), densha, fill = as.factor(treatment)))+
  geom_bar(stat = 'identity')+
  labs(title = 'Density Per Hectare',
       x = 'plots',
       y = 'stand density',
       fill = 'Space treatment') +
  theme(plot.title = element_text(face = 'bold'),
        axis.title.x = element_text(face = 'bold'),
        axis.title.y = element_text(face = 'bold'))

ggplotly(dens)

Percentage of Thinnings Removed

We can estimate the percentage of stand removed from thinning operation

##first we estimate the density after thinning which is provided in site1012
density <- summaryBy(densha~treatment,
          data = site1012,
          FUN = mean)
 
## dens_ha.mean is the density after thinning, so we rename to 'after_thinning'
names(density)[2] <- 'after_thinning'

##now we estimate the density before thinning
density$before_thinning <- 10000/(density$treatment^2)

##percentage change in the stand can be estimated now.
## percentage change = (old - new)/old *100
density$percent_removed <- (density$before_thinning-
                              density$after_thinning)/density$before_thinning * 100
head(density)
##   treatment after_thinning before_thinning percent_removed
## 1       1.0       3767.361       10000.000        62.32639
## 2       1.5       2725.694        4444.444        38.67187
## 3       2.0       2345.679        2500.000         6.17284
## 4       2.5       1575.000        1600.000         1.56250

Effect of treatment on stem density, quadratic mean diameter,and Periodic Annual Increment (PAI)

Stem density and treatment(spacing) design effect

barplot(tapply(site1012$densha,
               site1012$treatment,
               FUN = mean),
        xlab = substitute(paste(bold('treatment(spacing)'))),
        ylab = substitute(paste(bold(('stem density')))),
        main = 'Treatment Effect on Stem Density',
        col = c(5:9))

The space is having an effect on the diameter, the smaller the spacing, the greater the stem/stand density

Treatment(spacing) effect on QMD

barplot(tapply (site1012$qmd,
                site1012$treatment,
                FUN = mean),
        xlab = substitute(paste(bold('treatment(spacing)'))),
        ylim = c(0, 20),
        ylab = substitute(paste(bold('mean diameter(qmd)'))),
        main = 'treatment effect on QMD',
        col = c(10:13))

QMD increases with spacing effect according to the bar plot, the effect might diminish if spacing increases

Treatment(spacing) effect on Periodic annual increment(PAI)

barplot(tapply(site1012$paiha,
               site1012$treatment,
               FUN = mean),
        xlab = substitute(paste(bold("Initial Spacing Treatment"))),
        ylab = substitute(paste(bold("PAI, m3/ha & year"))),
        col = c(2,13,15,20),
        ylim = c(0, 20),
        main = "Effect of Spacing on PAI")

Clone Performance Test

Homepage

Specing Experiment

Back to portfolio