CobbDouglas: Estimation of a Cobb-Douglas production frontier

Description Usage Arguments Details Value References See Also Examples

View source: R/CobbDouglas.R

Description

Estimation of a Cobb-Douglas production frontier from sample data.

Usage

1
CobbDouglas(y.name, x.names=NULL, data, beta.sum=NULL, beta.min=0)

Arguments

y.name

The name of the output variable.

x.names

The names of the input variables. If NULL (the default), it is set equal to the name of the variables in data besides y.name.

data

A data.frame containing the output and the input variables.

beta.sum

Constraint on the sum of beta parameters. If NULL (the default), beta parameters are freely estimated (subjected only to non-negative constraint).

beta.min

Constraint on the minimum of each beta parameter. Default is 0.

Details

Consider a sample of n production units, for which the quantity of the output Y and of H input variables X_1,…,X_H is measured. Let y_i be the quantity of the output for unit i, and x_{hi} be the quantity of the h-th input for unit i. A Cobb-Douglas production frontier is defined as:

y^*_i = τ∏_{h=1}^H x_{hi}^{β_h}

where y^*_i is the maximum producible output for unit i, τ>0 is a parameter representing the total factor productivity for a technically efficient unit, and β_h≥q 0 (h=1,…,H) is a parameter representing the elasticity of the output with respect to the h-th input. Note that the Cobb-Douglas production frontier is linear on the logarithmic scale:

\log y^*_i = \logτ+∑_{h=1}^H β_h \log x_{hi}

Constant returns to scale hold if ∑_{h=1}^H β_h=1, and they can be obtained by setting the argument beta.sum to value 1. Instead, ∑_{h=1}^H β_h<1 implies decreasing returns to scale, while ∑_{h=1}^H β_h>1 implies increasing returns to scale.

Estimation of the Cobb-Douglas production frontier is performed through constrained least squares on the logarithmic scale:

(\hat{τ},\hat{β}_1,…,\hat{β}_H)=\code{argmin}_{τ,β_1,…,β_H}∑_{i=1}^n(\log y_i-\log y^*_i)^2=

=\code{argmin}_{τ,β_1,…,β_H}∑_{i=1}^n(\log y_i-\logτ-∑_{h=1}^H β_h \log x_{hi})^2

subjected to:

\log y^*_i ≥q \log y_i \hspace{.7cm} i=1,…,n

β_h ≥q 0 \hspace{.7cm} h=1,…,H

S3 methods available for class CobbDouglas are:

Also, the method CobbDouglas_boot is available to approximate confidence intervals for parameters and technical efficiencies.

Value

An object of class CobbDouglas, that is a list with the following components:

parameters

Parameter estimates.

efficiency

Output-side (y.side) and input-side (x.side) technical efficiencies of the sample units.

fitted

Fitted values, equal to the logarithm of the maximum producible output for each unit.

residuals

Residuals, equal to the logarithm of output-side technical efficiencies.

beta.sum

Value passed to argument beta.sum.

beta.min

Value passed to argument beta.min.

y.name

Value passed to argument y.name.

x.names

Value passed to argument x.names.

data

Data used in the estimation.

References

C. W. Cobb and P. H. Douglas (1928). A Theory of Production. American Economic Review, 18: 139-165.

See Also

plot.CobbDouglas; predict.CobbDouglas; CobbDouglas_boot.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
data(production)


### one input variable: 'labour'

m1 <- CobbDouglas("output", "labour", data=production)
summary(m1)

# plot the estimated frontier
plot(m1, cex.axis=1.1, cex.lab=1.2)

# technical efficiencies
m1_eff <- m1$efficiency
## NOT RUN:
# m1_eff

# efficient units
m1_eff[which(m1_eff$y.side==1),]

# setting beta=1 (constant returns to scale) seems to fit worse
m1c <- CobbDouglas("output", "labour", data=production, beta.sum=1)
m1c$parameters
m1c$efficiency[which(m1c$efficiency$y.side==1),]
plot(m1c, cex.axis=1.1, cex.lab=1.2, main="beta = 1", cex.main=1.6)


### two input variables: 'labour' and 'capital'

# no constraints on the sum of beta parameters
m2 <- CobbDouglas("output", c("labour","capital"), data=production)
summary(m2)
m2$efficiency[which(m2$efficiency$y.side==1),]

# beta.sum=1 (constant returns to scale)
m2c <- CobbDouglas("output", c("labour","capital"), data=production, beta.sum=1)
summary(m2c)
m2c$efficiency[which(m2c$efficiency$y.side==1),]

# beta.sum=0.7 (decreasing returns to scale)
m2d <- CobbDouglas("output", c("labour","capital"), data=production, beta.sum=0.7)
summary(m2d)
m2d$efficiency[which(m2d$efficiency$y.side==1),]

alessandromagrini/CobbDouglas documentation built on July 4, 2021, 1:21 a.m.