Agriculture Total Factor Productivity Growth in Global Income Classes

A statistical analysis of agriculture total factor productivity indices on global and income class scales, employing methods of multiple linear regression, mean testing, and time series forecasting.
Author
Affiliation
Published

December 7, 2022

Introduction

The agricultural sector faces opposing pressures of sustaining a growing population while minimizing its unfavorable outcomes on finite environmental resources1. In an effort to simultaneously move towards these goals, countries around the world have prioritized agricultural productivity. One of the most informative measures of agricultural productivity is total factor productivity (TFP). TFP compares gross outputs of crop, animal and aquaculture products to inputs of land, labor, capital and material resources utilized in farm production2. As gross output increases at a faster rate than total inputs, total factor production improves, which eases tensions on environmental resources and food security, and boosts economic growth3. TFP is expressed generally by the equation: \[TFP=Y/X\] where Y represents gross output and X represents total inputs.

TFP is an important measure for informing policy priorities for agricultural productivity. These policies include investments in research and development, incentivizing economic reforms for farmers, rural education and extension, and improvments in infrastructure4. Understanding the effects of individual inputs on TFP can direct decision making as it relates to resource allocation for these policy investments.

This analysis will regress global TFP indices on inputs of land, labor, capital, and materials to examine the effects of these inputs on gross outputs. This regression can be utilized to maximize TFP growth rates by differentiating efficiency levels of individual inputs as they relate to gross productivity, which can direct resource allocation to technological improvements of inefficient input systems.

Additionally, it will examine TFP growth rates for country groupings of income class (defined by the World Bank) by testing for mean differences. It will also forecast TFP growth rates for years 2020-2030 at a global scale and for income classes by employing automated autoregressive moving average (ARIMA) models. Understanding nuances in TFP growth for varying income scales can be useful in further research to refine regressions that direct policy prioritization.

All relevant analysis outputs are included in the Analysis section - for detailed code concerning model checking, reference the Model Testing and Supporting Figures section.

Data

Data used in this analysis is sourced from the United States Department of Agriculture’s (USDA) Economic Research Services5. This data is publicly available here. Data files contain annual indices for agricultural TFP, outputs, and inputs for individual countries, major global regions, and countries grouped by income levels for years 1961-2020. Detailed data on land, labor, capital and material inputs used to construct TFP indices is also included, but are not contained in the subsetted data used for the purposes of this particular analysis. TFPs are indexed with a base year of 2015 such that TFP values for countries and regions are set to 100 in 2015.

It is relevant to note that TFP index comparison between geographical regions provides information regarding TFP growth rates, but is not informative for direct comparison of productivity levels.

see code
# #country plot data 
# tfp_country_p <- tfp_all |> 
#   filter(level == 'Country',
#          income %in% c('HI', 'MI-U', 'MI-L', 'LI')) |> 
#   select(year, tfp_index, income) |> 
#   group_by(income, year) |> 
#   summarize_all(mean, na.rm = TRUE)
# 
# #country income factor levels
# tfp_country_p$income <- factor(tfp_country_p$income, levels = c('HI', 'MI-U', 'MI-L', 'LI'))
# 
# #income class TFP plot
# tfp_country_plot <- ggplot(data=tfp_country_p) +
#   geom_line(aes(x=year, y=tfp_index, group=income, color=income), alpha = 0.5) + 
#   theme_minimal() +
#   labs(y = 'TFP Index', x = 'Year') +
#   scale_x_discrete(breaks = scales::pretty_breaks(n=10)) +
#   scale_color_discrete(name = 'Income Class') +
#   theme(plot.title = element_text(hjust = 0.5))
# 
# #global TFP plot
# tfp_world_plot <- ggplot(data = tfp_world) + 
#   geom_line(aes(x=year, y=tfp_index, group = 1)) + 
#   labs(y = 'TFP Index') +
#   theme_minimal()  +
#   scale_x_discrete(breaks = scales::pretty_breaks(n=10)) 
# 
# #income class + global TFP plot
# subplot(tfp_world_plot, tfp_country_plot, nrows = 2, shareX = TRUE, shareY= TRUE) |> 
#           layout(title = list(text = 'Fig 1. Total Factor Production Indices (1961-2020)', font = list(size = 12)), xaxis = list(x = 0.5,  
#     y = 0,  
#     text = "Income Class Grouped",  
#     xref = "paper",  
#     yref = "paper",  
#     xanchor = "center",  
#     yanchor = "bottom",  
#     showarrow = FALSE),
#                  annotations = list(list(x = 0.03,  
#     y = 0.95,  
#     text = "Global",  
#     xref = "paper",  
#     yref = "paper",  
#     xanchor = "center",  
#     yanchor = "bottom",  
#     showarrow = FALSE) , list(x = 0.13,  
#     y = 0.4,  
#     text = "Income Class Grouped",  
#     xref = "paper",  
#     yref = "paper",  
#     xanchor = "center",  
#     yanchor = "bottom",  
#     showarrow = FALSE)))

Analysis

Multiple Linear Regression

A stepwise regression is performed to compare a linear model containing no predictors to a full linear model containing all input variables (land, labor, capital, and materials). The results of this regression suggest that materials are not a relevant predictor in estimating TFP. Consequently, we opt for a model containing three predictor variables: land, labor, capital.

Full model: \[TFP = \beta_0 + \beta_1*land_i + \beta_2*labor_i + \beta_3*capital_i + \beta_4 * materials_i + \varepsilon_i\]

Reduced model: \[TFP = \beta_0 + \beta_1*land_i + \beta_2*labor_i + \beta_3*capital_i + \varepsilon_i\]

The r-squared, adjusted r-squared, and Mallow’s Cp values of the leaps procedure affirm that this model is optimal in predictive accuracy. A pairwise analysis of the reduced predictor variables suggests that there may be significant variable interactions. A second stepwise regression is performed with a full linear model containing all interactions between refined predictor variables, which suggests that there is a significant interaction between land and capital inputs. Therefore, we include this interaction term in the refined model.

Full model: \[TFP = \beta_0 + \beta_1*land_i + \beta_2*labor_i + \beta_3*capital_i + \beta_4*land_i:capital_i + \\ \beta_5*land_i:labor_i + \beta_6*land_i:capital_i + \varepsilon_i\]

Reduced model: \[TFP = \beta_0 + \beta_1*land_i + \beta_2*labor_i + \beta_3*capital_i + \beta_4 * land_i:capital_i + \varepsilon_i\]

The Normal Q-Q plot of the residuals evidences slight non-normality. A log transformation of the response variable, TFP, is performed for normalization.

A summary of the updated model is evaluated. A Residuals vs. Fitted plot displays a roughly even spread of residuals around the zero line, which suggests that equal variance and linearity assumptions are satisfied. A Normal Q-Q plot suggests normality given its relative linearity. Therefore, we accept the reduced and transformed model as a final model.

Accepted model: \[log(TFP) = \beta_0 + \beta_1*land_i + \beta_2*labor_i + \beta_3*capital_i + \beta_4 * land_i:capital_i + \varepsilon_i\]

see code
#multiple regression model
model2 <- lm(log(y) ~ x1+x2+x3+x2:x1)

#summary table for linear regression
tab_model(model2, 
          pred.labels = c('Intercept', 'Land',
                          'Labor', 'Capital', 'Land * Capital'),
          dv.labels = 'Log Total Factor Production',
          string.ci = '95% Conf. Interval',
          string.p = 'P-value',
          title = 'Tbl 1. Transformed Linear Model Results for TFP Regression',
          digits = 7)
Tbl 1. Transformed Linear Model Results for TFP Regression
  Log Total Factor Production
Predictors Estimates 95% Conf. Interval P-value
Intercept 4.5154529 4.4889663 – 4.5419395 <0.001
Land 0.0008662 0.0005873 – 0.0011451 <0.001
Labor -0.0019178 -0.0021221 – -0.0017135 <0.001
Capital -0.0000779 -0.0001752 – 0.0000194 0.117
Land * Capital 0.0000062 0.0000047 – 0.0000077 <0.001
Observations 10187
R2 / R2 adjusted 0.075 / 0.075

Given coefficient estimates of our performed regression, the final model is represented as: \[log(TFP) = 4.515429 + 0.0008662*land_i - 0.0019178*labor_i - 0.0000779*capital_i + \\ 0.0000062 * land_i:capital_i + \varepsilon_i\] The model regression indicates that capital is not a significant predictor variable (p = 0.117); however, all other predictor variables are found to be significant at the 0.001 level (p < 0.001 for all remaining variables). Given that the interaction between land and capital variables is significant (p < 0.001), we opt to preserve capital as a predictor variable in spite of its insignificant predictive power. It is relevant to note that the model summary values are based off of a log-transformed model - for interpretability of these results, it is recommended an inverse transformation be performed on the model estimates. In spite of this, given the signs of the estimates, it can be noted that labor and capital inputs are negatively correlated with TFP, while land and land/capital interaction inputs are positively correlated with TFP. The overall predictive power of the model is low (evidenced by adjusted r-squared = 0.075), which suggests that it is not well equipped to accurately predict TFP variability.

Differences in Means for Varying World Economies

We move to performing statistical tests to compare means of TFP indices between countries grouped by income class: low income (LI), lower-middle income (MI-L), upper-middle income (MI-U), high income (HI). Our first step is to visualize the distribution of the data for all income classes.

see code
#income class factors
tfp_income <- tfp_country |> 
  select(income, tfp_index) |>
  filter(income %in% c('LI','MI-U','HI','MI-L')) |> 
  mutate(income = as.factor(income))

#distribution visualization for income class factor data
violin_plot <- ggviolin(tfp_income, x='income', y='tfp_index', fill = 'income', 
         order = c('LI', 'MI-L', 'MI-U', 'HI'), 
         ylab = 'TFP Index', xlab = 'Income Class',
         draw_quantiles = 0.5, add = 'boxplot') 
ggpar(violin_plot, legend.title = 'Income Class', xlab = '',
      caption = 'Fig 2. Distribution of TFP Indices for Varying Income Classes',
      ggtheme = theme_minimal())

Given that there are significant outliers in each income class, mean differences are tested using Kruskal-Wallis and Dunn tests, both non-parametric methods that have no assumptions of normality.

The null hypothesis: \[H_0: \mu_{low}=\mu_{mid-low} = \mu_{mid-high} = \mu_{high}\]

The alternative hypothesis:

HA: mean TFP indices are not equal across all income classes

see code
#kruskal test for difference in means
income_k <- kruskal_test(tfp_index ~ income, data = tfp_income)
  
#dunn test for difference in means 
income_pairs_d <- dunn_test(tfp_index ~ income, data = tfp_income, p.adjust.method = 'bonferroni')

#vizualize difference in means 
income_pairs_d <- income_pairs_d |> 
  add_xy_position(x = 'income') 
ggboxplot(tfp_income, x = 'income', y = 'tfp_index',
          order = c('LI', 'MI-L', 'MI-U', 'HI')) +
  stat_pvalue_manual(income_pairs_d, hide.ns = TRUE) +
  labs(title = get_test_label(income_k, detailed = TRUE),
subtitle = get_pwc_label(income_pairs_d),
caption = 'Fig 3. Mean difference testing \n for TFP in varying income classes',
y = 'TFP Index', x = 'Income Level') +
  theme()

The Kruskal-Wallis test (p<0.0001) rejects the null hypothesis; there is significant evidence to suggest that there is a difference in mean TFP indices between differing income classes. The Dunn test concludes that this difference is statistically significant between all income class pairings, indicated by significance asterisks of the above. We use this information primarily to validate the productivity of forecasting TFP growth at income class scales as opposed to globally, rather than for the purpose of directly comparing mean differences, since dataset indexing invalidates the capacity for direct productivity comparisons between groups.

TFP Growth Forecasting

We employ autoregressive integrated moving average (ARIMA) models to predict global and income class grouped TFP indices until year 2030.

see code
#add dates to world data
tfp_time <- tfp_world |> 
  mutate(date = paste0(year, '-01-01'),
         date = as.Date(date, format = '%Y-%m-%d')) |> 
  group_by(date) |> 
  summarize(tfp_index_mean = mean(tfp_index))

#convert data to time series 
ts <- xts(tfp_time$tfp_index_mean, tfp_time$date)

#fit ts to automated ARIMA model
fit <- auto.arima(ts)

#visualize global forecasts 
pred.tr <- predict(fit, n.ahead=10)
U.tr <- pred.tr$pred + 2*pred.tr$se
L.tr <- pred.tr$pred - 2*pred.tr$se
ts.plot(ts, xlim=c(0,length(ts)+12), ylim=c(min(ts),max(ts)+20))
title(main = 'Forecasted TFP Indices for Global Data', sub = 'Fig 4. Forecasts for ARIMA(2,2,1) Model with 95% Confidence Intervals', cex.sub = 0.65)
legend('topleft', inset = 0.02,
       legend = c('Forecast', '95% CI'),
       col = c('red', 'blue'),
       lty = c(1,2))
lines(U.tr, col='blue', lty='dashed')
lines(L.tr, col='blue', lty='dashed')
lines((length(ts)+1):(length(ts)+10), pred.tr$pred, col='red')

Based on historical trend, the forecast anticipates that global TFP will continue to grow in the coming decade. We look to forecasted values for more detailed information concerning this growth.

see code
#income class forecasts 
pred.hi <- predict(fit_hi, n.ahead=10)
pred.li <- predict(fit_li, n.ahead=10)
pred.mi <- predict(fit_mi, n.ahead=10)
pred.mil <- predict(fit_mil, n.ahead=10)
year <- c(2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030)

#forecast data frame 
predictions <- data.frame(year, pred.li$pred, pred.mil$pred, pred.mi$pred, pred.hi$pred, pred.tr$pred) 
colnames(predictions) <- c('Year', 'Low Income', 'Lower-Middle Income', 'Upper-Middle Income', 'High Income', 'World')
predictions |> 
  kbl(caption = 'Tbl 2. Predicted TFP Indices') |> 
  kable_styling(bootstrap_options = 'striped', full_width = F)
Tbl 2. Predicted TFP Indices
Year Low Income Lower-Middle Income Upper-Middle Income High Income World
2021 101.8986 103.8871 102.379 105.5007 105.6913
2022 101.8986 104.3529 102.379 106.4207 106.5413
2023 101.8986 104.9014 102.379 107.3407 107.2756
2024 101.8986 105.5635 102.379 108.2607 108.2272
2025 101.8986 106.1743 102.379 109.1807 109.1500
2026 101.8986 106.7559 102.379 110.1007 109.9950
2027 101.8986 107.3610 102.379 111.0207 110.8787
2028 101.8986 107.9716 102.379 111.9407 111.7803
2029 101.8986 108.5730 102.379 112.8607 112.6601
2030 101.8986 109.1743 102.379 113.7807 113.5402

The automated models for income class groups predict that low income and upper-middle income class countries will see no change in TFP indices throughout the forecasted decade. The models also predict that lower-middle income and high income countries will experience steady growth in TFP indices, which is reflected similarly in predicted consistent TFP growth for non-grouped world data.

Discussion

The maximization of agricultural total factor productivity will promote sustainable economic growth and can be used as a tool to ease the environmental burden of agriculture, so understanding the effects of inputs in TFP is pertinent to resource allocation in policy drivers.

Results of the linear regression evidence that only land, labor, and land/capital interaction inputs are significant predictors of TFP, although we preserve capital inputs in our model due to its significance in interaction terms. The global model’s coefficient estimates indicate that land and land/capital interaction inputs are positively correlated with TFP - that is, growth rates of these inputs correlate to comparatively larger growth rates of gross outputs. Inversely, labor and capital inputs are negatively correlated with TFP - while increased inputs of these variables may increase total outputs, the growth rate of associated outputs is smaller than than the growth rate of its inputs.

For quantitative interpretations, we would transform summary coefficients following the equation \[(\exp(coefficient.estimate)-1)*100\] such that they reflect percent increases (as opposed to unit increases) of the response variable, TFP, for one-unit increases in associated input variables.

Mean testing indicates that there is a statistically significant difference in mean TFP values between all income class pairs. A one-sided test of means may offer more insight regarding income class TFP distinctions.

The time series forecasting of TFP indices exhibits predicted increases in global TFP indices in the next decade, yet only lower-middle income and high income classifications are expected to see growing TFP, while low income and upper-middle income classifications are predicted to stagnate. As it pertains to low-income countries, it is reasonable to assume that there is limited flexibility for expenditure on the research and development that TFP growth necessitates, so this stagnation is largely unsurprising. A potential explanation for upper-middle income TFP stagnation is the “middle-income trap”6. However, these theories are largely assumptive. Cross-country differences in TFP growth within income classes is highly variable and depend on numerous factors including research and development, enabling environments, and economically disruptive shocks7, so forecasting measures are expected to be more informative and accurate for predictive models fit to a particular country of interest.

Further Research

Under the produced linear model, only 7.5% of variation in global TFP is explained by the model’s input variables (Tbl 1). It is reasonable to expect that a global model utilizing detailed land, labor, capital, and materials variables may perform better than a model comprised of only their summative indexes. A best fitting model to inform policy prioritization will be tailored to a particular country of interest, which eliminates the variability of cross-country differences in TFP.

Furthermore, some of the residuals of the automated predictive models appear to be significant beyond the randomness of white noise (see Model Checking and Supporting Figures), which implies potential to produce more accurate forecasting models for income class groupings.

Finally, current measures of TFP do not factor environmental impacts. Growing productivity rates ease natural resource demand in agriculture, which lessens pressure on finite environmental reserves; however, higher productivity can also result in higher externalities that negatively impact the environment. The Network on Agricultural TFP and the Environment, launched in 2017, aims to develop a framework for cross-country agricultural TFP comparisons to help address this issue8.

Conclusion

This analysis lends itself to understanding how policy priorities can be shaped to maximize agricultural TFP growth through individual inputs, and examines the differences of this index across various levels of income class.

Model Testing and Supporting Figures

Full analysis code is available here. Model testing and supporting figures contains various steps of regression model fitting and checking, as well as model fitting and checking for income class grouped ARIMA models.

see code
#regression model variable assignments 
y <- tfp_country$tfp_index
x1 <- tfp_country$land_index
x2 <- tfp_country$labor_index
x3 <- tfp_country$capital_index
x4 <- tfp_country$materials_index

#lower model
mod0 <- lm(y~1)
#upper model
mod_upper <- lm(y~x1+x2+x3+x4)
#stepwise regression for model selection 
#step(mod0, scope=list(lower = mod0, upper=mod_upper))
see code
#r-squared, adjusted r-squared, and Mallow's Cp values of reduced model 
mod <- regsubsets(cbind(x1,x2,x3),y)
summary_mod <- summary(mod)
#Mallow's Cp
summary_mod$which
  (Intercept)    x1   x2    x3
1        TRUE FALSE TRUE FALSE
2        TRUE  TRUE TRUE FALSE
3        TRUE  TRUE TRUE  TRUE
see code
#r-squared values
summary_mod$rsq
[1] 0.03808702 0.04533486 0.04966514
see code
#adjusted r-squared values
summary_mod$adjr2
[1] 0.03799258 0.04514738 0.04938516
see code
#pairwise analysis of reduced variables
pairs(cbind(x1,x2,x3), main = 'Pairwise Analysis of Reduced TFP Regression Variables', labels = c('Land', 'Labor', 'Capital'))

see code
#upper model with interaction terms 
mod_upper1 <- lm(y~x1+x2+x3+x1*x2+x1*x3+x1*x3)
#stepwise regression for model selection 
#step(mod0, scope=list(lower = mod0, upper=mod_upper1))
model1 <- lm(y~x1+x2+x3+x2:x1)
see code
#fitted vs. residuals checking for non-transformed model 
plot(fitted(model1),residuals(model1))
abline(h=0)
title(main = 'Fitted vs. Residuals for non-transformed linear model')

see code
#normal qqplot for non-transformed model
qqnorm(residuals(model1))
qqline(residuals(model1))

see code
#histogram of non-transformed response variable (TFP) distribution
hist(y, main = 'Distribution of non-transformed TFP response variable', xlab = 'TFP')

see code
#log transformed model 
model2 <- lm(log(y) ~ x1+x2+x3+x2:x1)

#fitted vs. residuals checking for log transformed model 
plot(fitted(model2),residuals(model2))
abline(h=0)
title(main = 'Fitted vs. Residuals for log-transformed model')

see code
#normal qqplot for log transformed model
qqnorm(residuals(model2))
qqline(residuals(model2))

see code
#histogram of log transformed response variable (TFP) distribution
hist(log(y), main = 'Distribution of log transformed TFP', xlab = 'log(TFP)')

see code
#low income forecasting 
tfp_time_li <- tfp_country |> 
  filter(income == 'LI') |> 
  mutate(date = paste0(year, '-01-01'),
         date = as.Date(date, format = '%Y-%m-%d')) |> 
  group_by(date) |> 
  summarize(tfp_index_mean = mean(tfp_index))

ts_li <- xts(tfp_time_li$tfp_index_mean, tfp_time_li$date)

fit_li <- auto.arima(ts_li)

#checking residuals 
checkresiduals(fit_li)


    Ljung-Box test

data:  Residuals from ARIMA(0,1,0)
Q* = 24.192, df = 10, p-value = 0.007108

Model df: 0.   Total lags used: 10
see code
#lower-middle income forecasting 
tfp_time_mil <- tfp_country |> 
  filter(income == 'MI-L') |> 
  mutate(date = paste0(year, '-01-01'),
         date = as.Date(date, format = '%Y-%m-%d')) |> 
  group_by(date) |> 
  summarize(tfp_index_mean = mean(tfp_index))

ts_mil <- xts(tfp_time_mil$tfp_index_mean, tfp_time_mil$date)

fit_mil <- auto.arima(ts_mil)

#checking residuals 
checkresiduals(fit_mil)


    Ljung-Box test

data:  Residuals from ARIMA(2,2,1)
Q* = 14.191, df = 7, p-value = 0.04788

Model df: 3.   Total lags used: 10
see code
#upper-middle income forecasting 
tfp_time_mi <- tfp_country |> 
  filter(income == 'MI-U') |> 
  mutate(date = paste0(year, '-01-01'),
         date = as.Date(date, format = '%Y-%m-%d')) |> 
  group_by(date) |> 
  summarize(tfp_index_mean = mean(tfp_index))

ts_mi <- xts(tfp_time_mi$tfp_index_mean, tfp_time_mi$date)

fit_mi <- auto.arima(ts_mi)

#checking residuals 
checkresiduals(fit_mi)


    Ljung-Box test

data:  Residuals from ARIMA(0,1,1)
Q* = 5.3068, df = 9, p-value = 0.8068

Model df: 1.   Total lags used: 10
see code
#high income forecasting 
tfp_time_hi <- tfp_country |> 
  filter(income == 'HI') |> 
  mutate(date = paste0(year, '-01-01'),
         date = as.Date(date, format = '%Y-%m-%d')) |> 
  group_by(date) |> 
  summarize(tfp_index_mean = mean(tfp_index))

ts_hi <- xts(tfp_time_hi$tfp_index_mean, tfp_time_hi$date)

fit_hi <- auto.arima(ts_hi)

#checking residuals 
checkresiduals(fit_hi)


    Ljung-Box test

data:  Residuals from ARIMA(0,2,2)
Q* = 4.4176, df = 8, p-value = 0.8176

Model df: 2.   Total lags used: 10

Footnotes

  1. Network on Agricultural Total Factor Productivity and the Environment. Oecd.org. Accessed December 4, 2022. https://www.oecd.org/agriculture/topics/network-agricultural-productivity-and-environment/↩︎

  2. Fuglie K, Jelliffe J, Morgan S. Documentation and methods. Usda.gov. Published October 7, 2022. Accessed December 4, 2022. https://www.ers.usda.gov/data-products/international-agricultural-productivity/documentation-and-methods/↩︎

  3. Fuglie K, Jelliffe J, Morgan S. Documentation and methods. Usda.gov. Published October 7, 2022. Accessed December 4, 2022. https://www.ers.usda.gov/data-products/international-agricultural-productivity/documentation-and-methods/↩︎

  4. Fuglie K, Wang SL. New Evidence Points to Robust But Uneven Productivity Growth in Global Agriculture. Usda.gov. Published September 20, 2012. Accessed December 4, 2022. https://www.ers.usda.gov/amber-waves/2012/september/global-agriculture/↩︎

  5. Fuglie K, Jelliffe J, Morgan S. International agricultural productivity. Usda.gov. Published October 7, 2022. Accessed December 4, 2022. https://www.ers.usda.gov/data-products/international-agricultural-productivity/↩︎

  6. Griffith B. Middle-Income Trap. In: Frontiers in Development Policy. The World Bank; 2011:39-43.↩︎

  7. Fuglie K, Wang SL. New Evidence Points to Robust But Uneven Productivity Growth in Global Agriculture. Usda.gov. Published September 20, 2012. Accessed December 4, 2022. https://www.ers.usda.gov/amber-waves/2012/september/global-agriculture/↩︎

  8. Network on Agricultural Total Factor Productivity and the Environment. Oecd.org. Accessed December 4, 2022. https://www.oecd.org/agriculture/topics/network-agricultural-productivity-and-environment/↩︎