This function estimates and decomposes F<U+00E4>re-Primont productivity and profitability levels and indices using Data Envelopment Analysis (DEA).
Shadow prices of input and output variables are also computed.
When price information is provided, fareprim
returns profitability measures and
their decomposition, in addition to productivity.
fareprim(data, id.var, time.var, x.vars, y.vars, w.vars = NULL, p.vars = NULL,
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.
Optional. Input price variables. Can be a vector of text strings or integers.
By default it is set to NULL
so only productivity is computed.
Optional. Output price variables. Can be a vector of text strings or integers.
By default it is set to NULL
so only productivity is computed.
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
, fareprim
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.
fareprim()
returns a list of class "FarePrimont"
.
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 |
REV
, COST
, PROF
, P
, W
, and TT
are only provided
when w.vars
and p.vars
are specified.Shadow prices related x.vars
input variables and y.vars
output are returned.
Shadow prices are named such as Shadowp_
is prefixed to x.vars
and y.vars
.
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 fareprim()
function might not properly work with unbalanced
panel data, so the user should make sure to use a balanced panel.
The function fareprim()
computes F<U+00E4>re-Primont 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
, fareprim()
may issue a
warning when large (small) values are present in the input and output quantity variables.
The F<U+00E4>re-Primont index may be sensitive to the rescaling especially the mix efficiency component.
By default fareprim()
returns a list with (i) a dataframe of productivity and profitability levels
and (ii) shadow prices corresponding to each input (x.vars
) and output (y.vars
) variables.
When indices
is set to TRUE
, fareprim()
returns in addition the change indices
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. agriculture. American Journal of Agricultural Economics, 94(4), 873--890.
See also lowe
# NOT RUN {
# productivity levels and indices' computations without price information
# indices computed in comparison to the first observation in the first period
# }
# NOT RUN {
FareP1 <- fareprim(data = usagri, id.var = "States", time.var = "Years", x.vars = c(7:10),
y.vars = c(4:6), rts = "crs", orientation = "in", scaled = TRUE, indices = TRUE,
by.id = 1, by.year = 1)
summary(FareP1[["Levels"]])
FareP1[["Shadowp"]]
# }
# NOT RUN {
# profitability and productivity levels and indices' computations
# }
# NOT RUN {
FareP2 <- fareprim(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), scaled = TRUE, indices = TRUE,
by.id = 1, by.year = 1)
summary(FareP2[["Indices"]])
# }
Run the code above in your browser using DataLab