The package dfvad
works for value added and productivity decompositions. Value added growth has been instrumental in our understanding of a large gap of economy performance over long terms, so we want to specify explanatory factors of value added growth. Diewert and Fox (2018), abbreviated as DF decomposition, have decomposed value added into five explanatory factors by assuming constant returns to scale. They are:
technical progress
inefficiency or efficiency depending on how we interpret it
input mix which means how input prices affect the output by changing relative allocation of inputs
net output prices
and input quantities.
This approach is highlighted because it uses a Free Disposal Hull approach – no convexity assumptions. And it rules out technical regress. This is a feature of this approach because other researchers may argue that technical regress is there, but since knowledge is there and cannot be diminished, there should be no technical regress but inefficiency. It also has the advantage that it does not involve any econometric estimation, and involves only observable data. Quite objective.
The decomposition is more than analysing value added growth; we can specify the components of productivity growth by focusing on technical progress, efficiency and input mix.
Let’s get a closer look at how value added and productivity are decomposed. A cost constrained value added function is defined as the maximum value added subject to the constrains that a feasible input expenditure is equal to or less than the observed input expenditure: \[\begin{equation*} R^{t}(p,w,x)=\max_{y,z} \{p\cdot y:(y,z)\in S^{t};w\cdot z\leqslant w\cdot x\} \end{equation*}\] and a unit cost function is defined by minimizing the ratio of input values to output values: \[\begin{equation*} c^{t}(w,p)=\min_{s} \left\{\dfrac{w\cdot x^{s}}{p\cdot y^{s}}:s=1,\cdots,t\right\} \end{equation*}\]
Under the assumption of constant returns to scale, a sequential approach is adopted where past observations up to and including the current period are used to determine the technology set. This approach rules out technical regress with period by period accumulation: \[\begin{equation*} \begin{split} R^{t}(p,w,x)&=\max_{s}\left\{p\cdot y^{s}\dfrac{w\cdot x}{w \cdot x^{s}}: s=1, \cdots,t\right\}\\ &=\dfrac{w\cdot x}{c^{t}(w,p)} \end{split} \end{equation*}\]
\[\begin{equation*} \alpha (p^{t-1}, p^{t}, w, x, s)=\dfrac{R^{s}(p^{t}, w, x)}{R^{s}(p^{t-1}, w, x)} \end{equation*}\]
\[\begin{equation*} \beta (x^{t-1}, x^{t}, w)=\dfrac{w\cdot x^{t}}{w\cdot x^{t-1}} \end{equation*}\]
\[\begin{equation*} \gamma (w^{t-1}, w^{t}, p, x, s)=\dfrac{R^{s}(p, w^{t}, x)}{R^{s}(p, w^{t-1}, x)} \end{equation*}\]
\[\begin{equation*} \begin{split} \delta (x^{t-1}, x^{t}, p, w, s)&=\dfrac{R^{s}(p, w, x^{t})/R^{s}(p, w, x^{t-1})}{w\cdot x^{t}/w\cdot x^{t-1}}\\ &=1 \end{split} \end{equation*}\]
\[\begin{equation*} e^{t}=\dfrac{p^{t}\cdot y^{t}}{R^{t}(p^{t},w^{t},x^{t})}\leqslant 1 \end{equation*}\] \[\begin{equation*} \varepsilon ^{t}=\dfrac{e^{t}}{e^{t-1}} \end{equation*}\]
\[\begin{equation*} \tau (t-1, t, p, w, x)=\dfrac{R^{t}(p, w, x)}{R^{t-1}(p, w, x)} \end{equation*}\]
Straightforward algebra using the explanatory factors show that we have the following decomposition of the observed value added ratio: \[\begin{equation*} \dfrac{p^{t}\cdot y^{t}}{p^{t-1}\cdot y^{t-1}}=\alpha^{t}\cdot \beta^{t}\cdot \gamma^{t}\cdot \varepsilon^{t}\cdot \tau^{t} \end{equation*}\]
Productivity growth can be defined as an index of output growth divided by an index of input growth: \[\begin{equation*} \begin{split} TFPG^{t}&=\dfrac{p^{t}\cdot y^{t}/p^{t-1}\cdot y^{t-1}}{\alpha^{t}\cdot \beta^{t}}\\ &=\gamma^{t}\cdot \varepsilon^{t}\cdot \tau^{t} \end{split} \end{equation*}\]
Two options are provided for multiple industries: aggregation prior to decomposition, or decomposition prior to aggregation. The weighted average approach focuses on the latter option. It uses weighted averages of the sectoral decompositions so that an approximate decomposition into explanatory components at the aggregate level can be available:
\[\begin{equation*} \ln \lambda^{t\bullet}=\sum_{k=1}^{K}\dfrac{1}{2}(s^{kt}+s^{k, t-1})\ln \lambda^{kt} \end{equation*}\]
\[\begin{equation*} \begin{split} \ln \left(\dfrac{v^{t}}{v^{t-1}}\right)&\approx \sum_{k=1}^{K}\dfrac{1}{2}\left(s^{kt}+s^{k, t-1}\right)\ln \left(\dfrac{v^{kt}}{v^{k, t-1}}\right)\\ &=\sum_{k=1}^{K}\dfrac{1}{2}\left(s^{kt}+s^{k, t-1}\right)\ln \left(\alpha^{kt}\beta^{kt}\gamma^{kt}\varepsilon^{kt}\tau^{kt}\right)\\ &=\ln\alpha^{t\bullet}+\ln\beta^{t\bullet}+\ln\gamma^{t\bullet}+\ln\varepsilon^{t\bullet}+\ln\tau^{t\bullet} \end{split} \end{equation*}\]
Growth values are period to period growth factors. Level values are cumulated explanatory variables defined as follows.
\[\begin{equation*} A^{1}=1,B^{1}=1,C^{1}=1, E^{1}=1, T^{1}=1 \end{equation*}\]
Using cumulated explanatory factors, we have the levels decomposition for TFP:
\[\begin{equation*} \begin{split} TFP^{t}&=\dfrac{p^{t}\cdot y^{t}}{p^{1}\cdot y^{1}\cdot A^{t}\cdot B^{t}}\\ &=C^{t}E^{t}T^{t} \end{split} \end{equation*}\]
mining
A mining
data set is enclosed as an example to run the function value_decom()
. mining
is constructed for the mining industry with data cubes from the Australia Bureau of Statistics (see Zeng et al., 2018). It consists of mining inputs and outputs adopted to demonstrate the decomposition of value added growth. Here is a glimpse of it:
head(mining)
#> year p2 w2 u2 y2 h2 x2
#> 1 1990 1.0000000 1.000000 1.000000 18217.00 5829.440 12387.56
#> 2 1991 1.0287049 1.094077 1.092580 19248.48 5429.508 12686.21
#> 3 1992 0.9797347 1.147789 1.084150 20130.96 4983.208 12916.41
#> 4 1993 1.0163527 1.224992 1.099337 20331.52 4891.919 13345.71
#> 5 1994 0.9762259 1.188242 1.012954 20686.81 5268.666 13756.35
#> 6 1995 0.9608280 1.246250 1.045412 22165.26 5126.661 14260.32
year
is the time period column, p2
is the output price, w2
is the labour price, u2
is the capital price, y2
is the output quantity, h2
is the labour quantity, and x2
is the capital quantity.
sector
A sector
data set is enclosed as an example to run the function t_weight()
. sector
is constructed for 12 selected industries in Australia with explanatory factors produced by running value_decom()
on each industry and binding them by row (see Zeng et al., 2018). It consists of explanatory factors of value added decomposition and is adopted to demonstrate the aggregation over industries. Here is a glimpse of it:
head(sector)
#> year p y alpha beta epsilon gamma tau
#> 1 1990 1.0000000 16999.00 1.0000000 1.0000000 1.0000000 1.0000000 1.000000
#> 2 1991 0.7351368 17942.24 0.7351368 1.0025434 1.0000000 1.0000000 1.052810
#> 3 1992 0.7592055 16990.13 1.0327405 0.9605183 0.9902470 0.9955678 1.000000
#> 4 1993 0.8091997 17883.10 1.0658506 0.9917871 1.0098491 1.0025314 1.048270
#> 5 1994 0.8376509 18622.32 1.0351597 0.9989740 1.0000000 1.0000000 1.042405
#> 6 1995 0.9402803 15893.13 1.1225205 0.9914021 0.8610543 0.9997592 1.000000
#> industry
#> 1 1
#> 2 1
#> 3 1
#> 4 1
#> 5 1
#> 6 1
year
is the time period column, p
is the output price, y
is the output quantity, alpha
is the net output price index, beta
is the input quantity index, gamma
is the input mix index, epsilon
is the value added efficiency index, tau
is the technical progress index, and industry
is the industry code column.
value_decom()
for decomposing nominal value added growth identifies the contributions from efficiency change, growth of primary inputs, changes in output and input prices, technical progress and returns to scale. Arguments required to decompose value added include x
, w
, y
, p
, t
and data
. x
is a string indicating the quantity column, w
is a string indicating the input price column, y
is a string indicating the output quantity column, p
is a string indicating the output price column, t
is a string indicating the time period column, and data
is a data frame containing the columns above. x
, w
, y
and p
can also be a vector of strings if there multiple inputs or outputs, and strings need to follow the same order. For example, in the mining
data set where h2
is the quantity of labour and w2
is the price of labour, we need to put x
as c("h2","x2")
and w
as c("w2","u2")
so that h2
and w2
take the same position in the arguments.
value_decom()
returns a list containing a growth-value table and a level-value table of explanatory factors for value added growth decomposition. It is sorted by the time period. The growth-value table can be extracted using the number index 1 or the sub-list name “growth”. The level-value table can be extracted using the number 2 or the sub-list name “level”.
# Use the built-in dataset "mining"
table1 <- value_decom(c("h2","x2"), c("w2","u2"), "y2", "p2", "year", mining)[[1]]
head(table1)
#> period value alpha beta gamma efficiency epsilon tau
#> 1 1991 1.0869517 1.0287049 0.9944262 1.0000000 1.0000000 1.0000000 1.062544
#> 2 1992 0.9960608 0.9523963 0.9874494 1.0000000 1.0000000 1.0000000 1.059140
#> 3 1993 1.0477108 1.0373754 1.0180111 0.9997303 0.9923619 0.9923619 1.000000
#> 4 1994 0.9773035 0.9605188 1.0444275 0.9996838 0.9670585 0.9745018 1.000000
#> 5 1995 1.0545680 0.9842271 1.0168128 0.9999874 1.0000000 1.0340636 1.019052
#> 6 1996 1.1345729 1.0406754 1.0327427 1.0000000 1.0000000 1.0000000 1.055662
#> TFPG
#> 1 1.0625440
#> 2 1.0591398
#> 3 0.9920943
#> 4 0.9741937
#> 5 1.0537516
#> 6 1.0556623
table2 <- value_decom(c("h2","x2"), c("w2","u2"), "y2", "p2", "year", mining)[[2]]
head(table2)
#> period value A B C E T TFP
#> 1 1990 1.000000 1.0000000 1.0000000 1.0000000 1.0000000 1.000000 1.000000
#> 2 1991 1.086952 1.0287049 0.9944262 1.0000000 1.0000000 1.062544 1.062544
#> 3 1992 1.082670 0.9797347 0.9819455 1.0000000 1.0000000 1.125383 1.125383
#> 4 1993 1.134325 1.0163527 0.9996314 0.9997303 0.9923619 1.125383 1.116486
#> 5 1994 1.108580 0.9762259 1.0440425 0.9994142 0.9670585 1.125383 1.087673
#> 6 1995 1.169073 0.9608280 1.0615958 0.9994016 1.0000000 1.146824 1.146138
t_weight()
follows a “bottom up” approach that uses weighted averages of the sectoral decompositions to provide an approximate decomposition into explanatory components at the aggregate level. Specifically, the Tornqvist index is adopted in the aggregation. Arguments required to aggregate explanatory factors include y
, p
, id
, t
, alpha
, beta
, gamma
, epsilon
, tau
and data
. y
is a string indicating the output quantity column, p
is a string indicating the output price column, id
is a string indicating the industry column, t
is a string indicating the time period column, alpha
–tau
are explanatory factors of value added decomposition, and data
is a data frame containing the columns above. y
and p
can also be a vector of strings.
t_weight
returns a list containing a growth-value table and a level-value table of explanatory factors for value added growth decomposition. It is sorted by the time period. The growth-value table can be extracted using the number index 1 or the sub-list name “growth”. The level-value table can be extracted using the number 2 or the sub-list name “level”.
# Use the built-in dataset "sector"
table1 <- t_weight("y", "p", "industry", "year", "alpha", "beta", "gamma", "epsilon", "tau", sector)[[1]]
head(table1)
#> period value alpha beta gamma epsilon tau TFPG
#> 1 1991 0.9951654 1.004989 0.9878890 0.9996087 0.9868727 1.016024 1.0023647
#> 2 1992 1.0145281 1.015884 0.9869371 0.9987753 0.9962747 1.016905 1.0118834
#> 3 1993 1.0656435 1.034633 1.0128698 1.0002431 1.0011899 1.015434 1.0168858
#> 4 1994 1.0649234 1.007479 1.0291213 1.0001043 1.0029142 1.024013 1.0271072
#> 5 1995 1.0565961 1.020031 1.0378505 1.0010086 0.9871089 1.010072 0.9980697
#> 6 1996 1.0703334 1.019766 1.0212297 0.9998535 1.0097033 1.018044 1.0277682
table2 <- t_weight("y", "p", "industry", "year", "alpha", "beta", "gamma", "epsilon", "tau", sector)[[2]]
head(table2)
#> period value A B C E T TFP
#> 1 1990 1.0000000 1.000000 1.0000000 1.0000000 1.0000000 1.000000 1.000000
#> 2 1991 0.9951654 1.004989 0.9878890 0.9996087 0.9868727 1.016024 1.002365
#> 3 1992 1.0096232 1.020952 0.9749843 0.9983845 0.9831963 1.033200 1.014276
#> 4 1993 1.0758984 1.056311 0.9875322 0.9986272 0.9843662 1.049147 1.031403
#> 5 1994 1.1457494 1.064211 1.0162904 0.9987313 0.9872349 1.074340 1.059361
#> 6 1995 1.2105943 1.085528 1.0547575 0.9997387 0.9745083 1.085161 1.057317
Diewert, W. E. and Fox, K. J. (2018). Decomposing value added growth into explanatory factors. In The Oxford Handbook of Productivity Analysis, chapter 19, page 625–662. Oxford University Press: New York.
Zeng, S., Parsons, S., Diewert, W. E. and Fox, K. J. (2018). Industry and state level value added and productivity decompositions. Presented in EMG Worshop 2018, Sydney.