Learn R Programming

productivity (version 0.2.0)

lowe: Lowe productivity and profitability indices and components

Description

This function estimates and decomposes Lowe productivity and profitability levels and change indices using Data Envelopment Analysis (DEA).

Usage

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)

Arguments

data

A dataframe containing the required information for productivity and profitability assessment.

id.var

Number or text string which is the identifier variable of the evaluated firms.

time.var

Number or text string which represents the time period variable.

x.vars

Input quantity variables. Can be a vector of text strings or integers.

y.vars

Output quantity variables. Can be a vector of text strings or integers.

w.vars

Input price variables. Can be a vector of text strings or integers.

p.vars

Output price variables. Can be a vector of text strings or integers.

tech.change

Logical. If TRUE (default), the model allows for technological change. See also the Details section.

tech.reg

Logical. If TRUE (default), the model allows for negative technological change (i.e. technological regress). See also the Details section.

rts

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).

orientation

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.

cores

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.

scaled

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.

indices

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.

by.id

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.

by.year

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.

out.levels

A connection, or a character string naming the output file to write productivity and profitability levels to, in a CSV format (See write.csv). If it does not contain an absolute path, the file name is relative to the current working directory, getwd().

out.indices

A connection, or a character string naming the output file to write productivity and profitability indices to, in a CSV format (See write.csv). If it does not contain an absolute path, the file name is relative to the current working directory, getwd().

Value

lowe() returns a list of class "Lowe". When indices = TRUE, this list contains the following dataframes:

Levels

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

Indices

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.

Warning

The lowe() function might not properly work with unbalanced panel data, so the user should make sure to use a balanced panel.

Details

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.

References

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

See also fareprim

Examples

Run this code
# 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