Learn R Programming

productivity (version 1.1.2)

fisher: Fisher productivity and profitability index

Description

Using Data Envelopment Analysis (DEA), this function measures productivity and profitability in levels and changes with Fisher index.

The Fisher productivity index is the geometric average of Laspeyres and Paasche indices.

Deflated shadow prices of inputs and outputs can also be computed.

Usage

fisher(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"), parallel = FALSE, cores = max(1, detectCores() - 1), scaled = TRUE, 
  shadow = FALSE)

# S3 method for Fisher print(x, digits = NULL, ...)

Value

fisher() returns a list of class 'Fisher' for which a summary of productivity and profitability measures in levels and changes, as well as a summary shadow prices (if shadow = TRUE), is printed.

This list contains the following items:

Levels

Several elements are provided, depending on the orientation specified:

REVRevenues
COSTCosts
PROFProfitability
PAggregated output prices
WAggregated input prices
TTTerms of trade (i.e. P/W)
AOAggregated outputs
AIAggregated inputs
TFPTotal Factor Productivity (TFP)
MPMaximum productivity
TFPETFP efficiency score
OTEOutput-oriented technical efficiency score (orientation = "out")
OSEOutput-oriented scale efficiency score (orientation = "out")
RAERevenue allocative efficiency (orientation = "out")
(equivalent to output-oriented mix efficiency score)
ROSEResidual output-oriented scale efficiency score (orientation = "out")
OSMEOutput-oriented scale-mix efficiency score (orientation = "out")
ITEInput-oriented technical efficiency score (orientation = "in")
ISEInput-oriented scale efficiency score (orientation = "in")
CAECost allocative efficiency (orientation = "in")
(equivalent to input-oriented mix efficiency score)
RISEResidual input-oriented scale efficiency score (orientation = "in")
ISMEInput-oriented scale-mix efficiency score (orientation = "in")
OTE.ITEGeometric mean of OTE and ITE (orientation = "in-out")
OSE.ISEGeometric mean of OSE and ISE (orientation = "in-out")
RAE.CAEGeometric mean of RAE and CAE (orientation = "in-out")
ROSE.RISEGeometric mean of ROSE and RISE (orientation = "in-out")
OSME.ISMEGeometric mean of OSME and ISME (orientation = "in-out")
RMEResidual mix efficiency score
RERevenue efficiency (orientation = "out")
CECost efficiency (orientation = "in")
RE.CEGeometric mean of RE and CE (orientation = "in-out")

Changes

Change indices of the different elements of Levels are provided. Each change is prefixed by "d" (e.g. profitability change is denoted dPROF, output-oriented efficiency change is denoted dOTE, etc.). Each firm is compared to itself in the previous period. Since there is no previous period for the first period, the results for this first period are replaced by NA.

Shadowp

Returned only if shadow = TRUE. It contains the deflated cost input (x.vars) shadow prices and the deflated revenue output (y.vars) shadow prices.

From an object of class 'Fisher' obtained from fisher(), the

  • Levels function extracts individual productivity and profitability levels;

  • Changes function extracts individual productivity and profitability change indices; and

  • If shadow = TRUE, the Shadowp function extracts individual input and output deflated shadow prices.

Arguments

data

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

id.var

Firms' ID variable. Can be an integer or a text string.

time.var

Time period variable. Can be an integer or a text string.

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. If FALSE, technological change is prohibited. See also the Details section.

tech.reg

Logical. If TRUE (default), the model allows for negative technological change (i.e. technological regress). If FALSE, only positive technological change (i.e. technological progress) is allowed. See also the Details section.

rts

Character string specifying the returns to scale assumption. 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. The default value is "out" (output-orientation). Other possible options are "in" (input-orientation), and "in-out" (both input- and output-orientations). For "in-out", the geometric mean of input- and output-orientations' results is returned.

parallel

Logical. Allows parallel computation. If FALSE (default) the estimation is conducted in sequential mode. If TRUE, parallel mode is activated using the number of cores specified in cores. When the sample size is small, it is recommended to keep the parallel option to its default value (FALSE).

cores

Integer. Used only if parallel = TRUE. It specifies the number of cores to be used for parallel computation. By default, cores = max(1, detectCores() - 1).

scaled

Logical. If TRUE (default), input and output quantities are rescaled. If FALSE, a warning message is displayed when very large (>1e5) and/or very small (<1e-4) values are present in the input and output quantity variables. See also the Details section.

shadow

Logical. Default is FALSE (no shadow prices are returned). When set to TRUE, input and output shadow prices are returned. These shadow prices are informative only and may be subject to the linear programming solver used.

x

An object of class 'Fisher'.

digits

The minimum number of significant digits to be printed in values. Default = max(3, getOption("digits") - 3).

...

Currently not used.

Author

K Hervé Dakpo, Yann Desjeux, Laure Latruffe

Warning

The fisher() function will not work with unbalanced panel data.

The Fisher index may be sensitive to the rescaling.

For extreme efficient observations, the problem of multiple solutions may arise and the values of shadow prices may differ depending on the linear programming solver used (here lpSolveAPI).

Details

When tech.change is set to FALSE, this overrides the effect of tech.reg.

Setting scaled = FALSE (no rescaling of data) may lead to numerical problems in solving LP problems while optimizing DEA models. In extreme cases it may also prevent models from being optimized.

The Fisher index is not transitive and therefore each firm is compared to itself in the previous period. Since there is no previous period for the first period, the results for this first period are replaced by NA.

References

Diewert W.E. (1992), Fisher ideal output, input, and productivity indexes revisited. Journal of Productivity Analysis, 3(3), 211-248. tools:::Rd_expr_doi("10.1007/BF00158354")

Coelli T.J., D.S.P. Rao, C.J. O'Donnell, and G.E. Battese (2005), An Introduction to Efficiency and Productivity Analysis. Springer Eds.

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. URL: https://espace.library.uq.edu.au/view/UQ:368915

See Also

See Levels to retrieve a data frame with individual Fisher productivity and profitability in levels and components.
See Changes to retrieve a data frame with individual Fisher productivity and profitability changes and components.
See Shadowp to retrieve individual deflated input and output shadow prices, provided that shadow = TRUE.

See also laspeyres and paasche for computations with alternative indices.

Examples

Run this code

## Fisher profitability and productivity levels and changes' computations
if (FALSE) {
  Fisher.prod <- fisher(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 = "out")
  Fisher.prod
}

Run the code above in your browser using DataLab