Home > Software engineering >  Compare the annual rates between groups
Compare the annual rates between groups

Time:11-03

I am strugling into comparing the rates 'of mortality' between two percentages over time interval. My goal is to get the annual rates per group.

My values are already in percentages (start and end values), representing how mych forest have been lost (disturbed, burned, cut, etc.) over several years from the total forest cover. E.g in first year it was 1%, the last year 20 % is a cumulative value of total forest lost.

I followed the calculation of the Compound annual growth rate (CARG), taking into account the values in the 1st year, last year, and total number of years.

Here are my dummy data for two groups, eg. mortablity depending between tree species:

df <- data.frame(group = c('pine', 'beech'),
                 start = c(1,2),
                 end = c(19, 30),
                 years = 18)

To calculate the CAGR, I have used this function:

CAGR_formula <- function(end, start, yrs) {
  values <- ((end/start)^(1/yrs)-1)
  return(values)
}

giving:

df %>% 
 mutate(CARG = CAGR_formula(end, start, yrs)*100)

  group start end yrs     CARG
1  pine     1  19  18   17.8
2 beech     2  30  18   16.2

However, CARG rates of 16-17% seems awefully hight! I was expecting about 1-3% per year. Please, what is wrong in my formula? Is it because original values (start, end) are already in percentages? Or, is it because end is a cumulative values of the start?

Thank you for your ideas!

CodePudding user response:

If I understand correctly, maybe this is what is desired:

df %>% 
  mutate(CARG = CAGR_formula(1 - end/100, 1, yrs)*100)

#>   group start end yrs      CARG
#> 1  pine     1  19  18 -1.163847
#> 2 beech     2  30  18 -1.962024

where the start parameter to CARG() is always 1 (the value for year 1 can be ignored in this calculation), meaning the forest is 100%, and the end parameter to CARG() is 1 - end/100, e.g. in the first row 81% of the forest remains after 18 years.

The resulting yearly mortality rates are 1.17% and 1.96%.

We can verify that 1 * (1 - 0.0117)^18 is roughly 81%, and 1 * (1 - 0.0196)^18 is roughly 70%

CodePudding user response:

Why does it seem high? From 1% to 19% is a big jump. Also: 1 * 1.178^18 = 19.086

Seems right to me

  • Related