This function estimates and decomposes Lowe productivity and profitability levels and change indices using Data Envelopment Analysis (DEA).
lowe(data, id.var, time.var, x.vars, y.vars, w.vars, p.vars,
tech.change = TRUE, tech.reg = TRUE, rts = c("vrs", "crs", "nirs", "ndrs"),
orientation = c("out", "in", "in-out"), cores = detectCores() - 1, scaled = FALSE,
indices = FALSE, by.id = NULL, by.year = NULL, out.levels = NULL, out.indices = NULL)
A dataframe containing the required information for productivity and profitability assessment.
Number or text string which is the identifier variable of the evaluated firms.
Number or text string which represents the time period variable.
Input quantity variables. Can be a vector of text strings or integers.
Output quantity variables. Can be a vector of text strings or integers.
Input price variables. Can be a vector of text strings or integers.
Output price variables. Can be a vector of text strings or integers.
Logical. If TRUE
(default), the model allows for technological change. See also the Details
section.
Logical. If TRUE
(default), the model allows for negative technological change (i.e. technological regress).
See also the Details
section.
Character string specifying the returns to scale assumption to be considered.
The default value is "vrs"
(variable returns to scale). Other possible options
are "crs"
(constant returns to scale), "nirs"
(non-increasing returns to scale),
or "ndrs"
(non-decreasing returns to scale).
Character string specifying the orientation to be considered.
The default value is "out"
(output orientation). Other possible options
are "in"
(input orientation), and "in-out"
(both input and output orientations).
For this latter, the geometric mean of input and output orientations is returned.
Integer. Specifies the number of cores to be used for parallel computing. By default,
cores is set to the total number of CPU cores available from the machine, minus one.
It is automatically set to one in cases where the machine is made of one core only.
However, when the sample size is small it is recommended to set cores
to one.
Logical. Default is FALSE
. When set to TRUE
, the input and output
quantities are rescaled, so that they all have unit means. See also the Details
section.
Logical. If TRUE
, lowe
returns, in addition to the
levels, indices that reflect changes in a measure. Default is FALSE
. See also the Details
section.
Optional. Integer specifying the reference observation used for computing
the indices. by.id
must be comprised between one and the total number of firms per period.
To be specified if indices = TRUE
. See also the Details
section.
Optional. Integer specifying the reference year used for computing the indices.
by.year
must be comprised between one and the total number of time periods.
To be specified if indices = TRUE
. See also the Details
section.
lowe()
returns a list of class "Lowe"
.
When indices = TRUE
, this list contains the following dataframes:
Several elements are provided in this dataframe along with id.var
and by.year
depending on the chosen orientation set through orientation
:
REV |
Revenues |
COST |
Costs |
PROF |
Profitability ratio |
P |
Aggregated output prices |
W |
Aggregated input prices |
TT |
Terms of trade (i.e. P/W ) |
AO |
Aggregated outputs |
AI |
Aggregated inputs |
TFP |
Total Factor Productivity |
MP |
Maximum productivity |
TFPE |
TFP efficiency score |
OTE |
Output-oriented technical efficiency score |
OSE |
Output-oriented scale efficiency score |
OME |
Output-oriented mix efficiency score |
ROSE |
Residual output-oriented scale efficiency score |
OSME |
Output-oriented scale-mix efficiency score |
ITE |
Input-oriented technical efficiency score |
ISE |
Input-oriented scale efficiency score |
IME |
Input-oriented mix efficiency score |
RISE |
Residual input-oriented scale efficiency score |
ISME |
Input-oriented scale-mix efficiency score |
OTE.ITE |
Geometric mean of OTE and ITE |
OSE.ISE |
Geometric mean of OSE and ISE |
OME.IME |
Geometric mean of OME and IME |
ROSE.RISE |
Geometric mean of ROSE and RISE |
OSME.ISME |
Geometric mean of OSME and ISME |
Only provided if indices = TRUE
. This dataframe contains the change indices
of the different elements computed in Levels
. Each element is named with a prefix
"d" in front of the level name. For instance profitability change is named dPROF
and
output-oriented efficiency change is named dOTE
.
The lowe()
function might not properly work with unbalanced
panel data, so the user should make sure to use a balanced panel.
This function lowe()
computes Lowe productivity and profitability levels and change indices using
a parallel backend (doParallel and foreach packages).
The cores
option can be used to specify the number of cores to use for the
parallel computing. However, when the sample size is small, we recommend to set
cores
to one .
All DEA linear programs are implemented using the package Rglpk.
The tech.change
option can totally prohibit any technological change. When tech.change
is set to FALSE
, this cancels the effect of tech.reg
whatever the value of this latter.
The tech.reg
option, when set to FALSE
, rules out negative technological change (i.e. technological regress).
In this case technological change will increment between consecutive periods.
The scaled
option is useful when working with very large and/or very small values.
By default this option value is FALSE
. However, in the case where scaled = FALSE
, lowe()
may issue a
warning when large (small) values are present in the input and output quantity variables.
The Lowe index may be sensitive to the rescaling especially the mix efficiency component.
When indices
is set to TRUE
, lowe()
returns a list of two dataframes:
the first one contains the productivity and profitability levels, while the second one includes the
corresponding change indices. By default lowe()
returns a list with a single dataframe
of productivity and profitability levels.
By default by.id = NULL
and by.year = NULL
. Hence, when indices = TRUE
,
each observation is then compared to itself in the first period. The user can easily modify these
options by specifying a particular observation in a particular period as the reference. When the user specifies an
observation in by.id
and when by.year = NULL
, then the reference observation is by.id
in
the first period. If by.year
is specified and by.id = NULL
, then each observation
is compared to itself in the specified period of time.
C.J. O'Donnell C.J. (2008), An aggregate quantity-price framework for measuring and decomposing productivity and profitability change. School of Economics, University of Queensland, Australia.
C.J. O'Donnell C.J. (2011), The sources of productivity change in the manufacturing sectors of the U.S. economy. School of Economics, University of Queensland, Australia.
C.J. O'Donnell C.J. (2012), Nonparametric estimates of the components of productivity and profitability change in U.S. aAgriculture. American Journal of Agricultural Economics, 94(4), 873--890.
See also fareprim
# NOT RUN {
# profitability and productivity levels and indices' computations
# }
# NOT RUN {
Lowe.prod <- lowe(data = usagri, id.var = "States", time.var = "Years",
x.vars = c(7:10), y.vars = c(4:6), w.vars = c(14:17), p.vars = c(11:13),
orientation = "in-out", scaled = TRUE, indices = TRUE, by.id = 1, by.year = 1)
summary(Lowe.prod[["Levels"]])
summary(Lowe.prod[["Indices"]])
# }
Run the code above in your browser using DataLab