ProdEconR PDF

Download as pdf or txt
Download as pdf or txt
You are on page 1of 370

Introduction to Econometric

Production Analysis with R


(Second Draft Version)

Arne Henningsen

with contributions of Tomasz G. Czekaj

Department of Food and Resource Economics


University of Copenhagen

February 2, 2018
Foreword
This is a collection of my lecture notes for various courses in the field of econometric production
analysis. These lecture notes are still incomplete and may contain many typos, errors, and
inconsistencies. Please report any problems to [email protected]. I am grateful to
my colleague Tomasz G. Czekaj who added and revised some parts of these lecture notes and
to my former students who helped me to improve my teaching and these notes through their
questions, suggestions, and comments. Finally, I thank the R community for providing so many
excellent tools for econometric production analysis.

February 2, 2018

Arne Henningsen

How to cite these lecture notes:


Henningsen, Arne (2018): Introduction to Econometric Production Analysis with R. Collection
of Lecture Notes. 2nd Draft Version. Department of Food and Resource Economics, University
of Copenhagen. Available at http://leanpub.com/ProdEconR/.

2
History
First Draft Version (March 9, 2015)

ˆ Initial release at Leanpub.com

Second Draft Version (February 2, 2018)

ˆ added a chapter on distance functions


ˆ corrected the equation for calculating direct elasticities of substitution
ˆ a large number of further additions, improvements, and corrections

3
Contents

1 Introduction 13
1.1 Objectives of the course and the lecture notes . . . . . . . . . . . . . . . . . . . . . 13
1.2 An extremely short introduction to R . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.1 Some commands for simple calculations . . . . . . . . . . . . . . . . . . . . 13
1.2.2 Creating objects and assigning values . . . . . . . . . . . . . . . . . . . . . 15
1.2.3 Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.4 Simple functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.5 Comparing values and Boolean values . . . . . . . . . . . . . . . . . . . . . 18
1.2.6 Data sets (“data frames”) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2.7 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.8 Simple graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.9 Other useful commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.2.10 Extension packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.2.11 Reading data into R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.2.12 Linear regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3 R packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.4 Data sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.4.1 French apple producers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.4.1.1 Description of the data set . . . . . . . . . . . . . . . . . . . . . . 30
1.4.1.2 Abbreviating name of data set . . . . . . . . . . . . . . . . . . . . 31
1.4.1.3 Calculation of input quantities . . . . . . . . . . . . . . . . . . . . 32
1.4.1.4 Calculation of total costs and variable costs . . . . . . . . . . . . . 32
1.4.1.5 Calculation of profit and gross margin . . . . . . . . . . . . . . . . 32
1.4.2 Rice producers on the Philippines . . . . . . . . . . . . . . . . . . . . . . . 33
1.4.2.1 Description of the data set . . . . . . . . . . . . . . . . . . . . . . 33
1.4.2.2 Mean-scaling quantities . . . . . . . . . . . . . . . . . . . . . . . . 34
1.4.2.3 Logarithmic mean-scaled quantities . . . . . . . . . . . . . . . . . 34
1.4.2.4 Mean-adjusting the time trend . . . . . . . . . . . . . . . . . . . . 35
1.4.2.5 Total costs and cost shares . . . . . . . . . . . . . . . . . . . . . . 35
1.4.2.6 Specifying panel structure . . . . . . . . . . . . . . . . . . . . . . . 35
1.5 Mathematical and statistical methods . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.5.1 Aggregating quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.5.2 Concave and convex functions . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4
Contents

1.5.3 Quasiconcave and quasiconvex functions . . . . . . . . . . . . . . . . . . . . 38


1.5.4 Delta method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2 Primal Approach: Production Function 40


2.1 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.1 Production function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.2 Average products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.3 Total factor productivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.4 Marginal products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.1.5 Output elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.1.6 Elasticity of scale and most productive scale size . . . . . . . . . . . . . . . 41
2.1.7 Marginal rates of technical substitution . . . . . . . . . . . . . . . . . . . . 42
2.1.8 Relative marginal rates of technical substitution . . . . . . . . . . . . . . . 43
2.1.9 Elasticities of substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.1.9.1 Direct elasticities of substitution . . . . . . . . . . . . . . . . . . . 43
2.1.9.2 Allen elasticities of substitution . . . . . . . . . . . . . . . . . . . 43
2.1.9.3 Morishima elasticities of substitution . . . . . . . . . . . . . . . . 44
2.1.10 Profit maximization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.11 Cost minimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.12 Derived input demand functions and output supply functions . . . . . . . . 47
2.1.12.1 Derived from profit maximization . . . . . . . . . . . . . . . . . . 47
2.1.12.2 Derived from cost minimization . . . . . . . . . . . . . . . . . . . 48
2.2 Productivity measures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2.1 Average products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2.2 Total factor productivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.3 Linear production function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.3.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.3.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.3.3 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.3.4 Predicted output quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.3.5 Marginal products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.3.6 Output elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.3.7 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.3.8 Marginal rates of technical substitution . . . . . . . . . . . . . . . . . . . . 62
2.3.9 Relative marginal rates of technical substitution . . . . . . . . . . . . . . . 63
2.3.10 First-order conditions for profit maximization . . . . . . . . . . . . . . . . . 63
2.3.11 First-order conditions for cost minimization . . . . . . . . . . . . . . . . . . 66
2.3.12 Derived input demand functions and output supply functions . . . . . . . . 68
2.4 Cobb-Douglas production function . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.4.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5
Contents

2.4.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.4.3 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.4.4 Predicted output quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.4.5 Output elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.4.6 Marginal products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
2.4.7 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.4.8 Marginal rates of technical substitution . . . . . . . . . . . . . . . . . . . . 76
2.4.9 Relative marginal rates of technical substitution . . . . . . . . . . . . . . . 77
2.4.10 First and second partial derivatives . . . . . . . . . . . . . . . . . . . . . . . 78
2.4.11 Elasticities of substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.4.11.1 Direct elasticities of substitution . . . . . . . . . . . . . . . . . . . 79
2.4.11.2 Allen elasticities of substitution . . . . . . . . . . . . . . . . . . . 80
2.4.11.3 Morishima elasticities of substitution . . . . . . . . . . . . . . . . 84
2.4.12 Quasiconcavity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
2.4.13 First-order conditions for profit maximization . . . . . . . . . . . . . . . . . 86
2.4.14 First-order conditions for cost minimization . . . . . . . . . . . . . . . . . . 88
2.4.15 Derived input demand functions and output supply functions . . . . . . . . 90
2.4.16 Derived input demand elasticities . . . . . . . . . . . . . . . . . . . . . . . . 93
2.5 Quadratic production function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.5.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.5.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
2.5.3 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
2.5.4 Predicted output quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
2.5.5 Marginal products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2.5.6 Output elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
2.5.7 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
2.5.8 Marginal rates of technical substitution . . . . . . . . . . . . . . . . . . . . 103
2.5.9 Relative marginal rates of technical substitution . . . . . . . . . . . . . . . 104
2.5.10 Quasiconcavity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
2.5.11 Elasticities of substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
2.5.11.1 Direct elasticities of substitution . . . . . . . . . . . . . . . . . . . 108
2.5.11.2 Allen elasticities of substitution . . . . . . . . . . . . . . . . . . . 110
2.5.11.3 Comparison of direct and Allen elasticities of substitution . . . . . 112
2.5.12 First-order conditions for profit maximization . . . . . . . . . . . . . . . . . 113
2.5.13 First-order conditions for cost minimization . . . . . . . . . . . . . . . . . . 113
2.6 Translog production function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
2.6.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
2.6.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
2.6.3 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

6
Contents

2.6.4 Predicted output quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . 119


2.6.5 Output elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
2.6.6 Marginal products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
2.6.7 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.6.8 Marginal rates of technical substitution . . . . . . . . . . . . . . . . . . . . 124
2.6.9 Relative marginal rates of technical substitution . . . . . . . . . . . . . . . 126
2.6.10 Second partial derivatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
2.6.11 Quasiconcavity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
2.6.12 Elasticities of substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
2.6.12.1 Direct elasticities of substitution . . . . . . . . . . . . . . . . . . . 130
2.6.12.2 Allen elasticities of substitution . . . . . . . . . . . . . . . . . . . 133
2.6.12.3 Comparison of direct and Allen elasticities of substitution . . . . . 136
2.6.13 First-order conditions for profit maximization . . . . . . . . . . . . . . . . . 137
2.6.14 First-order conditions for cost minimization . . . . . . . . . . . . . . . . . . 139
2.6.15 Mean-scaled quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
2.7 Evaluation of different functional forms . . . . . . . . . . . . . . . . . . . . . . . . 145
2.7.1 Goodness of fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
2.7.2 Test for functional form misspecification . . . . . . . . . . . . . . . . . . . . 147
2.7.3 Theoretical consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
2.7.4 Plausible estimates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
2.7.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.8 Non-parametric production function . . . . . . . . . . . . . . . . . . . . . . . . . . 151

3 Dual Approach: Cost Functions 156


3.1 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.1.1 Cost function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.1.2 Cost flexibility and elasticity of size . . . . . . . . . . . . . . . . . . . . . . 156
3.1.3 Short-run cost functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.2 Cobb-Douglas cost function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
3.2.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
3.2.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
3.2.3 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
3.2.4 Estimation with linear homogeneity in input prices imposed . . . . . . . . . 159
3.2.5 Checking concavity in input prices . . . . . . . . . . . . . . . . . . . . . . . 163
3.2.6 Optimal input quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
3.2.7 Optimal cost shares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
3.2.8 Derived input demand functions . . . . . . . . . . . . . . . . . . . . . . . . 170
3.2.9 Derived input demand elasticities . . . . . . . . . . . . . . . . . . . . . . . . 171
3.2.10 Cost flexibility and elasticity of size . . . . . . . . . . . . . . . . . . . . . . 174
3.2.11 Marginal costs, average costs, and total costs . . . . . . . . . . . . . . . . . 174

7
Contents

3.3 Cobb-Douglas short-run cost function . . . . . . . . . . . . . . . . . . . . . . . . . 178


3.3.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
3.3.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
3.3.3 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
3.3.4 Estimation with linear homogeneity in input prices imposed . . . . . . . . . 179
3.4 Translog cost function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
3.4.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
3.4.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
3.4.3 Linear homogeneity in input prices . . . . . . . . . . . . . . . . . . . . . . . 183
3.4.4 Estimation with linear homogeneity in input prices imposed . . . . . . . . . 184
3.4.5 Cost flexibility and elasticity of size . . . . . . . . . . . . . . . . . . . . . . 189
3.4.6 Marginal costs and average costs . . . . . . . . . . . . . . . . . . . . . . . . 190
3.4.7 Derived input demand functions . . . . . . . . . . . . . . . . . . . . . . . . 193
3.4.8 Derived input demand elasticities . . . . . . . . . . . . . . . . . . . . . . . . 196
3.4.9 Theoretical consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

4 Dual Approach: Profit Function 203


4.1 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
4.1.1 Profit functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
4.1.2 Short-run profit functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
4.2 Graphical illustration of profit and gross margin . . . . . . . . . . . . . . . . . . . 203
4.3 Cobb-Douglas profit function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
4.3.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
4.3.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
4.3.3 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
4.3.4 Estimation with linear homogeneity in all prices imposed . . . . . . . . . . 207
4.3.5 Checking convexity in all prices . . . . . . . . . . . . . . . . . . . . . . . . . 209
4.3.6 Predicted profit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
4.3.7 Optimal profit shares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
4.3.8 Derived output supply and input demand functions . . . . . . . . . . . . . 218
4.3.9 Derived output supply and input demand elasticities . . . . . . . . . . . . . 218
4.4 Cobb-Douglas short-run profit function . . . . . . . . . . . . . . . . . . . . . . . . 220
4.4.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
4.4.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
4.4.3 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
4.4.4 Estimation with linear homogeneity in all prices imposed . . . . . . . . . . 221
4.4.5 Returns to scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
4.4.6 Shadow prices of quasi-fixed inputs . . . . . . . . . . . . . . . . . . . . . . . 223

8
Contents

5 Efficiency Measures 225


5.1 Technical efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
5.1.1 Output-oriented technical efficiency with one output . . . . . . . . . . . . . 225
5.1.2 Input-oriented technical efficiency with one input . . . . . . . . . . . . . . . 225
5.1.3 Output-oriented technical efficiency with two or more outputs . . . . . . . . 225
5.1.4 Input-oriented technical efficiency with two or more inputs . . . . . . . . . 226
5.2 Allocative efficiency, revenue efficiency, cost efficiency . . . . . . . . . . . . . . . . . 226
5.2.1 Output-oriented allocative efficiency and revenue efficiency . . . . . . . . . 226
5.2.2 Input-oriented allocative efficiency and cost efficiency . . . . . . . . . . . . 227
5.3 Profit efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
5.4 Scale efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

6 Stochastic Frontier Analysis 229


6.1 Stochastic production frontiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
6.1.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
6.1.1.1 Marginal products and output elasticities in SFA models . . . . . 231
6.1.2 Skewness of residuals from OLS estimations . . . . . . . . . . . . . . . . . . 231
6.1.3 Cobb-Douglas stochastic production frontier . . . . . . . . . . . . . . . . . . 232
6.1.3.1 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
6.1.3.2 Variance parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 233
6.1.3.3 Statistical tests for inefficiencies . . . . . . . . . . . . . . . . . . . 235
6.1.3.4 Obtaining technical efficiency estimates . . . . . . . . . . . . . . . 236
6.1.4 Translog production frontier . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
6.1.4.1 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
6.1.4.2 Statistical test for inefficiencies . . . . . . . . . . . . . . . . . . . . 238
6.1.4.3 Testing against the Cobb-Douglas functional form . . . . . . . . . 239
6.1.4.4 Obtaining technical efficiency estimates . . . . . . . . . . . . . . . 239
6.1.5 Translog production frontier with mean-scaled variables . . . . . . . . . . . 241
6.2 Stochastic cost frontiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
6.2.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
6.2.2 Skewness of residuals from OLS estimations . . . . . . . . . . . . . . . . . . 243
6.2.3 Estimation of a Cobb-Douglas stochastic cost frontier . . . . . . . . . . . . 244
6.2.4 Short-run cost frontiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.2.5 Profit frontiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
6.3 Analyzing the effects of z variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
6.3.1 Production functions with z variables . . . . . . . . . . . . . . . . . . . . . 249
6.3.2 Production frontiers with z variables . . . . . . . . . . . . . . . . . . . . . . 250
6.3.3 Efficiency effects production frontiers . . . . . . . . . . . . . . . . . . . . . . 253
6.4 Decomposition of cost efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

9
Contents

7 Data Envelopment Analysis (DEA) 261


7.1 Preparations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
7.2 DEA with input-oriented efficiencies . . . . . . . . . . . . . . . . . . . . . . . . . . 261
7.3 DEA with output-oriented efficiencies . . . . . . . . . . . . . . . . . . . . . . . . . 264
7.4 DEA with “super efficiencies” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
7.5 DEA with graph hyperbolic efficiencies . . . . . . . . . . . . . . . . . . . . . . . . . 264

8 Distance Functions 265


8.1 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
8.1.1 Output distance functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
8.1.1.1 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
8.1.1.2 Distance elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . 271
8.1.1.3 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
8.1.2 Input distance functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
8.1.2.1 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
8.1.2.2 Distance elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . 278
8.1.2.3 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
8.2 Cobb-Douglas output distance function . . . . . . . . . . . . . . . . . . . . . . . . 279
8.2.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
8.2.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
8.2.3 Distance elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
8.2.4 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
8.2.5 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
8.2.5.1 Non-increasing in input quantities . . . . . . . . . . . . . . . . . . 282
8.2.5.2 Non-decreasing in output quantities . . . . . . . . . . . . . . . . . 283
8.2.5.3 Quasiconvex in input quantities . . . . . . . . . . . . . . . . . . . 283
8.2.5.4 Convex in output quantities . . . . . . . . . . . . . . . . . . . . . 285
8.2.6 Efficiency estimates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
8.3 Translog output distance function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
8.3.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
8.3.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
8.3.3 Distance elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
8.3.4 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
8.3.5 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
8.3.5.1 Non-increasing in input quantities . . . . . . . . . . . . . . . . . . 296
8.3.5.2 Non-decreasing in output quantities . . . . . . . . . . . . . . . . . 297
8.3.5.3 Quasiconvex in input quantities . . . . . . . . . . . . . . . . . . . 298
8.3.5.4 Convex in output quantities . . . . . . . . . . . . . . . . . . . . . 301
8.3.6 Efficiency estimates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

10
Contents

8.4 Cobb-Douglas input distance function . . . . . . . . . . . . . . . . . . . . . . . . . 305


8.4.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
8.4.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
8.4.3 Distance elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
8.4.4 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
8.4.5 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
8.4.5.1 Non-decreasing in input quantities . . . . . . . . . . . . . . . . . . 308
8.4.5.2 Non-increasing in output quantities . . . . . . . . . . . . . . . . . 308
8.4.5.3 Concave in input quantities . . . . . . . . . . . . . . . . . . . . . . 309
8.4.5.4 Quasiconcave in output quantities . . . . . . . . . . . . . . . . . . 311
8.4.6 Efficiency estimates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
8.5 Translog input distance function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
8.5.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
8.5.2 Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
8.5.3 Distance elasticities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
8.5.4 Elasticity of scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
8.5.5 Efficiency estimates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

9 Panel Data and Technological Change 323


9.1 Average production functions with technological change . . . . . . . . . . . . . . . 323
9.1.1 Cobb-Douglas production function with technological change . . . . . . . . 323
9.1.1.1 Pooled estimation of the Cobb-Douglas production function with
technological change . . . . . . . . . . . . . . . . . . . . . . . . . . 324
9.1.1.2 Panel data estimations of the Cobb-Douglas production function
with technological change . . . . . . . . . . . . . . . . . . . . . . . 325
9.1.2 Translog production function with constant and neutral technological change329
9.1.2.1 Pooled estimation of the Translog production function with con-
stant and neutral technological change . . . . . . . . . . . . . . . . 330
9.1.2.2 Panel-data estimations of the Translog production function with
constant and neutral technological change . . . . . . . . . . . . . . 331
9.1.3 Translog production function with non-constant and non-neutral techno-
logical change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
9.1.3.1 Pooled estimation of a translog production function with non-
constant and non-neutral technological change . . . . . . . . . . . 337
9.1.3.2 Panel-data estimations of a Translog production function with
non-constant and non-neutral technological change . . . . . . . . . 343
9.2 Frontier production functions with technological change . . . . . . . . . . . . . . . 349
9.2.1 Cobb-Douglas production frontier with technological change . . . . . . . . . 349
9.2.1.1 Time-invariant individual efficiencies . . . . . . . . . . . . . . . . . 349
9.2.1.2 Time-variant individual efficiencies . . . . . . . . . . . . . . . . . . 352

11
Contents

9.2.1.3 Observation-specific efficiencies . . . . . . . . . . . . . . . . . . . . 357


9.2.2 Translog production frontier with constant and neutral technological change 359
9.2.2.1 Observation-specific efficiencies . . . . . . . . . . . . . . . . . . . . 359
9.2.3 Translog production frontier with non-constant and non-neutral technolog-
ical change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
9.2.3.1 Observation-specific efficiencies . . . . . . . . . . . . . . . . . . . . 362
9.2.4 Decomposition of productivity growth . . . . . . . . . . . . . . . . . . . . . 365
9.3 Analyzing productivity growths with Data Envelopment Analysis (DEA) . . . . . . 366

12
1 Introduction

1.1 Objectives of the course and the lecture notes


Knowledge about production technologies and producer behavior is important for politicians,
business organizations, government administrations, financial institutions, the EU, and other na-
tional and international organizations who desire to know how contemplated policies and market
conditions can affect production, prices, income, and resource utilization in agriculture as well as
in other industries. The same knowledge is relevant in consultancy of single firms who also want
to compare themselves with other firms and their technology with the best practice technology.
The participants of my courses in the field of econometric production analysis will obtain
relevant theoretical knowledge and practical skills so that they can contribute to the knowledge
about production technologies and producer behavior. After completing my courses in the field
of econometric production analysis, the students should be able to:

ˆ use econometric production analysis and efficiency analysis to analyze various real-world
questions,
ˆ interpret the results of econometric production analyses and efficiency analyses,
ˆ choose a relevant approach for econometric production and efficiency analysis, and
ˆ critically evaluate the appropriateness of a specific econometric production analysis or effi-
ciency analysis for analyzing a specific real-world question.

These lecture notes focus on practical applications of econometrics and microeconomic pro-
duction theory. Hence, they complement textbooks in microeconomic production theory (rather
than substituting them).

1.2 An extremely short introduction to R


Many tutorials for learning R are freely available on-line, e.g. the official “Introduction to R”
(http://cran.r-project.org/doc/manuals/r-release/R-intro.pdf) or the many tutorials
listed in the category“Contributed Documentation”(http://cran.r-project.org/other-docs.
html). Furthermore, many good books are available, e.g. “A Beginner’s Guide to R” (Zuur, Ieno,
and Meesters, 2009), “R Cookbook” (Teetor, 2011), or “Applied Econometrics with R” (Kleiber
and Zeileis, 2008).

13
1 Introduction

1.2.1 Some commands for simple calculations


R is my favorite “pocket calculator”. . .

> 2 + 3

[1] 5

> 2 - 3

[1] -1

> 2 * 3

[1] 6

> 2 / 3

[1] 0.6666667

> 2^3

[1] 8

R uses the standard order of evaluation (as in mathematics). One can use parenthesis (round
brackets) to change the order of evaluation.

> 2 + 3 * 4^2

[1] 50

> 2 + ( 3 * ( 4^2 ) )

[1] 50

> ( ( 2 + 3 ) * 4 )^2

[1] 400

In R, the hash symbol (#) can be used to add comments to the code, because the hash symbol
and all following characters in the same line are ignored by R.

> sqrt(2) # square root

[1] 1.414214

> 2^(1/2) # the same

14
1 Introduction

[1] 1.414214

> 2^0.5 # also the same

[1] 1.414214

> log(3) # natural logarithm

[1] 1.098612

> exp(3) # exponential function

[1] 20.08554

The commands can span multiple lines. They are executed as soon as the command can be
considered as complete.

> 2 +
+ 3

[1] 5

> ( 2
+ +
+ 3 )

[1] 5

1.2.2 Creating objects and assigning values


> a <- 2
> a

[1] 2

> b <- 3
> b

[1] 3

> a * b

[1] 6

Initially, the arrow symbol (<-, consistent of a “smaller than” sign and a dash) was used to assign
values to objects. However, in recent versions of R, also the equality sign (=) can be used for this.

15
1 Introduction

> a = 4
> a

[1] 4

> b = 5
> b

[1] 5

> a * b

[1] 20

In these lecture notes, I stick to the traditional assignment operator, i.e. the arrow symbol (<-).
Please note that R is case-sensitive, i.e. R distinguishes between upper-case and lower-case
letters. Therefore, the following commands return error messages:

> A # NOT the same as "a"


> B # NOT the same as "b"
> Log(3) # NOT the same as "log(3)"
> LOG(3) # NOT the same as "log(3)"

1.2.3 Vectors
> v <- 1:4 # create a vector with 4 elements: 1, 2, 3, and 4
> v

[1] 1 2 3 4

> 2 + v # adding 2 to each element

[1] 3 4 5 6

> 2 * v # multiplying each element by 2

[1] 2 4 6 8

> log( v ) # the natural logarithm of each element

[1] 0.0000000 0.6931472 1.0986123 1.3862944

> w <- c( 2, 4, 8, 16 ) # concatenate 4 numbers to a vector


> w

16
1 Introduction

[1] 2 4 8 16

> v + w # element-wise addition

[1] 3 6 11 20

> v * w # element-wise multiplication

[1] 2 8 24 64

> v %*% w # scalar product (inner product)

[,1]
[1,] 98

> w[2] # select the second element

[1] 4

> w[c(1,3)] # select the first and the third element

[1] 2 8

> w[2:4] # select the second, third, and fourth element

[1] 4 8 16

> w[-2] # select all but the second element

[1] 2 8 16

> length( w )

[1] 4

1.2.4 Simple functions


> sum( w )

[1] 30

> mean( w )

[1] 7.5

> median( w )

17
1 Introduction

[1] 6

> min( w )

[1] 2

> max( w )

[1] 16

> which.min( w )

[1] 1

> which.max( w )

[1] 4

1.2.5 Comparing values and Boolean values


> a == 2

[1] FALSE

> a != 2

[1] TRUE

> a > 4

[1] FALSE

> a >= 4

[1] TRUE

> w > 3

[1] FALSE TRUE TRUE TRUE

> w == 2^(1:4)

[1] TRUE TRUE TRUE TRUE

> all.equal( w, 2^(1:4) )

[1] TRUE

> w > 3 & w < 6 # ampersand = and

[1] FALSE TRUE FALSE FALSE

> w < 3 | w > 6 # vertical line = or

[1] TRUE FALSE TRUE TRUE

18
1 Introduction

1.2.6 Data sets (“data frames”)


The data set “women” is included in R.

> data( "women" ) # load the data set into the workspace
> women

height weight
1 58 115
2 59 117
3 60 120
4 61 123
5 62 126
6 63 129
7 64 132
8 65 135
9 66 139
10 67 142
11 68 146
12 69 150
13 70 154
14 71 159
15 72 164

> names( women ) # display the variable names

[1] "height" "weight"

> dim( women ) # dimension of the data set (rows and columns)

[1] 15 2

> nrow( women ) # number of rows (observations)

[1] 15

> ncol( women ) # number of columns (variables)

[1] 2

> women[[ "height" ]] # display the values of variable "height"

[1] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72

> women$height # short-cut for the previous command

19
1 Introduction

[1] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72

> women$height[ 3 ] # height of the third observation

[1] 60

> women[ 3, "height" ] # the same

[1] 60

> women[ 3, 1 ] # also the same

[1] 60

> women[ 1:3, 1 ] # height of the first three observations

[1] 58 59 60

> women[ 1:3, ] # all variables of the first three observations

height weight
1 58 115
2 59 117
3 60 120

> women$cmHeight <- 2.54 * women$height # new variable: height in cm


> women$kgWeight <- women$weight / 2.205 # new variable: weight in kg
> women$bmi <- women$kgWeight / ( women$cmHeight / 100 )^2 # new variable: BMI
> women

height weight cmHeight kgWeight bmi


1 58 115 147.32 52.15420 24.03067
2 59 117 149.86 53.06122 23.62685
3 60 120 152.40 54.42177 23.43164
4 61 123 154.94 55.78231 23.23643
5 62 126 157.48 57.14286 23.04152
6 63 129 160.02 58.50340 22.84718
7 64 132 162.56 59.86395 22.65364
8 65 135 165.10 61.22449 22.46110
9 66 139 167.64 63.03855 22.43112
10 67 142 170.18 64.39909 22.23631
11 68 146 172.72 66.21315 22.19520
12 69 150 175.26 68.02721 22.14711
13 70 154 177.80 69.84127 22.09269
14 71 159 180.34 72.10884 22.17198
15 72 164 182.88 74.37642 22.23836

20
1 Introduction

1.2.7 Functions
In order to execute a function in R, the function name has to be followed by a pair of parenthesis
(round brackets). The documentation of a function (if available) can be obtained by, e.g., typing
at the R prompt a question mark followed by the name of the function.
> ?log
One can read in the documentation of the function log, e.g., that this function has a second
optional argument base, which can be used to specify the base of the logarithm. By default, the
base is equal to the Euler number (e, exp(1)). A different base can be chosen by adding a second
argument, either with or without specifying the name of the argument.
> log( 100, base = 10 )

[1] 2

> log( 100, 10 )

[1] 2

1.2.8 Simple graphics


Histograms can be created with the command hist. The optional argument breaks can be used
to specify the approximate number of cells:
> hist( women$bmi )
> hist( women$bmi, breaks = 10 )
8

4
6

3
Frequency

Frequency
4

2
2

1
0

22.0 22.5 23.0 23.5 24.0 24.5 22.0 22.5 23.0 23.5 24.0

women$bmi women$bmi

Figure 1.1: Histogram of BMIs

The resulting histogram is shown in figure 1.1.


Scatter plots can be created with the command plot:
> plot( women$height, women$weight )
The resulting scatter plot is shown in figure 1.2.

21
1 Introduction

160

150
women$weight


140


130 ●



120



58 60 62 64 66 68 70 72

women$height

Figure 1.2: Scatter plot of heights and weights

1.2.9 Other useful commands


> class( a )

[1] "numeric"

> class( women )

[1] "data.frame"

> class( women$height )

[1] "numeric"

> ls() # list all objects in the workspace

[1] "a" "b" "v" "w" "women"

> rm(w) # remove an object


> ls()

[1] "a" "b" "v" "women"

1.2.10 Extension packages


Currently (June 12, 2013, 2 pm GMT), 4611 extension packages for R are available on CRAN
(Comprehensive R Archive Network, http://cran.r-project.org). When an extension package
is installed, it can be loaded with the command library. The following command loads the R
package foreign that includes function for reading data in various formats.

> library( "foreign" )

22
1 Introduction

Please note that you should cite scientific software packages in your publications if you used them
for obtaining your results (as any other scientific works). You can use the command citation
to find out how an R package should be cited, e.g.:

> citation( "frontier" )

To cite package 'frontier' in publications use:

Tim Coelli and Arne Henningsen (2017). frontier: Stochastic Frontier


Analysis. R package version 1.1-2.
https://CRAN.R-Project.org/package=frontier.

A BibTeX entry for LaTeX users is

@Manual{,
title = {frontier: Stochastic Frontier Analysis},
author = {Tim Coelli and Arne Henningsen},
year = {2017},
note = {R package version 1.1-2},
url = {https://CRAN.R-Project.org/package=frontier},
}

1.2.11 Reading data into R


R can read and import data from many different file formats. This is described in the official
R manual “R Data Import/Export” (http://cran.r-project.org/doc/manuals/r-release/
R-data.pdf). I usually read my data into R from files in CSV (comma separated values) format.
This can be done by the function read.csv. The command read.csv2 can read files in the
“European CSV format” (values separated by semicolons, comma as decimal separator). The
functions read.spss and read.xport (both in package foreign) can read SPSS data files and
SAS “XPORT” files, respectively. While the add-on package readstata13 can be used to read
binary data files from all STATA versions (including versions 13 and 14), function read.dta (in
package foreign) can only read binary data files from STATA versions 5–12. Functions for reading
MS-Excel files are available, e.g., in the packages XLConnect and xlsx.

1.2.12 Linear regression


The command for estimating linear models in R is lm. The first argument of the command lm
specifies the model that should be estimated. This must be a formula object that consists of the
name of the dependent variable, followed by a tilde (~) and the name of the explanatory variable.
Argument data can be used to specify the data set:

23
1 Introduction

> olsWeight <- lm( weight ~ height, data = women )


> olsWeight

Call:
lm(formula = weight ~ height, data = women)

Coefficients:
(Intercept) height
-87.52 3.45

The summary method can be used to display summary statistics of the regression:

> summary( olsWeight )

Call:
lm(formula = weight ~ height, data = women)

Residuals:
Min 1Q Median 3Q Max
-1.7333 -1.1333 -0.3833 0.7417 3.1167

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -87.51667 5.93694 -14.74 1.71e-09 ***
height 3.45000 0.09114 37.85 1.09e-14 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.525 on 13 degrees of freedom


Multiple R-squared: 0.991, Adjusted R-squared: 0.9903
F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14

The command abline can be used to add a linear (regression) line to a (scatter) plot:

> plot( women$height, women$weight )


> abline( olsWeight )

The resulting plot is shown in figure 1.3. This figure indicates that the relationship between
the height and the corresponding average weights of the women is slightly nonlinear. Therefore,
we add the squared height as additional explanatory regressor. When specifying more than one
explanatory variable, the names of the explanatory variables must be separated by plus signs (+):

24
1 Introduction

160

150
women$weight


140


130 ●



120



58 60 62 64 66 68 70 72

women$height

Figure 1.3: Scatter plot of heights and weights with estimated regression line

> women$heightSquared <- women$height^2


> olsWeight2 <- lm( weight ~ height + heightSquared, data = women )
> summary( olsWeight2 )

Call:
lm(formula = weight ~ height + heightSquared, data = women)

Residuals:
Min 1Q Median 3Q Max
-0.50941 -0.29611 -0.00941 0.28615 0.59706

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 261.87818 25.19677 10.393 2.36e-07 ***
height -7.34832 0.77769 -9.449 6.58e-07 ***
heightSquared 0.08306 0.00598 13.891 9.32e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3841 on 12 degrees of freedom


Multiple R-squared: 0.9995, Adjusted R-squared: 0.9994
F-statistic: 1.139e+04 on 2 and 12 DF, p-value: < 2.2e-16

One can use the function I() to calculate explanatory variables directly in the formula:

> olsWeight3 <- lm( weight ~ height + I(height^2), data = women )


> summary( olsWeight3 )

25
1 Introduction

Call:
lm(formula = weight ~ height + I(height^2), data = women)

Residuals:
Min 1Q Median 3Q Max
-0.50941 -0.29611 -0.00941 0.28615 0.59706

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 261.87818 25.19677 10.393 2.36e-07 ***
height -7.34832 0.77769 -9.449 6.58e-07 ***
I(height^2) 0.08306 0.00598 13.891 9.32e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3841 on 12 degrees of freedom


Multiple R-squared: 0.9995, Adjusted R-squared: 0.9994
F-statistic: 1.139e+04 on 2 and 12 DF, p-value: < 2.2e-16

The coef method for lm objects can be used to extract the vector of the estimated coefficients:

> coef( olsWeight2 )

(Intercept) height heightSquared


261.87818358 -7.34831933 0.08306399

When the coef method is applied to the object returned by the summary method for lm
objects, the matrix of the estimated coefficients, their standard errors, their t-values, and their
P -values is returned:

> coef( summary( olsWeight2 ) )

Estimate Std. Error t value Pr(>|t|)


(Intercept) 261.87818358 25.196770820 10.393323 2.356879e-07
height -7.34831933 0.777692280 -9.448878 6.584476e-07
heightSquared 0.08306399 0.005979642 13.891131 9.322439e-09

The variance covariance matrix of the estimated coefficients can be obtained by the vcov
method:

> vcov( olsWeight2 )

26
1 Introduction

(Intercept) height heightSquared


(Intercept) 634.8772597 -19.586524729 1.504022e-01
height -19.5865247 0.604805283 -4.648296e-03
heightSquared 0.1504022 -0.004648296 3.575612e-05

The residuals method for lm objects can be used to obtain the residuals:

> residuals( olsWeight2 )

1 2 3 4 5 6
-0.102941176 -0.473109244 -0.009405301 0.288170653 0.419618617 0.384938591
7 8 9 10 11 12
0.184130575 -0.182805430 0.284130575 -0.415061409 -0.280381383 -0.311829347
13 14 15
-0.509405301 0.126890756 0.597058824

The fitted method for lm objects can be used to obtain the fitted values:

> fitted( olsWeight2 )

1 2 3 4 5 6 7 8
115.1029 117.4731 120.0094 122.7118 125.5804 128.6151 131.8159 135.1828
9 10 11 12 13 14 15
138.7159 142.4151 146.2804 150.3118 154.5094 158.8731 163.4029

We can evaluate the “fit” of the model by plotting the fitted values against the observed values
of the dependent variable and adding a 45-degree line:

> plot( women$weight, fitted( olsWeight2 ) )


> abline(0,1)

The resulting scatter plot is shown in figure 1.4.


The plot method for lm objects can be used to generate diagnostic plots

> plot( olsWeight2 )

The resulting diagnostic plots are shown in figure 1.5.

1.3 R packages
The following R packages are particularly relevant for empirical production, efficiency, and pro-
ductivity analysis using R (in alphabetical order):

27
1 Introduction

160

150 ●
fitted(olsWeight2)




140




130




120



120 130 140 150 160

women$weight

Figure 1.4: Observed and fitted values of the dependent variable

Residuals vs Fitted Normal Q−Q


0.6

15 ● 15 ●
2
Standardized residuals



● ● ●

Residuals

0.2

● ● ●


● ●

0


−0.2



● ● ●
● ● ●
−1

●2 ●
13 ●
−0.6

● 13 ●2

120 130 140 150 160 −1 0 1

Fitted values Theoretical Quantiles

Scale−Location Residuals vs Leverage


1.5

15 ●
15 ●
Standardized residuals

2
Standardized residuals

●2 13 ●
● ●
1.0

● ●●
1

● ●
● ● ● ●

● ● ●

0

● ●
0.5





−1



● 13 ●2
Cook's distance
0.0

120 130 140 150 160 0.0 0.1 0.2 0.3 0.4

Fitted values Leverage

Figure 1.5: Diagnostic plots

28
1 Introduction

Benchmarking

ˆ various DEA models


ˆ rudimentary SFA models
ˆ extensively described in the book of Bogetoft and Otto (2011)
ˆ available at http://cran.r-project.org/package=Benchmarking

FEAR

ˆ various DEA models


ˆ bootstrapping
ˆ closed source
ˆ non-academic use requires payment of a license fee
ˆ available at: http://www.clemson.edu/economics/faculty/wilson/Software/FEAR/fear.
html

frontiles

ˆ alpha-quantile and order-m efficiency


ˆ available at http://cran.r-project.org/package=frontiles

frontier

ˆ cross-sectional and panel data stochastic frontier models as suggested by Battese and Coelli
(1992)
ˆ stochastic frontier models incorporating a model for inefficiency effects as suggested by
Battese and Coelli (1995)
ˆ based on FRONTIER 4.1 (Coelli, 1996)
ˆ available at http://cran.r-project.org/package=frontier

nonparaeff

ˆ DEA
ˆ available at http://cran.r-project.org/package=nonparaeff

np

ˆ nonparametric kernel regression


ˆ available at http://cran.r-project.org/package=np

plm

ˆ estimation and testing of various specifications of linear panel data models


ˆ available at http://cran.r-project.org/package=plm

29
1 Introduction

rDEA

ˆ robust DEA
ˆ available at http://cran.r-project.org/package=rDEA

semsfa

ˆ semiparametric SFA
ˆ available at http://cran.r-project.org/package=semsfa

sfa

ˆ SFA
ˆ available at http://cran.r-project.org/package=sfa

spfrontier

ˆ spatial SFA
ˆ available at http://cran.r-project.org/package=spfrontier

ssfa

ˆ spatial SFA
ˆ available at http://cran.r-project.org/package=ssfa

TFDEA

ˆ technology forecasting using DEA


ˆ available at http://cran.r-project.org/package=TFDEA

1.4 Data sets


In my courses in the field of econometric production analysis, I usually use two data sets: one
cross-sectional data set of French apple producers and a panel data set of rice producers on the
Philippines.

1.4.1 French apple producers


1.4.1.1 Description of the data set

In this course, we will predominantly use a cross-sectional production data set of 140 French
apple producers from the year 1986. These data are extracted from a panel data set that has
been used in an article published by Ivaldi et al. (1996) in the Journal of Applied Econometrics.

30
1 Introduction

The full panel data set is available in the journal’s data archive: http://www.econ.queensu.
ca/jae/1996-v11.6/ivaldi-ladoux-ossard-simioni/.1
The cross-sectional data set that we will predominantly use in the course is available in the R
package micEcon. It has the name appleProdFr86 and can be loaded by the command:

> data( "appleProdFr86", package = "micEcon" )

The names of the variables in the data set can be obtained by the command names:

> names( appleProdFr86 )

[1] "vCap" "vLab" "vMat" "qApples" "qOtherOut" "qOut"


[7] "pCap" "pLab" "pMat" "pOut" "adv"

The data set includes following variables:2

vCap costs of capital (including land)


vLab costs of labor (including remuneration of unpaid family labor)
vMat costs of intermediate materials (e.g. seedlings, fertilizer, pesticides, fuel)
qOut quantity index of all outputs (apples and other outputs)
pCap price index of capital goods
pLab price index of labor
pMat price index of materials
pOut price index of the aggregate output∗
adv use of advisory service∗

Please note that variables indicated by ∗ are not in the original data set but are artificially
generated in order to be able to conduct some further analyses with this data set. Variable names
starting with v indicate volumes (values), variable names starting with q indicate quantities, and
variable names starting with p indicate prices.

1.4.1.2 Abbreviating name of data set

In order to avoid too much typing, give the data set a much shorter name (dat) by creating a
copy of the data set and removing the original data set:

> dat <- appleProdFr86


> rm( appleProdFr86 )

1
In order to focus on the microeconomic analysis rather than on econometric issues in panel data analysis, we
only use a single year from this panel data set.
2
This information is also available in the documentation of this data set, which can be obtained by the command:
help( "appleProdFr86", package = "micEcon" ).

31
1 Introduction

1.4.1.3 Calculation of input quantities

Our data set does not contain input quantities but prices and costs (volumes) of the inputs.
As we will need to know input quantities for many of our analyses, we calculate input quantity
indices based on following identity:
v i = x i · wi , (1.1)

where wi is the price, xi is the quantity and vi is the volume of the ith input. In R, we can
calculate the input quantities with the following commands:

> dat$qCap <- dat$vCap / dat$pCap


> dat$qLab <- dat$vLab / dat$pLab
> dat$qMat <- dat$vMat / dat$pMat

1.4.1.4 Calculation of total costs and variable costs

Total costs are defined as:


N
X
c= wi x i , (1.2)
i=1

where N denotes the number of inputs. We can calculate the apple producers’ total costs by
following command:

> dat$cost <- with( dat, vCap + vLab + vMat )

Alternatively, we can calculate the costs by summing up the products of the quantities and the
corresponding prices over all inputs:

> all.equal( dat$cost, with( dat, pCap * qCap + pLab * qLab + pMat * qMat ) )

[1] TRUE

Variable costs are defined as:


X
cv = wi xi , (1.3)
i∈N 1

where N 1 is a vector of the indices of the variable inputs. If capital is a quasi-fixed input and
labor and materials are variable inputs, the apple producers’ variable costs can be calculated by
following command:

> dat$vCost <- with( dat, vLab + vMat )

1.4.1.5 Calculation of profit and gross margin

Profit is defined as:


N
X
π=py− wi xi = p y − c, (1.4)
i=1

where all variables are defined as above. We can calculate the apple producers’ profits by:

32
1 Introduction

> dat$profit <- with( dat, pOut * qOut - cost )

Alternatively, we can calculate the profit by subtracting the products of the quantities and the
corresponding prices of all inputs from the revenues:

> all.equal( dat$cost, with( dat, pCap * qCap + pLab * qLab + pMat * qMat ) )

[1] TRUE

The gross margin (“variable profit”) is defined as:


X
πv = p y − wi xi = p y − cv , (1.5)
i∈N 1

where all variables are defined as above. If capital is a quasi-fixed input and labor and materials
are variable inputs, the apple producers’ gross margins can be calculated by following command:

> dat$vProfit <- with( dat, pOut * qOut - vLab - vMat )

1.4.2 Rice producers on the Philippines


1.4.2.1 Description of the data set

In the last part of this course, we will use a balanced panel data set of annual data collected
from 43 smallholder rice producers in the Tarlac region of the Philippines between 1990 and 1997.
This data set has the name riceProdPhil and is available in the R package frontier. Detailed
information about these data is available in the documentation of this data set. We can load this
data set with following command:

> data( "riceProdPhil", package = "frontier" )

The names of the variables in the data set can be obtained by the command names:

> names( riceProdPhil )

[1] "YEARDUM" "FMERCODE" "PROD" "AREA" "LABOR" "NPK"


[7] "OTHER" "PRICE" "AREAP" "LABORP" "NPKP" "OTHERP"
[13] "AGE" "EDYRS" "HHSIZE" "NADULT" "BANRAT"

The following variables are of particular importance for our analysis:

PROD output (tonnes of freshly threshed rice)


AREA area planted (hectares).
LABOR labor used (man-days of family and hired labor)
NPK fertilizer used (kg of active ingredients)
YEARDUM time period (1 = 1990, . . . , 8 = 1997)

In our analysis of the production technology of the rice producers we will use variable PROD as
output quantity and variables AREA, LABOR, and NPK as input quantities.

33
1 Introduction

1.4.2.2 Mean-scaling quantities

In some model specifications, it is an advantage to use mean-scaled quantities. Therefore, we


create new variables with mean-scaled input and output quantities:

> riceProdPhil$area <- riceProdPhil$AREA / mean( riceProdPhil$AREA )


> riceProdPhil$labor <- riceProdPhil$LABOR / mean( riceProdPhil$LABOR )
> riceProdPhil$npk <- riceProdPhil$NPK / mean( riceProdPhil$NPK )
> riceProdPhil$prod <- riceProdPhil$PROD / mean( riceProdPhil$PROD )

As expected, the sample means of the mean-scaled variables are all one so that their logarithms
are all zero (except for negligible very small rounding errors):

> colMeans( riceProdPhil[ , c( "prod", "area", "labor", "npk" ) ] )

prod area labor npk


1 1 1 1

> log( colMeans( riceProdPhil[ , c( "prod", "area", "labor", "npk" ) ] ) )

prod area labor npk


0.000000e+00 -1.110223e-16 0.000000e+00 0.000000e+00

1.4.2.3 Logarithmic mean-scaled quantities

As we use logarithmic input and output quantities in the Cobb-Douglas and Translog specifica-
tions, we can reduce our typing work by creating variables with logarithmic (mean-scaled) input
and output quantities:

> riceProdPhil$lArea <- log( riceProdPhil$area )


> riceProdPhil$lLabor <- log( riceProdPhil$labor )
> riceProdPhil$lNpk <- log( riceProdPhil$npk )
> riceProdPhil$lProd <- log( riceProdPhil$prod )

Please note that the (arithmetic) mean values of the logarithmic mean-scaled variables are not
equal to zero:

> colMeans( riceProdPhil[ , c( "lProd", "lArea", "lLabor", "lNpk" ) ] )

lProd lArea lLabor lNpk


-0.3263075 -0.2718549 -0.2772354 -0.4078492

34
1 Introduction

1.4.2.4 Mean-adjusting the time trend

In some model specifications, it is an advantage to have a time trend variable that is zero at the
sample mean. If we subtract the sample mean from our time trend variable, the sample mean of
the adjusted time trend is zero:

> riceProdPhil$mYear <- riceProdPhil$YEARDUM - mean( riceProdPhil$YEARDUM )


> mean( riceProdPhil$mYear )

[1] 0

1.4.2.5 Total costs and cost shares

The following code calculates total costs and the cost shares (ignoring “other inputs”):

> riceProdPhil$cost <- with( riceProdPhil,


+ AREA * AREAP + LABOR * LABORP + NPK * NPKP)
> riceProdPhil$sArea <- with( riceProdPhil, AREA * AREAP / cost )
> riceProdPhil$sLabor <- with( riceProdPhil, LABOR * LABORP / cost )
> riceProdPhil$sNpk <- with( riceProdPhil, NPK * NPKP / cost )

Now we check whether these cost shares sum up to one:

> all.equal( with( riceProdPhil, sArea + sLabor + sNpk ),


+ rep( 1, nrow( riceProdPhil ) ) )

[1] TRUE

1.4.2.6 Specifying panel structure

This data set does not include any information about its panel structure. Hence, R would ignore
the panel structure and treat this data set as cross-sectional data collected from 352 different
producers. The command plm.data of the plm package (Croissant and Millo, 2008) can be used
to create data sets that include the information on its panel structure. The following commands
creates a new data set of the rice producers from the Philippines that includes information on the
panel structure, i.e. variable FMERCODE indicates the individual (farmer), and variable YEARDUM
indicated the time period (year):3

> library( "plm" )


> pdat <- plm.data( riceProdPhil, c( "FMERCODE", "YEARDUM" ) )

3
Please note that the specification of variable YEARDUM as the time dimension in the panel data set pdat converts
this variable to a categorical variable. If a numeric time variable is needed, it can be created, e.g., by the
command pdat$year <- as.numeric( pdat$YEARDUM ).

35
1 Introduction

1.5 Mathematical and statistical methods


1.5.1 Aggregating quantities
Sometimes, it is desirable to aggregate quantities of different goods to an aggregate quantity.
This can be done by a quantity index, e.g. the Laspeyres or Paasche quantity index

xij · pi0 xij · pij


P P
XjL = Pi XjP = Pi , (1.6)
i xi0 · pi0 i xi0 · pij

where subscript i indicates the good, subscript j indicates the observation, xi0 is the “base”
quantity, and pi0 is the “base” price of the ith good, e.g. the sample means.
The Paasche and Laspeyres quantity indices of all three inputs in the data set of French apple
producers can be calculated by:

> dat$XP <- with( dat,


+ ( vCap + vLab + vMat ) /
+ ( mean( qCap ) * pCap + mean( qLab ) * pLab + mean( qMat ) * pMat ) )
> dat$XL <- with( dat,
+ ( qCap * mean( pCap ) + qLab * mean( pLab ) + qMat * mean( pMat ) ) /
+ ( mean( qCap ) * mean( pCap ) + mean( qLab ) * mean( pLab ) +
+ mean( qMat ) * mean( pMat ) ) )

In many cases, the choice of the formula for calculating quantity indices does not have a major
influence on the result. We demonstrate this with two scatter plots, where we set argument log
of the second plot command to the character string "xy" so that both axes are measured in
logarithmic terms and the dots (firms) are more equally spread:

> plot( dat$XP, dat$XL )


> plot( dat$XP, dat$XL, log = "xy" )

The resulting scatter plots are shown in figure 1.6.


As a compromise, one can use the Fisher quantity index, which is the geometric mean of the
Paasche quantity index and the Laspeyres quantity index:

> dat$X <- sqrt( dat$XP * dat$XL )

We can can also use function quantityIndex from the micEconIndex package to calculate the
quantity index:

> library( "micEconIndex" )


> dat$XP2 <- quantityIndex( c( "pCap", "pLab", "pMat" ),
+ c( "qCap", "qLab", "qMat" ), data = dat, method = "Paasche" )
> all.equal( dat$XP, dat$XP2, check.attributes = FALSE )

[1] TRUE

36
1 Introduction

5.0
5
● ●

●●

4
● ●
●●

2.0
●●
● ●
●●

●●
● ●●●●

3
● ● ● ●
●●●
XL

XL
●●
●● ● ●●

1.0
● ●● ●●
●●

●●●●
●●●
● ●●
●●●●

●●
2 ●

●●●
●●
●●



●●






●●●
● ●


●●




●● ●● ● ●

●●
● ●● ●● ●

● ●●

0.5
●●
●●
● ●●


●●
●●

● ●
●●●●

●●
1




●●
● ●

●● ●●

●●



● ●●




●●

●● ●●

●●

●●
● ●
●●

●●
● ●●

● ●

1 2 3 4 5 0.5 1.0 2.0 5.0

XP XP

Figure 1.6: Comparison of Paasche and Laspeyres quantity indices

> dat$XL2 <- quantityIndex( c( "pCap", "pLab", "pMat" ),


+ c( "qCap", "qLab", "qMat" ), data = dat, method = "Laspeyres" )
> all.equal( dat$XL, dat$XL2, check.attributes = FALSE )

[1] TRUE

> dat$X2 <- quantityIndex( c( "pCap", "pLab", "pMat" ),


+ c( "qCap", "qLab", "qMat" ), data = dat, method = "Fisher" )
> all.equal( dat$X, dat$X2, check.attributes = FALSE )

[1] TRUE

1.5.2 Concave and convex functions


concave
A function f (x) : RN → R is over a convex set D if and only if
convex

θf (xu ) + (1 − θ)f (xv ) f (θxu + (1 − θ)xv ) (1.7)

concave
for all combinations of xu , xv ∈ D and for all 0 ≤ θ ≤ 1, while it is strictly over a convex
convex
set D if and only if
<
θf (xu ) + (1 − θ)f (xv ) f (θxu + (1 − θ)xv ) (1.8)
>
for all combinations of xu , xv ∈ D and for all 0 < θ < 1 (Chiang, 1984, p. 342).
concave
A continuous and twice continuously differentiable function f (x) : RN → R is over a
convex
negative
convex set D if and only if its Hessian matrix is semidefinite at all x ∈ D, while it is
positive
concave negative
strictly over a convex set D if (but not only if) its Hessian matrix is definite at
convex positive
all x ∈ D (Chiang, 1984, p. 347).

37
1 Introduction

A symmetric quadratic N × N matrix H is negative semidefinite if and only if all its ith-order
principal minors (not only its leading principal minors) are non-positive for i being odd and non-
negative for i being even for all i ∈ {1, . . . , N }, while it is positive semidefinite if all its principal
minors (not only its leading principal minors) are non-negative (Gantmacher, 1959, p. 307–308).
An ith-order principal minor of a symmetric N × N matrix H is the determinant of an k × k
submatrix of H, whereas N − k rows and the corresponding N − k columns have been deleted.
N PN N
An N × N matrix has k ith-order principal minors and in total k=1 k principal minors.

A quadratic N × N matrix H is negative definite if and only if its first leading principal minor
is strictly negative and the following leading principle minors alternate in in sign, i.e. |B1 | < 0,
|B2 | > 0, |B3 | < 0, . . . , (−1)N |BN | > 0, while it is positive definite if and only if all its N leading
principal minors are positive, i.e. |Bi | > 0 ∀ i ∈ {1, . . . , }, where |Bi | is the ith leading principal
minor of matrix H (Chiang, 1984, p. 324). An ith-order leading principal minor of a symmetric
N × N matrix H is the determinant of an k × k submatrix of H, whereas last N − k rows and
the last N − k columns have been deleted. An N × N has N leading principal minors.
negative
A quadratic N × N matrix H is semidefinite if and only if all N eigenvalues of H are
positive
non-positive
and at least one of these eigenvalues is zero (Chiang, 1984, p. 330).
non-negative
negative
A quadratic N × N matrix H is definite if and only if all N eigenvalues of H are
positive
negative
strictly (Chiang, 1984, p. 330).
positive

1.5.3 Quasiconcave and quasiconvex functions


quasiconcave
A function f (x) : RN → R is over a convex set D if and only if
quasiconvex


f (θxu + (1 − θ)xv ) min(f (xu ), f (xv )) (1.9)

quasiconcave
for all combinations of xu , xv ∈ D and for all 0 ≤ θ ≤ 1, while it is strictly over a
quasiconvex
convex set D if and only if

>
f (θxu + (1 − θ)xv ) min(f (xu ), f (xv )) (1.10)
<

for all combinations of xu , xv ∈ D and for all 0 < θ < 1 (Chiang, 1984, p. 389; Chambers, 1988,
p. 311).
An alternative definition of quasiconcavity and quasiconvexity is that a function f (x) : RN → R
quasiconcave
is over a convex set D if and only if
quasiconvex

S u (k) = {x|f (x) ≥ k}


is a convex set (1.11)
S l (k) = {x|f (x) ≤ k}

for any constant k (Chiang, 1984, p. 391; Chambers, 1988, p. 311). The sets S u (k) and S l (k) are

38
1 Introduction

called upper contour set and lower contour set, respectively. There is no corresponding definition
of strict quasiconcavity or strict quasiconvexity (Chiang, 1984, p. 391).
necessary
If f (x) : RN → R is a continuous and twice continuously differentiable function, a
sufficient
≤ ≥ ≤ ≥ necessary
condition for quasiconcavity is that |B1 | 0, |B2 | 0, |B3 | 0, . . . , (−1)N |BN | 0, while a
< > < > sufficient
≤ ≤ ≤ ≤
condition for quasiconvexity is that |B1 | 0, |B2 | 0, |B3 | 0, . . . , |BN | 0, where |Bi | is the ith
< < < <
leading principal minor of the bordered Hessian matrix
 
0 f1 f2 ... fN
 
 f1 f11 f12 ... f1N 
 
 
 f2
B= f12 f22 ... f2N , (1.12)

 . .. .. .. ..
 ..

 . . . . 

fN f1N f2N . . . fN N

fi denotes the partial derivative of f (x) with respect to xi , fij denotes the second partial derivative
of f (x) with respect to xi and xj , |B1 | is the determinant of the upper left 2 × 2 sub-matrix
of B, |B2 | is the determinant of the upper left 3 × 3 sub-matrix of B, . . . , and |BN | is the
determinant of B (Chiang, 1984, p. 393f; Chambers, 1988, p. 312). While the first inequality of
the necessary condition for quasiconcavity and quasiconvexity, i.e. |B1 | ≤ 0, is always fulfilled
given that |B1 | = −f12 , the first inequality of the sufficient condition for quasiconcavity and
quasiconvexity, i.e. |B1 | < 0, is only fulfilled if f1 6= 0 (Chiang, 1984, p. 394f).

1.5.4 Delta method


If we have estimated a parameter vector β and its variance covariance matrix V ar(β) and we
calculate a vector of measures (e.g. elasticities) based on the estimated parameters by z = g(β),
we can calculate the approximate variance covariance matrix of z by:
>
∂g(β) ∂g(β)

V ar(z) ≈ V ar(β) , (1.13)
∂β ∂β

where ∂g(β)/∂β is the Jacobian matrix of z = g(β) with respect to β and the superscript > is
the transpose operator.

39
2 Primal Approach: Production Function

2.1 Theory
2.1.1 Production function
The production function
y = f (x) (2.1)

indicates the maximum quantity of a single output (y) that can be obtained with a vector of
given input quantities (x). It is usually assumed that production functions fulfill some properties
(see Chambers, 1988, p. 9).

2.1.2 Average products


Very simple measures to compare the (partial) productivities of different firms are the inputs’
average products. The average product of the ith input is defined as:

f (x) y
APi = = (2.2)
xi xi

The more output one firm produces per unit of input, the more productive is this firm and
the higher is the corresponding average product. If two firms use identical input quantities,
the firm with the larger output quantity is more productive (has a higher average product).
And if two firms produce the same output quantity, the firm with the smaller input quantity is
more productive (has a higher average product). However, if these two firms use different input
combinations, one firm could be more productive regarding the average product of one input,
while the other firm could be more productive regarding the average product of another input.

2.1.3 Total factor productivity


As average products measure just partial productivities, it is often desirable to calculate total
factor productivities (TFP):
y
TFP = , (2.3)
X
where X is a quantity index of all inputs (see section 1.5.1).

40
2 Primal Approach: Production Function

2.1.4 Marginal products


The marginal productivities of the inputs can be measured by their marginal products. The
marginal product of the ith input is defined as:

∂f (x)
M Pi = (2.4)
∂xi

2.1.5 Output elasticities


The marginal productivities of the inputs can also be measured by their output elasticities. The
output elasticity of the ith input is defined as:

∂f (x) xi MP
εi = = (2.5)
∂xi f (x) AP

In contrast to the marginal products, the changes of the input and output quantities are measured
in relative terms so that output elasticities are independent of the units of measurement. Output
elasticities are sometimes also called partial output elasticities or partial production elasticities.

2.1.6 Elasticity of scale and most productive scale size


The returns of scale of the technology can be measured by the elasticity of scale:
X
ε= εi (2.6)
i

If the technology has increasing returns to scale (ε > 1), total factor productivity increases
when all input quantities are proportionally increased, because the relative increase of the output
quantity y is larger than the relative increase of the aggregate input quantity X in equation (2.3).
If the technology has decreasing returns to scale (ε < 1), total factor productivity decreases when
all input quantities are proportionally increased, because the relative increase of the output
quantity y is less than the relative increase of the aggregate input quantity X. If the technology
has constant returns to scale (ε = 1), total factor productivity remains constant when all input
quantities change proportionally, because the relative change of the output quantity y is equal to
the relative change of the aggregate input quantity X.
If the elasticity of scale (monotonically) decreases with firm size, the firm has the most produc-
tive scale size (MPSS) at the point, where the elasticity of scale is one. In order to prove this, we
let x0 indicate the vector of a firm’s original input quantities and s > 0 indicate a scalar factor
by which the firm scales its original input quantities up or down so that it uses input quantities
x = s · x0 . When the firm uses the input quantities x = s · x0 , its total factor productivity is:

f (x) f (s · x0 ) f (s · x0 )
TFP = = = , (2.7)
Q(x) Q(s · x0 ) s · Q(x0 )

41
2 Primal Approach: Production Function

where f (.) is the production function and Q(.) indicates a linearly homogeneous function that
aggregates the individual input quantities to a quantity index. In the following, we want to find
the value of the scale factor s that maximizes total factor productivity. A necessary condition
for a maximum of the total factor productivity is that its partial derivative with respect to s is
zero:

∂T F P
=0 (2.8)
∂s
0
∂f (s·x0 )
s · Q(x 0 ) − f (s · x0 ) ∂ (s·Q(x ))
∂s ∂s
=0 (2.9)
(s · Q(x0 ))2
N
!
X ∂f (s · x0 ) ∂(s · x0i )
s · Q(x0 ) − f (x)Q(x0 ) = 0 (2.10)
i=1
∂(s · x0i ) ∂s
N
!
X ∂f (x) 0
x i s · Q(x0 ) = f (x)Q(x0 ) (2.11)
i=1
∂xi
N
X ∂f (x) s · x0i
=1 (2.12)
i=1
∂xi f (x)
N
X ∂f (x) x
=1 (2.13)
i=1
∂xi f (x)
N
X
i = 1 (2.14)
i=1

=1 (2.15)

Hence, a necessary condition for a maximum of the total factor productivity at a point x = s · x0
is that the elasticity of scale is one ( = 1). The sufficient condition for a maximum of the total
factor productivity is fulfilled if the second derivative of the total factor productivity with respect
to the scale factor is negative at the point x = s · x0 with  = 1. This is the case if the elasticity
of scale decreases with the scale factor (∂/∂s < 0), i.e., firms that are smaller than the point
where  = 1 have increasing returns to scale, while firms that are larger than the point where
 = 1 have decreasing returns to scale.

2.1.7 Marginal rates of technical substitution


The marginal rate of technical substitution between input i and input j is (Chambers, 1988,
p. 29):
∂y
∂xi ∂xj M Pj
M RT Si,j = =− =− (2.16)
∂xj ∂y M Pi
∂xi

42
2 Primal Approach: Production Function

2.1.8 Relative marginal rates of technical substitution


The relative marginal rate of technical substitution between input i and input j is:

∂y xj
∂xi xj ∂xj y εj
RM RT Si,j = =− xi = − ε (2.17)
∂xj xi ∂y i
∂xi y

2.1.9 Elasticities of substitution


The elasticity of substitution measures the substitutability between two inputs. It is defined as:
     
xi M Pj xi xi
d xj d xj −M RT Sij d xj M RT Sij
σij =   MxPi = xi = xi (2.18)
M Pj i
d (−M RT Sij ) d M RT Sij
d M Pi xj xj xj

Thus, if input i is substituted for input j so that the input ratio xi /xj increases by σij %, the
marginal rate of technical substitution between input i and input j will increase by 1%.

2.1.9.1 Direct elasticities of substitution

The direct elasticity of substitution measures the substitutability between two inputs when the
quantities of all other inputs are held constant. Hence, the direct elasticities of substitution can be
considered as short-run elasticities of substitution (Chambers, 1988, p. 33). It can be calculated
by:
D −fi fj (xi fi + xj fj )
σij =  , (2.19)
xi xj fii fj2 − 2fij fi fj + fjj fi2

where fi ≡ ∂f (x)/∂xi is the partial derivative of the production function f (x) with respect to
the ith input quantity (xi ), and fij ≡ ∂ 2 f (x)/∂xi ∂xj is the second partial derivative of the
production function f (x) with respect to the ith and jth input quantity (xi , xj ) (Chambers,
1988, p. 31). As fij = fji (Young’s theorem), the direct elasticity of substitution is symmetric
D = σ D ).
(σij ji

2.1.9.2 Allen elasticities of substitution

The Allen elasticity of substitution is another measure of the substitutability between two inputs.
In contrast to the direct elasticity of substitution, the Allen elasticity of substitution takes into
account that the quantities of the other inputs can be adjusted as well. Hence, in comparison to
the direct elasticities of substitution, the Allen elasticities of substitution can be considered as
long-run elasticities of substitution. It can be calculated by:
P
xk Fij
k fk
σij = , (2.20)
xi xj F

43
2 Primal Approach: Production Function

where F is the determinant of the bordered Hessian matrix B with


 
0 f1 f2 ... fN
 
 f1 f11 f12 ... f1N 
 
 
 f2
B= f12 f22 ... f2N , (2.21)

 . .. .. .. ..
 ..

 . . . . 

fN f1N f2N . . . fN N

and Fij is the co-factor of fij , i.e.1




0 f1 f2 ... fj−1 fj+1 ... fN



f1 f11 f12 ... f1,j−1 f1,j+1 . . . f1N


f2 f12 f22 ... f2,j−1 f2,j+1 . . . f2N
.. .. .. .. .. .. .. ..
. . . . . . . .
Fij = (−1)i+j · . (2.22)


fi−1 f1,i−1 f2,i−1 . . . fi−1,j−1 fi−1,j+1 . . . fi−1,N
fi+1 f1,i+1 f2,i+1 . . . fi+1,j−1 fi+1,j+1 . . . fi+1,N


.. .. .. .. .. ..

.. ..

. . . . . . . .


fN f1N f2N ... fj−1,N fj+1,N . . . fN N

As the bordered Hessian matrix is symmetric, the co-factors are also symmetric (Fij = Fji ) so
that also the Allen elasticities of substitution are symmetric (σij = σji ).
P
In case of two inputs (x = (x1 , x2 )), k fk xk = f1 x1 + f2 x2 , xi xj = x1 x2 , F12 = f1 f2 , and
F = 2f12 f1 f2 − f11 f22 − f22 f12 so that the direct elasticity of substitution is identical to the Allen
D ).
elasticity of substitution (σij = σij
Following condition holds for Allen elasticities of substitution:
X fi xi
Ki σij = 0 with Ki = P (2.23)
i k fk xk

(see Chambers, 1988, p. 35).

2.1.9.3 Morishima elasticities of substitution

The Morishima elasticity of substitution is a third measure of the substitutability between two
inputs. It can be calculated by:
M fj Fij fj Fjj
σij = − , (2.24)
xi F xj F
where Fij and F are defined as above. In contrast to the direct elasticity of substitution and the
Allen elasticity of substitution, the Morishima elasticity of substitution is usually not symmetric

1
The exponent of (−1) usually is the sum of the number of the deleted row (i + 1) and the number of the deleted
column (j + 1), i.e. i + j + 2. In our case, we can simplify this to i + j, because (−1)i+j+2 = (−1)i+j · (−1)2 =
(−1)i+j .

44
2 Primal Approach: Production Function

M 6= σ M ).
(σij ji
From the above definition of the Morishima elasticities of substitution (2.24), we can derive
the relationship between the Morishima elasticities of substitution and the Allen elasticities of
substitution:
P P
M fj xj k fk xk Fij fj xj k fk xk Fjj
σij =P −P (2.25)
k fk xk xi xj F k fk xk x2j F
fj xj fj xj
=P σij − P σjj (2.26)
k fk xk k fk xk
fj xj
=P (σij − σjj ) , (2.27)
k fk xk

where σjj can be calculated as the Allen elasticities of substitution with equation (2.20), but does
not have an economic meaning.
In case of two inputs (x = (x1 , x2 )), the Morishima elasticities of substitution are symmetric
and equal to the direct and Allen elasticities of substitution:

M f2 F12 f2 F22
σ12 = − (2.28)
x1 F x2 F
F12 f2 f2 F22
 
= − (2.29)
F x1 x2 F12
!
F12 f2 f2 f12
= + (2.30)
F x1 x2 f1 f2
F12 f2 f1
 
= + (2.31)
F x x2
 1
F12 f2 x2 f1 x1

= + (2.32)
F x1 x2 x1 x2
f1 x1 + f2 x2 F12
= (2.33)
x1 x2 F
D
= σ12 = σ12 . (2.34)

2.1.10 Profit maximization


We assume that the firms maximize their profit. The firm’s profit is given by
X
π=py− wi xi , (2.35)
i

where p is the price of the output and wi is the price of the ith input. If the firm faces output
price p and input prices wi , we can calculate the maximum profit that can be obtained by the
firm by solving following optimization problem:
X
max p y − wi xi , s.t. y = f (x) (2.36)
y,x
i

45
2 Primal Approach: Production Function

This restricted maximization can be transformed into an unrestricted optimization by replacing


y by the production function:
X
max p f (x) − wi x i (2.37)
x
i

Hence, the first-order conditions are:

∂π ∂f (x)
=p − wi = p M Pi − wi = 0 (2.38)
∂xi ∂xi

so that we get
wi = p M Pi = M V Pi (2.39)

where M V Pi = p (∂y/∂xi ) is the marginal value product of the ith input.

2.1.11 Cost minimization


Now, we assume that the firms take total output as given (e.g. because production is restricted
by a quota) and try to produce this output quantity with minimal costs. The total cost is given
by
X
c= wi x i , (2.40)
i

where wi is the price of the ith input.


If the firm faces input prices wi and wants to produce y units of output, the minimum costs
can be obtained by
X
min wi xi , s.t. y = f (x) (2.41)
i

This restricted minimization can be solved by using the Lagrangian approach:


X
L= wi xi + λ (y − f (x)) (2.42)
i

So that the first-order conditions are:

∂L ∂f (x)
= wi − λ = wi − λ M Pi = 0 (2.43)
∂xi ∂xi
∂L
= y − f (x) = 0 (2.44)
∂λ

From the first-order conditions (2.43), we get:

wi = λM Pi (2.45)

and
wi λM Pi M Pi
= = = −M RT Sji (2.46)
wj λM Pj M Pj

46
2 Primal Approach: Production Function

As profit maximization implies producing the optimal output quantity with minimum costs,
the first-order conditions for the optimal input combinations (2.46) can be obtained not only
from cost minimization but also from the first-order conditions for profit maximization (2.39):

wi M V Pi p M Pi M Pi
= = = = −M RT Sji (2.47)
wj M V Pj p M Pj M Pj

2.1.12 Derived input demand functions and output supply functions


In this section, we will analyze how profit maximizing or cost minimizing firms react on changing
prices and on changing output quantities.

2.1.12.1 Derived from profit maximization

If we replace the marginal products in the first-order conditions for profit maximization (2.39)
by the equations for calculating these marginal products and then solve this system of equations
for the input quantities, we get the input demand functions:

xi = xi (p, w), (2.48)

where w = [wi ] is the vector of all input prices. The input demand functions indicate the optimal
input quantities (xi ) given the output price (p) and all input prices (w). We can obtain the
output supply function from the production function by replacing all input quantities by the
corresponding input demand functions:

y = f (x(p, w)) = y(p, w), (2.49)

where x(p, w) = [xi (p, w)] is the set of all input demand functions. The output supply function
indicates the optimal output quantity (y) given the output price (p) and all input prices (w).
Hence, the input demand and output supply functions can be used to analyze the effects of prices
on the (optimal) input use and output supply. In economics, the effects of price changes are
usually measured in terms of price elasticities. These price elasticities can measure the effects of
the input prices on the input quantities:

∂xi (p, w) wj
ij (p, w) = , (2.50)
∂wj xi (p, w)

the effects of the input prices on the output quantity (expected to be non-positive):

∂y(p, w) wj
yj (p, w) = , (2.51)
∂wj y(p, w)

47
2 Primal Approach: Production Function

the effects of the output price on the input quantities (expected to be non-negative):

∂xi (p, w) p
ip (p, w) = , (2.52)
∂p xi (p, w)

and the effect of the output price on the output quantity (expected to be non-negative):

∂y(p, w) p
yp (p, w) = . (2.53)
∂p y(p, w)

The effect of an input price on the optimal quantity of the same input is expected to be non-
positive (ii (p, w) ≤ 0). If the cross-price elasticities between two inputs i and j are positive
(ij (p, w) ≥ 0, ji (p, w) ≥ 0), they are considered as gross substitutes. If the cross-price elasticities
between two inputs i and j are negative (ij (p, w) ≤ 0, ji (p, w) ≤ 0), they are considered as gross
complements.

2.1.12.2 Derived from cost minimization

If we replace the marginal products in the first-order conditions for cost minimization (2.45) by
the equations for calculating these marginal products and the solve this system of equations for
the input quantities, we get the conditional input demand functions:

xi = xi (w, y) (2.54)

These input demand functions are called “conditional,” because they indicate the optimal input
quantities (xi ) given all input prices (w) and conditional on the fixed output quantity (y). The
conditional input demand functions can be used to analyze the effects of input prices on the
(optimal) input use if the output quantity is given. The effects of price changes on the optimal
input quantities can be measured by conditional price elasticities:

∂xi (w, y) wj
ij (w, y) = (2.55)
∂wj xi (w, y)

The effect of the output quantity on the optimal input quantities can also be measured in terms
of elasticities (expected to be positive):

∂xi (w, y) y
iy (w, y) = . (2.56)
∂y xi (w, y)

The conditional effect of an input price on the optimal quantity of the same input is expected
to be non-positive (ii (w, y) ≤ 0). If the conditional cross-price elasticities between two inputs i
and j are positive (ij (w, y) ≥ 0, ji (w, y) ≥ 0), they are considered as net substitutes. If
the conditional cross-price elasticities between two inputs i and j are negative (ij (w, y) ≤ 0,
ji (w, y) ≤ 0), they are considered as net complements.

48
2 Primal Approach: Production Function

2.2 Productivity measures


2.2.1 Average products
We calculate the average products of the three inputs for each firm in the data set by equation 2.2:

> dat$apCap <- dat$qOut / dat$qCap


> dat$apLab <- dat$qOut / dat$qLab
> dat$apMat <- dat$qOut / dat$qMat

We can visualize these average products with histograms that can be created with the command
hist.

> hist( dat$apCap )


> hist( dat$apLab )
> hist( dat$apMat )
60

50
20
50

40
15
40
Frequency

Frequency

Frequency

30
30

10

20
20

10
10
0

0 50 100 150 0 5 10 15 20 25 0 50 150 250 350

apCap apLab apMat

Figure 2.1: Average products

The resulting graphs are shown in figure 2.1. These graphs show that average products (partial
productivities) vary considerably between firms. Most firms in our data set produce on average
between 0 and 40 units of output per unit of capital, between 2 and 16 units of output per
unit of labor, and between 0 and 100 units of output per unit of materials. Looking at each
average product separately, There are usually many firms with medium to low partial productivity
measures and only a few firms with high partial productivity measures.
We can find the firms with the highest partial productivities with the commands:

> which.max( dat$apCap )

[1] 132

> which.max( dat$apLab )

[1] 7

49
2 Primal Approach: Production Function

> which.max( dat$apMat )

[1] 83

Firm number 132 has the highest capital productivity, firm number 7 has the highest labor
productivity, and firm number 83 has the highest materials productivity.
The relationships between the average products can be visualized by scatter plots:

> plot( dat$apCap, dat$apLab )


> plot( dat$apCap, dat$apMat )
> plot( dat$apLab, dat$apMat )

300

300
● ● ●
25

●● ● ●
● ●

● ● ● ●
●● ● ● ●
● ●
20



● ●● ● ● ● ● ● ●

200

200
● ●● ●
● ● ●● ● ● ● ● ●
dat$apLab

dat$apMat

dat$apMat
● ● ●
● ● ● ● ● ●● ●
15

● ●
●● ●● ●● ●● ● ● ●

●●● ● ● ●●
● ●●

● ● ● ● ● ● ●
●● ●
●● ● ●
● ● ● ●●
●● ●● ●● ● ● ● ●
● ●●
●● ● ●●
10

● ● ● ● ●● ● ●
●● ● ●● ● ●● ●
●● ●● ● ● ●
100

100

●● ● ●●
● ● ●● ● ● ● ●
● ●
●●● ●●● ● ●● ● ●●● ● ●● ● ●
●●● ● ● ●● ●●●● ●●●●● ●
●●
●● ● ●
●●● ● ● ●
● ● ● ●
●●●●● ●
● ● ●
●●
● ●●
●●● ● ● ●● ● ● ● ●●
● ●
● ●
●●●●● ● ● ●●●●●
●● ● ● ● ●● ●● ●● ● ●● ●●
●●
● ● ●●● ● ● ●●● ●
●● ● ●●●●● ●
5

50

50


●●● ● ● ●●● ●
● ●● ● ●●●● ● ●

●● ●● ● ● ●●
● ●● ● ● ● ●● ●● ● ● ● ●● ● ●
●●●●
●● ● ●

● ●●● ● ● ●●
●● ● ●
● ● ●● ●● ●●
●●● ● ●●

●●
● ● ● ● ●

●●
● ●
● ●●●
● ●●

●● ●●
● ● ● ●●
0

0
0

0 50 100 150 0 50 100 150 0 5 10 15 20 25

dat$apCap dat$apCap dat$apLab

Figure 2.2: Relationships between average products

The resulting graphs are shown in figure 2.2. They show that the average products of the three
inputs are positively correlated.
As the units of measurements of the input and output quantities in our data set cannot be
interpreted in practical terms, the interpretation of the size of the average products is practically
not useful. However, they can be used to make comparisons between firms. For instance, the
interrelation between average products and firm size can be analyzed. A possible (although not
perfect) measure of size of the firms in our data set is the total output.

> plot( dat$qOut, dat$apCap, log = "x" )


> plot( dat$qOut, dat$apLab, log = "x" )
> plot( dat$qOut, dat$apMat, log = "x" )

The resulting graphs are shown in figure 2.3. These graphs show that the larger firms (i.e. firms
with larger output quantities) produce also a larger output quantity per unit of each input. This
is not really surprising, because the output quantity is in the numerator of equation (2.2) so that
the average products are necessarily positively related to the output quantity for a given input
quantity.

50
2 Primal Approach: Production Function

300
150
● ● ● ●

25
● ● ●
● ●
● ●
● ●
● ● ●
● ●●

20
● ●
● ● ●●
● ● ●

200
100
● ● ●● ●
● ●
● ● ● ● ●
● ● ● ●
● ●●● ● ●

15
● ●
apCap

● ● ●●

apLab

apMat
● ● ●● ●●
● ● ● ● ●● ●
●● ● ● ●● ● ●
●● ●
● ● ● ●
● ●
● ●● ● ● ● ● ●
● ●● ●
● ●●

10
● ● ● ● ● ● ●
●●●●●●●● ●●● ●● ●

100
● ● ● ●●●● ●●● ● ●
50

●●
● ●●● ● ●● ●
● ●●● ● ●●●
● ● ●● ●
● ● ●●●●●●● ●
● ● ●● ● ●
● ●●● ●● ●●● ●●
● ●● ● ●● ● ●● ● ● ●● ● ●
●● ● ●● ● ● ●● ● ●● ●● ● ● ●● ● ● ● ●
● ●
●● ● ● ●●●●●●
●● ●●● ● ●
● ● ● ● ● ● ● ●●

5
●●

50
● ● ●● ● ● ● ● ● ● ●●
●●● ●● ● ● ● ●
● ●●

●●
●●●
● ●●●
● ●●
● ●● ● ●● ● ● ● ● ●●

●●●● ●●●
●●●


●● ●● ●●●●●
●● ●●●● ●● ● ●●●● ●
● ● ●●
● ● ● ● ● ● ● ●●● ●
● ● ●●●●
● ●● ● ● ●
● ● ●●● ● ●● ● ● ● ● ● ●
● ●●
● ● ●● ●● ●● ● ●●● ● ● ● ● ●
0

0
0
1e+05 5e+05 5e+06 1e+05 5e+05 5e+06 1e+05 5e+05 5e+06

qOut qOut qOut

Figure 2.3: Average products for different firm sizes

2.2.2 Total factor productivity


After calculating a quantity index of all inputs (see section 1.5.1), we can use equation 2.3 to
calculate the total factor productivity, where we arbitrarily choose the Fisher quantity index:

> dat$tfp <- dat$qOut / dat$X

The variation of the total factor productivities can be visualized as before in a histogram:

> hist( dat$tfp )


2.0e+07
40


30
Frequency

dat$qOut

1.0e+07

● ●
20






10

● ●
● ●● ● ●
●●●● ●●● ●● ●●

● ●●●● ● ● ●
0.0e+00


●●●

●●

●●
●●

●●●●



● ●●● ●● ●

●●


●●
●●●

●●

●●●
●●


● ●●
● ●
● ●●
●●●
●●
●●● ●●
●●
●●
● ●
●●●
0

0e+00 2e+06 4e+06 6e+06 0 1 2 3 4 5

TFP dat$X

Figure 2.4: Total factor productivities

The resulting histogram is shown in the left panel of figure 2.4.


As the total factor productivity is the ratio between the aggregate output quantity and the
aggregate input quantity, it can be illustrated by a scatter plot between the aggregate input quan-
tity and the aggregate output quantity, whereas the slope of a line from the origin to a respective
point in the scatter plot indicates the total factor productivity. The following commands create
a scatter plot between the aggregate input quantity and the aggregate output quantity and add

51
2 Primal Approach: Production Function

a line through the origin with the slope equal to the maximum total factor productivity as well
as a line through the origin with the slope equal to the minimum total factor productivity in the
data set:

> plot( dat$X, dat$qOut,


+ xlim = c( 0, max( dat$X ) ), ylim = c( 0, max( dat$qOut ) ) )
> abline( 0, max( dat$tfp ) )
> abline( 0, min( dat$tfp ) )

The resulting scatter plot is shown in the right panel of figure 2.4. Both parts of figure 2.4
indicate that total factor productivity considerably varies between firms.
Where do these large differences in (total factor) productivity come from? We can check the
relation between total factor productivity and firm size by a scatter plot. We use two different
measures of firm size: total output and aggregate input. The following commands produce scatter
plots, where we set argument log of the plot command to the character string "x" so that the
horizontal axis is measured in logarithmic terms and the dots (firms) are more equally spread:

> plot( dat$qOut, dat$tfp, log = "x" )


> plot( dat$X, dat$tfp, log = "x" )

● ●
6e+06

6e+06

● ●
● ●
● ●
● ●

●● ●
●●
● ● ● ●
●● ● ● ● ●
●● ●●● ●● ● ●●
dat$tfp

dat$tfp

●●● ● ● ●● ● ●
● ● ● ● ● ● ●
3e+06

3e+06

● ● ●● ● ● ●
●●● ● ● ● ●●
● ●● ● ● ● ●
●●●● ●● ●● ● ● ● ●
●● ● ●
●●

● ●●● ●● ● ●●
●●● ●● ● ●●● ●●●
● ●● ● ●● ●● ● ● ● ●
● ● ●●
● ●●●● ● ● ● ●● ● ●●●● ●

●●
● ●●●●
● ●
● ●
● ●

● ● ● ●●● ●●● ●● ●
● ●● ●● ● ● ● ●
●●● ●● ●
● ●●●●● ● ●
● ●●
●● ● ● ● ● ● ● ● ●● ● ● ● ● ●●
● ●●
●● ● ● ● ● ● ● ●
● ●● ●
● ●● ● ● ● ● ●●

● ● ●● ●● ● ●
0e+00

0e+00

● ●● ● ● ●
●● ● ●●●● ●
● ● ● ● ●● ●

1e+05 5e+05 2e+06 1e+07 0.5 1.0 2.0 5.0

Figure 2.5: Firm size and total factor productivity

The resulting scatter plots are shown in figure 2.5. The scatter plot in the left panel clearly
shows that the firms with larger output quantities also have a larger total factor productivity.
This is not really surprising, because the output quantity is in the numerator of equation (2.3) so
that the total factor productivity is necessarily positively related to the output quantity for given
input quantities. The total factor productivity is only slightly positively related to the measure
of aggregate input use.
We can also analyze whether the firms that use an advisory service have a higher total factor
productivity than firms that do not use an advisory service. We can visualize and compare the
total factor productivities of the two different groups of firms (with and without advisory service)
using boxplot diagrams:

52
2 Primal Approach: Production Function

> boxplot( tfp ~ adv, data = dat )


> boxplot( log(qOut) ~ adv, data = dat )
> boxplot( log(X) ~ adv, data = dat )
7e+06

17
● ● ●

1.5
● ●
6e+06


16

1.0
5e+06


15

0.5
4e+06

log(qOut)

log(X)
TFP

14
3e+06

0.0
2e+06

13

−0.5
1e+06


12

−1.0


0e+00

no advisory advisory no advisory advisory no advisory advisory

Figure 2.6: Total factor productivities and advisory service

The resulting boxplot graphic is shown on the left panel of figure 2.6. It suggests that the firms
that use advisory service are slightly more productive than firms that do not use advisory service
(at least when looking at the 25th percentile and the median).
However, these boxplots can only indicate a relationship between using advisory service and
total factor productivity but they cannot indicate whether using an advisory service increases
productivity (i.e. a causal effect). For instance, if larger firms are more likely to use an advisory
service than smaller firms and larger firms have a higher total factor productivity than smaller
firms, we expect that firms that use an advisory service have a higher productivity than smaller
firms even if using an advisory service does not affect total factor productivity. However, this
is not the case in our data set, because farms with and without advisory service use rather
similar input quantities (see right panel of figure 2.6). As farms that use advisory service use
similar input quantities but have a higher total factor productivity than farms without advisory
service (see left panel of figure 2.6), they also have larger output quantities than corresponding
farms without advisory service (see middle panel of figure 2.6). Furthermore, the causal effect
of advisory service on total factor productivity might not be equal to the productivity difference
between farms with and without advisory service, because it might be that the firms that anyway
were the most productive were more (or less) likely to use advisory service than the firms that
anyway were the least productive.

53
2 Primal Approach: Production Function

2.3 Linear production function


2.3.1 Specification
A linear production function with N inputs is defined as:

N
X
y = β0 + βi xi (2.57)
i=1

2.3.2 Estimation
We can add a stochastic error term to this linear production function and estimate it for our data
set using the command lm:

> prodLin <- lm( qOut ~ qCap + qLab + qMat, data = dat )
> summary( prodLin )

Call:
lm(formula = qOut ~ qCap + qLab + qMat, data = dat)

Residuals:
Min 1Q Median 3Q Max
-3888955 -773002 86119 769073 7091521

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.616e+06 2.318e+05 -6.972 1.23e-10 ***
qCap 1.788e+00 1.995e+00 0.896 0.372
qLab 1.183e+01 1.272e+00 9.300 3.15e-16 ***
qMat 4.667e+01 1.123e+01 4.154 5.74e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1541000 on 136 degrees of freedom


Multiple R-squared: 0.7868, Adjusted R-squared: 0.7821
F-statistic: 167.3 on 3 and 136 DF, p-value: < 2.2e-16

2.3.3 Properties
As the coefficients of all three input quantities are positive, the monotonicity condition is (glob-
ally) fulfilled. However, the coefficient of the capital quantity is statistically not significantly
different from zero. Therefore, we cannot be sure that the capital quantity has a positive effect

54
2 Primal Approach: Production Function

on the output quantity. However, the result that the capital quantity does not have a statisti-
cally significant effect on the output quantity does not mean that the capital quantity in reality
does not affect the output quantity—we just do not have sufficient (statistical) evidence to rule
out that the capital quantity does not affect the output quantity. If the capital input in reality
affects the output quantity but we remove it from our regression model, the estimation results
will be biased and inconsistent. On the other hand, if the capital input in reality does not affect
the output quantity but we keep it as explanatory variable in our regression model, the estima-
tion results are inefficient but they are still unbiased and consistent. Furthermore, based on our
knowledge about apple production, we expect that the capital input (consisting of land, fruit
trees, machinery, . . . ) clearly affects the output quantity. For these reasons, we do not remove
the capital quantity from the regression model but keep it as explanatory variable.
As every linear function is concave (and convex), also our estimated linear production is concave
and hence, also quasiconcave. As the isoquants of linear productions functions are linear, the
input requirement sets are always convex (and concave).
Our estimated linear production function does not fulfill the weak essentiality assumption,
because the intercept is different from zero. The production technology described by a linear
production function with more than one (relevant) input never shows strict essentiality.
The input requirement sets derived from linear production functions are always closed and
non-empty for y > 0 if weak essentiality is fulfilled (β0 = 0) and strict monotonicity is fulfilled
for at least one input (∃ i ∈ {1, . . . , N } : βi > 0), as the input quantities must be non-negative
(xi ≥ 0 ∀ i).
The linear production function always returns finite, real, and single values for all non-negative
and finite x. However, as the intercept of our estimated production function is negative, the non-
negativity assumption is not fulfilled. A linear production function would return non-negative
values for all non-negative and finite x if β0 ≥ 0 and the monotonicity condition is fulfilled
(βi ≥ 0 ∀ i = 1, . . . , N ).
All linear production functions are continuous and twice-continuously differentiable.

2.3.4 Predicted output quantities


We can calculate the predicted (“fitted”) output quantities manually by taking the linear pro-
duction function (2.57), the observed input quantities, and the estimated parameters, but it is
easier to use the fitted method to obtain the predicted values of the dependent variable from
an estimated model:

> dat$qOutLin <- fitted( prodLin )


> all.equal( dat$qOutLin, coef( prodLin )[ "(Intercept)" ] +
+ coef( prodLin )[ "qCap" ] * dat$qCap +
+ coef( prodLin )[ "qLab" ] * dat$qLab +
+ coef( prodLin )[ "qMat" ] * dat$qMat )

55
2 Primal Approach: Production Function

[1] TRUE

We can evaluate the “fit” of the model by comparing the observed with the fitted output
quantities using the command compPlot (package miscTools):

> library( "miscTools" )


> compPlot( dat$qOut, dat$qOutLin )
> compPlot( dat$qOut[ dat$qOutLin > 0 ], dat$qOutLin[ dat$qOutLin > 0 ],
+ log = "xy" )

2e+07


2.0e+07


● ● ●●●
●● ●● ●

●● ●●●●● ●●
● ● ● ● ●●●

2e+06
● ● ●●●●●●
● ●● ●●
●●
●●●

●●●●●●
● ●●●● ● ● ●●●●●
●●●

●●●● ●● ●
● ●●●
● ●●● ●


●●
●●
● ●
fitted

fitted
●● ● ●●● ●
● ●
1.0e+07

● ●
● ●
● ● ●● ●● ●
● ● ● ●●
● ● ●
●●
2e+05
● ●

●● ●● ●
● ●

● ●●
●● ● ●
●●●●●
● ●● ●
●●● ● ● ● ●
●●●
●●●●●●
● ●●

0.0e+00

● ● ●

●●●● ●

●●●●●
● ●●
●● ●
2e+04


●●

●●
●●
●●●
●●●



●●

●●

●●
●●● ●●


●●●●

● ●

0.0e+00 1.0e+07 2.0e+07 2e+04 2e+05 2e+06 2e+07

observed observed

Figure 2.7: Linear production function: fit of the model

The resulting graphs are shown in figure 2.7. While the graph in the left panel uses a linear
scale for the axes, the graph in the right panel uses a logarithmic scale for both axes. Hence, the
deviations from the 45°-line illustrate the absolute deviations in the left panel and the relative
deviations in the right panel. As the logarithm of non-positive values is undefined, we have to
exclude observations with non-positive predicted output quantities in the graphs with logarithmic
axes. The fit of the model looks okay in both scatter plots.
As negative output quantities would render the corresponding output elasticities useless, we
have to carefully check the sign of the predicted output quantities:

> table( dat$qOutLin >= 0 )

FALSE TRUE
1 139

One predicted output quantity is negative.

56
2 Primal Approach: Production Function

2.3.5 Marginal products


In the linear production function, the marginal products are equal to coefficients of the corre-
sponding input quantities.
∂y
M Pi = = αi (2.58)
∂xi
Hence, if a firm increases capital input by one unit, the output will increase by 1.79 units; if
a firm increases labor input by one unit, the output will increase by 11.83 units; and if a firm
increases materials input by one unit, the output will increase by 46.67 units.

2.3.6 Output elasticities


As we do not know the units of measurements of the input and output quantities, the interpre-
tation of the marginal products is practically not very useful. Therefore, we calculate the output
elasticities (partial production elasticities) of the three inputs.

∂y xi xi M Pi
i = = M Pi = (2.59)
∂xi y y APi

As the output elasticities depend on the input and output quantities and these quantities generally
differ between firms, also the output elasticities differ between firms. Hence, we can calculate
them for each firm in the sample:

> dat$eCap <- coef(prodLin)["qCap"] * dat$qCap / dat$qOut


> dat$eLab <- coef(prodLin)["qLab"] * dat$qLab / dat$qOut
> dat$eMat <- coef(prodLin)["qMat"] * dat$qMat / dat$qOut

We can obtain their mean values by:

> colMeans( subset( dat, , c( "eCap", "eLab", "eMat" ) ) )

eCap eLab eMat


0.1202721 2.0734793 0.8631936

However, these mean values are distorted by outliers (see figure 2.8). Therefore, we calculate the
median values of the the output elasticities:

> colMedians( subset( dat, , c( "eCap", "eLab", "eMat" ) ) )

eCap eLab eMat


0.08063406 1.28627208 0.58741460

Hence, if a firm increases capital input by one percent, the output will usually increase by around
0.08 percent; if the firm increases labor input by one percent, the output will often increase by
around 1.29 percent; and if the firm increases materials input by one percent, the output will
often increase by around 0.59 percent.

57
2 Primal Approach: Production Function

We can visualize (the variation of) these output elasticities with histograms. The user can
modify the desired number of bars in the histogram by adding an integer number as additional
argument:

> hist( dat$eCap )


> hist( dat$eLab, 20 )
> hist( dat$eMat, 20 )
80

40

30
60
Frequency

Frequency

Frequency
30

20
40

20

10
20

10
0

0
0.0 0.4 0.8 1.2 0 2 4 6 8 10 12 14 0 1 2 3 4 5 6

eCap eLab eMat

Figure 2.8: Linear production function: output elasticities

The resulting graphs are shown in figure 2.8. If the firms increase capital input by one percent,
the output of most firms will increase by between 0 and 0.2 percent; if the firms increase labor
input by one percent, the output of most firms will increase by between 0.5 and 3 percent;
and if the firms increase materials input by one percent, the output of most firms will increase
by between 0.2 and 1.2 percent. While the marginal effect of capital on the output is rather
small for most firms, there are many firms with implausibly high output elasticities of labor and
materials (i > 1). This might indicate that the true production technology cannot be reasonably
approximated by a linear production function.
In contrast to a pure theoretical microeconomic model, our empirically estimated model in-
cludes a stochastic error term so that the observed output quantities (y) are not necessarily equal
to the output quantities that are predicted by the model (ŷ = f (x)). This error term comes
from, e.g., measurement errors, omitted explanatory variables, (good or bad) luck, or unusual(ly)
(good or bad) weather conditions. The better the fit of our model, i.e. the higher the R2 value,
the smaller is the difference between the observed and the predicted output quantities. If we
“believe” in our estimated model, it would be more consistent with microeconomic theory, if we
use the predicted output quantities and disregard the stochastic error term.
We can calculate the output elasticities based on the predicted output quantities (see sec-
tion 2.3.4) rather than the observed output quantities:

> dat$eCapFit <- coef(prodLin)["qCap"] * dat$qCap / dat$qOutLin


> dat$eLabFit <- coef(prodLin)["qLab"] * dat$qLab / dat$qOutLin

58
2 Primal Approach: Production Function

> dat$eMatFit <- coef(prodLin)["qMat"] * dat$qMat / dat$qOutLin


> colMeans( subset( dat, , c( "eCapFit", "eLabFit", "eMatFit" ) ) )

eCapFit eLabFit eMatFit


0.1421941 2.2142092 0.9784056

> colMedians( subset( dat, , c( "eCapFit", "eLabFit", "eMatFit" ) ) )

eCapFit eLabFit eMatFit


0.07407719 1.21044421 0.58821500

> hist( dat$eCapFit, 20 )


> hist( dat$eLabFit, 20 )
> hist( dat$eMatFit, 20 )
120
80 100

80 100
Frequency

Frequency

Frequency
80
60

60
60
40

40
40
20

20
20
0

0.0 0.5 1.0 1.5 2.0 2.5 3.0 −10 0 10 20 30 40 50 −5 0 5 10 15 20 25

eCapFit eLabFit eMatFit

Figure 2.9: Linear production function: output elasticities based on predicted output quantities

The resulting graphs are shown in figure 2.9. While the choice of the variable for the output
quantity (observed vs. predicted) only has a minor effect on the mean and median values of the
output elasticities, the ranges of the output elasticities that are calculated from the predicted
output quantities are much larger than the ranges of the output elasticities that are calculated
from the observed output quantities. Due to 1 negative predicted output quantity, the output
elasticities of this observation are also negative.

2.3.7 Elasticity of scale


The elasticity of scale is the sum of all output elasticities
X
= i (2.60)
i

Hence, the elasticities of scale of all firms in the sample can be calculated by:

59
2 Primal Approach: Production Function

> dat$eScale <- with( dat, eCap + eLab + eMat )


> dat$eScaleFit <- with( dat, eCapFit + eLabFit + eMatFit )

The mean and median values of the elasticities of scale can be calculated by

> colMeans( subset( dat, , c( "eScale", "eScaleFit" ) ) )

eScale eScaleFit
3.056945 3.334809

> colMedians( subset( dat, , c( "eScale", "eScaleFit" ) ) )

eScale eScaleFit
1.941536 1.864253

Hence, if a firm increases all input quantities by one percent, the output quantity will usually
increase by around 1.9 percent. This means that most firms have increasing returns to scale and
hence, the firms could increase productivity by increasing the firm size (i.e. increasing all input
quantities).
The (variation of the) elasticities of scale can be visualized with histograms:

> hist( dat$eScale, 30 )


> hist( dat$eScaleFit, 50 )
> hist( dat$eScaleFit[ dat$eScaleFit > 0 & dat$eScaleFit < 15 ], 30 )
30

40
25

60

30
20
Frequency

Frequency

Frequency
40
15

20
10

20

10
5
0

0 5 10 15 0 20 40 60 80 2 4 6 8 10 12 14

eScale eScaleFit 0 < eScaleFit < 15

Figure 2.10: Linear production function: elasticities of scale

The resulting graphs are shown in figure 2.10. As the predicted output quantity of 1 firm is neg-
ative, the elasticity of scale of this observation also is negative, if the predicted output quantities
are used for the calculation. However, all remaining elasticities of scale that are based on the
predicted output quantities are larger than one, which indicates increasing returns to scale. In
contrast, 15 (out of 140) elasticities of scale that are calculated with the observed output quanti-
ties indicate decreasing returns to scale. However, both approaches indicate that most firms have

60
2 Primal Approach: Production Function

an elasticity of scale between one and two. Hence, if these firms increase all input quantities by
one percent, the output of most firms will increase by between 1 and 2 percent. Some firms even
have an elasticity of scale larger than five, which is very implausible and might indicate that the
true production technology cannot be reasonably approximated by a linear production function.
Information on the optimal firm size can be obtained by analyzing the interrelationship between
firm size and the elasticity of scale:

> plot( dat$qOut, dat$eScale, log = "x" )


> abline( 1, 0 )
> plot( dat$X, dat$eScale, log = "x" )
> abline( 1, 0 )
> plot( dat$qOut, dat$eScaleFit, log = "x", ylim = c( 0, 15 ) )
> abline( 1, 0 )
> plot( dat$X, dat$eScaleFit, log = "x", ylim = c( 0, 15 ) )
> abline( 1, 0 )

● ● ● ●

● ●
15

15

●● ●●

● ●
eScale

eScale
10

10

● ● ● ●
● ●

● ● ● ● ● ●● ●
● ● ● ●
● ●
● ● ●●
● ●
5

● ● ●●
● ● ● ● ● ● ● ● ●● ●● ● ●
● ● ● ● ● ● ●
● ● ●● ● ● ●●
● ● ● ● ● ●● ● ●● ●● ● ●
● ●●●● ● ●● ● ●
● ● ●●●● ● ● ● ●●●


● ● ●● ● ● ● ● ● ● ●●
● ●●● ●●● ●● ●
● ●● ●●
● ● ●
● ●
● ●
● ● ●●
● ●●
● ● ●●●● ●● ●● ●
●● ●●●
●● ●● ●●● ●●
●●● ● ● ● ●●● ● ● ● ●● ●
●●●●
●●● ●
●● ●●

●●

●● ●●● ● ● ●●
● ●●●● ●● ●● ● ● ● ●● ● ● ● ● ●●● ● ● ● ● ● ●●●● ●●
●● ● ● ● ●
● ● ● ● ●●
●●●●●● ● ●
● ●

0.5 1.0 2.0 5.0 1e+05 5e+05 2e+06 5e+06 2e+07

X qOut
15

15

● ●

● ●
10

10

● ● ●

● ●
eScaleFit

eScaleFit

● ●
●● ●
● ●●
● ●
5

●● ● ● ●●
●●● ● ●
● ●
●●● ● ● ●
● ● ●
●● ● ●● ● ●

●●●● ●● ● ● ● ● ●
● ● ● ● ●● ● ●
●● ● ●●● ●●
●●●●
●●
●● ● ●
● ●



●●
●●●
●●●
● ●●

●● ●● ● ●●● ●●●●
●●● ●
●● ●
●● ●
●●●●
●● ●● ●● ●●●● ●
●●●● ●

●●

●●
●● ●
●●●●
● ●
● ●●●

●● ●● ●

●●●●
●●●● ●●
●● ● ●● ●● ●
● ● ●●●● ● ●●
●●● ●●●●●● ●
● ● ● ●● ● ●●● ●●●● ●●● ● ● ●●●●
● ●
● ● ●●
0

0.5 1.0 2.0 5.0 1e+05 5e+05 2e+06 5e+06 2e+07

X qOut

Figure 2.11: Linear production function: elasticities of scale for different firm sizes

61
2 Primal Approach: Production Function

The resulting graphs are shown in figure 2.11. They indicate that very small firms could enor-
mously gain from increasing their size, while the benefits from increasing firm size decrease with
size. Only a few elasticities of scale that are calculated with the observed output quantities indi-
cate decreasing returns to scale so that productivity would decline when these firms increase their
size. For all firms that use at least 2.1 times the input quantities of the average firm or produces
more than 6,000,000 quantity units (approximately 6,000,000 Euros), the elasticities of scale that
are based on the observed input quantities are very close to one. From this observation we could
conclude that firms have their optimal size when they use at least 2.1 times the input quantities
of the average firm or produce at least 6,000,000 quantity units (approximately 6,000,000 Euros
turn over). In contrast, the elasticities of scale that are based on the predicted output quantities
are larger one even for the largest firms in the data set. From this observation, we could conclude
that the even the largest firms in the sample would gain from growing in size and thus, the most
productive scale size is lager than the size of the largest firms in the sample.
The high elasticities of scale explain why we found much higher partial productivities (average
products) and total factor productivities for larger firms than for smaller firms.

2.3.8 Marginal rates of technical substitution


As the marginal products based on a linear production function are equal to the coefficients, we
can calculate the MRTS (2.16) as follows:

> mrtsCapLab <- - coef(prodLin)["qLab"] / coef(prodLin)["qCap"]

qLab
-6.615934

> mrtsLabCap <- - coef(prodLin)["qCap"] / coef(prodLin)["qLab"]

qCap
-0.1511502

> mrtsCapMat <- - coef(prodLin)["qMat"] / coef(prodLin)["qCap"]

qMat
-26.09666

> mrtsMatCap <- - coef(prodLin)["qCap"] / coef(prodLin)["qMat"]

qCap
-0.03831908

> mrtsLabMat <- - coef(prodLin)["qMat"] / coef(prodLin)["qLab"]

62
2 Primal Approach: Production Function

qMat
-3.944516

> mrtsMatLab <- - coef(prodLin)["qLab"] / coef(prodLin)["qMat"]

qLab
-0.2535165

Hence, if a firm wants to reduce the use of labor by one unit, he/she has to use 6.62 additional
units of capital in order to produce the same output as before. Alternatively, the firm can replace
the unit of labor by using 0.25 additional units of materials. If the firm increases the use of labor
by one unit, he/she can reduce capital by 6.62 units whilst still producing the same output as
before. Alternatively, the firm can reduce materials by 0.25 units.

2.3.9 Relative marginal rates of technical substitution


We can calculate the RMRTS (2.17) derived from the linear production function as follows:

> dat$rmrtsCapLab <- - dat$eLab / dat$eCap


> dat$rmrtsLabCap <- - dat$eCap / dat$eLab
> dat$rmrtsCapMat <- - dat$eMat / dat$eCap
> dat$rmrtsMatCap <- - dat$eCap / dat$eMat
> dat$rmrtsLabMat <- - dat$eMat / dat$eLab
> dat$rmrtsMatLab <- - dat$eLab / dat$eMat

We can visualize (the variation of) these RMRTSs with histograms:

> hist( dat$rmrtsCapLab, 20 )


> hist( dat$rmrtsLabCap )
> hist( dat$rmrtsCapMat )
> hist( dat$rmrtsMatCap )
> hist( dat$rmrtsLabMat )
> hist( dat$rmrtsMatLab )

The resulting graphs are shown in figure 2.12. According to the RMRTS based on the linear
production function, most firms need between 20% more capital or around 2% more materials to
compensate a 1% reduction of labor.

2.3.10 First-order conditions for profit maximization


In this section, we will check to what extent the first-order conditions for profit maximization
(2.39) are fulfilled, i.e. to what extent the firms use the optimal input quantities. We do this by
comparing the marginal value products of the inputs with the corresponding input prices. We
can calculate the marginal value products by multiplying the marginal products by the output
price:

63
2 Primal Approach: Production Function

60
50

50
30
40

40
Frequency

Frequency

Frequency
30

20

30
20

20
10
10

10
0

0
−150 −100 −50 0 −0.20 −0.10 0.00 −60 −40 −20 0

rmrtsCapLab rmrtsLabCap rmrtsCapMat


40

50
50
30

40
40
Frequency

Frequency

Frequency

30
30
20

20
20
10

10
10
0

−0.5 −0.4 −0.3 −0.2 −0.1 0.0 −1.5 −1.0 −0.5 0.0 −8 −6 −4 −2 0

rmrtsMatCap rmrtsLabMat rmrtsMatLab

Figure 2.12: Linear production function: relative marginal rates of technical substitution
(RMRTS)

64
2 Primal Approach: Production Function

> dat$mvpCap <- dat$pOut * coef(prodLin)["qCap"]


> dat$mvpLab <- dat$pOut * coef(prodLin)["qLab"]
> dat$mvpMat <- dat$pOut * coef(prodLin)["qMat"]

The command compPlot (package miscTools) can be used to compare the marginal value products
with the corresponding input prices:

> compPlot( dat$pCap, dat$mvpCap )


> compPlot( dat$pLab, dat$mvpLab )
> compPlot( dat$pMat, dat$mvpMat )
> compPlot( dat$pCap, dat$mvpCap, log = "xy" )
> compPlot( dat$pLab, dat$mvpLab, log = "xy" )
> compPlot( dat$pMat, dat$mvpMat, log = "xy" )

140
35

● ● ●
5

● ● ●
30

● ● ●
● ●●
● ● ●
● ●
● ●●●
● ● ●

100
4

25

● ● ●
● ●●
● ● ●
● ●●●
● ●● ● ●

● ●●

MVP Cap

MVP Lab

MVP Mat
● ● ●
● ●●

80
20

● ● ●
● ●●
3

● ● ●
● ●
● ● ● ●
● ● ●

60
● ●
15

● ● ● ●●
● ● ●● ●
●● ●●

● ●● ●
● ● ●●
● ●● ● ● ●●
2

● ● ●
●●
● ●●
●●
●● ● ●
●●
●● ● ● ● ● ●





● ●●
●●


10

40
●● ● ● ●

●●
● ●
●●
●●●●
●● ●
●●● ●●
● ●● ●● ●
●●
● ●

●●

●●

●●
●●
●●● ●●
●●●●●
●●● ●
●● ● ● ● ●
●● ●
●●
●●●
●●● ●●

●●●
●● ● ●








●●

●●

●●●● ●●
● ● ● ●

●● ●



●●
●●●
● ●●
●● ●●● ●● ● ● ● ●

●●
● ●

●●

●●●
●●● ●
1

●●
● ●●●●● ●
●● ●
●●

20
● ● ●
5


0

0
0

0 1 2 3 4 5 0 5 10 15 20 25 30 35 0 20 40 60 80 120

w Cap w Lab w Mat


5.0

● ● ●●


●● ● ● ●●● ● ●
100


● ● ●● ●● ●●
●● ●●●● ●●
● ● ●●●●
● ●

● ●● ●
● ●● ●●
● ● ● ● ●● ●
● ●● ● ● ● ●


●●
● ● ●
●●● ● ● ● ●● ●
● ● ●●● ● ●
●●● ●
● ●● ● ●● ●●●● ●
● ●
50

●●● ● ●●
10.0

● ● ● ● ●
2.0

● ●● ●
● ● ● ● ●● ● ●● ●●
● ● ●●●

●● ● ● ●● ● ●●●
●●●

●●●●●
●●






● ●●
●●●●
●● ●●●
●●●● ●● ●


● ● ●●
● ●● ●●●●
● ●
●●●●●


●● ●●
● ●
● ●
●●● ● ● ●
● ●●
● ●● ●
● ● ● ●●●●●
● ●● ●
●● ●● ●● ●● ● ●●●●● ●●
●●●●●
● ●●
●●●●●●●● ● ● ●
●● ●
●●
●●● ●●
● ● ●●●●●●● ● ●
MVP Cap


MVP Lab

●●
MVP Mat

●●● ● ● ●● ●●● ●● ●●●●● ●


● ●●●● ● ● ● ●● ● ●● ●●● ●
● ● ●
●●
●● ●●
●● ●●
5.0

● ● ● ● ● ● ● ● ● ●
● ●● ●
●●
1.0

●● ● ● ●
● ●● ●
20

● ●●
● ●
● ● ● ●● ●
● ●
●●
2.0

10
0.5

1.0

5
0.2

0.5

0.2 0.5 1.0 2.0 5.0 0.5 1.0 2.0 5.0 20.0 5 10 20 50 100

w Cap w Lab w Mat

Figure 2.13: Marginal value products and corresponding input prices

The resulting graphs are shown in figure 2.13. The graphs on the left side indicate that the
marginal value products of capital are sometimes lower but more often higher than the capital
prices. The four other graphs indicate that the marginal value products of labor and materials
are always higher than the labor prices and the materials prices, respectively. This indicates that

65
2 Primal Approach: Production Function

some firms could increase their profit by using more capital and all firms could increase their
profit by using more labor and more materials. Given that most firms operate under increasing
returns to scale, it is not surprising that most firms would gain from increasing most—or even
all—input quantities. Therefore, the question arises why the firms in the sample did not do this.
There are many possible reasons for not increasing the input quantities until the predicted op-
timal input levels, e.g. legal restrictions, environmental regulations, market imperfections, credit
(liquidity) constraints, and/or risk aversion. Furthermore, market imperfections might cause that
the (observed) average prices are lower than the marginal costs of obtaining these inputs (e.g.
Henning and Henningsen, 2007), particularly for labor and capital.

2.3.11 First-order conditions for cost minimization


As the marginal rates of technical substitution are constant for linear production functions, we
compare the input price ratios with the negative inverse marginal rates of technical substitution
by creating a histogram for each input price ratio and drawing a vertical line at the corresponding
negative marginal rate of technical substitution:

> hist( dat$pCap / dat$pLab )


> lines( rep( - mrtsLabCap, 2), c( 0, 100 ), lwd = 3 )
> hist( dat$pCap / dat$pMat )
> lines( rep( - mrtsMatCap, 2), c( 0, 100 ), lwd = 3 )
> hist( dat$pLab / dat$pMat )
> lines( rep( - mrtsMatLab, 2), c( 0, 100 ), lwd = 3 )
> hist( dat$pLab / dat$pCap )
> lines( rep( - mrtsCapLab, 2), c( 0, 100 ), lwd = 3 )
> hist( dat$pMat / dat$pCap )
> lines( rep( - mrtsCapMat, 2), c( 0, 100 ), lwd = 3 )
> hist( dat$pMat / dat$pLab )
> lines( rep( - mrtsLabMat, 2), c( 0, 100 ), lwd = 3 )

The resulting graphs are shown in figure 2.14. The upper left graph shows that the ratio between
the capital price and the labor price is larger than the absolute value of the marginal rate of
technical substitution between labor and capital (0.151) for the most firms in the sample:

wcap M Pcap
> −M RT Slab,cap = (2.61)
wlab M Plab

Or taken the other way round, the lower left graph shows that the ratio between the labor
price and the capital price is smaller than the absolute value of the marginal rate of technical
substitution between capital and labor (6.616) for the most firms in the sample:

wlab M Plab
< −M RT Scap,lab = (2.62)
wcap M Pcap

66
2 Primal Approach: Production Function

50
40

40
40
30

30
Frequency

Frequency

Frequency
30
20

20
20
10

10
10
0

0
0 1 2 3 4 5 0.0 0.2 0.4 0.6 0.8 0.1 0.2 0.3 0.4

w Cap / w Lab w Cap / w Mat w Lab / w Mat


60
80

40
50
60

30
40
Frequency

Frequency

Frequency
30
40

20
20
20

10
10
0

0 2 4 6 8 0 10 20 30 40 50 60 5 10 15 20

w Lab / w Cap w Mat / w Cap w Mat / w Lab

Figure 2.14: First-order conditions for costs minimization

67
2 Primal Approach: Production Function

Hence, the firm can get closer to the minimum of the costs by substituting labor for capital,
because this will decrease the marginal product of labor and increase the marginal product of
capital so that the absolute value of the MRTS between labor and capital increases, the absolute
value of the MRTS between capital and labor decreases, and both of the MRTS get closer to the
corresponding input price ratios. Similarly, the graphs in the middle column indicate that almost
all firms should substitute materials for capital and the graphs on the right indicate that most of
the firms should substitute labor for materials. Hence, the firms could reduce production costs
particularly by using less capital and more labor.

2.3.12 Derived input demand functions and output supply functions


Given a linear production function (2.57), the input quantities chosen by a profit maximizing
producer are either zero, indeterminate, or infinity:




 0 if M V Pi < wi

xi (p, w) = indeterminate if M V Pi = wi (2.63)



∞

if M V Pi > wi

If all input quantities are zero, the output quantity is equal to the intercept, which is zero in case
of weak essentiality. Otherwise, the output quantity is indeterminate or infinity:

β 0


 if M V Pi < wi ∀ i

y(p, w) = ∞ if M V Pi > wi ∃ i (2.64)



indeterminate

otherwise

A cost minimizing producer will use only a single input, i.e. the input with the lowest cost
per unit of produced output (wi /M Pi ). If the lowest cost per unit of produced output can be
obtained by two or more inputs, these input quantities are indeterminate.

βi βj



 0 if wi < wj ∃j

y−β0 βi βj
xi (w, y) = βi if wi > wj ∀ j 6= i (2.65)



indeterminate

otherwise

Given that the unconditional and conditional input demand functions and the output supply
functions based on the linear production function are non-continuous and often return either zero
or infinite values, it does not make much sense to use this functional form to predict the effects
of price changes when the true technology implies that firms always use non-zero finite input
quantities.

68
2 Primal Approach: Production Function

2.4 Cobb-Douglas production function


2.4.1 Specification
A Cobb-Douglas production function with N inputs is defined as:

N
xαi i .
Y
y=A (2.66)
i=1

This function can be linearized by taking the (natural) logarithm on both sides:

N
X
ln y = α0 + αi ln xi , (2.67)
i=1

where α0 is equal to ln A.

2.4.2 Estimation
We can estimate this Cobb-Douglas production function for our data set using the command lm:

> prodCD <- lm( log( qOut ) ~ log( qCap ) + log( qLab ) + log( qMat ),
+ data = dat )
> summary( prodCD )

Call:
lm(formula = log(qOut) ~ log(qCap) + log(qLab) + log(qMat), data = dat)

Residuals:
Min 1Q Median 3Q Max
-1.67239 -0.28024 0.00667 0.47834 1.30115

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.06377 1.31259 -1.572 0.1182
log(qCap) 0.16303 0.08721 1.869 0.0637 .
log(qLab) 0.67622 0.15430 4.383 2.33e-05 ***
log(qMat) 0.62720 0.12587 4.983 1.87e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.656 on 136 degrees of freedom


Multiple R-squared: 0.5943, Adjusted R-squared: 0.5854
F-statistic: 66.41 on 3 and 136 DF, p-value: < 2.2e-16

69
2 Primal Approach: Production Function

2.4.3 Properties
The monotonicity condition is (globally) fulfilled, as the estimated coefficients of all three (loga-
rithmic) input quantities are positive and the output quantity as well as all input quantities are
non-negative (see equation 2.69). However, the coefficient of the (logarithmic) capital quantity is
only statistically significantly different from zero at the 10% level. Therefore, we cannot be sure
that the capital quantity has a positive effect on the output quantity.2
The quasiconcavity of our estimated Cobb-Douglas production function is checked in sec-
tion 2.4.12.
The production technology described by a Cobb-Douglas production function always shows
weak and strict essentiality, because the output quantity becomes zero, as soon as a single input
quantity becomes zero (see equation 2.66).
The input requirement sets derived from Cobb-Douglas production functions are always closed
and non-empty for y > 0 if strict monotonicity is fulfilled for at least one input (∃ i ∈ {1, . . . , N } :
βi > 0), as the input quantities must be non-negative (xi ≥ 0 ∀ i).
The Cobb-Douglas production function always returns finite, real, and single values if the input
quantities are non-negative and finite. The predicted output quantity is non-negative as long as
A and the input quantities are non-negative, where A = exp(α0 ) is positive even if α0 is negative.
All Cobb-Douglas production functions are continuous and twice-continuously differentiable.

2.4.4 Predicted output quantities


We can calculate the predicted (“fitted”) output quantities manually by taking the Cobb-Douglas
function (2.66), the observed input quantities, and the estimated parameters, but it is easier
to use the fitted method to obtain the predicted values of the dependent variable from an
estimated model. As we estimated the Cobb-Douglas function in logarithms, we have to use the
exponential function to obtain the predicted values in levels (non-logarithms):

> dat$qOutCD <- exp( fitted( prodCD ) )


> all.equal( dat$qOutCD,
+ with( dat, exp( coef( prodCD )[ "(Intercept)" ] ) *
+ qCap^coef( prodCD )[ "log(qCap)" ] *
+ qLab^coef( prodCD )[ "log(qLab)" ] *
+ qMat^coef( prodCD )[ "log(qMat)" ] ) )

[1] TRUE

We can evaluate the “fit” of the Cobb-Douglas production function by comparing the observed
with the fitted output quantities:

2
In section 2.3.3, we discuss whether input quantities that do not have a statistically significant effect on the
output should be removed from the model.

70
2 Primal Approach: Production Function

> compPlot( dat$qOut, dat$qOutCD )


> compPlot( dat$qOut, dat$qOutCD, log = "xy" )


● ●
2.0e+07

1e+07



●●● ● ●
● ●● ●
● ● ●
● ● ●●
● ●
● ● ●●● ●

5e+05 2e+06
● ● ●
●●
●● ●
●● ●

●●●●
●●
fitted

fitted
● ● ●●
● ● ●●
● ● ● ●● ● ●●●●
1.0e+07

● ●●
●●●
● ●
● ●●●
● ●
●● ●● ● ●●●●●●●
● ●●●● ● ●● ●
●● ●● ● ●●● ●●
● ●●
●● ● ●
●●● ● ● ●●
● ●
● ● ● ● ●
● ●●
●●● ● ● ● ● ● ●
●●●● ●
●●●● ● ●●
●● ●●● ●●
0.0e+00

●●●●●● ● ●

1e+05
●●●

●●
●●


●● ●
●●●









●●


●●


●●●

● ●

●●




●●
●●●
●●

0.0e+00 1.0e+07 2.0e+07 1e+05 5e+05 5e+06

observed observed

Figure 2.15: Cobb-Douglas production function: fit of the model

The resulting graphs are shown in figure 2.15. While the graph in the left panel uses a linear
scale for the axes, the graph in the right panel uses a logarithmic scale for both axes. Hence, the
deviations from the 45°-line illustrate the absolute deviations in the left panel and the relative
deviations in the right panel. The fit of the model looks okay in the scatter plot on the left-hand
side, but if we use a logarithmic scale on both axes (as in the graph on the right-hand side), we
can see that the output quantity is generally over-estimated if the the observed output quantity
is small.

2.4.5 Output elasticities


In the Cobb-Douglas function, the output elasticities of the inputs are equal to the corresponding
coefficients:

∂y xi ∂ ln y ∂y ∂ ln xi xi ∂ ln y y 1 xi ∂ ln y
i = = = = = αi (2.68)
∂xi y ∂ ln xi ∂ ln y ∂xi y ∂ ln xi 1 xi y ∂ ln xi

Hence, if a firm increases capital input by one percent, the output will increase by 0.16 percent;
if a firm increases labor input by one percent, the output will increase by 0.68 percent; and if
a firm increases materials input by one percent, the output will increase by 0.63 percent. The
output elasticity of capital is somewhat larger and the output elasticity of labor is considerably
smaller when estimated by a Cobb-Douglas production function than when estimated by a linear
production function. Indeed, the output elasticities of all three inputs are in the reasonable range,
i.e. between zero one one, now.

71
2 Primal Approach: Production Function

2.4.6 Marginal products


The marginal products of the inputs in a Cobb-Douglas production function can be derived in
different ways. One possibility is to derive the marginal products from equation (2.66):

N
∂y y
= αi x−1 xαj i = αi
Y
M Pi = i A (2.69)
∂xi j=1
xi

Another possibility is to derive the marginal products by re-arranging equation (2.68):

∂y ∂ ln y y y
M Pi = = = αi (2.70)
∂xi ∂ ln xi xi xi

As the marginal products depend on the input and output quantities and these quantities gen-
erally differ between firms, the marginal products based on Cobb-Douglas production functions
also differ between firms. Hence, we can calculate them for each firm in the sample:

> dat$mpCapCD <- coef(prodCD)["log(qCap)"] * dat$qOut / dat$qCap


> dat$mpLabCD <- coef(prodCD)["log(qLab)"] * dat$qOut / dat$qLab
> dat$mpMatCD <- coef(prodCD)["log(qMat)"] * dat$qOut / dat$qMat

While microeconomic theory usually ignores statistical “noise,” empirical estimations have a
noise term so that the observed output quantities are generally unequal to the output quanti-
ties predicted by the estimated production function. Hence, alternatively, we can calculate the
marginal products based on the predicted output quantities:

> dat$mpCapCDFit <- coef(prodCD)["log(qCap)"] * dat$qOutCD / dat$qCap


> dat$mpLabCDFit <- coef(prodCD)["log(qLab)"] * dat$qOutCD / dat$qLab
> dat$mpMatCDFit <- coef(prodCD)["log(qMat)"] * dat$qOutCD / dat$qMat

We can obtain summary statistics of all calculated marginal products by:

> summary( dat[ , c( "mpCapCD", "mpCapCDFit", "mpLabCD", "mpLabCDFit",


+ "mpMatCD", "mpMatCDFit" ) ] )

mpCapCD mpCapCDFit mpLabCD mpLabCDFit


Min. : 0.2358 Min. : 0.8782 Min. : 0.581 Min. : 1.870
1st Qu.: 2.4923 1st Qu.: 2.5344 1st Qu.: 3.465 1st Qu.: 4.250
Median : 3.6158 Median : 3.4891 Median : 6.220 Median : 5.397
Mean : 5.3207 Mean : 4.4904 Mean : 6.905 Mean : 5.909
3rd Qu.: 6.7871 3rd Qu.: 5.4819 3rd Qu.: 9.738 3rd Qu.: 7.114
Max. :24.9217 Max. :14.8856 Max. :17.329 Max. :13.757
mpMatCD mpMatCDFit
Min. : 5.157 Min. : 21.89
1st Qu.: 28.750 1st Qu.: 35.49

72
2 Primal Approach: Production Function

Median : 49.850 Median : 45.16


Mean : 56.851 Mean : 47.45
3rd Qu.: 70.450 3rd Qu.: 56.60
Max. :189.056 Max. :110.13

Hence, if a firm increases capital input by one unit, the output will on average increase by around
5.32 or 4.49 units. If the firm increases labor input by one unit, the output will on average increase
by around 6.91 or 5.91 units. And if the firm increases materials input by one unit, the output
will on average increase by around 56.85 or 47.45 units.
If the “noise” term mainly comprises measurement errors in the output quantity, the “true”
output quantity is probably closer to the predicted output quantity than to the observed output
quantity so that it seems to be more appropriate to calculate the marginal products based on the
predicted output quantity than based on the observed output quantity. On the other hand, if
the “noise” term mainly comprises the effects of omitted variables, the “true” output quantity is
probably closer to the observed output quantity than to the predicted output quantity so that it
seems to be more appropriate to calculate the marginal products based on the observed output
quantity than based on the predicted output quantity.
However, in the second case, the output quantities used in the calculations are generally unequal
to those predicted by the estimated production function, while the derivation of the marginal
products in equation (2.69) assumes that the output quantities y are equal to the right-hand
side of the production function (2.66). Therefore, using observed (rather than predicted) output
quantities can result in inconsistencies in microeconomic analyses.
We can visualize (the variation of) these marginal products with histograms:

> hist( dat$mpCapCD )


> hist( dat$mpLabCD )
> hist( dat$mpMatCD )
> hist( dat$mpCapCDFit )
> hist( dat$mpLabCDFit )
> hist( dat$mpMatCDFit )

The resulting graphs are shown in figure 2.16. If the firms increase capital input by one unit, the
output of most firms will increase by between 0 and 8 units; if the firms increase labor input by
one unit, the output of most firms will increase by between 2 and 12 units; and if the firms increase
materials input by one unit, the output of most firms will increase by between 20 and 80 units.
Not surprisingly, a comparison of these marginal effects with the marginal effects from the linear
production function confirms the results from the comparison based on the output elasticities:
the marginal products of capital are generally larger than the marginal product estimated by
the linear production function and the marginal products of labor are generally smaller than the
marginal product estimated by the linear production function, while the marginal products of

73
2 Primal Approach: Production Function

50

30
25

30
40

20
Frequency

Frequency

Frequency
30

20
15
20

10

10
10

5
0

0
0 5 10 15 20 25 0 5 10 15 0 50 100 150 200

MP Cap (observed output) MP Lab (observed output) MP Mat (observed output)

30
60

40
25
50

30
20
Frequency

Frequency

Frequency
40

15
30

20
10
20

10
10

5
0

0
0 5 10 15 2 4 6 8 10 12 14 20 40 60 80 100 120

MP Cap (predicted output) MP Lab (predicted output) MP Mat (predicted output)

Figure 2.16: Cobb-Douglas production function: marginal products

fuel are (on average) rather similar to the marginal product estimated by the linear production
function.

2.4.7 Elasticity of scale


As the elasticity of scale is the sum of all output elasticities (see equation 2.60), we can calculate
it simply by summing up all coefficients except for the intercept:

> sum( coef( prodCD )[ -1 ] )

[1] 1.466442

Hence, if the firm increases all input quantities by one percent, output will increase by 1.47
percent. This means that the technology has strong increasing returns to scale. However, in
contrast to the results of the linear production function, the elasticity of scale based on the Cobb-
Douglas production function is (globally) constant. Hence, it does not decrease (or increase), e.g.,
with the size of the firm. This means that the optimal firm size would be infinity.
We can use the delta method (see section 1.5.4) to calculate the variance and the standard error
of the elasticity of scale. Given that the first derivatives of the elasticity of scale with respect to
the estimated coefficients are ∂ε/∂α0 = 0 and ∂ε/∂αCap = ∂ε/∂αLab = ∂ε/∂αM at = 1, we can
do this by following commands:

74
2 Primal Approach: Production Function

> ESCD <- sum( coef(prodCD)[-1] )

[1] 1.466442

> dESCD <- c( 0, 1, 1, 1 )

[1] 0 1 1 1

> varESCD <- t(dESCD) %*% vcov(prodCD) %*% dESCD

[,1]
[1,] 0.0118237

> seESCD <- sqrt( varESCD )

[,1]
[1,] 0.1087369

Now, we can apply a t test to test whether the elasticity of scale significantly differs from one.
The following commands calculate the t value and the critical value for a two-sided t test based
on a 5% significance level:

> tESCD <- (ESCD - 1) / seESCD

[,1]
[1,] 4.289645

> cvESCD <- qt( 0.975, 136 )

[1] 1.977561

Given that the t value is larger than the critical value, we can reject the null hypothesis of
constant returns to scale and conclude that the technology has significantly increasing returns to
scale. The P value for this two-sided t test is:

> pESCD <- 2 * ( 1 - pt( tESCD, 136 ) )

[,1]
[1,] 3.372264e-05

Given that the P value is close to zero, we can be very sure that the technology has increasing
returns to scale. The 95% confidence interval for the elasticity of scale is:

> c( ESCD - cvESCD * seESCD, ESCD + cvESCD * seESCD )

[1] 1.251409 1.681476

75
2 Primal Approach: Production Function

2.4.8 Marginal rates of technical substitution


The MRTS based on the Cobb-Douglas production function differ between firms. They can be
calculated as follows:

> dat$mrtsCapLabCD <- - dat$mpLabCD / dat$mpCapCD


> dat$mrtsLabCapCD <- - dat$mpCapCD / dat$mpLabCD
> dat$mrtsCapMatCD <- - dat$mpMatCD / dat$mpCapCD
> dat$mrtsMatCapCD <- - dat$mpCapCD / dat$mpMatCD
> dat$mrtsLabMatCD <- - dat$mpMatCD / dat$mpLabCD
> dat$mrtsMatLabCD <- - dat$mpLabCD / dat$mpMatCD

Given that the marginal rates of technical substitution are ratios between marginal products,
the output quantities in the marginal products cancel out so that it does not matter whether one
uses the marginal products that were calculated based on the observed output quantities or the
marginal products that were calculated based on the predicted output quantities:

> all.equal( dat$mrtsCapLabCD, - dat$mpLabCDFit / dat$mpCapCDFit )

[1] TRUE

> all.equal( dat$mrtsLabCapCD, - dat$mpCapCDFit / dat$mpLabCDFit )

[1] TRUE

> all.equal( dat$mrtsCapMatCD, - dat$mpMatCDFit / dat$mpCapCDFit )

[1] TRUE

> all.equal( dat$mrtsMatCapCD, - dat$mpCapCDFit / dat$mpMatCDFit )

[1] TRUE

> all.equal( dat$mrtsLabMatCD, - dat$mpMatCDFit / dat$mpLabCDFit )

[1] TRUE

> all.equal( dat$mrtsMatLabCD, - dat$mpLabCDFit / dat$mpMatCDFit )

[1] TRUE

We can visualize (the variation of) these MRTSs with histograms:

> hist( dat$mrtsCapLabCD )


> hist( dat$mrtsLabCapCD )
> hist( dat$mrtsCapMatCD )
> hist( dat$mrtsMatCapCD )
> hist( dat$mrtsLabMatCD )
> hist( dat$mrtsMatLabCD )

76
2 Primal Approach: Production Function

35

60
30

30
50
25
Frequency

Frequency

Frequency
40
20

20
30
15

20
10

10
10
5
0

0
−6 −5 −4 −3 −2 −1 0 −6 −5 −4 −3 −2 −1 0 −50 −40 −30 −20 −10 0

mrtsCapLabCD mrtsLabCapCD mrtsCapMatCD


60

50
60
50

40
50
40
Frequency

Frequency

Frequency
40

30
30

30

20
20

20

10
10

10
0

0
−0.6 −0.4 −0.2 0.0 −35 −25 −15 −5 0 −0.4 −0.3 −0.2 −0.1 0.0

mrtsMatCapCD mrtsLabMatCD mrtsMatLabCD

Figure 2.17: Cobb-Douglas production function: marginal rates of technical substitution (MRTS)

The resulting graphs are shown in figure 2.17. According to the MRTS based on the Cobb-
Douglas production function, most firms only need between 0.5 and 2 additional units of capital
or between 0.05 and 0.15 additional units of materials to replace one unit of labor.

2.4.9 Relative marginal rates of technical substitution


As we do not know the units of measurements of the input quantities, the interpretation of
the MRTSs is practically not very useful. To overcome this problem, we calculate the relative
marginal rates of technical substitution (RMRTS) by equation (2.17). As the output elasticities
based on a Cobb-Douglas production function are equal to the coefficients, we can calculate the
RMRTS as follows:

> rmrtsCapLabCD <- - coef(prodCD)["log(qLab)"] / coef(prodCD)["log(qCap)"]

log(qLab)
-4.147897

> rmrtsLabCapCD <- - coef(prodCD)["log(qCap)"] / coef(prodCD)["log(qLab)"]

log(qCap)
-0.241086

77
2 Primal Approach: Production Function

> rmrtsCapMatCD <- - coef(prodCD)["log(qMat)"] / coef(prodCD)["log(qCap)"]

log(qMat)
-3.847203

> rmrtsMatCapCD <- - coef(prodCD)["log(qCap)"] / coef(prodCD)["log(qMat)"]

log(qCap)
-0.2599291

> rmrtsLabMatCD <- - coef(prodCD)["log(qMat)"] / coef(prodCD)["log(qLab)"]

log(qMat)
-0.9275069

> rmrtsMatLabCD <- - coef(prodCD)["log(qLab)"] / coef(prodCD)["log(qMat)"]

log(qLab)
-1.078159

Hence, if a firm wants to reduce the use of labor by one percent, it has to use 4.15 percent more
capital in order to produce the same output as before. Alternatively, the firm can replace one
percent of labor by using 1.08 percent more materials. If the firm increases the use of labor by one
percent, it can reduce capital by 4.15 percent whilst still producing the same output as before.
Alternatively, the firm can reduce materials by 1.08 percent.

2.4.10 First and second partial derivatives


For the Cobb-Douglas production function with three inputs (2.66), the first derivatives (marginal
products) are:

∂y y
f1 = = α1 A xα1 1 −1 xα2 2 xα3 3 = α1 (2.71)
∂x1 x1
∂y y
f2 = = α2 A xα1 1 xα2 2 −1 xα3 3 = α2 (2.72)
∂x2 x2
∂y y
f3 = = α3 A xα1 1 xα2 2 xα3 3 −1 = α3 (2.73)
∂x3 x3

and the second derivatives are:

∂f1 f1 y f2 f1
f11 = = α1 − α1 2 = 1 − (2.74)
∂x1 x1 x1 y x1
∂f2 f2 y f 2 f2
f22 = = α2 − α2 2 = 2 − (2.75)
∂x2 x2 x2 y x2
∂f3 f3 y f 2 f3
f33 = = α3 − α3 2 = 3 − (2.76)
∂x3 x3 x3 y x3

78
2 Primal Approach: Production Function

∂f1 f2 f1 f2
f12 = = α1 = (2.77)
∂x2 x1 y
∂f1 f3 f1 f3
f13 = = α1 = (2.78)
∂x3 x1 y
∂f2 f3 f2 f3
f23 = = α2 = . (2.79)
∂x3 x2 y

Generally, for an N -input Cobb-Douglas function, the first and second derivatives are

y
fi = αi (2.80)
xi
fi fj fi
fij = − δij , (2.81)
y xi

where δij denotes Kronecker’s delta with



1 if i = j
δij = (2.82)
6 j
0 if i =

In section 2.4.6, we have already computed the first partial derivatives (fi ) of the Cobb-Douglas
production function, which are also called marginal products. In section 2.4.6, we also argue that
using observed (rather than predicted) output quantities can result in inconsistencies in microe-
conomic analyses. Therefore, we use marginal products based on predicted output quantities in
the following derivations. In order to simplify further computations, we create variables with
shorter names for the first derivatives (marginal products):

> dat$fCap <- dat$mpCapCDFit


> dat$fLab <- dat$mpCapCDFit
> dat$fMat <- dat$mpCapCDFit

Based on these first derivatives, we can also calculate the second derivatives:

> dat$fCapCap <- with( dat, fCap^2 / qOutCD - fCap / qCap )


> dat$fLabLab <- with( dat, fLab^2 / qOutCD - fLab / qLab )
> dat$fMatMat <- with( dat, fMat^2 / qOutCD - fMat / qMat )
> dat$fCapLab <- with( dat, fCap * fLab / qOutCD )
> dat$fCapMat <- with( dat, fCap * fMat / qOutCD )
> dat$fLabMat <- with( dat, fLab * fMat / qOutCD )

2.4.11 Elasticities of substitution


2.4.11.1 Direct elasticities of substitution

We can calculate the direct elasticities of substitution using equation (2.19):

79
2 Primal Approach: Production Function

> dat$esdCapLab <- with( dat,


+ - ( fCap * fLab * ( qCap * fCap + qLab * fLab ) ) /
+ ( qCap * qLab *
+ ( fCapCap * fLab^2 - 2 * fCapLab * fCap * fLab + fLabLab * fCap^2 ) ) )
> dat$esdCapMat <- with( dat,
+ - ( fCap * fMat * ( qCap * fCap + qMat * fMat ) ) /
+ ( qCap * qMat *
+ ( fCapCap * fMat^2 - 2 * fCapMat * fCap * fMat + fMatMat * fCap^2 ) ) )
> dat$esdLabMat <- with( dat,
+ - ( fLab * fMat * ( qLab * fLab + qMat * fMat ) ) /
+ ( qLab * qMat *
+ ( fLabLab * fMat^2 - 2 * fLabMat * fLab * fMat + fMatMat * fLab^2 ) ) )
> range( dat$esdCapLab )

[1] 1 1

> range( dat$esdCapMat )

[1] 1 1

> range( dat$esdLabMat )

[1] 1 1

All direct elasticities of substitution are exactly one for all observations and for all combinations
of the inputs. This is no surprise and confirms that our calculations have been done correctly,
because the Cobb-Douglas functional form implies that the direct elasticities of substitution are
always equal to one, irrespective of the input and output quantities and the estimated parameters.

2.4.11.2 Allen elasticities of substitution

In order to calculate the Allen elasticities of substitution, we need to construct the bordered
Hessian matrix. As the first and second derivatives of the Cobb-Douglas function differ between
observations, also the bordered Hessian matrix differs between observations. As a starting point,
we construct the bordered Hessian Matrix just for the first observation:

> bhm <- matrix( 0, nrow = 4, ncol = 4 )


> bhm[ 1, 2 ] <- bhm[ 2, 1 ] <- dat$fCap[ 1 ]
> bhm[ 1, 3 ] <- bhm[ 3, 1 ] <- dat$fLab[ 1 ]
> bhm[ 1, 4 ] <- bhm[ 4, 1 ] <- dat$fMat[ 1 ]
> bhm[ 2, 2 ] <- dat$fCapCap[ 1 ]
> bhm[ 3, 3 ] <- dat$fLabLab[ 1 ]
> bhm[ 4, 4 ] <- dat$fMatMat[ 1 ]

80
2 Primal Approach: Production Function

> bhm[ 2, 3 ] <- bhm[ 3, 2 ] <- dat$fCapLab[ 1 ]


> bhm[ 2, 4 ] <- bhm[ 4, 2 ] <- dat$fCapMat[ 1 ]
> bhm[ 3, 4 ] <- bhm[ 4, 3 ] <- dat$fLabMat[ 1 ]
> print(bhm)

[,1] [,2] [,3] [,4]


[1,] 0.000000 6.229014e+00 6.229014e+00 6.229014e+00
[2,] 6.229014 -6.202845e-05 1.208199e-05 1.208199e-05
[3,] 6.229014 1.208199e-05 -5.217676e-06 1.208199e-05
[4,] 6.229014 1.208199e-05 1.208199e-05 -1.706589e-04

Based on this bordered Hessian matrix, we can calculate the co-factors Fij :

> FCapLab <- - det( bhm[ -2, -3 ] )

[1] -0.007090459

> FCapMat <- det( bhm[ -2, -4 ] )

[1] -0.0006712377

> FLabMat <- - det( bhm[ -3, -4 ] )

[1] -0.002875531

Now, we can use equation (2.20) to calculate the Allen elasticities of substitution:

> esaCapLab <- with( dat[1,],


+ ( qCap * fCap + qLab * fLab + qMat * fMat ) / ( qCap * qLab ) ) *
+ FCapLab / det( bhm )

[1] 1

> esaCapMat <- with( dat[1,],


+ ( qCap * fCap + qLab * fLab + qMat * fMat ) / ( qCap * qMat ) ) *
+ FCapMat / det( bhm )

[1] 1

> esaLabMat <- with( dat[1,],


+ ( qCap * fCap + qLab * fLab + qMat * fMat ) / ( qLab * qMat ) ) *
+ FLabMat / det( bhm )

[1] 1

81
2 Primal Approach: Production Function

All elasticities of substitution are exactly one at the first observation.


We can check whether condition (2.23) is fulfilled:

> FCapCap <- det( bhm[ -2, -2 ] )


> FLabLab <- det( bhm[ -3, -3 ] )
> FMatMat <- det( bhm[ -4, -4 ] )
> esaCapCap <- with( dat[1,],
+ ( qCap * fCap + qLab * fLab + qMat * fMat ) / ( qCap * qCap ) ) *
+ FCapCap / det( bhm )
> esaLabLab <- with( dat[1,],
+ ( qCap * fCap + qLab * fLab + qMat * fMat ) / ( qLab * qLab ) ) *
+ FLabLab / det( bhm )
> esaMatMat <- with( dat[1,],
+ ( qCap * fCap + qLab * fLab + qMat * fMat ) / ( qMat * qMat ) ) *
+ FMatMat / det( bhm )
> k1 <- dat$qCap[ 1 ] * bhm[ 1, 2 ] / with( dat[1,],
+ ( qCap * fCap + qLab * fLab + qMat * fMat ) )
> k2 <- dat$qLab[ 1 ] * bhm[ 1, 3 ] / with( dat[1,],
+ ( qCap * fCap + qLab * fLab + qMat * fMat ) )
> k3 <- dat$qMat[ 1 ] * bhm[ 1, 4 ] / with( dat[1,],
+ ( qCap * fCap + qLab * fLab + qMat * fMat ) )
> k1 * esaCapCap + k2 * esaCapLab + k3 * esaCapMat

[1] 1.401657e-15

> k1 * esaCapLab + k2 * esaLabLab + k3 * esaLabMat

[1] 4.163336e-17

> k1 * esaCapMat + k2 * esaLabMat + k3 * esaMatMat

[1] -6.661338e-16

As all three values are virtually zero (the small deviations from zero are caused by rounding
errors), we can conclude that condition (2.23) is fulfilled for all three inputs.
In order to calculate the Allen elasticities of substitution for all firms, we need to construct the
bordered Hessian matrices for all observations. We can stack the bordered Hessian matrices on
top of each other, which results in a three-dimensional array:

> bhmArray <- array( 0, c( 4, 4, nrow( dat ) ) )


> bhmArray[ 1, 2, ] <- bhmArray[ 2, 1, ] <- dat$fCap
> bhmArray[ 1, 3, ] <- bhmArray[ 3, 1, ] <- dat$fLab

82
2 Primal Approach: Production Function

> bhmArray[ 1, 4, ] <- bhmArray[ 4, 1, ] <- dat$fMat


> bhmArray[ 2, 2, ] <- dat$fCapCap
> bhmArray[ 3, 3, ] <- dat$fLabLab
> bhmArray[ 4, 4, ] <- dat$fMatMat
> bhmArray[ 2, 3, ] <- bhmArray[ 3, 2, ] <- dat$fCapLab
> bhmArray[ 2, 4, ] <- bhmArray[ 4, 2, ] <- dat$fCapMat
> bhmArray[ 3, 4, ] <- bhmArray[ 4, 3, ] <- dat$fLabMat

Based on these bordered Hessian matrices, we can calculate the co-factors and the determinants
of the bordered Hessian matrices for each observation:

> dat$FCapLab <- - apply( bhmArray[ -2, -3, ], 3, det )


> dat$FCapMat <- apply( bhmArray[ -2, -4, ], 3, det )
> dat$FLabMat <- - apply( bhmArray[ -3, -4, ], 3, det )
> dat$bhmDet <- apply( bhmArray, 3, det )

Finally, we can calculate the Allen elasticities of substitution:

> dat$esaCapLab <- with( dat,


+ ( qCap * fCap + qLab * fLab + qMat * fMat ) /
+ ( qCap * qLab ) * FCapLab / bhmDet )
> dat$esaCapMat <- with( dat,
+ ( qCap * fCap + qLab * fLab + qMat * fMat ) /
+ ( qCap * qMat ) * FCapMat / bhmDet )
> dat$esaLabMat <- with( dat,
+ ( qCap * fCap + qLab * fLab + qMat * fMat ) /
+ ( qLab * qMat ) * FLabMat / bhmDet )
> range( dat$esaCapLab )

[1] 1 1

> range( dat$esaCapMat )

[1] 1 1

> range( dat$esaLabMat )

[1] 1 1

Also the Allen elasticities of substitution are equal to one for all firms and for all input combi-
nations. This is again no surprise and confirms that our calculations have been done correctly,
because the Cobb-Douglas functional form implies that the Allen elasticities of substitution are
always equal to one, irrespective of the input and output quantities and the estimated parameters.

83
2 Primal Approach: Production Function

2.4.11.3 Morishima elasticities of substitution

In order to calculate the Morishima elasticities of substitution, we need to calculate the co-factors
of the diagonal elements of the bordered Hessian matrix for each observation:

> dat$FCapCap <- apply( bhmArray[ -2, -2, ], 3, det )


> dat$FLabLab <- apply( bhmArray[ -3, -3, ], 3, det )
> dat$FMatMat <- apply( bhmArray[ -4, -4, ], 3, det )

We use equation (2.24) to calculate the Morishima elasticities of substitution for all observations
in our data set:

> dat$esmCapLab <- with( dat, ( fLab / qCap ) * FCapLab / bhmDet -


+ ( fLab / qLab ) * FLabLab / bhmDet )
> range( dat$esmCapLab )

[1] 1 1

> dat$esmLabCap <- with( dat, ( fCap / qLab ) * FCapLab / bhmDet -


+ ( fCap / qCap ) * FCapCap / bhmDet )
> range( dat$esmLabCap )

[1] 1 1

> dat$esmCapMat <- with( dat, ( fMat / qCap ) * FCapMat / bhmDet -


+ ( fMat / qMat ) * FMatMat / bhmDet )
> range( dat$esmCapMat )

[1] 1 1

> dat$esmMatCap <- with( dat, ( fCap / qMat ) * FCapMat / bhmDet -


+ ( fCap / qCap ) * FCapCap / bhmDet )
> range( dat$esmMatCap )

[1] 1 1

> dat$esmLabMat <- with( dat, ( fMat / qLab ) * FLabMat / bhmDet -


+ ( fMat / qMat ) * FMatMat / bhmDet )
> range( dat$esmLabMat )

[1] 1 1

> dat$esmMatLab <- with( dat, ( fLab / qMat ) * FLabMat / bhmDet -


+ ( fLab / qLab ) * FLabLab / bhmDet )
> range( dat$esmMatLab )

84
2 Primal Approach: Production Function

[1] 1 1

As with the direct elasticities of substitution and the Allen elasticities of substitution, the Cobb-
Douglas functional form implies that all Morishima elasticities of substitution are always equal
to one, irrespective of the input and output quantities and the estimated parameters.
Using condition 2.23, we can show that all Morishima elasticities of substitution are always
M = 1 ∀ i 6= j), if all Allen elasticities of substitution are one (σ = 1 ∀ i 6= j):
one (σij ij

X X
M
σij = Kj σij − Kj σjj = Kj + Kk σkj = Kk = 1 (2.83)
k6=j k

Hence, the Cobb-Douglas function cannot be used to analyze the substitutability of the inputs,
because it will always return (direct, Allen and Morishima) elasticities of substitution that are
equal to one, even if the true elasticities of substitution are close to zero or close to infinity.

2.4.12 Quasiconcavity
We start by checking whether our estimated Cobb-Douglas production function is quasiconcave
at the first observation:

> bhm

[,1] [,2] [,3] [,4]


[1,] 0.000000 6.229014e+00 6.229014e+00 6.229014e+00
[2,] 6.229014 -6.202845e-05 1.208199e-05 1.208199e-05
[3,] 6.229014 1.208199e-05 -5.217676e-06 1.208199e-05
[4,] 6.229014 1.208199e-05 1.208199e-05 -1.706589e-04

> det( bhm[ 1:2, 1:2 ] )

[1] -38.80062

> det( bhm[ 1:3, 1:3 ] )

[1] 0.003546768

> det( bhm )

[1] -6.978853e-07

The first leading principal minor of the bordered Hessian matrix is negative, the second principal
minor is positive, and the third principal minor is negative. This means that our estimated
Cobb-Douglas production function is quasiconcave at the first observation.
Now we check quasiconcavity at each observation based on the three-dimensional array that
consists of the stacked bordered Hessian matrices of all observations:

85
2 Primal Approach: Production Function

> dat$quasiConc <- apply( bhmArray[ 1:2, 1:2, ], 3, det ) < 0 &
+ apply( bhmArray[ 1:3, 1:3, ], 3, det ) > 0 &
+ apply( bhmArray, 3, det ) < 0
> table( dat$quasiConc )

TRUE
140

Our estimated Cobb-Douglas production function is quasiconcave at all of the 140 observations.
In fact, all Cobb-Douglas production functions are quasiconcave in inputs if A ≥ 0, α1 ≥ 0,
. . . , αN ≥ 0, while Cobb-Douglas production functions are concave in inputs if A ≥ 0, α1 ≥ 0,
PN
. . . , αN ≥ 0, and the technology has decreasing or constant returns to scale ( i=1 αi ≤ 1).3

2.4.13 First-order conditions for profit maximization


In this section, we will check to what extent the first-order conditions (2.39) for profit maximiza-
tion are fulfilled, i.e. to what extent the firms use the optimal input quantities. We do this by
comparing the marginal value products of the inputs with the corresponding input prices. We
can calculate the marginal value products by multiplying the marginal products by the output
price:

> dat$mvpCapCd <- dat$pOut * dat$fCap


> dat$mvpLabCd <- dat$pOut * dat$fLab
> dat$mvpMatCd <- dat$pOut * dat$fMat

The command compPlot (package miscTools) can be used to compare the marginal value products
with the corresponding input prices:

> compPlot( dat$pCap, dat$mvpCapCd )


> compPlot( dat$pLab, dat$mvpLabCd )
> compPlot( dat$pMat, dat$mvpMatCd )
> compPlot( dat$pCap, dat$mvpCapCd, log = "xy" )
> compPlot( dat$pLab, dat$mvpLabCd, log = "xy" )
> compPlot( dat$pMat, dat$mvpMatCd, log = "xy" )

The resulting graphs are shown in figure 2.18. They indicate that the marginal value products
are always nearly equal to or higher than the corresponding input prices. This indicates that
(almost) all firms could increase their profit by using more of all inputs. Given that the estimated
Cobb-Douglas technology exhibits increasing returns to scale, it is not surprising that (almost)
all firms would gain from increasing all input quantities. Therefore, the question arises why the
firms in the sample did not do this. This questions has already been addressed in section 2.3.10.
3
See, e.g., http://econren.weebly.com/uploads/9/0/1/5/9015734/lecture16.pdf or http://web.mit.edu/14.
102/www/ps/ps1sol.pdf.

86
2 Primal Approach: Production Function

● ● ●
● ● ●
30

30

30
● ● ●

● ● ●
MVP Cap

MVP Lab

MVP Mat
20

20

20
● ●
● ● ●
●● ●● ● ●
●● ●● ●

●●● ●

● ● ●●
● ● ●

● ●
●●
●●

●●
● ● ●● ●

●●●
10

● ●
10

● ●

10
● ●● ●●● ●
●●
●●
● ●● ●●● ●

● ● ●●
●●● ●
●● ●●
●●●●

●●
● ● ● ● ●
●● ●

●●
● ●● ● ● ●●● ●










●●
● ●



● ● ●● ●●●●
●●



●●●

●●


●●


● ●


●●




●●●


●●
● ●
●●
●●●●
● ●●●●● ●
● ● ●



●●

●● ●



●● ●● ●●
●●
●●●●


●●●●


●● ●
●●
● ●
●●●●
●●●●

● ●

●●●

●●●●●
● ●
0

0
0 10 20 30 0 10 20 30 0 10 20 30

w Cap w Lab w Mat



● ●● ● ●
● ● ●
20.0


● ● ●
● ●● ●
20
● ● ●●
● ●● ● ● ● ● ●
●●● ● ●● ●●● ●


● ● ●
● ● ●●● ● ●●
●● ●
5.0 10.0

● ●
●●
●● ●● ● ●●●● ● ● ● ●
● ● ●●●●
●● ●
10

● ● ● ●
5.0

●● ●
● ●●
●●●● ● ●● ●● ●
MVP Cap

●● ●● ●
MVP Lab

MVP Mat

●●
●●● ●● ●● ● ● ● ●
● ●
●● ●● ● ●●
●● ●●● ●
●●● ●● ● ●●●●●●●
●● ● ●
●● ● ● ● ●●
● ●●● ●

●● ● ● ● ●
●● ●●●
5


2.0

●●
●● ●● ●● ● ●


● ●● ●●
● ●●●●
● ●
●●
● ●●● ● ●
● ●● ●
● ●● ● ●●●● ●●
●●●●●●


● ● ●● ● ● ●
● ● ●●● ●●● ● ●●● ●
●●●●● ● ●● ● ●● ●
●● ● ●
●●
● ● ● ●●●●●●● ● ● ●


2.0

● ●
● ● ●● ● ●●● ●●● ● ●●● ●
●● ●● ● ● ●●
● ● ● ●●

● ●● ● ●
● ●●● ● ●● ● ● ●●
●● ● ●● ● ● ●
2

● ●●●●● ● ● ● ●●● ●● ●●
0.5

● ●
● ● ●● ●
● ● ● ● ●●
1.0



● ● ● ● ●
●●● ●● ● ●●
● ●●
●● ●
● ● ● ●●
1
0.2

● ● ● ●
0.5


0.2 0.5 2.0 5.0 20.0 0.5 1.0 2.0 5.0 20.0 1 2 5 10 20

w Cap w Lab w Mat

Figure 2.18: Marginal value products and corresponding input prices

87
2 Primal Approach: Production Function

2.4.14 First-order conditions for cost minimization


As the marginal rates of technical substitution differ between observations for the Cobb-Douglas
functional form, we use scatter plots for visualizing the comparison of the input price ratios with
the negative inverse marginal rates of technical substitution:

> compPlot( dat$pCap / dat$pLab, - dat$mrtsLabCapCD )


> compPlot( dat$pCap / dat$pMat, - dat$mrtsMatCapCD )
> compPlot( dat$pLab / dat$pMat, - dat$mrtsMatLabCD )
> compPlot( dat$pCap / dat$pLab, - dat$mrtsLabCapCD, log = "xy" )
> compPlot( dat$pCap / dat$pMat, - dat$mrtsMatCapCD, log = "xy" )
> compPlot( dat$pLab / dat$pMat, - dat$mrtsMatLabCD, log = "xy" )

● ●
6

0.8

0.4
5

● ●
0.6
− MRTS Lab Cap

− MRTS Mat Cap

− MRTS Mat Lab


● ●

0.3
● ●
4

● ●
● ● ●
● ●● ● ●
● ●
0.4


3

● ● ● ●
● ●

0.2
● ● ● ● ●● ●●
● ● ● ●
● ●
●● ● ●
● ● ● ● ● ● ●
2

●● ● ● ● ●
● ● ● ● ●● ●●
●● ● ● ● ● ●● ● ●●
● ●● ●●
0.2

● ●
●●● ● ● ● ●
● ● ●
●●● ●
● ● ●● ●
● ●
●● ●
● ● ●● ● ●● ● ●●
●● ● ● ●
● ● ● ●

0.1
● ●● ● ● ● ●
● ●●● ● ● ● ●● ● ● ● ●●●●●● ●
●●
● ●
●●●●●● ● ●●
1

●●● ● ● ●
● ●●●
● ●●
●●●●
●●
●●
● ●● ● ●●●●●

●●
●● ●● ●●● ● ●●
● ●● ●
●●●●●
● ● ●●
● ● ●●● ● ● ● ●● ● ● ●●
●●●●● ●
●●
●●●●


●●●
● ●●● ●
● ● ●●●

●●



●●
●●●●
●●●●●●





●● ●
● ● ● ●● ●●●●● ●
●●●
● ●
●●
● ● ●
● ● ●
●●



●●
●●


●●●
●●● ● ●

● ●●
● ●●●




●●●●



●●●●

●● ●●
● ● ● ●●●
●●● ●● ●●●
● ●
0.0

● ●
0

0 1 2 3 4 5 6 0.0 0.2 0.4 0.6 0.8 0.1 0.2 0.3 0.4

w Cap / w Lab w Cap / w Mat w Lab / w Mat


● ●

5.0

● ●
0.50

● ● ●
● ● ●
● ● ●
● ●
● ● ●● ● ● ●● ● ●
● ● ●

0.20


2.0

● ● ●
− MRTS Lab Cap

− MRTS Mat Cap

● ●
− MRTS Mat Lab

● ●

●● ● ●● ● ● ● ●● ●●
● ●
0.05 0.10 0.20

●● ●
● ●●
● ● ●● ● ●
●● ● ●●
● ● ● ●● ● ● ●
● ● ●● ● ● ●●
● ● ●●● ● ●
●● ●● ●● ● ●● ● ●● ●
● ● ●●
1.0

● ●● ● ● ● ● ● ● ●●● ● ●●● ●
● ● ●● ● ●● ● ●●● ●●● ●
● ● ● ●●●● ● ●
● ●
●●● ● ● ●●● ●● ●● ●
● ● ●●● ● ●●●
● ● ●●
0.10

●● ●● ● ● ● ● ●●
● ●●
● ●●●●● ●● ● ●●
●● ●● ● ●
● ● ●
● ● ●
●●●● ●●● ● ●● ●● ●● ● ●
●●●●
● ●● ●● ● ● ●●
●● ● ●● ●● ●● ● ● ●● ● ● ●
● ● ● ●●● ● ●●● ● ● ●● ●●● ●

● ● ●● ● ●●● ●●● ● ●
0.5

●● ● ●● ●● ● ●
● ● ●●
● ● ●
● ●●●● ● ●●●● ●● ● ● ● ● ● ●●
● ●● ● ●● ● ● ● ●● ● ●
●● ●
● ● ● ● ● ● ●
● ●● ● ●●
● ●● ● ●● ● ●●
● ● ●● ●● ● ● ●
● ● ● ●● ●
0.05

● ●● ●● ●
● ●
● ●●
● ●
● ●● ● ● ● ●●● ●
0.2


● ●
0.02

●● ●

0.2 0.5 1.0 2.0 5.0 0.02 0.05 0.20 0.50 0.05 0.10 0.20

w Cap / w Lab w Cap / w Mat w Lab / w Mat

Figure 2.19: First-order conditions for cost minimization

The resulting graphs are shown in figure 2.19.


Furthermore, we use histograms to visualize the (absolute and relative) differences between the
input price ratios and the corresponding negative inverse marginal rates of technical substitution:

> hist( - dat$mrtsLabCapCD - dat$pCap / dat$pLab )


> hist( - dat$mrtsMatCapCD - dat$pCap / dat$pMat )

88
2 Primal Approach: Production Function

> hist( - dat$mrtsMatLabCD - dat$pLab / dat$pMat )


> hist( log( - dat$mrtsLabCapCD / ( dat$pCap / dat$pLab ) ) )
> hist( log( - dat$mrtsMatCapCD / ( dat$pCap / dat$pMat ) ) )
> hist( log( - dat$mrtsMatLabCD / ( dat$pLab / dat$pMat ) ) )

40
50
80

30
40
60
Frequency

Frequency

Frequency
30

20
40

20

10
20

10
0

0
−4 −2 0 2 4 −0.6 −0.4 −0.2 0.0 0.2 −0.3 −0.2 −0.1 0.0 0.1 0.2

−MrtsLabCap − wCap / wLab −MrtsMatCap − wCap / wMat −MrtsMatLab − wLab / wMat


50

20
40
40

15
30
Frequency

Frequency

Frequency
30

10
20
20

10

5
10
0

−2.0 −1.0 0.0 1.0 −2.5 −1.5 −0.5 0.5 −1.5 −0.5 0.0 0.5 1.0

log(−MrtsLabCap / (wCap / wLab)) log(−MrtsMatCap / (wCap / wMat)) log(−MrtsMatLab / (wLab / wMat))

Figure 2.20: First-order conditions for costs minimization

The resulting graphs are shown in figure 2.20. The left graphs in figures 2.19 and 2.20 show
that the ratio between the capital price and the labor price is larger than the absolute value of
the marginal rate of technical substitution between labor and capital for the most firms in the
sample:
wcap M Pcap
> −M RT Slab,cap = (2.84)
wlab M Plab
Hence, most firms can get closer to the minimum of their production costs by substituting labor
for capital, because this will decrease the marginal product of labor and increase the marginal
product of capital so that the absolute value of the MRTS between labor and capital increases
and gets closer to the corresponding input price ratio. Similarly, the graphs in the middle column
indicate that most firms should substitute materials for capital and the graphs on the right
indicate that the majority of the firms should substitute materials for labor. Hence, the majority

89
2 Primal Approach: Production Function

of the firms could reduce production costs particularly by using less capital and more materials4
but there might be (legal) regulations that restrict the use of materials (e.g. fertilizers, pesticides).

2.4.15 Derived input demand functions and output supply functions


Given a Cobb-Douglas production function (2.66), the input quantities chosen by a profit maxi-
mizing producer are
1
 
 !αj  1−α
 αi
 Y αj


 P A  if α < 1
 wi
 wj
j
xi (p, w) = (2.85)



 0∨∞ if α = 1


∞

if α > 1

and the output quantity is


 1
 !αj  1−α


A P α
Y αj
if α < 1

 



 j
wj
y(p, w) = (2.86)


0∨∞ if α = 1




∞

if α > 1
P
with α = j αj . Hence, if the Cobb-Douglas production function exhibits increasing returns
to scale ( = α > 1), the optimal input and output quantities are infinity. As our estimated
Cobb-Douglas production function has increasing returns to scale, the optimal input quantities
are infinity. Therefore, we cannot evaluate the effect of prices on the optimal input quantities.
A cost minimizing producer would choose the following input quantities:
 !αj  α1
y Y α i wj
xi (w, y) =   (2.87)
A j6=i αj wi

For our three-input Cobb-Douglas production function, we get following conditional input demand
functions
  1
!αlab +αmat  αlab  αmat αcap +αlab +αmat
y αcap wlab wmat
xcap (w, y) =   (2.88)
A wcap αlab αmat
!αcap  1
αcap +αmat  αmat ! αcap +αlab +αmat
y wcap αlab wmat
xlab (w, y) = (2.89)
A αcap wlab αmat

4
This generally confirms the results of the linear production function for the relationships between capital and
labor and the relationship between capital and materials. However, in contrast to the linear production function,
the results obtained by the Cobb-Douglas functional form indicate that most firms should substitute materials
for labor (rather than the other way round).

90
2 Primal Approach: Production Function

!αcap  1
αlab  αcap +αlab ! αcap +αlab +αmat
y wcap wlab αmat
xmat (w, y) = (2.90)
A αcap αlab wmat

We can use these formulas to calculate the cost-minimizing input quantities based on the observed
input prices (w) and the predicted output quantities (f (x)). Alternatively, we could calculate
the cost-minimizing input quantities based on the observed input prices (w) and the observed
output quantities (y). However, in the latter case, the predicted output quantities based on the
cost-minimizing input quantities would differ from the predicted output quantities based on the
observed input quantities (i.e. y = f (x(w, y)) 6= f (x)) so that a comparison of the cost-minimizing
input quantities (x(w, y)) with the observed input quantities (x) would be less useful. As the
coefficients of the Cobb-Douglas function repeatedly occur in the formulas for calculating the
cost-minimizing input quantities, it is convenient to define short-cuts for them:

> A <- exp( coef( prodCD )[ "(Intercept)" ] )


> aCap <- coef( prodCD )[ "log(qCap)" ]
> aLab <- coef( prodCD )[ "log(qLab)" ]
> aMat <- coef( prodCD )[ "log(qMat)" ]

Now, we can calculate the cost-minimizing input quantities:

> dat$qCapCD <- with( dat,


+ ( ( qOutCD / A ) * ( aCap / pCap )^( aLab + aMat )
+ * ( pLab / aLab )^aLab * ( pMat / aMat )^aMat
+ )^(1/( aCap + aLab + aMat ) ) )
> dat$qLabCD <- with( dat,
+ ( ( qOutCD / A ) * ( pCap / aCap )^aCap
+ * ( aLab / pLab )^( aCap + aMat ) * ( pMat / aMat )^aMat
+ )^(1/( aCap + aLab + aMat ) ) )
> dat$qMatCD <- with( dat,
+ ( ( qOutCD / A ) * ( pCap / aCap )^aCap
+ * ( pLab / aLab )^aLab * ( aMat / pMat )^( aCap + aLab )
+ )^(1/( aCap + aLab + aMat ) ) )

Before we continue, we will check whether it is indeed possible to produce the predicted output
with the calculated cost-minimizing input quantities:

> dat$qOutTest <- with( dat,


+ A * qCapCD^aCap * qLabCD^aLab * qMatCD^aMat )
> all.equal( dat$qOutCD, dat$qOutTest )

[1] TRUE

Given that the output quantities predicted from the cost-minimizing input quantities are all equal
to the output quantities predicted from the observed input quantities, we can be pretty sure that

91
2 Primal Approach: Production Function

our calculations are correct. Now, we can use scatter plots to compare the cost-minimizing input
quantities with the observed input quantities:

> compPlot( dat$qCapCD, dat$qCap )


> compPlot( dat$qLabCD, dat$qLab )
> compPlot( dat$qMatCD, dat$qMat )
> compPlot( dat$qCapCD, dat$qCap, log = "xy" )
> compPlot( dat$qLabCD, dat$qLab, log = "xy" )
> compPlot( dat$qMatCD, dat$qMat, log = "xy" )
6e+05




1000000 ●

100000
4e+05



● ●


qCap

qLab

qMat

600000

● ● ●

60000
●● ● ● ●
● ● ●
● ● ●● ● ●●
2e+05

● ●
● ● ●
●●● ● ● ● ● ●●
● ● ●● ● ●●● ● ●
● ●● ●
●● ● ● ● ●●● ● ●


●●●● ● ● ● ●●
● ● ● ●●●●● ●
● ● ●●● ●●
200000

●●●●●

● ● ● ●●●● ●●●
●●●●● ● ●●●●

20000
● ● ● ●


●●●


●●●
●● ●


●●●
● ●
● ● ●

● ●●●●


●●

●● ●●
● ●
● ● ●● ●
●●
●●




●●
●●●●
● ●
●●●
●●








●●

●●





● ●●
●●●
●●


●●●●●●●


●●
●●●● ● ●● ●●
●●● ●●●

●● ●●
●●


●●●

●●●
●●● ●● ● ●
●●●
0e+00



●● ● ●● ●


●●


● ● ●



●●

●●



●● ● ●
●●
●●●



●●
●●


●●●
● ●
●●● ● ●●●●
● ●●●

0e+00 2e+05 4e+05 6e+05 200000 600000 1000000 20000 60000 100000

qCapCD qLabCD qMatCD


5e+05

● ● ●

● ●
● ●


●●● ● ● ●

●● ● ● ● ●

●● ● ● ●●
5e+05


5e+04
● ● ● ● ● ●●
● ●● ●● ●
● ● ●
1e+05

●●● ●
●● ●●
●● ●●●●●
●●
● ● ● ● ●●●

● ●●● ● ●
● ● ●●● ● ●●
●● ●●
● ●●●●● ● ●
● ●● ●
●●●● ● ●● ●
● ●●●● ●
● ● ● ● ● ●● ●●● ● ● ● ●●●● ●
qCap


●● ●●●●●●●● ● ●
qLab

qMat

●●
●●● ●●●●● ● ● ●
● ●●
●● ● ● ●●●
●●
● ●●●●
● ● ● ● ●
●● ● ●● ● ●● ●
●●
2e+05

●● ●
● ● ● ● ●●
2e+04

●● ● ●●
● ●●
●● ● ●● ● ●


●●●●
● ●●●●● ●

● ●● ●
●● ● ● ●
● ● ●● ●●●●●
●●●


●●●
● ●● ●● ●
●● ● ●

2e+04

● ●
● ● ● ● ● ●● ● ●
●● ●●● ● ● ●●●● ●● ●●● ●
●●● ● ●● ●●
● ● ●●●●● ● ●
● ●●● ●
●● ●●●● ● ●●
● ●● ●● ●● ● ●
●● ● ●

● ●● ● ● ●●●●● ●●● ●● ●


● ● ● ●● ● ●● ● ●
●●
● ● ● ● ●
●● ●● ● ● ●●
● ● ●● ● ● ● ●●● ●
5e+03


5e+04

5e+03

● ●●●

5e+03 2e+04 1e+05 5e+05 5e+04 2e+05 5e+05 5e+03 2e+04 5e+04

qCapCD qLabCD qMatCD

Figure 2.21: Optimal and observed input quantities

The resulting graphs are shown in figure 2.21. As we already found out in section 2.4.14, many
firms could reduce their costs by substituting materials for capital.
We can also evaluate the potential for cost reductions by comparing the observed costs with
the costs when using the cost-minimizing input quantities:

> dat$costProdCD <- with( dat,


+ pCap * qCapCD + pLab * qLabCD + pMat * qMatCD )
> mean( dat$costProdCD / dat$cost )

92
2 Primal Approach: Production Function

[1] 0.9308039

Our model predicts that the firms could reduce their costs on average by 7% by using cost-
minimizing input quantities. The variation of the firms’ cost reduction potentials are shown by
a histogram:

> hist( dat$costProdCD / dat$cost )

25
Frequency

15
0 5

0.75 0.80 0.85 0.90 0.95 1.00

costProdCD / cost

Figure 2.22: Minimum total costs as share of actual total costs

The resulting graph is shown in figure 2.22. While many firms have a rather small potential for
reducing costs by reallocating input quantities, there are some firms that could save up to 25%
of their total costs by using the optimal combination of input quantities.
We can also compare the observed input quantities with the cost-minimizing input quantities
and the observed costs with the minimum costs for each single observation (e.g. when consulting
individual firms in the sample):

> round( subset( dat, , c("qCap", "qCapCD", "qLab", "qLabCD", "qMat", "qMatCD",
+ "cost", "costProdCD") ) )[1:5,]

qCap qCapCD qLab qLabCD qMat qMatCD cost costProdCD


1 84050 33720 360066 405349 34087 38038 846329 790968
2 39663 18431 249769 334442 40819 36365 580545 545777
3 37051 14257 140286 135701 24219 32176 306040 281401
4 21222 13300 83427 69713 18893 25890 199634 191709
5 44675 28400 89223 108761 14424 13107 226578 221302

2.4.16 Derived input demand elasticities


We can measure the effect of the input prices and the output quantity on the cost-minimizing
input quantities by calculating the conditional price elasticities based on the partial derivatives
of the conditional input demand functions (2.87) with respect to the input prices and the output

93
2 Primal Approach: Production Function

quantity. In case of two inputs, we can calculate the demand elasticities of the first input by:
1
y α 1 w2 α2 α
  
x1 (w, y) = (2.91)
A α 2 w1
∂x1 (w, y) w1
11 (w, y) = (2.92)
∂w1 x1 (w, y)
α2  1 −1 α2 −1 
1 y α 1 w2 y α 1 w2 α 1 w2 w1
   
α
= α2 − (2.93)
α A α 2 w1 A α 2 w1 α2 w12 x1
α2  1 −1 α2 −1
1 y α 1 w2 y α1 w2 α 1 w2 α 2
  
α
=− (2.94)
α A α 2 w1 A α2 w1 α 2 w1 x 1
α2  1 −1  α2
1 y α 1 w2 y α1 w2 α2
  
α
=− (2.95)
α A α 2 w1 A α2 w1 x1
1
1 y α 1 w2 α2 α α 2
  
=− (2.96)
α A α 2 w1 x1
1 α2 α2 α1 − α α1
= − x1 =− = = −1 (2.97)
α x1 α α α
∂x1 (w, y) w2
12 (w, y) = (2.98)
∂w2 x1 (w, y)
α2  1 −1 α2 −1
1 y α 1 w2 y α 1 w2 α 1 1 w2
  
α
= α2 (2.99)
α A α 2 w1 A α 2 w1 α 2 w1 x 1
α2  1 −1 α2 −1
1 y α 1 w2 y α 1 w2 α 1 w2 α 2
  
α
= (2.100)
α A α 2 w1 A α 2 w1 α 2 w1 x 1
α2  1 −1  α2
1 y α 1 w2 y α 1 w2 α2
  
α
= (2.101)
α A α 2 w1 A α 2 w1 x1
1
1 y α 1 w2 α2 α2
  
α
= (2.102)
α A α 2 w1 x1
1 α2 α2
= x1 = (2.103)
α x1 α
∂x1 (w, y) y
1y (w, y) = (2.104)
∂y x1 (w, y)
α2  1 −1  α2
1 y α 1 w2 1 α 1 w2 y
  
α
= (2.105)
α A α 2 w1 A α 2 w1 x1
α2  1 −1  α2
1 y α 1 w2 y α 1 w2 1
  
α
= (2.106)
α A α 2 w1 A α 2 w1 x1
α2  1
1 y α 1 w2 1
 
α
= (2.107)
α A α 2 w1 x1
1 1 1
= x1 = (2.108)
α x1 α

and analogously the demand elasticities of the second input:


α1  1
y α 2 w1
 
α
x2 (w, y) = (2.109)
A α 1 w2

94
2 Primal Approach: Production Function

∂x2 (w, y) w2 α1 α2 − α α2
22 (w, y) = =− = = −1 (2.110)
∂w2 x2 (w, y) α α α
∂x2 (w, y) w1 α1
21 (w, y) = = (2.111)
∂w1 x2 (w, y) α
∂x2 (w, y) y 1
2y (w, y) = = . (2.112)
∂y x2 (w, y) α

One can similarly derive the input demand elasticities for the general case of N inputs:

∂xi (w, y) wj αj
ij (w, y) = = − δij (2.113)
∂wj xi (w, y) α
∂xi (w, y) y 1
iy (w, y) = = , (2.114)
∂y xi (w, y) α

where δij is (again) Kronecker’s delta (2.82). We have calculated all these elasticities based on the
estimated coefficients of the Cobb-Douglas production function; these elasticities are presented in
table 2.1. If the price of capital increases by one percent, the cost-minimizing firm will decrease
the use of capital by 0.89% and increase the use of labor and materials by 0.11% each. If the
price of labor increases by one percent, the cost-minimizing firm will decrease the use of labor
by 0.54% and increase the use of capital and materials by 0.46% each. If the price of materials
increases by one percent, the cost-minimizing firm will decrease the use of materials by 0.57%
and increase the use of capital and labor by 0.43% each. If the cost-minimizing firm increases
the output quantity by one percent, (s)he will increase all input quantities by 0.68%.

Table 2.1: Conditional demand elasticities derived from Cobb-Douglas production function
wcap wlab wmat y
xcap -0.89 0.46 0.43 0.68
xlab 0.11 -0.54 0.43 0.68
xmat 0.11 0.46 -0.57 0.68

2.5 Quadratic production function


2.5.1 Specification
A quadratic production function is defined as
X 1 XX
y = β0 + βi xi + βij xi xj , (2.115)
i
2 i j

where the restriction βij = βji is required to identify all coefficients, because xi xj and xj xi are
the same regressors. Based on this general form, we can derive the specification of a quadratic

95
2 Primal Approach: Production Function

production function with three inputs:

1 1 1
y = β0 +β1 x1 +β2 x2 +β3 x3 + β11 x21 + β22 x22 + β33 x23 +β12 x1 x2 +β13 x1 x3 +β23 x2 x3 (2.116)
2 2 2

2.5.2 Estimation
We can estimate this quadratic production function with the command

> prodQuad <- lm( qOut ~ qCap + qLab + qMat


+ + I( 0.5 * qCap^2 ) + I( 0.5 * qLab^2 ) + I( 0.5 * qMat^2 )
+ + I( qCap * qLab ) + I( qCap * qMat ) + I( qLab * qMat ),
+ data = dat )
> summary( prodQuad )

Call:
lm(formula = qOut ~ qCap + qLab + qMat + I(0.5 * qCap^2) + I(0.5 *
qLab^2) + I(0.5 * qMat^2) + I(qCap * qLab) + I(qCap * qMat) +
I(qLab * qMat), data = dat)

Residuals:
Min 1Q Median 3Q Max
-3928802 -695518 -186123 545509 4474143

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.911e+05 3.615e+05 -0.805 0.422072
qCap 5.270e+00 4.403e+00 1.197 0.233532
qLab 6.077e+00 3.185e+00 1.908 0.058581 .
qMat 1.430e+01 2.406e+01 0.595 0.553168
I(0.5 * qCap^2) 5.032e-05 3.699e-05 1.360 0.176039
I(0.5 * qLab^2) -3.084e-05 2.081e-05 -1.482 0.140671
I(0.5 * qMat^2) -1.896e-03 8.951e-04 -2.118 0.036106 *
I(qCap * qLab) -3.097e-05 1.498e-05 -2.067 0.040763 *
I(qCap * qMat) -4.160e-05 1.474e-04 -0.282 0.778206
I(qLab * qMat) 4.011e-04 1.112e-04 3.608 0.000439 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1344000 on 130 degrees of freedom


Multiple R-squared: 0.8449, Adjusted R-squared: 0.8342
F-statistic: 78.68 on 9 and 130 DF, p-value: < 2.2e-16

96
2 Primal Approach: Production Function

Although many of the estimated coefficients are statistically not significantly different from zero,
the statistical significance of some quadratic and interaction terms indicates that the linear pro-
duction function, which neither has quadratic terms not interaction terms, is not suitable to model
the true production technology. As the linear production function is “nested” in the quadratic
production function, we can apply a “Wald test” or a likelihood ratio test to check whether the
linear production function is rejected in favor of the quadratic production function. These tests
can be done by the functions waldtest and lrtest (package lmtest):

> library( "lmtest" )


> waldtest( prodLin, prodQuad )

Wald test

Model 1: qOut ~ qCap + qLab + qMat


Model 2: qOut ~ qCap + qLab + qMat + I(0.5 * qCap^2) + I(0.5 * qLab^2) +
I(0.5 * qMat^2) + I(qCap * qLab) + I(qCap * qMat) + I(qLab *
qMat)
Res.Df Df F Pr(>F)
1 136
2 130 6 8.1133 1.869e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> lrtest( prodLin, prodQuad )

Likelihood ratio test

Model 1: qOut ~ qCap + qLab + qMat


Model 2: qOut ~ qCap + qLab + qMat + I(0.5 * qCap^2) + I(0.5 * qLab^2) +
I(0.5 * qMat^2) + I(qCap * qLab) + I(qCap * qMat) + I(qLab *
qMat)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -2191.3
2 11 -2169.1 6 44.529 5.806e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

These tests show that the linear production function is clearly inferior to the quadratic production
function and hence, should not be used for analyzing the production technology of the firms in
this data set.

97
2 Primal Approach: Production Function

2.5.3 Properties
We cannot see from the estimated coefficients whether the monotonicity condition is fulfilled.
Unless all coefficients are non-negative (but not necessarily the intercept), quadratic production
functions cannot be globally monotone, because there will always be a set of input quantities
that result in negative marginal products. We will check the monotonicity condition at each
observation in section 2.5.5.
Our estimated quadratic production function does not fulfill the weak essentiality assumption,
because the intercept is different from zero (but its deviation from zero is not statistically signif-
icant). The production technology described by a quadratic production function with more than
one (relevant) input never shows strict essentiality.
The input requirement sets derived from quadratic production functions are always closed and
non-empty.
The quadratic production function always returns finite, real, and single values but the non-
negativity assumption is only fulfilled, if all coefficients (including the intercept), are non-negative.
All quadratic production functions are continuous and twice-continuously differentiable.

2.5.4 Predicted output quantities


We can obtain the predicted output quantities with the fitted method:

> dat$qOutQuad <- fitted( prodQuad )

We can evaluate the “fit” of the model by comparing the observed with the fitted output
quantities:

> compPlot( dat$qOut, dat$qOutQuad )


> compPlot( dat$qOut, dat$qOutQuad, log = "xy" )

●●
● ●
2.0e+07

1e+07


● ●●●

●● ●●
● ●●
● ●●
● ● ● ● ●●

● ● ●●● ●
5e+05 2e+06

● ● ●● ●
● ● ●
●●●
● ●● ●● ●●●
●●
● ● ●●●● ●● ●●
fitted

fitted

●●

●● ●●● ●●
1.0e+07

● ●
● ● ●●●● ● ●
●●●● ●●
●● ● ●● ●●●● ● ●




●●● ●
● ●●● ●
● ●● ● ●●●
● ● ●● ● ● ●● ●
●● ● ● ● ● ●
● ●● ● ●
●● ● ●

●●●● ●
●●●● ● ●●
●● ●●●● ●


● ●
● ●●●
0.0e+00

●●●

●●● ●
1e+05


●●

●●●● ●●
●●
●●●


●●

●●

●●●
●●●●
●●●●



●●
●●

●●

0.0e+00 1.0e+07 2.0e+07 1e+05 5e+05 5e+06

observed observed

Figure 2.23: Quadratic production function: fit of the model

98
2 Primal Approach: Production Function

The resulting graphs are shown in figure 2.23. While the graph in the left panel uses a linear
scale for the axes, the graph in the right panel uses a logarithmic scale for both axes. Hence, the
deviations from the 45°-line illustrate the absolute deviations in the left panel and the relative
deviations in the right panel. The fit of the model looks okay in the scatter plot on the left-hand
side, but if we use a logarithmic scale on both axes (as in the graph on the right-hand side), we
can see that the output quantity is over-estimated if the the observed output quantity is small.
As negative output quantities would render the corresponding output elasticities useless, we
have carefully check the sign of the predicted output quantities:

> table( dat$qOutQuad >= 0 )

TRUE
140

Fortunately, not a single predicted output quantity is negative.

2.5.5 Marginal products


In case of a quadratic production function, the marginal products are
X
M Pi = β i + βij xj (2.117)
j

We can simplify the code for computing the marginal products and some other figures by using
short names for the coefficients:

> b1 <- coef( prodQuad )[ "qCap" ]


> b2 <- coef( prodQuad )[ "qLab" ]
> b3 <- coef( prodQuad )[ "qMat" ]
> b11 <- coef( prodQuad )[ "I(0.5 * qCap^2)" ]
> b22 <- coef( prodQuad )[ "I(0.5 * qLab^2)" ]
> b33 <- coef( prodQuad )[ "I(0.5 * qMat^2)" ]
> b12 <- b21 <- coef( prodQuad )[ "I(qCap * qLab)" ]
> b13 <- b31 <- coef( prodQuad )[ "I(qCap * qMat)" ]
> b23 <- b32 <- coef( prodQuad )[ "I(qLab * qMat)" ]

Now, we can use the following commands to calculate the marginal products in R”:

> dat$mpCapQuad <- with( dat,


+ b1 + b11 * qCap + b12 * qLab + b13 * qMat )
> dat$mpLabQuad <- with( dat,
+ b2 + b21 * qCap + b22 * qLab + b23 * qMat )
> dat$mpMatQuad <- with( dat,
+ b3 + b31 * qCap + b32 * qLab + b33 * qMat )

99
2 Primal Approach: Production Function

We can visualize (the variation of) these marginal products with histograms:

> hist( dat$mpCapQuad, 15 )


> hist( dat$mpLabQuad, 15 )
> hist( dat$mpMatQuad, 15 )
40

40
30
30

30
Frequency

Frequency

Frequency
20
20

20
10
10

10
0

0
−20 −10 0 10 0 5 10 15 20 25 30 −50 0 50 100 200

MP Cap MP Lab MP Mat

Figure 2.24: Quadratic production function: marginal products

The resulting graphs are shown in figure 2.24. If the firms increase capital input by one unit,
the output of most firms will increase by around 2 units. If the firms increase labor input by
one unit, the output of most firms will increase by around 5 units. If the firms increase material
input by one unit, the output of most firms will increase by around 50 units. These graphs also
show that the monotonicity condition is not fulfilled for all observations:

> table( dat$mpCapQuad >= 0 )

FALSE TRUE
28 112

> table( dat$mpLabQuad >= 0 )

FALSE TRUE
5 135

> table( dat$mpMatQuad >= 0 )

FALSE TRUE
8 132

> dat$monoQuad <- with( dat, mpCapQuad >= 0 & mpLabQuad >= 0 & mpMatQuad >= 0 )
> table( dat$monoQuad )

FALSE TRUE
39 101

100
2 Primal Approach: Production Function

28 firms have a negative marginal product of capital, 5 firms have a negative marginal product
of labor, and 8 firms have a negative marginal product of materials. In total the monotonicity
condition is not fulfilled at 39 out of 140 observations. Although the monotonicity conditions are
still fulfilled for the largest part of firms in our data set, these frequent violations could indicate
a possible model misspecification.

2.5.6 Output elasticities


We can obtain output elasticities based on the quadratic production function by the standard
formula for output elasticities:
xi
i = M Pi (2.118)
y
As explained in section 2.4.11.1, we will use the predicted output quantities rather than the
observed output quantities. We can calculate the output elasticities with:

> dat$eCapQuad <- with( dat, mpCapQuad * qCap / qOutQuad )


> dat$eLabQuad <- with( dat, mpLabQuad * qLab / qOutQuad )
> dat$eMatQuad <- with( dat, mpMatQuad * qMat / qOutQuad )

We can visualize (the variation of) these output elasticities with histograms:

> hist( dat$eCapQuad, 15 )


> hist( dat$eLabQuad, 15 )
> hist( dat$eMatQuad, 15 )
60
50

50
40

30

40
Frequency

Frequency

Frequency
30

20

30
20

20
10
10

10
0

−0.4 0.0 0.4 0.8 −0.5 0.0 0.5 1.0 1.5 2.0 2.5 −1.5 −0.5 0.5 1.0 1.5

eCap eLab eMat

Figure 2.25: Quadratic production function: output elasticities

The resulting graphs are shown in figure 2.25. If the firms increase capital input by one percent,
the output of most firms will increase by around 0.05 percent. If the firms increase labor input
by one percent, the output of most firms will increase by around 0.7 percent. If the firms increase
material input by one percent, the output of most firms will increase by around 0.5 percent.

101
2 Primal Approach: Production Function

2.5.7 Elasticity of scale


The elasticity of scale can—as always—be calculated as the sum of all output elasticities.
> dat$eScaleQuad <- dat$eCapQuad + dat$eLabQuad +
+ dat$eMatQuad
The (variation of the) elasticities of scale can be visualized with a histogram.
> hist( dat$eScaleQuad, 30 )
> hist( dat$eScaleQuad[ dat$monoQuad ], 30 )

12
25
Frequency

Frequency

0 2 4 6 8
15
0 5

0.8 1.0 1.2 1.4 1.6 1.1 1.3 1.5 1.7

eScaleQuad eScaleQuad[ monoQuad ]

Figure 2.26: Quadratic production function: elasticities of scale

The resulting graphs are shown in figure 2.26. Only a very few firms (4 out of 140) experience
decreasing returns to scale. If we only consider the observations where all monotonicity conditions
are fulfilled, our results suggest that all firms have increasing returns to scale. Most firms have an
elasticity of scale around 1.3. Hence, if these firms increase all input quantities by one percent,
the output of most firms will increase by around 1.3 percent. These elasticities of scale are much
more realistic than the elasticities of scale based on the linear production function.
Information on the optimal firm size can be obtained by analyzing the interrelationship between
firm size and the elasticity of scale, where we can either use the observed output or the quantity
index of the inputs as proxies of the firm size:
> plot( dat$qOut, dat$eScaleQuad, log = "x" )
> abline( 1, 0 )
> plot( dat$X, dat$eScaleQuad, log = "x" )
> abline( 1, 0 )
> plot( dat$qOut[ dat$monoQuad ], dat$eScaleQuad[ dat$monoQuad ], log = "x" )
> plot( dat$X[ dat$monoQuad ], dat$eScaleQuad[ dat$monoQuad ], log = "x" )
The resulting graphs are shown in figure 2.27. They all indicate that there are increasing returns
to scale for all firm sizes in the sample. Hence, all firms in the sample would gain from increasing
their size and the optimal firm size seems to be larger than the largest firm in the sample.

102
2 Primal Approach: Production Function

● ●

0.8 1.0 1.2 1.4 1.6

0.8 1.0 1.2 1.4 1.6


● ● ● ● ● ●
● ●●●
● ●●●●● ●● ● ● ● ●●
● ● ●● ● ● ●
● ●● ● ●● ● ●●● ● ● ● ●
● ●
●●●● ● ● ●● ●
● ●● ● ● ● ●
eScaleQuad

eScaleQuad
● ●● ● ● ●●●● ●
● ●●● ●●●● ● ● ●● ● ●● ●
●●●●●● ● ● ●
● ● ●
●● ● ●
●●● ●● ● ●
● ●● ●●● ● ●
● ● ● ●● ●●● ●● ●
● ● ● ● ● ● ● ●● ●●●
● ●● ● ●●
●● ● ● ● ● ● ● ●● ● ●● ●●●
● ● ● ● ● ● ● ●


● ●● ● ●● ●●●●● ●●● ● ●● ●
●●● ● ● ● ● ●
●●● ● ●●● ●
● ● ●●● ● ● ●● ● ● ● ●●● ● ●

●● ● ● ● ● ●● ● ● ●
●● ● ●
● ●● ● ● ● ● ● ● ●
● ● ● ●●
● ● ● ●
● ●
●● ● ●
● ●

● ●

1e+05 5e+05 2e+06 1e+07 0.5 1.0 2.0 5.0

observed output quantity index of inputs


1.7

1.7
● ●
eScaleQuad[ monoQuad ]

eScaleQuad[ monoQuad ]
● ●
● ● ●
● ●●
1.5

1.5
● ● ●● ● ●
●●● ●
● ● ● ●
● ● ● ● ● ● ●● ● ●
● ●● ● ●● ● ●● ●●

● ●● ● ● ●● ●● ●
●● ● ● ● ●● ●● ● ●
●● ●
●● ●
● ● ●
● ● ●● ● ● ●● ● ● ● ● ● ●● ●●●
1.3

1.3
● ● ● ●
● ● ● ● ● ●
●● ●● ●●● ●●●● ● ● ●● ●●● ● ●
●●

● ● ● ● ●
● ● ●● ● ●


● ● ● ● ●● ● ●


●●● ● ● ●
● ●
● ● ● ● ●● ●● ● ● ● ●
● ● ● ● ● ●
● ● ● ●●
● ● ● ● ●
● ● ● ● ● ●
1.1

1.1
● ●● ● ●●

1e+05 5e+05 2e+06 5e+06 0.5 1.0 2.0

observed output quantity index of inputs

Figure 2.27: Quadratic production function: elasticities of scale at different firm sizes

2.5.8 Marginal rates of technical substitution


We can calculate the marginal rates of technical substitution (MRTS) based on our estimated
quadratic production function by following commands:

> dat$mrtsCapLabQuad <- with( dat, - mpLabQuad / mpCapQuad )


> dat$mrtsLabCapQuad <- with( dat, - mpCapQuad / mpLabQuad )
> dat$mrtsCapMatQuad <- with( dat, - mpMatQuad / mpCapQuad )
> dat$mrtsMatCapQuad <- with( dat, - mpCapQuad / mpMatQuad )
> dat$mrtsLabMatQuad <- with( dat, - mpMatQuad / mpLabQuad )
> dat$mrtsMatLabQuad <- with( dat, - mpLabQuad / mpMatQuad )

As the marginal rates of technical substitution (MRTS) are meaningless if the monotonicity
condition is not fulfilled, we visualize (the variation of) these MRTSs only for the observations,
where the monotonicity condition is fulfilled:

> hist( dat$mrtsCapLabQuad[ dat$monoQuad ], 30 )


> hist( dat$mrtsLabCapQuad[ dat$monoQuad ], 30 )
> hist( dat$mrtsCapMatQuad[ dat$monoQuad ], 30 )
> hist( dat$mrtsMatCapQuad[ dat$monoQuad ], 30 )
> hist( dat$mrtsLabMatQuad[ dat$monoQuad ], 30 )
> hist( dat$mrtsMatLabQuad[ dat$monoQuad ], 30 )

103
2 Primal Approach: Production Function

50

80
40

40

60
30
Frequency

Frequency

Frequency
30

40
20

20

20
10

10
0

0
−60 −40 −20 0 −15 −10 −5 0 −1000 −600 −200 0

mrtsCapLabQuad mrtsLabCapQuad mrtsCapMatQuad


80

15

30
60
Frequency

Frequency

Frequency
10

20
40

10
5
20
0

0
−6 −5 −4 −3 −2 −1 0 −60 −40 −20 0 −3 −2 −1 0

mrtsMatCapQuad mrtsLabMatQuad mrtsMatLabQuad

Figure 2.28: Quadratic production function: marginal rates of technical substitution (RMRTS)

The resulting graphs are shown in figure 2.28. As some outliers hide the variation of the majority
of the RMRTS, we use function colMedians (package miscTools) to show the median values of
the MRTS:
> colMedians( subset( dat, monoQuad,
+ c( "mrtsCapLabQuad", "mrtsLabCapQuad", "mrtsCapMatQuad",
+ "mrtsMatCapQuad", "mrtsLabMatQuad", "mrtsMatLabQuad" ) ) )

mrtsCapLabQuad mrtsLabCapQuad mrtsCapMatQuad mrtsMatCapQuad mrtsLabMatQuad


-2.23505371 -0.44741654 -14.19802214 -0.07043235 -7.86423950
mrtsMatLabQuad
-0.12715788

Given that the median marginal rate of technical substitution between capital and labor is -2.24,
a typical firm that reduces the use of labor by one unit, has to use around 2.24 additional units
of capital in order to produce the same amount of output as before. Alternatively, the typical
firm can replace one unit of labor by using 0.13 additional units of materials.

2.5.9 Relative marginal rates of technical substitution


As we do not have a practical interpretation of the units of measurement of the input quantities,
the relative marginal rates of technical substitution (RMRTS) are practically more meaningful

104
2 Primal Approach: Production Function

than the MRTS. The following commands calculate the RMRTS:

> dat$rmrtsCapLabQuad <- with( dat, - eLabQuad / eCapQuad )


> dat$rmrtsLabCapQuad <- with( dat, - eCapQuad / eLabQuad )
> dat$rmrtsCapMatQuad <- with( dat, - eMatQuad / eCapQuad )
> dat$rmrtsMatCapQuad <- with( dat, - eCapQuad / eMatQuad )
> dat$rmrtsLabMatQuad <- with( dat, - eMatQuad / eLabQuad )
> dat$rmrtsMatLabQuad <- with( dat, - eLabQuad / eMatQuad )

As the (relative) marginal rates of technical substitution are meaningless if the monotonicity
condition is not fulfilled, we visualize (the variation of) these RMRTSs only for the observations,
where the monotonicity condition is fulfilled:

> hist( dat$rmrtsCapLabQuad[ dat$monoQuad ], 30 )


> hist( dat$rmrtsLabCapQuad[ dat$monoQuad ], 30 )
> hist( dat$rmrtsCapMatQuad[ dat$monoQuad ], 30 )
> hist( dat$rmrtsMatCapQuad[ dat$monoQuad ], 30 )
> hist( dat$rmrtsLabMatQuad[ dat$monoQuad ], 30 )
> hist( dat$rmrtsMatLabQuad[ dat$monoQuad ], 30 )
80
80

80
60
60

60
Frequency

Frequency

Frequency
40
40

40
20
20

20
0

−800 −600 −400 −200 0 −20 −15 −10 −5 0 −700 −500 −300 −100

rmrtsCapLabQuad rmrtsLabCapQuad rmrtsCapMatQuad


35
20

30
80

25
15
60
Frequency

Frequency

Frequency

20
10

15
40

10
5
20

5
0

−40 −30 −20 −10 0 −6 −4 −2 0 −15 −10 −5 0

rmrtsMatCapQuad rmrtsLabMatQuad rmrtsMatLabQuad

Figure 2.29: Quadratic production function: relative marginal rates of technical substitution
(RMRTS)

105
2 Primal Approach: Production Function

The resulting graphs are shown in figure 2.29. As some outliers hide the variation of the majority
of the RMRTS, we use function colMedians (package miscTools) to show the median values of
the RMRTS:

> colMedians( subset( dat, monoQuad,


+ c( "rmrtsCapLabQuad", "rmrtsLabCapQuad", "rmrtsCapMatQuad",
+ "rmrtsMatCapQuad", "rmrtsLabMatQuad", "rmrtsMatLabQuad" ) ) )

rmrtsCapLabQuad rmrtsLabCapQuad rmrtsCapMatQuad rmrtsMatCapQuad rmrtsLabMatQuad


-5.5741780 -0.1793986 -4.2567577 -0.2349206 -0.7745132
rmrtsMatLabQuad
-1.2911336

Given that the median relative marginal rate of technical substitution between capital and labor
is -5.57, a typical firm that reduces the use of labor by one percent, has to use around 5.57 percent
more capital in order to produce the same amount of output as before. Alternatively, the typical
firm can replace one percent of labor by using 1.29 percent more materials.

2.5.10 Quasiconcavity
In order to check whether the estimated quadratic production function is quasiconcave, we need to
construct the bordered Hessian matrix. As the first derivatives of the quadratic production func-
tion differ between observations, also the bordered Hessian matrix differs between observations.
As a starting point, we construct the bordered Hessian matrix just for the first observation:

> bhm <- matrix( 0, nrow = 4, ncol = 4 )


> bhm[ 1, 2 ] <- bhm[ 2, 1 ] <- dat$mpCapQuad[ 1 ]
> bhm[ 1, 3 ] <- bhm[ 3, 1 ] <- dat$mpLabQuad[ 1 ]
> bhm[ 1, 4 ] <- bhm[ 4, 1 ] <- dat$mpMatQuad[ 1 ]
> bhm[ 2, 2 ] <- b11
> bhm[ 3, 3 ] <- b22
> bhm[ 4, 4 ] <- b33
> bhm[ 2, 3 ] <- bhm[ 3, 2 ] <- b12
> bhm[ 2, 4 ] <- bhm[ 4, 2 ] <- b13
> bhm[ 3, 4 ] <- bhm[ 4, 3 ] <- b23
> print(bhm)

[,1] [,2] [,3] [,4]


[1,] 0.000000 -3.068305e+00 6.042883e+00 9.063140e+01
[2,] -3.068305 5.032000e-05 -3.096510e-05 -4.160252e-05
[3,] 6.042883 -3.096510e-05 -3.084032e-05 4.011378e-04
[4,] 90.631400 -4.160252e-05 4.011378e-04 -1.895501e-03

106
2 Primal Approach: Production Function

Based on this bordered Hessian matrix, we can check whether the estimated quadratic produc-
tion function is quasiconcave at the first observation:

> det( bhm[ 1:2, 1:2 ] )

[1] -9.414493

> det( bhm[ 1:3, 1:3 ] )

[1] -0.0003988879

> det( bhm )

[1] 3.541548e-05

Quasiconcavity requires that the first determinant calculated above (i.e. the determinant of the
upper-left 2 × 2 submatrix) is negative and the following determinants alternate in sign. As this
condition is not fulfilled for the second and third determinant, we can conclude that the estimated
quadratic production function is not quasiconcave at the first observation.
Now, we check whether our estimated quadratic production function is quasiconcave at each
observation by stacking the bordered Hessian matrices of all observation on top of each other,
which results in a three-dimensional array:

> bhmQuad <- array( 0, c( 4, 4, nrow( dat ) ) )


> bhmQuad[ 1, 2, ] <- bhmQuad[ 2, 1, ] <- dat$mpCapQuad
> bhmQuad[ 1, 3, ] <- bhmQuad[ 3, 1, ] <- dat$mpLabQuad
> bhmQuad[ 1, 4, ] <- bhmQuad[ 4, 1, ] <- dat$mpMatQuad
> bhmQuad[ 2, 2, ] <- b11
> bhmQuad[ 3, 3, ] <- b22
> bhmQuad[ 4, 4, ] <- b33
> bhmQuad[ 2, 3, ] <- bhmQuad[ 3, 2, ] <- b12
> bhmQuad[ 2, 4, ] <- bhmQuad[ 4, 2, ] <- b13
> bhmQuad[ 3, 4, ] <- bhmQuad[ 4, 3, ] <- b23
> dat$quasiConcQuad <- apply( bhmQuad[ 1:2, 1:2, ], 3, det ) <= 0 &
+ apply( bhmQuad[ 1:3, 1:3, ], 3, det ) >= 0 &
+ apply( bhmQuad, 3, det ) <= 0
> table( dat$quasiConcQuad )

FALSE
140

Our estimated quadratic production function is quasiconcave at none of the 140 observations,
which implies that the isoquants are convex not at a single observation.
We can check whether the (partial) isoquants are convex if we hold one input fixed and only
vary the other two inputs:

107
2 Primal Approach: Production Function

> bhmQuadCapLab <- bhmQuad[ -4, -4, ]


> dat$quasiConcCapLabQuad <-
+ apply( bhmQuadCapLab[ 1:2, 1:2, ], 3, det ) <= 0 &
+ apply( bhmQuadCapLab, 3, det ) >= 0
> table( dat$quasiConcCapLabQuad )

FALSE TRUE
121 19

> bhmQuadCapMat <- bhmQuad[ -3, -3, ]


> dat$quasiConcCapMatQuad <-
+ apply( bhmQuadCapMat[ 1:2, 1:2, ], 3, det ) <= 0 &
+ apply( bhmQuadCapMat, 3, det ) >= 0
> table( dat$quasiConcCapMatQuad )

FALSE TRUE
114 26

> bhmQuadLabMat <- bhmQuad[ -2, -2, ]


> dat$quasiConcLabMatQuad <-
+ apply( bhmQuadLabMat[ 1:2, 1:2, ], 3, det ) <= 0 &
+ apply( bhmQuadLabMat, 3, det ) >= 0
> table( dat$quasiConcLabMatQuad )

TRUE
140

While the isoquants between labor and materials holding capital constant are convex at all
140 observations, the isoquants between capital and labor holding materials constant and between
capital and materials holding labor constant are non-convex at most of the observations.
The non-convex isoquants between capital and the other two inputs at many observations are
partly caused by a positive second derivative of the estimated quadratic production function with
respect to capital (coefficient βcap,cap > 0), which indicates increasing returns to capital.

2.5.11 Elasticities of substitution


2.5.11.1 Direct elasticities of substitution

We can calculate the direct elasticities of substitution using equation (2.19):

> dat$esdCapLabQuad <- with( dat, - ( mpCapQuad * mpLabQuad *


+ ( qCap * mpCapQuad + qLab * mpLabQuad ) ) /
+ ( qCap * qLab * ( b11 * mpLabQuad^2 -

108
2 Primal Approach: Production Function

+ 2 * b12 * mpCapQuad * mpLabQuad + b22 * mpCapQuad^2 ) ) )


> dat$esdCapMatQuad <- with( dat, - ( mpCapQuad * mpMatQuad *
+ ( qCap * mpCapQuad + qMat * mpMatQuad ) ) /
+ ( qCap * qMat * ( b11 * mpMatQuad^2 -
+ 2 * b13 * mpCapQuad * mpMatQuad + b33* mpCapQuad^2 ) ) )
> dat$esdLabMatQuad <- with( dat, - ( mpLabQuad * mpMatQuad *
+ ( qLab * mpLabQuad + qMat * mpMatQuad ) ) /
+ ( qLab * qMat * ( b22 * mpMatQuad^2
+ - 2 * b23 * mpLabQuad * mpMatQuad + b33 * mpLabQuad^2 ) ) )

As the elasticities of substitution measure changes in the marginal rates of technical substitution
(MRTS) and the MRTS are meaningless if the monotonicity conditions are not fulfilled, also the
elasticities of substitution are meaningless if the monotonicity conditions are not fulfilled. Hence,
we visualize (the variation of) the direct elasticities of substitution only for the observations,
where the monotonicity condition is fulfilled:

> hist( dat$esdCapLabQuad[ dat$monoQuad ], 30 )


> hist( dat$esdCapMatQuad[ dat$monoQuad ], 30 )
> hist( dat$esdLabMatQuad[ dat$monoQuad ], 30 )
80
40

10 12 14
60
30
Frequency

Frequency

Frequency

8
40
20

6
4
20
10

2
0

−8 −6 −4 −2 0 2 4 0 50 150 250 0.0 0.2 0.4 0.6 0.8

esdCapLabQuad esdCapMatQuad esdLabMatQuad

Figure 2.30: Quadratic production function: direct elasticities of substitution

The resulting graphs are shown in figure 2.30. The estimated direct elasticities of substitution
between capital and labor are almost always negative, the estimated direct elasticities of substi-
tution between capital and materials are partly negative and partly positive, and the estimated
direct elasticities of substitution between labor and materials are always positive. As the di-
rect elasticities of substitution assume that only the quantities of the two considered inputs are
varied, it is expected that all direct elasticities of substitution are non-negative. However, the
estimated quadratic production function is not quasiconcave, which implies that the isoquants
are not convex. In case of non-convex isoquants, the elasticities of substitution do not indicate
substitutability between inputs.

109
2 Primal Approach: Production Function

As only the (partial) isoquants between labor and materials holding capital constant are convex
at all observations (see section 2.5.10) and the direct elasticities of substitution between labor and
materials also assume that capital is held constant, we focus on these elasticities of substitution.
For all firms in our sample, the estimated values of the direct elasticities of substitution between
labor and materials lie between the value implied by the Leontief production function (σ = 0) and
the value implied by the Cobb-Douglas production function (σ = 1). Hence, the substitutability
between labor and materials seems to be between very low and moderate. In fact, the direct
elasticity of substitution between labor and materials is for most of the firms around 0.4. Hence,
if the firms keep the capital quantity and the output quantity unchanged and substitute labor
for materials (or vice versa) so that the ratio between the labor quantity and the quantity of
materials increases (decreases) by around 0.4 percent, the MRTS between labor and materials
increases (decreases) by one percent. If the ratio between the materials price and the labor price
increases by one percent, firms that keep the capital input and output quantity unchanged and
minimize their costs will substitute labor for materials so that ratio between the labor quantity
and the quantity of materials increases by around 0.4 percent. Hence, the relative change of the
ratio of the input quantities is considerably smaller than the relative change of the ratio of the
input prices, which indicates a low substitutability between labor and materials.

2.5.11.2 Allen elasticities of substitution

In the following, we calculate the Allen elasticities of substitution.5 In order to check whether
our calculations are correct, we can use equation (2.23) to derive the following conditions:
X
xi M Pi σij = 0 ∀ j (2.119)
i

In order to check this condition, we need to calculate not only (normal) elasticities of substitution
(σij ; i 6= j) but also economically not meaningful “elasticities of self-substitution” (σii ):

> dat$FCapLabQuad <- - apply( bhmQuad[ -2, -3, ], 3, det )


> dat$FCapMatQuad <- apply( bhmQuad[ -2, -4, ], 3, det )
> dat$FLabMatQuad <- - apply( bhmQuad[ -3, -4, ], 3, det )
> dat$FCapCapQuad <- apply( bhmQuad[ -2, -2, ], 3, det )
> dat$FLabLabQuad <- apply( bhmQuad[ -3, -3, ], 3, det )
> dat$FMatMatQuad <- apply( bhmQuad[ -4, -4, ], 3, det )
> dat$bhmDetQuad <- apply( bhmQuad, 3, det )
> dat$numeratorQuad <- with( dat,
+ qCap * mpCapQuad + qLab * mpLabQuad + qMat * mpMatQuad )
> dat$esaCapLabQuad <- with( dat,
5
We do not calculate the Morishima elasticities of substitution for the quadratic production function. The
calculation of the Morishima elasticities of substitution requires only minimal changes of the code for calculating
the Allen elasticities of substitution (compare sections 2.4.11.2 and 2.4.11.3).

110
2 Primal Approach: Production Function

+ numeratorQuad / ( qCap * qLab ) * FCapLabQuad / bhmDetQuad )


> dat$esaCapMatQuad <- with( dat,
+ numeratorQuad / ( qCap * qMat ) * FCapMatQuad / bhmDetQuad )
> dat$esaLabMatQuad <- with( dat,
+ numeratorQuad / ( qLab * qMat ) * FLabMatQuad / bhmDetQuad )
> dat$esaCapCapQuad <- with( dat,
+ numeratorQuad / ( qCap * qCap ) * FCapCapQuad / bhmDetQuad )
> dat$esaLabLabQuad <- with( dat,
+ numeratorQuad / ( qLab * qLab ) * FLabLabQuad / bhmDetQuad )
> dat$esaMatMatQuad <- with( dat,
+ numeratorQuad / ( qMat * qMat ) * FMatMatQuad / bhmDetQuad )
Before we take a look at and interpret the elasticities of substitution, we check whether the
conditions (2.119) are fulfilled:
> range( with( dat, qCap * mpCapQuad * esaCapCapQuad +
+ qLab * mpLabQuad * esaCapLabQuad + qMat * mpMatQuad * esaCapMatQuad ) )

[1] -1.117587e-08 2.533197e-07

> range( with( dat, qCap * mpCapQuad * esaCapLabQuad +


+ qLab * mpLabQuad * esaLabLabQuad + qMat * mpMatQuad * esaLabMatQuad ) )

[1] -5.587935e-09 1.862645e-09

> range( with( dat, qCap * mpCapQuad * esaCapMatQuad +


+ qLab * mpLabQuad * esaLabMatQuad + qMat * mpMatQuad * esaMatMatQuad ) )

[1] -9.313226e-09 3.725290e-09

The extremely small deviations from zero are most likely caused by rounding errors that are
unavoidable on digital computers. This test does not prove that all our calculations are done
correctly but if we had made a mistake, we would have discovered it with a very high probability.
Hence, we can be rather sure that our calculations are correct.
As for the direct elasticities of substitution, we visualize (the variation of) the Allen elasticities
of substitution only for the observations, where the monotonicity condition is fulfilled:
> hist( dat$esaCapLabQuad[ dat$monoQuad ], 30 )
> hist( dat$esaCapMatQuad[ dat$monoQuad ], 30 )
> hist( dat$esaLabMatQuad[ dat$monoQuad ], 30 )
The resulting graphs are shown in figure 2.31. As the Allen elasticities of substitution allow the
other inputs to adjust, a meaningful interpretation requires that not only the partial isoquants of
the two considered inputs are convex but that the production is quasiconcave. As the estimated
quadratic production is not quasiconcave at any observation, we do not interpret the obtained
Allen elasticities of substitution.

111
2 Primal Approach: Production Function

20

25
50

20
40

15
Frequency

Frequency

Frequency

15
30

10

10
20

5
10

5
0

0
−8 −6 −4 −2 0 −2 −1 0 1 2 3 4 0.0 0.5 1.0 1.5 2.0 2.5

esaCapLabQuad esaCapMatQuad esaLabMatQuad

Figure 2.31: Quadratic production function: Allen elasticities of substitution

2.5.11.3 Comparison of direct and Allen elasticities of substitution

In the following, we use scatter plots to compare the estimated direct elasticities of substitution
with the estimated Allen elasticities of substitution:

> compPlot( dat$esdCapLabQuad[ dat$monoQuad ],


+ dat$esaCapLabQuad[ dat$monoQuad ], lim = c( -4, 1 ) )
> compPlot( dat$esdCapMatQuad[ dat$monoQuad ],
+ dat$esaCapMatQuad[ dat$monoQuad ], lim = c( -10, 5) )
> compPlot( dat$esdLabMatQuad[ dat$monoQuad ],
+ dat$esaLabMatQuad[ dat$monoQuad ] )


1

2.5


0

2.0

● ● ●
esaCapLabQuad

esaCapMatQuad

esaLabMatQuad

●●●●
●●●● ● ●

●●
●●●●●● ●●● ● ● ●
●●




●●

● ● ● ●●● ●

0

● ●●●●●●● ●

● ● ● ●● ●
●●●●
●●
●●● ●● ●●

●● ● ●
● ● ●● ●
●● ●
● ● ● ●● ● ● ● ●● ● ● ●●●●● ● ●
−1

● ● ●●●●●●●●●●●● ●●●
● ●● ●● ●● ● ●
1.5

●●● ● ●
● ● ● ●
● ● ●
● ● ●● ● ● ● ●
●● ●
● ● ● ● ●
−2

●●
1.0

● ●
●●
−5

● ●● ● ●● ●
● ●
●●
● ●● ●●


● ● ●●●●●
−3

0.5

● ●● ●
● ●
● ● ●●●●

●●

●●●


● ●●● ●●●●
●●

● ●●

●●
●●●









●●
−10

0.0
−4

−4 −3 −2 −1 0 1 −10 −5 0 5 0.0 0.5 1.0 1.5 2.0 2.5



esdCapLabQuad esdCapMatQuad esdLabMatQuad

Figure 2.32: Quadratic production function: Comparison of direct and Allen elasticities of
substitution

The resulting graphs are shown in figure 2.32. We focus on the elasticities of substitution between
labor and materials, because the elasticities of substitution between capital and labor and the
elasticities of substitution between capital and material cannot be meaningful interpreted (see
section 2.5.11.1). In contrast to the direct elasticities of substitution, the Allen elasticities of
substitution allow the other inputs to adjust. Therefore, it is not surprising that the Allen

112
2 Primal Approach: Production Function

elasticities of substitution between labor and materials are about the same or a little larger
than the direct elasticities of substitution between labor and materials. However, even the Allen
elasticities of substitution between labor and materials indicate a low substitutability between
labor and materials (see also section 2.5.11.1).

2.5.12 First-order conditions for profit maximization


In this section, we will check to what extent the first-order conditions for profit maximization
(2.39) are fulfilled, i.e. to what extent the firms use the optimal input quantities. We do this by
comparing the marginal value products of the inputs with the corresponding input prices. We
can calculate the marginal value products by multiplying the marginal products by the output
price:

> dat$mvpCapQuad <- dat$pOut * dat$mpCapQuad


> dat$mvpLabQuad <- dat$pOut * dat$mpLabQuad
> dat$mvpMatQuad <- dat$pOut * dat$mpMatQuad

The command compPlot (package miscTools) can be used to compare the marginal value products
with the corresponding input prices. As the logarithm of a non-positive number is not defined,
we have to limit the comparisons on the logarithmic scale to observations with positive marginal
products:

> compPlot( dat$pCap, dat$mvpCapQuad )


> compPlot( dat$pLab, dat$mvpLabQuad )
> compPlot( dat$pMat, dat$mvpMatQuad )
> compPlot( dat$pCap[ dat$monoQuad ], dat$mvpCapQuad[ dat$monoQuad ], log = "xy" )
> compPlot( dat$pLab[ dat$monoQuad ], dat$mvpLabQuad[ dat$monoQuad ], log = "xy" )
> compPlot( dat$pMat[ dat$monoQuad ], dat$mvpMatQuad[ dat$monoQuad ], log = "xy" )

The resulting graphs are shown in figure 2.33. They indicate that the marginal value products of
most firms are higher than the corresponding input prices. This indicates that most firms could
increase their profit by using more of all inputs. Given that the estimated quadratic function
shows that (almost) all firms operate under increasing returns to scale, it is not surprising that
most firms would gain from increasing all input quantities. Therefore, the question arises why the
firms in the sample did not do this. This questions has already been addressed in section 2.3.10.

2.5.13 First-order conditions for cost minimization


As the marginal rates of technical substitution differ between observations for the three other
functional forms, we use scatter plots for visualizing the comparison of the input price ratios
with the negative inverse marginal rates of technical substitution. As the marginal rates of
technical substitution are meaningless if the monotonicity condition is not fulfilled, we limit the
comparisons to the observations, where all monotonicity conditions are fulfilled:

113
2 Primal Approach: Production Function

● ● ●

40

500


● ●




●●



●●●







●●●





● ●
0



●●



400

●●



30


● ● ●
MVP Cap

MVP Lab

MVP Mat

300
● ●
−20

● ●
● ●

20


● ● ●

200

● ●
●● ●
● ●
●● ●●

−40



●● ●

10

● ●

100


● ●



● ●




● ●


●● ●
●●

●● ●


●●





● ●







● ●




● ●




● ●

●●


● ●





−60


0

● ●


0

● ●
● ●

−60 −40 −20 0 0 10 20 30 40 0 100 300 500

w Cap w Lab w Mat


● ● ● ●

100
● ●●●
● ●● ●
●●●
● ● ●

● ● ● ● ●
● ● ●● ●
5.0

● ●
● ● ●● ●
50
●●
●● ●● ● ● ● ● ● ● ● ●● ● ●
● ● ●● ●
● ●●
5.0 10.0

● ●● ● ●● ● ● ●
● ●●
●●●● ●●
●●● ●●●● ●
●●● ●
● ●● ●●● ● ●●●●● ● ●
● ●●● ●●●● ●●
2.0

● ●● ● ● ● ● ●
●●
●● ●●● ●● ●●● ●● ● ● ●
MVP Cap

●●● ●
MVP Lab

MVP Mat

● ● ● ● ●● ●●
● ● ● ● ● ● ●●● ●
● ● ●●● ●

●●●●
●● ●●
●● ●●●●●●● ●● ● ●
●● ●● ● ●
20

●●
● ●● ●● ●●

●● ●● ● ●● ● ●● ● ●●
● ● ● ●
●●●● ●●

●●●●●●●●

● ● ●
● ●●
● ● ●
● ●● ●
0.5

● ● ● ●
10

● ● ●● ●
2.0

●● ● ●●
●● ● ●
● ● ●
● ● ●
● ●●● ●
1.0



0.1



0.5

● ● ●

0.1 0.5 2.0 5.0 0.5 1.0 2.0 5.0 20.0 5 10 20 50 100

w Cap w Lab w Mat

Figure 2.33: Marginal value products and corresponding input prices

114
2 Primal Approach: Production Function

> compPlot( ( dat$pCap / dat$pLab )[ dat$monoQuad ],


+ - dat$mrtsLabCapQuad[ dat$monoQuad ] )
> compPlot( ( dat$pCap / dat$pMat )[ dat$monoQuad ],
+ - dat$mrtsMatCapQuad[ dat$monoQuad ] )
> compPlot( ( dat$pLab / dat$pMat )[ dat$monoQuad ],
+ - dat$mrtsMatLabQuad[ dat$monoQuad ] )
> compPlot( ( dat$pCap / dat$pLab )[ dat$monoQuad ],
+ - dat$mrtsLabCapQuad[ dat$monoQuad ], log = "xy" )
> compPlot( ( dat$pCap / dat$pMat )[ dat$monoQuad ],
+ - dat$mrtsMatCapQuad[ dat$monoQuad ], log = "xy" )
> compPlot( ( dat$pLab / dat$pMat )[ dat$monoQuad ],
+ - dat$mrtsMatLabQuad[ dat$monoQuad ], log = "xy" )

● ● ●
15

3
5
− MRTS Lab Cap

− MRTS Mat Cap

− MRTS Mat Lab



10

2

3


2
5


1

● ●●
● ●
●●
1

●● ● ●●
●●

● ● ●

● ●
●●
●●●●
● ●●
● ●
● ● ●
●●
● ●




●●● ●●● ●

●●
●●●●
●●

●●














●●

●●






●●
●●●
● ●● ●


●●
●●

●●




●●




●●

●●

●●
●●●●
●● ●● ● ●

●●

●●
●●
●●


●●●
●●
●●
● ●

●●
●●


0
0

0
0 5 10 15 0 1 2 3 4 5 6 0 1 2 3

w Cap / w Lab w Cap / w Mat w Lab / w Mat


● ● ●
10.00


2.00




1.000


● ● ● ●

● ●
2.00

● ●
● ●
− MRTS Lab Cap

− MRTS Mat Cap

● ●
− MRTS Mat Lab

●● ●
●● ●● ●
0.20 0.50

● ●
●● ● ● ● ● ●● ● ●●
●●● ● ● ● ● ● ● ●● ●●
●●
● ● ●
● ● ● ●● ●●● ● ●
0.100

●●● ● ● ●
● ●

●●●● ● ●●● ●●
0.50

●●●●● ● ●

●●●●●● ● ● ● ●
● ● ●● ●●● ● ●
● ● ● ●
●●● ●● ●● ● ●● ●●● ● ● ●●● ●
●●
● ●
●● ● ● ●● ●● ●
●●●●
●● ●● ●
● ●●●●●●●●● ●●
●● ●● ●●● ●● ●●
●● ●
● ●●
● ● ● ●●●● ●
● ● ● ●●●●●
● ●
●●
● ●
● ● ● ●
● ●● ● ● ●
● ● ● ●● ● ●●●● ● ● ●● ●●
0.010

● ●● ●● ● ●●
0.10

●● ● ●● ●● ● ●
● ● ● ●
0.02 0.05

● ●● ● ● ●●
●● ●●
● ● ●● ●
●●●
● ●●●
● ●
0.02

0.001


● ● ●

0.02 0.10 0.50 2.00 10.00 0.001 0.010 0.100 1.000 0.02 0.10 0.50 2.00

w Cap / w Lab w Cap / w Mat w Lab / w Mat

Figure 2.34: First-order conditions for costs minimization

The resulting graphs are shown in figure 2.34.


Furthermore, we use histograms to visualize the (absolute and relative) differences between the
input price ratios and the corresponding negative inverse marginal rates of technical substitution:

> hist( ( - dat$mrtsLabCapQuad - dat$pCap / dat$pLab )[ dat$monoQuad ] )

115
2 Primal Approach: Production Function

> hist( ( - dat$mrtsMatCapQuad - dat$pCap / dat$pMat )[ dat$monoQuad ] )


> hist( ( - dat$mrtsMatLabQuad - dat$pLab / dat$pMat )[ dat$monoQuad ] )
> hist( log( - dat$mrtsLabCapQuad / ( dat$pCap / dat$pLab ) )[ dat$monoQuad ] )
> hist( log( - dat$mrtsMatCapQuad / (dat$pCap / dat$pMat ) )[ dat$monoQuad ] )
> hist( log( - dat$mrtsMatLabQuad / (dat$pLab / dat$pMat ) )[ dat$monoQuad ] )
70

60
60

60

50
50

40
Frequency

Frequency

Frequency
40

40

30
30

20
20

20

10
10
0

0
−5 0 5 10 15 0 2 4 6 0 1 2 3 4

− MrtsLabCap − wCap / wLab − MrtsMatCap − wCap / wMat − MrtsMatLab − wLab / wMat


30

25

40
25

20

30
20
Frequency

Frequency

Frequency
15
15

20
10
10

10
5
5
0

−6 −4 −2 0 2 4 −6 −4 −2 0 2 4 6 −3 −2 −1 0 1 2 3 4

log(−MrtsLabCap / (wCap / wLab)) log(−MrtsMatCap / (wCap / wMat)) log(−MrtsMatLab / (Lab / wMat))

Figure 2.35: First-order conditions for costs minimization

The resulting graphs are shown in figure 2.35. The left graphs in figures 2.34 and 2.35 show that
the ratio between the capital price and the labor price is larger than the absolute value of the
marginal rate of technical substitution between labor and capital for a majority of the firms in
the sample:
wcap M Pcap
> −M RT Slab,cap = (2.120)
wlab M Plab
Hence, these firms can get closer to the minimum of their production costs by substituting labor
for capital, because this will decrease the marginal product of labor and increase the marginal
product of capital so that the absolute value of the MRTS between labor and capital increases
and gets closer to the corresponding input price ratio. Similarly, the graphs in the middle column
indicate that a majority of the firms should substitute materials for capital and the graphs on

116
2 Primal Approach: Production Function

the right indicate that a little more than half of the firms should substitute materials for labor.
Hence, the majority of the firms could reduce production costs particularly by using less capital
and using more labor or more materials. 6

2.6 Translog production function


2.6.1 Specification
The Translog function is a more flexible extension of the Cobb-Douglas function as the quadratic
function is a more flexible extension of the linear function. Hence, the Translog function can be
seen as a combination of the Cobb-Douglas function and the quadratic function. The Translog
production function has following specification:
X 1 XX
ln y = α0 + αi ln xi + αij ln xi ln xj (2.121)
i
2 i j

with αij = αji .

2.6.2 Estimation
We can estimate this Translog production function with the command

> prodTL <- lm( log( qOut ) ~ log( qCap ) + log( qLab ) + log( qMat )
+ + I( 0.5 * log( qCap )^2 ) + I( 0.5 * log( qLab )^2 )
+ + I( 0.5 * log( qMat )^2 ) + I( log( qCap ) * log( qLab ) )
+ + I( log( qCap ) * log( qMat ) ) + I( log( qLab ) * log( qMat ) ),
+ data = dat )
> summary( prodTL )

Call:
lm(formula = log(qOut) ~ log(qCap) + log(qLab) + log(qMat) +
I(0.5 * log(qCap)^2) + I(0.5 * log(qLab)^2) + I(0.5 * log(qMat)^2) +
I(log(qCap) * log(qLab)) + I(log(qCap) * log(qMat)) + I(log(qLab) *
log(qMat)), data = dat)

Residuals:
Min 1Q Median 3Q Max
-1.68015 -0.36688 0.05389 0.44125 1.26560

Coefficients:
Estimate Std. Error t value Pr(>|t|)

6
This generally confirms the results of the Cobb-Douglas production function.

117
2 Primal Approach: Production Function

(Intercept) -4.14581 21.35945 -0.194 0.8464


log(qCap) -2.30683 2.28829 -1.008 0.3153
log(qLab) 1.99328 4.56624 0.437 0.6632
log(qMat) 2.23170 3.76334 0.593 0.5542
I(0.5 * log(qCap)^2) -0.02573 0.20834 -0.124 0.9019
I(0.5 * log(qLab)^2) -1.16364 0.67943 -1.713 0.0892 .
I(0.5 * log(qMat)^2) -0.50368 0.43498 -1.158 0.2490
I(log(qCap) * log(qLab)) 0.56194 0.29120 1.930 0.0558 .
I(log(qCap) * log(qMat)) -0.40996 0.23534 -1.742 0.0839 .
I(log(qLab) * log(qMat)) 0.65793 0.42750 1.539 0.1262
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6412 on 130 degrees of freedom


Multiple R-squared: 0.6296, Adjusted R-squared: 0.6039
F-statistic: 24.55 on 9 and 130 DF, p-value: < 2.2e-16

None of the estimated coefficients is statistically significantly different from zero at the 5% sig-
nificance level and only three coefficients are statistically significant at the 10% level. As the
Cobb-Douglas production function is “nested” in the Translog production function, we can apply
a “Wald test” or “likelihood ratio test” to check whether the Cobb-Douglas production function is
rejected in favor of the Translog production function. This can be done by the functions waldtest
and lrtest (package lmtest):

> waldtest( prodCD, prodTL )

Wald test

Model 1: log(qOut) ~ log(qCap) + log(qLab) + log(qMat)


Model 2: log(qOut) ~ log(qCap) + log(qLab) + log(qMat) + I(0.5 * log(qCap)^2) +
I(0.5 * log(qLab)^2) + I(0.5 * log(qMat)^2) + I(log(qCap) *
log(qLab)) + I(log(qCap) * log(qMat)) + I(log(qLab) * log(qMat))
Res.Df Df F Pr(>F)
1 136
2 130 6 2.062 0.06202 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> lrtest( prodCD, prodTL )

Likelihood ratio test

118
2 Primal Approach: Production Function

Model 1: log(qOut) ~ log(qCap) + log(qLab) + log(qMat)


Model 2: log(qOut) ~ log(qCap) + log(qLab) + log(qMat) + I(0.5 * log(qCap)^2) +
I(0.5 * log(qLab)^2) + I(0.5 * log(qMat)^2) + I(log(qCap) *
log(qLab)) + I(log(qCap) * log(qMat)) + I(log(qLab) * log(qMat))
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -137.61
2 11 -131.25 6 12.727 0.04757 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

At the 5% significance level, the Cobb-Douglas production function is accepted by the Wald test
but rejected in favor of the Translog production function by the likelihood ratio test. In order
to reduce the chance of using a too restrictive functional form, we proceed with the Translog
production function.

2.6.3 Properties
We cannot see from the estimated coefficients whether the monotonicity condition is fulfilled. The
Translog production function cannot be globally monotone, because there will be always a set of
input quantities that result in negative marginal products.7 The Translog function would only be
globally monotone, if all first-order coefficients are positive and all second-order coefficients are
zero, which is equivalent to a Cobb-Douglas function. We will check the monotonicity condition
at each observation in section 2.6.5.
All Translog production functions fulfill the weak and the strong essentiality assumption, be-
cause as soon as a single input quantity approaches zero, the right-hand side of equation (2.121)
approaches minus infinity (if monotonicity is fulfilled), and thus, the output quantity y = exp(ln y)
approaches zero. Hence, if a data set includes observations with a positive output quantity but
at least one input quantity that is zero, strict essentiality cannot be fulfilled in the underlying
true production technology so that the Translog production function is not a suitable functional
form for analyzing this data set.
The input requirement sets derived from Translog production functions are always closed and
non-empty. The Translog production function always returns finite, real, non-negative, and single
values as long as all input quantities are strictly positive. All Translog production functions are
continuous and twice-continuously differentiable.

2.6.4 Predicted output quantities


As before, we can easily obtain the predicted output quantities with the fitted method. As we
used the logarithmic output quantity as dependent variable in our estimated model, we must use
the exponential function to obtain the output quantities measured in levels:
7
Please note that ln xj is a large negative number if xj is a very small positive number.

119
2 Primal Approach: Production Function

> dat$qOutTL <- exp( fitted( prodTL ) )

Now, we can evaluate the “fit” of the model by comparing the observed with the fitted output
quantities:

> compPlot( dat$qOut, dat$qOutTL )


> compPlot( dat$qOut, dat$qOutTL, log = "xy" )



2.0e+07

1e+07

● ●●
● ● ●● ●●● ●
● ●●
● ● ● ●
● ● ● ●● ●

5e+05 2e+06
● ● ● ● ● ●

● ●● ● ●●●
● ● ●●
● ●
fitted

fitted
●●● ● ●●●●●●●
●●●●●● ●
● ●
1.0e+07

●● ● ●● ●●●●●● ●

● ● ● ●
●● ●●

●●
● ●●
● ● ●
● ●● ●● ● ●
● ●●
● ●● ●● ●
● ●
● ● ● ● ●
●●●
● ● ● ●●
● ●
●● ● ● ●
● ● ● ● ●
●●●● ● ●
● ● ●● ●
● ● ● ● ●
●● ●●
● ● ● ●
0.0e+00

● ●


●●●●
1e+05
● ●
●●● ● ●

● ●●



















●●

●●●
● ●

●●




●●

●●●



0.0e+00 1.0e+07 2.0e+07 1e+05 5e+05 5e+06

observed observed

Figure 2.36: Translog production function: fit of the model

The resulting graphs are shown in figure 2.36. While the graph in the left panel uses a linear
scale for the axes, the graph in the right panel uses a logarithmic scale for both axes. Hence,
the deviations from the 45°-line illustrate the absolute deviations in the left panel and the rel-
ative deviations in the right panel. The fit of the model looks rather okay, but there are some
observations, at which the predicted output quantity is not very close to the observed output
quantity.

2.6.5 Output elasticities


The output elasticities calculated from a Translog production function are:

∂ ln y X
i = = αi + αij ln xj (2.122)
∂ ln xi j

We can simplify the code for computing these output elasticities by using short names for the
coefficients:

> a1 <- coef( prodTL )[ "log(qCap)" ]


> a2 <- coef( prodTL )[ "log(qLab)" ]
> a3 <- coef( prodTL )[ "log(qMat)" ]
> a11 <- coef( prodTL )[ "I(0.5 * log(qCap)^2)" ]

120
2 Primal Approach: Production Function

> a22 <- coef( prodTL )[ "I(0.5 * log(qLab)^2)" ]


> a33 <- coef( prodTL )[ "I(0.5 * log(qMat)^2)" ]
> a12 <- a21 <- coef( prodTL )[ "I(log(qCap) * log(qLab))" ]
> a13 <- a31 <- coef( prodTL )[ "I(log(qCap) * log(qMat))" ]
> a23 <- a32 <- coef( prodTL )[ "I(log(qLab) * log(qMat))" ]

Now, we can use the following commands to calculate the output elasticities in R:

> dat$eCapTL <- with( dat,


+ a1 + a11 * log(qCap) + a12 * log(qLab) + a13 * log(qMat) )
> dat$eLabTL <- with( dat,
+ a2 + a21 * log(qCap) + a22 * log(qLab) + a23 * log(qMat) )
> dat$eMatTL <- with( dat,
+ a3 + a31 * log(qCap) + a32 * log(qLab) + a33 * log(qMat) )

We can visualize (the variation of) these output elasticities with histograms:

> hist( dat$eCapTL, 15 )


> hist( dat$eLabTL, 15 )
> hist( dat$eMatTL, 15 )
25

25

30
20

20
Frequency

Frequency

Frequency
15

15

20
10

10

10
5

5
0

−0.4 0.0 0.4 0.8 −1.0 0.0 0.5 1.0 1.5 2.0 0.0 0.5 1.0 1.5 2.0

eCap eLab eMat

Figure 2.37: Translog production function: output elasticities

The resulting graphs are shown in figure 2.37. If the firms increase capital input by one percent,
the output of most firms will increase by around 0.2 percent. If the firms increase labor input by
one percent, the output of most firms will increase by around 0.5 percent. If the firms increase
material input by one percent, the output of most firms will increase by around 0.7 percent.
These graphs also show that the monotonicity condition is not fulfilled for all observations:

> table( dat$eCapTL >= 0 )

FALSE TRUE
32 108

121
2 Primal Approach: Production Function

> table( dat$eLabTL >= 0 )

FALSE TRUE
14 126

> table( dat$eMatTL >= 0 )

FALSE TRUE
8 132

> dat$monoTL <- with( dat, eCapTL >= 0 & eLabTL >= 0 & eMatTL >= 0 )
> table( dat$monoTL )

FALSE TRUE
48 92

32 firms have a negative output elasticity of capital, 14 firms have a negative output elasticity
of labor, and 8 firms have a negative output elasticity of materials. In total the monotonicity
condition is not fulfilled at 48 out of 140 observations. Although the monotonicity conditions
are fulfilled for a large part of firms in our data set, these frequent violations indicate a possible
model misspecification.

2.6.6 Marginal products


The first derivatives (marginal products) of the Translog production function with respect to the
input quantities are:
 
∂y y ∂ ln y y  X
M Pi = = = αi + αij ln xj  (2.123)
∂xi xi ∂ ln xi xi j

We can calculate the marginal products based on the output elasticities that we have calculated
above. As argued in section 2.4.11.1, we use the predicted output quantities in this calculation:
> dat$mpCapTL <- with( dat, eCapTL * qOutTL / qCap )
> dat$mpLabTL <- with( dat, eLabTL * qOutTL / qLab )
> dat$mpMatTL <- with( dat, eMatTL * qOutTL / qMat )
We can visualize (the variation of) these marginal products with histograms:
> hist( dat$mpCapTL, 15 )
> hist( dat$mpLabTL, 15 )
> hist( dat$mpMatTL, 15 )
The resulting graphs are shown in figure 2.38. If the firms increase capital input by one unit,
the output of most firms will increase by around 4 units. If the firms increase labor input by
one unit, the output of most firms will increase by around 4 units. If the firms increase material
input by one unit, the output of most firms will increase by around 70 units.

122
2 Primal Approach: Production Function

25
20

20

20
15
Frequency

Frequency

Frequency
15

15
10

10

10
5

5
0

0
−10 0 10 20 −5 0 5 10 15 20 25 0 50 100

mpCapTL mpLabTL mpMatTL

Figure 2.38: Translog production function: marginal products

2.6.7 Elasticity of scale


The elasticity of scale can—as always—be calculated as the sum of all output elasticities.

> dat$eScaleTL <- dat$eCapTL + dat$eLabTL +


+ dat$eMatTL

The (variation of the) elasticities of scale can be visualized with a histogram.

> hist( dat$eScaleTL, 30 )


> hist( dat$eScaleTL[ dat$monoTL ], 30 )
15
Frequency

Frequency

8
10

6
4
5

2
0

1.2 1.3 1.4 1.5 1.6 1.7 1.2 1.3 1.4 1.5 1.6 1.7

eScaleTL eScaleTL[ monoTL ]

Figure 2.39: Translog production function: elasticities of scale

The resulting graphs are shown in figure 2.39. All firms experience increasing returns to scale
and most of them have an elasticity of scale around 1.45. Hence, if these firms increase all input
quantities by one percent, the output of most firms will increase by around 1.45 percent. These
elasticities of scale are realistic and on average close to the elasticity of scale obtained from the
Cobb-Douglas production function (1.47).

123
2 Primal Approach: Production Function

Information on the optimal firm size can be obtained by analyzing the relationship between
firm size and the elasticity of scale. We can either use the observed or the predicted output:

> plot( dat$qOut, dat$eScaleTL, log = "x" )


> plot( dat$X, dat$eScaleTL, log = "x" )
> plot( dat$qOut[ dat$monoTL ], dat$eScaleTL[ dat$monoTL ], log = "x" )
> plot( dat$X[ dat$monoTL ], dat$eScaleTL[ dat$monoTL ], log = "x" )

● ● ● ●
● ● ●●
● ●●
● ●● ● ●
● ● ● ● ●
● ●● ●
1.6

1.6
● ● ● ● ● ● ● ● ● ● ●● ● ●
●●
● ● ● ●● ●●

● ● ●● ● ● ●

● ● ●● ●● ● ● ● ●● ● ●● ●
eScaleTL

eScaleTL
●● ● ●● ● ● ● ●
● ●● ● ●● ● ● ● ● ● ● ●
● ● ● ● ● ●●
●●● ●●● ● ● ● ●● ●
● ●●●

●●● ● ●● ● ●● ●● ● ●●
● ●
● ●
●● ●● ●●● ● ●

●● ● ●● ● ● ●● ● ●● ●
● ● ●●●● ●● ● ●
● ●
●●
1.4

1.4
● ●

● ● ●●●●● ● ● ●● ● ●
● ●●● ● ● ●●
●● ● ●
●●● ● ● ● ●● ● ●● ●
● ● ● ● ●●
● ●● ● ● ● ● ● ●

●● ●
● ●● ● ● ●
● ●

● ●
● ● ● ● ●
● ● ●
● ●
● ●● ● ● ●
● ● ●● ● ●
● ●
1.2

1.2
● ●● ● ● ●
● ● ● ●

1e+05 5e+05 2e+06 1e+07 0.5 1.0 2.0 5.0

observed output quantity index of inputs


● ● ● ●
1.2 1.3 1.4 1.5 1.6 1.7

1.2 1.3 1.4 1.5 1.6 1.7

● ● ●●
● ●●
● ●● ● ●
eScaleTL[ monoTL ]

eScaleTL[ monoTL ]

● ●
● ● ●● ●
● ● ●● ●● ● ●
●●
● ● ● ●● ●●

● ● ● ● ●
● ● ●● ● ●
● ● ●● ●● ● ●● ● ● ●●● ●
●● ● ●● ● ● ● ● ●
● ● ● ●

●● ● ● ● ●

●● ● ●
● ● ● ● ●●
●● ● ●● ●● ● ● ●● ●●
● ●● ● ● ● ●● ● ● ●
● ● ●● ● ●● ●

● ● ●

●● ● ● ●
● ●●● ● ●● ●● ● ● ● ●
● ● ● ● ●● ●

● ● ● ●
● ● ● ●
●● ● ● ●
● ● ●
● ●
● ●

1e+05 5e+05 2e+06 1e+07 0.5 1.0 2.0 5.0

observed output quantity index of inputs

Figure 2.40: Translog production function: elasticities of scale at different firm sizes

The resulting graphs are shown in figure 2.40. Both of them indicate that the elasticity of scale
slightly decreases with firm size but there are considerable increasing returns to scale even for
the largest firms in the sample. Hence, all firms in the sample would gain from increasing their
size and the optimal firm size seems to be larger than the largest firm in the sample.

2.6.8 Marginal rates of technical substitution


We can calculate the marginal rates of technical substitution (MRTS) based on our estimated
Translog production function by following commands:

> dat$mrtsCapLabTL <- with( dat, - mpLabTL / mpCapTL )


> dat$mrtsLabCapTL <- with( dat, - mpCapTL / mpLabTL )
> dat$mrtsCapMatTL <- with( dat, - mpMatTL / mpCapTL )

124
2 Primal Approach: Production Function

> dat$mrtsMatCapTL <- with( dat, - mpCapTL / mpMatTL )


> dat$mrtsLabMatTL <- with( dat, - mpMatTL / mpLabTL )
> dat$mrtsMatLabTL <- with( dat, - mpLabTL / mpMatTL )
As the marginal rates of technical substitution are meaningless if the monotonicity condition is
not fulfilled, we visualize (the variation of) these MRTS only for the observations, where the
monotonicity condition is fulfilled:
> hist( dat$mrtsCapLabTL[ dat$monoTL ], 30 )
> hist( dat$mrtsLabCapTL[ dat$monoTL ], 30 )
> hist( dat$mrtsCapMatTL[ dat$monoTL ], 30 )
> hist( dat$mrtsMatCapTL[ dat$monoTL ], 30 )
> hist( dat$mrtsLabMatTL[ dat$monoTL ], 30 )
> hist( dat$mrtsMatLabTL[ dat$monoTL ], 30 )

10 20 30 40 50 60 70
60
50
60

40
Frequency

Frequency

Frequency
40

30
20
20

10
0

−150 −100 −50 0 −60 −40 −20 0 0 −800 −600 −400 −200 0

mrtsCapLabTL mrtsLabCapTL mrtsCapMatTL


80

50
15

60

40
Frequency

Frequency

Frequency
10

30
40

20
5

20

10
0

−0.6 −0.4 −0.2 0.0 −1200 −800 −400 0 −4 −3 −2 −1 0

mrtsMatCapTL mrtsLabMatTL mrtsMatLabTL

Figure 2.41: Translog production function: marginal rates of technical substitution (MRTS)

The resulting graphs are shown in figure 2.42. As some outliers hide the variation of the majority
of the MRTS, we use function colMedians (package miscTools) to show the median values of the
MRTS:
> colMedians( subset( dat, monoTL,
+ c( "mrtsCapLabTL", "mrtsLabCapTL", "mrtsCapMatTL",
+ "mrtsMatCapTL", "mrtsLabMatTL", "mrtsMatLabTL" ) ) )

125
2 Primal Approach: Production Function

mrtsCapLabTL mrtsLabCapTL mrtsCapMatTL mrtsMatCapTL mrtsLabMatTL mrtsMatLabTL


-0.83929283 -1.19196521 -12.72554396 -0.07858435 -12.79850828 -0.07813810

Given that the median marginal rate of technical substitution between capital and labor is -0.84,
a typical firm that reduces the use of labor by one unit, has to use around 0.84 additional units
of capital in order to produce the same amount of output as before. Alternatively, the typical
firm can replace one unit of labor by using 0.08 additional units of materials.

2.6.9 Relative marginal rates of technical substitution


As we do not have a practical interpretation of the units of measurement of the input quantities,
the relative marginal rates of technical substitution (RMRTS) are practically more meaningful
than the MRTS. The following commands calculate the RMRTS:

> dat$rmrtsCapLabTL <- with( dat, - eLabTL / eCapTL )


> dat$rmrtsLabCapTL <- with( dat, - eCapTL / eLabTL )
> dat$rmrtsCapMatTL <- with( dat, - eMatTL / eCapTL )
> dat$rmrtsMatCapTL <- with( dat, - eCapTL / eMatTL )
> dat$rmrtsLabMatTL <- with( dat, - eMatTL / eLabTL )
> dat$rmrtsMatLabTL <- with( dat, - eLabTL / eMatTL )

As the (relative) marginal rates of technical substitution are meaningless if the monotonicity
condition is not fulfilled, we visualize (the variation of) these RMRTS only for the observations,
where the monotonicity condition is fulfilled:

> hist( dat$rmrtsCapLabTL[ dat$monoTL ], 30 )


> hist( dat$rmrtsLabCapTL[ dat$monoTL ], 30 )
> hist( dat$rmrtsCapMatTL[ dat$monoTL ], 30 )
> hist( dat$rmrtsMatCapTL[ dat$monoTL ], 30 )
> hist( dat$rmrtsLabMatTL[ dat$monoTL ], 30 )
> hist( dat$rmrtsMatLabTL[ dat$monoTL ], 30 )

The resulting graphs are shown in figure 2.42. As some outliers hide the variation of the majority
of the RMRTS, we use function colMedians (package miscTools) to show the median values of
the RMRTS:

> colMedians( subset( dat, monoTL,


+ c( "rmrtsCapLabTL", "rmrtsLabCapTL", "rmrtsCapMatTL",
+ "rmrtsMatCapTL", "rmrtsLabMatTL", "rmrtsMatLabTL" ) ) )

rmrtsCapLabTL rmrtsLabCapTL rmrtsCapMatTL rmrtsMatCapTL rmrtsLabMatTL


-2.8357239 -0.3539150 -3.0064237 -0.3331325 -1.3444115
rmrtsMatLabTL
-0.7439008

126
2 Primal Approach: Production Function

80

80
60
60

60
Frequency

Frequency

Frequency
40
40

40
20
20

20
0

0
−500 −300 −100 0 −25 −20 −15 −10 −5 0 −400 −300 −200 −100 0

rmrtsCapLabTL rmrtsLabCapTL rmrtsCapMatTL


20

60

50
50
15

40
40
Frequency

Frequency

Frequency

30
10

30

20
20
5

10
10
0

−3.0 −2.0 −1.0 0.0 −50 −40 −30 −20 −10 0 −35 −25 −15 −5 0

rmrtsMatCapTL rmrtsLabMatTL rmrtsMatLabTL

Figure 2.42: Translog production function: relative marginal rates of technical substitution
(RMRTS)

127
2 Primal Approach: Production Function

Given that the median relative marginal rate of technical substitution between capital and labor
is -2.84, a typical firm that reduces the use of labor by one percent, has to use around 2.84 percent
more capital in order to produce the same amount of output as before. Alternatively, the typical
firm can replace one percent of labor by using 0.74 percent more materials.

2.6.10 Second partial derivatives


In order to compute the elasticities of substitution, we need obtain the second derivatives of the
Translog function. We can calculate them as derivatives of the first derivatives of the Translog
function:

∂y y
   
P
∂ ∂ (αi + k αik ln xk )
∂2y ∂xi xi
= = (2.124)
∂xi ∂xj ∂xj ∂xj
P !
αij y αi + kαik ln xk ∂y X y
= + − δij αi + αik ln xk (2.125)
xj xi xi ∂xj k
x2i
P ! !
αij y αi + k αik ln xk X y X y
= + αj + αjk ln xk − δij αi + αik ln xk
xi xj xi k
xj k
x2i
(2.126)
αij y i j y i y
= + − δij 2 (2.127)
xi xj xi xj xi
y
= (αij + i j − δij i ) , (2.128)
xi xj

where δij is (again) Kronecker’s delta (2.82). Alternatively, the second derivatives of the Translog
function can be expressed based on the marginal products (instead of the output elasticities):

∂2y αij y M Pi M Pj M Pi
= + − δij (2.129)
∂xi ∂xj xi xj y xi

Now, we can calculate the second derivatives for each observation in our data set:

> dat$fCapCapTL <- with( dat,


+ qOutTL / qCap^2 * ( a11 + eCapTL^2 - eCapTL ) )
> dat$fLabLabTL <- with( dat,
+ qOutTL / qLab^2 * ( a22 + eLabTL^2 - eLabTL ) )
> dat$fMatMatTL <- with( dat,
+ qOutTL / qMat^2 * ( a33 + eMatTL^2 - eMatTL ) )
> dat$fCapLabTL <- with( dat,
+ qOutTL / ( qCap * qLab ) * ( a12 + eCapTL * eLabTL ) )
> dat$fCapMatTL <- with( dat,
+ qOutTL / ( qCap * qMat ) * ( a13 + eCapTL * eMatTL ) )
> dat$fLabMatTL <- with( dat,

128
2 Primal Approach: Production Function

+ qOutTL / ( qLab * qMat ) * ( a23 + eLabTL * eMatTL ) )

2.6.11 Quasiconcavity
In order to check whether the estimated Translog production function is quasiconcave, we need
to construct the bordered Hessian matrix. As the first-order and second-order derivatives of
the Translog production function differ between observations, also the bordered Hessian matrix
differs between observations. As a starting point, we construct the bordered Hessian matrix just
for the first observation:

> bhm <- matrix( 0, nrow = 4, ncol = 4 )


> bhm[ 1, 2 ] <- bhm[ 2, 1 ] <- dat$mpCapTL[ 1 ]
> bhm[ 1, 3 ] <- bhm[ 3, 1 ] <- dat$mpLabTL[ 1 ]
> bhm[ 1, 4 ] <- bhm[ 4, 1 ] <- dat$mpMatTL[ 1 ]
> bhm[ 2, 2 ] <- dat$fCapCapTL[ 1 ]
> bhm[ 3, 3 ] <- dat$fLabLabTL[ 1 ]
> bhm[ 4, 4 ] <- dat$fMatMatTL[ 1 ]
> bhm[ 2, 3 ] <- bhm[ 3, 2 ] <- dat$fCapLabTL[ 1 ]
> bhm[ 2, 4 ] <- bhm[ 4, 2 ] <- dat$fCapMatTL[ 1 ]
> bhm[ 3, 4 ] <- bhm[ 4, 3 ] <- dat$fLabMatTL[ 1 ]
> print(bhm)

[,1] [,2] [,3] [,4]


[1,] 0.000000 1.246349e+01 3.206967e+00 73.2131083318
[2,] 12.463493 -1.142053e-04 7.420925e-05 -0.0002080891
[3,] 3.206967 7.420925e-05 -3.595311e-05 0.0002498286
[4,] 73.213108 -2.080891e-04 2.498286e-04 -0.0020045254

Based on this bordered Hessian matrix, we can check whether the estimated Translog production
function is quasiconcave at the first observation:

> det( bhm[ 1:2, 1:2 ] )

[1] -155.3387

> det( bhm[ 1:3, 1:3 ] )

[1] 0.01269176

> det( bhm )

[1] -2.99626e-05

129
2 Primal Approach: Production Function

Quasiconcavity requires that the first determinant calculated above (i.e. the determinant of the
upper-left 2 × 2 submatrix) is negative and the following determinants alternate in sign. As
this condition is fulfilled, we can conclude that the estimated Translog production function is
quasiconcave at the first observation.
Now, we check whether our estimated Translog production function is quasiconcave at each
individual observation:

> bhmTL <- array( 0, c( 4, 4, nrow( dat ) ) )


> bhmTL[ 1, 2, ] <- bhmTL[ 2, 1, ] <- dat$mpCapTL
> bhmTL[ 1, 3, ] <- bhmTL[ 3, 1, ] <- dat$mpLabTL
> bhmTL[ 1, 4, ] <- bhmTL[ 4, 1, ] <- dat$mpMatTL
> bhmTL[ 2, 2, ] <- dat$fCapCapTL
> bhmTL[ 3, 3, ] <- dat$fLabLabTL
> bhmTL[ 4, 4, ] <- dat$fMatMatTL
> bhmTL[ 2, 3, ] <- bhmTL[ 3, 2, ] <- dat$fCapLabTL
> bhmTL[ 2, 4, ] <- bhmTL[ 4, 2, ] <- dat$fCapMatTL
> bhmTL[ 3, 4, ] <- bhmTL[ 4, 3, ] <- dat$fLabMatTL
> dat$quasiConcTL <- apply( bhmTL[ 1:2, 1:2, ], 3, det ) < 0 &
+ apply( bhmTL[ 1:3, 1:3, ], 3, det ) > 0 &
+ apply( bhmTL, 3, det ) < 0
> table( dat$quasiConcTL )

FALSE TRUE
77 63

Our estimated Translog production function is quasiconcave at 63 of the 140 observations.


In total, there are 57 observations, at which both the homogeneity condition and the quasi-
concavity condition are fulfilled:

> table( dat[ , c( "monoTL", "quasiConcTL" ) ] )

quasiConcTL
monoTL FALSE TRUE
FALSE 42 6
TRUE 35 57

2.6.12 Elasticities of substitution


2.6.12.1 Direct elasticities of substitution

We can calculate the direct elasticities of substitution using equation (2.19):

130
2 Primal Approach: Production Function

> dat$esdCapLabTL <- with( dat, - ( mpCapTL * mpLabTL *


+ ( qCap * mpCapTL + qLab * mpLabTL ) ) /
+ ( qCap * qLab * ( fCapCapTL * mpLabTL^2 -
+ 2 * fCapLabTL * mpCapTL * mpLabTL + fLabLabTL * mpCapTL^2 ) ) )
> dat$esdCapMatTL <- with( dat, - ( mpCapTL * mpMatTL *
+ ( qCap * mpCapTL + qMat * mpMatTL ) ) /
+ ( qCap * qMat * ( fCapCapTL * mpMatTL^2 -
+ 2 * fCapMatTL * mpCapTL * mpMatTL + fMatMatTL* mpCapTL^2 ) ) )
> dat$esdLabMatTL <- with( dat, - ( mpLabTL * mpMatTL *
+ ( qLab * mpLabTL + qMat * mpMatTL ) ) /
+ ( qLab * qMat * ( fLabLabTL * mpMatTL^2
+ - 2 * fLabMatTL * mpLabTL * mpMatTL + fMatMatTL * mpLabTL^2 ) ) )

As the elasticities of substitution measure changes in the marginal rates of technical substitution
(MRTS) and the MRTS are meaningless if the monotonicity condition is not fulfilled, also the
elasticities of substitution are meaningless if the monotonicity condition is not fulfilled. Hence,
we visualize (the variation of) the direct elasticities of substitution only for the observations,
where the monotonicity condition is fulfilled:

> hist( dat$esdCapLabTL[ dat$monoTL ], 30 )


> hist( dat$esdCapMatTL[ dat$monoTL ], 50 )
> hist( dat$esdLabMatTL[ dat$monoTL ], 30 ) 10
10

60

8
8
Frequency

Frequency

Frequency

6
40
6

4
4

20

2
2
0

0.0 0.1 0.2 0.3 0.4 0.5 −100 −50 0 50 100 0.00 0.10 0.20 0.30

esdCapLabTL esdCapMatTL esdLabMatTL

Figure 2.43: Translog production function: direct elasticities of substitution (at observations,
where the monotonicity condition is fulfilled)

The resulting graphs are shown in figure 2.43. The estimated direct elasticities of substitution
between capital and labor as well as between labor and materials are all positive, while the
estimated direct elasticities of substitution between capital and materials are mostly positive but
a small proportion of them is negative. As the direct elasticities of substitution assume that only
the quantities of the two considered inputs are varied, while all other input quantities and the

131
2 Primal Approach: Production Function

output quantity remain unchanged, it is expected that all direct elasticities of substitution are
always positive. However, as we obtain a few negative direct elasticities of substitution between
capital and materials, it seems that the isoquants between these two inputs are not always convex
(see section 2.6.11). In case of non-convex isoquants, even the direct elasticities of substitution can
become negative. As non-convex isoquants are more similar to linear isoquants than to isoquants
of Leontief production functions, negative direct elasticities of substitution rather indicate good
substitutability than complementarity between the inputs.
In order to simplify the interpretation of the estimated direct elasticities of substitution, we
visualize (the variation of) these elasticities of substitution only for the observations, where both
the monotonicity condition and the quasiconcavity condition are fulfilled:

> hist( dat$esdCapLabTL[ dat$monoTL & dat$quasiConcTL ], 30 )


> hist( dat$esdCapMatTL[ dat$monoTL & dat$quasiConcTL ], 30 )
> hist( dat$esdLabMatTL[ dat$monoTL & dat$quasiConcTL ], 30 )
15

8
10

6
8

10
Frequency

Frequency

Frequency
6

4
4

2
2
0

0.0 0.1 0.2 0.3 0.4 1 2 3 4 5 6 0.00 0.10 0.20 0.30

esdCapLabTL esdCapMatTL esdLabMatTL

Figure 2.44: Translog production function: direct elasticities of substitution (at observations,
where both the monotonicity condition and the quasiconcavity condition are fulfilled)

The resulting graphs are shown in figure 2.44. The corresponding median values of the direct
elasticities of substitution can be obtained by:

> colMedians( subset( dat, dat$monoTL & dat$quasiConcTL,


+ c( "esdCapLabTL", "esdCapMatTL", "esdLabMatTL" ) ) )

esdCapLabTL esdCapMatTL esdLabMatTL


0.2685804 1.9410943 0.2441392

For all firms in our sample, the estimated direct elasticities of substitution between capital and
labor and between labor and materials are considerably smaller than the elasticity of substitution
implied by the Cobb-Douglas production function (σ = 1) and are somewhat close to the elasticity
of substitution implied by the Leontief production function (σ = 0). Hence, the substitutability

132
2 Primal Approach: Production Function

between capital and labor as well as the substitutability between labor and materials seems to
be rather low.
The direct elasticities of substitution between capital and labor are for most firms around 0.27.
Hence, if these firms keep the materials quantity and the output quantity unchanged and sub-
stitute capital for labor (or vice versa) so that the ratio between the capital quantity and the
labor quantity increases (decreases) by around 0.27 percent, the MRTS between capital and labor
increases (decreases) by one percent. If the ratio between the labor price and the capital price
increases by one percent, firms that keep the materials input and the output quantity unchanged
and minimize costs will substitute capital for labor so that the ratio between the capital quan-
tity and the labor quantity increases by around 0.27 percent. Hence, the relative changes of
the ratios of the input quantities are much smaller than the relative changes of the ratios of the
corresponding input prices, which indicates a very low substitutability between capital and labor.
Similarly, the direct elasticities of substitution between labor and materials are for most firms
around 0.24. If these firms keep the capital quantity and the output quantity unchanged and
substitute labor for materials (or vice versa) so that the ratio between the labor quantity and the
quantity of materials increases (decreases) by around 0.24 percent, the MRTS between labor and
materials increases (decreases) by one percent. If the ratio between the materials price and the
labor price increases by one percent, firms that keep the capital input and the output quantity
unchanged and minimize costs will substitute labor for materials so that the ratio between the
labor quantity and the materials quantity increases by around 0.24 percent. Again, the relative
changes of the ratios of the input quantities are much smaller than the relative changes of the
ratios of the corresponding input prices, which indicates a very low substitutability between labor
and materials.
In contrast, the direct elasticities of substitution between capital and materials are for most
firms around 1.94 and thus, considerably larger than the elasticity of substitution implied by the
Cobb-Douglas production function (σ = 1). Hence, if these firms keep the labor quantity and
the output quantity unchanged and substitute capital for materials (or vice versa) so that the
ratio between the capital quantity and the quantity of materials increases (decreases) by around
1.94 percent, the MRTS between capital and materials increases (decreases) by one percent. If the
ratio between the materials price and the capital price increases by one percent, firms that keep
the labor input and the output quantity unchanged and minimize costs will substitute capital for
materials so that the ratio between the capital quantity and the quantity of materials increases
by around 1.94 percent. Hence, the relative change of the ratio of the input quantities is around
twice as large as the relative change of the ratio of the input prices, which indicates a quite
substantial substitutability between capital and materials.

2.6.12.2 Allen elasticities of substitution

As for the quadratic production function, we only calculate the direct and Allen elasticities of
substitution. The calculation of the Morishima elasticities of substitution requires only minimal

133
2 Primal Approach: Production Function

changes of the code for calculating the Allen elasticities of substitution. In order to check whether
our calculations are correct, we will—as before—check if the conditions (2.119) are fulfilled. In
order to check these conditions, we need to calculate not only (normal) elasticities of substitution
(σij ; i 6= j) but also economically not meaningful “elasticities of self-substitution” (σii ):

> dat$FCapLabTL <- - apply( bhmTL[ -2, -3, ], 3, det )


> dat$FCapMatTL <- apply( bhmTL[ -2, -4, ], 3, det )
> dat$FLabMatTL <- - apply( bhmTL[ -3, -4, ], 3, det )
> dat$FCapCapTL <- apply( bhmTL[ -2, -2, ], 3, det )
> dat$FLabLabTL <- apply( bhmTL[ -3, -3, ], 3, det )
> dat$FMatMatTL <- apply( bhmTL[ -4, -4, ], 3, det )
> dat$bhmDetTL <- apply( bhmTL, 3, det )
> dat$numeratorTL <- with( dat,
+ qCap * mpCapTL + qLab * mpLabTL + qMat * mpMatTL )
> dat$esaCapLabTL <- with( dat,
+ numeratorTL / ( qCap * qLab ) * FCapLabTL / bhmDetTL )
> dat$esaCapMatTL <- with( dat,
+ numeratorTL / ( qCap * qMat ) * FCapMatTL / bhmDetTL )
> dat$esaLabMatTL <- with( dat,
+ numeratorTL / ( qLab * qMat ) * FLabMatTL / bhmDetTL )
> dat$esaCapCapTL <- with( dat,
+ numeratorTL / ( qCap * qCap ) * FCapCapTL / bhmDetTL )
> dat$esaLabLabTL <- with( dat,
+ numeratorTL / ( qLab * qLab ) * FLabLabTL / bhmDetTL )
> dat$esaMatMatTL <- with( dat,
+ numeratorTL / ( qMat * qMat ) * FMatMatTL / bhmDetTL )

Before we take a look at and interpret the elasticities of substitution, we check whether the
conditions (2.119) are fulfilled:

> range( with( dat, qCap * mpCapTL * esaCapCapTL +


+ qLab * mpLabTL * esaCapLabTL + qMat * mpMatTL * esaCapMatTL ) )

[1] -3.337860e-06 6.705523e-08

> range( with( dat, qCap * mpCapTL * esaCapLabTL +


+ qLab * mpLabTL * esaLabLabTL + qMat * mpMatTL * esaLabMatTL ) )

[1] -1.862645e-08 2.235174e-08

> range( with( dat, qCap * mpCapTL * esaCapMatTL +


+ qLab * mpLabTL * esaLabMatTL + qMat * mpMatTL * esaMatMatTL ) )

134
2 Primal Approach: Production Function

[1] -9.536743e-07 2.793968e-08

The extremely small deviations from zero are most likely caused by rounding errors that are
unavoidable on digital computers. This test does not prove that all of our calculations are done
correctly but if we had made a mistake, we probably would have discovered it. Hence, we can be
rather sure that our calculations are correct.
As explained above in section 2.6.12.1, the elasticities of substitution are meaningless if the
monotonicity condition is violated and they are difficult to interpret if the quasiconcavity condi-
tion is violated. Hence, we visualize (the variation of) the Allen elasticities of substitution only
for the observations, where both the monotonicity condition and the quasiconcavity condition
are fulfilled:

> hist( dat$esaCapLabTL[ dat$monoTL & dat$quasiConcTL ], 30 )


> hist( dat$esaCapMatTL[ dat$monoTL & dat$quasiConcTL ], 30 )
> hist( dat$esaLabMatTL[ dat$monoTL & dat$quasiConcTL ], 30 )
> hist( dat$esaCapLabTL[ dat$monoTL & dat$quasiConcTL &
+ abs( dat$esaCapLabTL ) < 10 ], 30 )
> hist( dat$esaCapMatTL[ dat$monoTL & dat$quasiConcTL &
+ abs( dat$esaCapMatTL ) < 10 ], 30 )
> hist( dat$esaLabMatTL[ dat$monoTL & dat$quasiConcTL &
+ abs( dat$esaLabMatTL ) < 10 ], 30 )

The resulting graphs are shown in figure 2.45. The estimated elasticities of substitution between
capital and labor suggest that capital and labor are complements for the majority of firms. In
contrast, capital and materials are always substitutes and labor and materials are substitutes
for the majority of firms. In order to avoid the effects of outliers, we use function colMedians
(package miscTools) to obtain the median values of the Allen elasticities of substitution:

> colMedians( subset( dat, monoTL & quasiConcTL,


+ c( "esaCapLabTL", "esaCapMatTL", "esaLabMatTL" ) ) )

esaCapLabTL esaCapMatTL esaLabMatTL


-0.8018194 3.6322399 0.5848447

The median elasticity of substitution between labor and materials (0.58) lies between the elas-
ticity of substitution implied by the Leontief production function (σ = 0) and the elasticity of
substitution implied by the Cobb-Douglas production function (σ = 1). Hence, the substitutabil-
ity between labor and materials seems to be rather low. If a typical firm keeps the output quantity
constant, substitutes materials for labor (or vice versa) so that the ratio between the quantity
of materials and the labor quantity increases (decreases) by 0.58 percent, and adjusts the capi-
tal quantity accordingly, the MRTS between materials and labor will increase (decrease) by one
percent. If the ratio between the labor price and the materials price increases by one percent, a

135
2 Primal Approach: Production Function

40

50

40
40
30
Frequency

Frequency

Frequency

30
30
20

20
20
10

10
10
0

0
−400 −300 −200 −100 0 0 500 1000 1500 0 50 100 150

esaCapLabTL esaCapMatTL esaLabMatTL


10 12 14

15
6
5
Frequency

Frequency

Frequency

10
8

4
6

5
4

2
2

1
0

0
−8 −6 −4 −2 0 2 3 4 5 6 7 8 0 2 4 6

abs( esaCapLabTL ) < 10 abs( esaCapMatTL ) < 10 abs( esaLabMatTL ) < 10

Figure 2.45: Translog production function: Allen elasticities of substitution

firm that keeps the output quantity constant, adjusts all input quantities and minimizes costs,
will substitute materials for labor so that the ratio between the quantity of materials and the
labor quantity increases by 0.58 percent. Hence, the relative change of the ratio of the input
quantities is considerably smaller than the relative change of the ratio of the input prices, which
indicates a low substitutability between labor and materials. In contrast, the median elasticity
of substitution between capital and materials is larger than one (3.63), which indicates that it is
much easier to substitute between capital and materials.

2.6.12.3 Comparison of direct and Allen elasticities of substitution

In the following, we use scatter plots to compare the estimated direct elasticities of substitution
with the estimated Allen elasticities of substitution:

> compPlot( dat$esdCapLabTL[ dat$monoTL & dat$quasiConcTL ],


+ dat$esaCapLabTL[ dat$monoTL & dat$quasiConcTL ],
+ lim = c( -2, 2 ) )
> compPlot( dat$esdCapMatTL[ dat$monoTL & dat$quasiConcTL ],
+ dat$esaCapMatTL[ dat$monoTL & dat$quasiConcTL ],
+ lim = c( -10, 10 ) )
> compPlot( dat$esdLabMatTL[ dat$monoTL & dat$quasiConcTL ],

136
2 Primal Approach: Production Function

+ dat$esaLabMatTL[ dat$monoTL & dat$quasiConcTL ],


+ lim = c( -2, 2 ) )

10

2

2

● ●●
●●
●● ●●

●● ●

1

1
● ●●
●● ●




●●●
●●
esaCapLabTL

esaCapMatTL

esaLabMatTL
● ●
●●
● ●●

●● ●●●●
● ●●●●


●● ●●
●●
● ●

●● ●


● ●●●●

● ●●
●●
● ● ●
0

0
● ● ●
●●●●● ●
●●



●●
●●●
●●●●
●●
−1

−5

−1

●●

●●

−10
−2

−2

● ●
●●
−2 −1 0 1 2 −10 −5 0 5 10 −2 −1 0 1 2

esdCapLabTL
● esdCapMatTL esdLabMatTL

Figure 2.46: Translog production function: Comparison of direct and Allen elasticities of
substitution

The resulting graphs are shown in figure 2.46. As can also be seen from comparing the histograms
in Figures 2.44 and 2.45, the variation of the Allen elasticities of substitution is much larger than
the variation of the corresponding direct elasticities of substitution.

2.6.13 First-order conditions for profit maximization


In this section, we will check to what extent the first-order conditions for profit maximization
(2.39) are fulfilled, i.e. to what extent the firms use the optimal input quantities. We do this by
comparing the marginal value products of the inputs with the corresponding input prices. We
can calculate the marginal value products by multiplying the marginal products by the output
price:

> dat$mvpCapTL <- dat$pOut * dat$mpCapTL


> dat$mvpLabTL <- dat$pOut * dat$mpLabTL
> dat$mvpMatTL <- dat$pOut * dat$mpMatTL

The command compPlot (package miscTools) can be used to compare the marginal value products
with the corresponding input prices. As the logarithm of a non-positive number is not defined,
we have to limit the comparisons on the logarithmic scale to observations with positive marginal
products:

> compPlot( dat$pCap, dat$mvpCapTL )


> compPlot( dat$pLab, dat$mvpLabTL )
> compPlot( dat$pMat, dat$mvpMatTL )
> compPlot( dat$pCap[ dat$monoTL ], dat$mvpCapTL[ dat$monoTL ], log = "xy" )
> compPlot( dat$pLab[ dat$monoTL ], dat$mvpLabTL[ dat$monoTL ], log = "xy" )
> compPlot( dat$pMat[ dat$monoTL ], dat$mvpMatTL[ dat$monoTL ], log = "xy" )

137
2 Primal Approach: Production Function

30
● ● ●
●● ●
●●●●

25
60

● ●

150
● ● ●
● ●
● ●

20

● ●

40


● ●

● ●

100
● ●●
15

MVP Cap


MVP Lab

MVP Mat

● ●●●
●● ●● ●

●● ●●
● ●●

20

●● ●
● ●●●
● ● ●●
● ●●●
●●

● ● ● ●●
10


● ●







●●● ●●●

●●
● ●● ● ●




● ●
●● ●

● ●
●●


● ●● ●

50




●●
● ●

● ● ●
●●
● ● ●●

0




●● ●● ●

● ●

●● ●
5


● ●
●● ●
●●
●●

● ●
●● ●● ●●
●● ●
●●
● ●

●●

● ●



● ●

●●



●●
● ●
●●
●●

−20

●● ●

●●
●●


0


●● ●
●●●

●● ●

●●●

●●
● ●

● ●

0

● ●

●●
●●

−5
−40

● ● ●

−40 0 20 40 60 −5 0 5 10 15 20 25 30 0 50 100 150

w Cap w Lab w Mat

200
20.00
5e+01

● ●● ● ●●
● ● ●●
●●
● ● ● ●
● ●
●●

100

● ●●● ●●●
● ●●● ● ●●●
●●●●●
● ●● ●● ●●●
● ●● ● ●
●●● ● ● ● ●●
5.00

● ●●●
●● ●
● ●● ● ●
●●●●● ●● ●●
●●●● ● ●
● ● ●●● ●●
5e+00

● ●● ●●● ● ● ● ●
●●● ●
50


●●● ●
● ●
● ●● ●●
● ●● ●●●

●●● ● ●
●●●●●● ● ● ● ● ●● ●●●● ● ●
●●●●
●● ● ●● ● ●
MVP Cap

●● ●
MVP Lab

MVP Mat

●● ● ●
●●●● ●
●● ●
●● ●● ● ●● ● ●
●● ●●● ● ●
●● ● ●●●●● ● ●● ●●●● ●
●●● ● ● ●●
1.00

●● ●● ● ●

●●
●●● ●

20

● ●
● ● ●● ● ●
5e−01

● ●
● ●
●● ●
●● ●

10

● ●

0.20


5e−02

● ●
0.05


● ●

5e−02 5e−01 5e+00 5e+01 0.05 0.20 1.00 5.00 20.00 5 10 20 50 100

w Cap w Lab w Mat

Figure 2.47: Marginal value products and corresponding input prices

138
2 Primal Approach: Production Function

The resulting graphs are shown in figure 2.47. They indicate that the marginal value products of
most firms are higher than the corresponding input prices. This indicates that most firms could
increase their profit by using more of all inputs. Given that the estimated Translog function
shows that all firms operate under increasing returns to scale, it is not surprising that most firms
would gain from increasing all input quantities. Therefore, the question arises why the firms in
the sample did not do this. This questions has already been addressed in section 2.3.10.

2.6.14 First-order conditions for cost minimization


As the marginal rates of technical substitution differ between observations for the three other
functional forms, we use scatter plots for visualizing the comparison of the input price ratios
with the negative inverse marginal rates of technical substitution: As the marginal rates of
technical substitution are meaningless if the monotonicity condition is not fulfilled, we limit the
comparisons to the observations, where all monotonicity conditions are fulfilled:

> compPlot( ( dat$pCap / dat$pLab )[ dat$monoTL ],


+ - dat$mrtsLabCapTL[ dat$monoTL ] )
> compPlot( ( dat$pCap / dat$pMat )[ dat$monoTL ],
+ - dat$mrtsMatCapTL[ dat$monoTL ] )
> compPlot( ( dat$pLab / dat$pMat )[ dat$monoTL ],
+ - dat$mrtsMatLabTL[ dat$monoTL ] )
> compPlot( ( dat$pCap / dat$pLab )[ dat$monoTL ],
+ - dat$mrtsLabCapTL[ dat$monoTL ], log = "xy" )
> compPlot( ( dat$pCap / dat$pMat )[ dat$monoTL ],
+ - dat$mrtsMatCapTL[ dat$monoTL ], log = "xy" )
> compPlot( ( dat$pLab / dat$pMat )[ dat$monoTL ],
+ - dat$mrtsMatLabTL[ dat$monoTL ], log = "xy" )

The resulting graphs are shown in figure 2.48.


Furthermore, we use histograms to visualize the (absolute and relative) differences between the
input price ratios and the corresponding negative inverse marginal rates of technical substitution:

> hist( ( - dat$mrtsLabCapTL - dat$pCap / dat$pLab )[ dat$monoTL ] )


> hist( ( - dat$mrtsMatCapTL - dat$pCap / dat$pMat )[ dat$monoTL ] )
> hist( ( - dat$mrtsMatLabTL - dat$pLab / dat$pMat )[ dat$monoTL ] )
> hist( log( - dat$mrtsLabCapTL / ( dat$pCap / dat$pLab ) )[ dat$monoTL ] )
> hist( log( - dat$mrtsMatCapTL / ( dat$pCap / dat$pMat ) )[ dat$monoTL ] )
> hist( log( - dat$mrtsMatLabTL / ( dat$pLab / dat$pMat ) )[ dat$monoTL ] )

The resulting graphs are shown in figure 2.49. The graphs in the middle column of figures 2.48
and 2.49 show that the ratio between the capital price and the materials price is larger than the

139
2 Primal Approach: Production Function

4
● ●

0.6
● ●

0.5
60

3
− MRTS Lab Cap

− MRTS Mat Cap

− MRTS Mat Lab


0.4
40

2
0.3




● ● ●
●●
0.2

● ●

20

● ●
● ●● ●● ●

1
● ● ● ●

● ●
● ● ● ● ●
0.1

●● ●● ●●●● ● ●
● ●●●●● ●●●●● ●● ●
●● ● ●● ● ● ●●● ●
● ● ●● ● ●●





●●

●● ●●●
●●● ● ●●
● ● ● ●
● ●
● ● ●


●●
●●

● ●
● ● ● ● ● ● ●●
●●
●●●
●●● ●
●●

0.0





●●
●●
●● ● ●

●●


●●

●●●

● ●
● ●●
●●
0

0
0 20 40 60 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0 1 2 3 4

w Cap / w Lab w Cap / w Mat w Lab / w Mat


1e+02

0.500


● ● ●

1.000
● ● ●
● ● ● ●●
1e+01

●●
●●
● ● ● ●
● ●
●● ●
●● ●● ●●● ●

0.100

●● ● ● ●
● ● ● ●● ●●
− MRTS Lab Cap

− MRTS Mat Cap

●●● ●
●●●
− MRTS Mat Lab

●●● ●● ●●●● ● ●● ● ● ●
● ● ● ●● ●● ● ●● ● ● ●● ● ●
●●
●● ● ● ●● ● ●●● ●
●● ● ●
●●● ● ●●
● ● ●● ●●
0.100

● ● ● ● ●● ● ● ●
● ●●● ●●
●●● ● ●●●
1e+00

●●● ● ●● ●
● ●●
● ●● ●● ● ● ●
●●●● ● ● ●●●●●● ● ●

● ● ●
● ●● ● ● ● ●● ●● ● ● ●
● ● ●
0.020

● ●●
●●
●●
● ●● ● ● ●● ●

●●●●●
●●● ●●●● ● ●●
● ● ● ●

●●● ● ● ●●●
●●●● ● ●●
1e−01

0.010

● ●●
●● ● ●
●● ●
0.005

● ●
● ● ● ●



1e−02

0.001

●● ●
0.001

● ● ●

1e−02 1e+00 1e+02 0.001 0.005 0.050 0.500 0.001 0.010 0.100 1.000

w Cap / w Lab w Cap / w Mat w Lab / w Mat

Figure 2.48: First-order conditions for costs minimization

140
2 Primal Approach: Production Function

60
30
40

50
25
30

40
Frequency

Frequency

Frequency
20

30
15
20

20
10
10

10
5
0

0
0 20 40 60 80 −0.6 −0.2 0.2 0.4 0.6 0 1 2 3 4

− MrtsLabCap − wCap / wLab − MrtsMatCap − wCap / wMat − MrtsMatLab − wLab / wMat


40

30
25

25
30
20

20
Frequency

Frequency

Frequency
15

20

15
10

10
10
5

5
0

−4 −2 0 2 4 −4 −2 0 2 −6 −4 −2 0 2

log(−MrtsLabCap / (wCap / wLab)) log(−MrtsMatCap / (wCap / wMat)) log(−MrtsMatLab / (wLab / wMat))

Figure 2.49: First-order conditions for costs minimization

141
2 Primal Approach: Production Function

absolute value of the marginal rate of technical substitution between materials and capital for a
majority of the firms in the sample:

wcap M Pcap
> −M RT Smat,cap = (2.130)
wmat M Pmat

Hence, these firms can get closer to the minimum of their production costs by substituting
materials for capital, because this will decrease the marginal product of materials and increase
the marginal product of capital so that the absolute value of the MRTS between materials and
capital increases and gets closer to the corresponding input price ratio. The graphs on the left
indicate that approximately half of the firms should substitute labor for capital, while the other
half should substitute capital for labor. The graphs on the right indicate that a majority of
the firms should substitute materials for labor. Hence, the majority of the firms could reduce
production costs particularly by using more materials and using less labor or less capital but
there might be (legal) regulations that restrict the use of materials (e.g. fertilizers, pesticides).

2.6.15 Mean-scaled quantities


The Translog functional form is often estimated with mean-scaled variables. In the case of a
Translog production function, it is estimated with mean-scaled input quantities and sometimes
also with mean-scaled output quantities:

y ∗ = y/ȳ (2.131)
x∗i = xi /x̄i ∀ i (2.132)

The following commands create variables with mean-scaled output and input quantities:

> dat$qmOut <- with( dat, qOut / mean( qOut ) )


> dat$qmCap <- with( dat, qCap / mean( qCap ) )
> dat$qmLab <- with( dat, qLab / mean( qLab ) )
> dat$qmMat <- with( dat, qMat / mean( qMat ) )

This implies that the logarithms of the mean values of these variables are zero (except for negli-
gible very small rounding errors):

> log( colMeans( dat[ , c( "qmOut", "qmCap", "qmLab", "qmMat" ) ] ) )

qmOut qmCap qmLab qmMat


-1.110223e-16 -1.110223e-16 0.000000e+00 0.000000e+00

Please note that mean-scaling does not imply that the mean values of the logarithmic variables
are zero:

> colMeans( log( dat[ , c( "qmOut", "qmCap", "qmLab", "qmMat" ) ] ) )

142
2 Primal Approach: Production Function

qmOut qmCap qmLab qmMat


-0.4860021 -0.3212057 -0.1565112 -0.2128551

The following derivation explores the relationship between a Translog production function with
mean-scaled quantities and a Translog production function with the original quantities:

1 XX ∗
ln y ∗ = α0∗ + αi∗ ln x∗i + α ln x∗i ln x∗j
X
(2.133)
i
2 i j ij
1 XX ∗
ln (y/ȳ) = α0∗ + αi∗ ln (xi /x̄i ) +
X
α ln (xi /x̄i ) ln (xj /x̄j ) (2.134)
i
2 i j ij
1 XX ∗
ln y − ln ȳ = α0∗ + αi∗ (ln xi − ln x̄i ) +
X
α (ln xi − ln x̄i ) (ln xj − ln x̄j ) (2.135)
i
2 i j ij

ln y = α0∗ + ln ȳ + αi∗ ln xi − αi∗ ln x̄i


X X
(2.136)
i i
1 XX ∗ XX
∗ 1 XX ∗
+ αij ln xi ln xj − αij ln xi ln x̄j + α ln x̄i ln x̄j
2 i j i j
2 i j ij
 
1 XX ∗
ln y = α0∗ + ln ȳ − αi∗ ln x̄i +
X
α ln x̄i ln x̄j  (2.137)
i
2 i j ij
 
X
α ∗ −
X
∗ 1 XX ∗
+ i αij ln x̄j  ln xi + α ln xi ln xj
i j
2 i j ij

Thus, the relationship between the coefficients of the Translog function with the original quantities
and the coefficients of the Translog function with mean-scaled quantities is:

1 XX ∗
α0 = α0∗ + ln ȳ − αi∗ ln x̄i +
X
α ln x̄i ln x̄j (2.138)
i
2 i j ij

αi = αi∗ − ∗
X
αij ln x̄j ∀ i (2.139)
j

αij = αij ∀ i, j. (2.140)

Accordingly, the reciprocal relationship is:

1 XX
α0∗ = α0 − ln ȳ +
X
αi ln x̄i + αij ln x̄i ln x̄j (2.141)
i
2 i j

αi∗ = αi +
X
αij ln x̄j ∀ i (2.142)
j

αij = αij ∀ i, j. (2.143)

The following command estimates the Translog production function with mean-scaled quanti-
ties:

> prodTLm <- lm( log( qmOut ) ~ log( qmCap ) + log( qmLab ) + log( qmMat )

143
2 Primal Approach: Production Function

+ + I( 0.5 * log( qmCap )^2 ) + I( 0.5 * log( qmLab )^2 )


+ + I( 0.5 * log( qmMat )^2 ) + I( log( qmCap ) * log( qmLab ) )
+ + I( log( qmCap ) * log( qmMat ) ) + I( log( qmLab ) * log( qmMat ) ),
+ data = dat )
> summary( prodTLm )

Call:
lm(formula = log(qmOut) ~ log(qmCap) + log(qmLab) + log(qmMat) +
I(0.5 * log(qmCap)^2) + I(0.5 * log(qmLab)^2) + I(0.5 * log(qmMat)^2) +
I(log(qmCap) * log(qmLab)) + I(log(qmCap) * log(qmMat)) +
I(log(qmLab) * log(qmMat)), data = dat)

Residuals:
Min 1Q Median 3Q Max
-1.68015 -0.36688 0.05389 0.44125 1.26560

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.09392 0.08815 -1.065 0.28864
log(qmCap) 0.15004 0.11134 1.348 0.18013
log(qmLab) 0.79339 0.17477 4.540 1.27e-05 ***
log(qmMat) 0.50201 0.16608 3.023 0.00302 **
I(0.5 * log(qmCap)^2) -0.02573 0.20834 -0.124 0.90189
I(0.5 * log(qmLab)^2) -1.16364 0.67943 -1.713 0.08916 .
I(0.5 * log(qmMat)^2) -0.50368 0.43498 -1.158 0.24902
I(log(qmCap) * log(qmLab)) 0.56194 0.29120 1.930 0.05582 .
I(log(qmCap) * log(qmMat)) -0.40996 0.23534 -1.742 0.08387 .
I(log(qmLab) * log(qmMat)) 0.65793 0.42750 1.539 0.12623
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6412 on 130 degrees of freedom


Multiple R-squared: 0.6296, Adjusted R-squared: 0.6039
F-statistic: 24.55 on 9 and 130 DF, p-value: < 2.2e-16

As expected, the intercept and the first-order coefficients have adjusted to the new units of
measurement, while the second-order coefficients of the Translog function remain unchanged
(compare with estimates in section 2.6.2):

> all.equal( coef(prodTL)[-c(1:4)], coef(prodTLm)[-c(1:4)],


+ check.attributes = FALSE )

144
2 Primal Approach: Production Function

[1] TRUE

In case of functional forms that are invariant to the units of measurement (e.g. linear, Cobb-
Douglas, quadratic, Translog), mean-scaling does not change the relative indicators of the tech-
nology (e.g. output elasticities, elasticities of scale, relative marginal rates of technical substitu-
tion, elasticities of substitution). As the logarithms of the mean values of the mean-scaled input
quantities are zero, the first-order coefficients are equal to the output elasticities at the sample
mean (see equation 2.122), i.e. the output elasticity of capital is 0.15, the output elasticity of
labor is 0.793, the output elasticity of materials is 0.502, and the elasticity of scale is 1.445 at
the sample mean.

2.7 Evaluation of different functional forms


In this section, we will discuss the appropriateness of the four different functional forms for
analyzing the production technology in our data set. If one functional form is nested in another
functional form, we can use standard statistical tests to compare these functional forms. We have
done this already in section 2.5 (linear production function vs. quadratic production function)
and in section 2.6 (Cobb-Douglas production function vs. Translog production function). The
tests clearly reject the linear production function in favor of the quadratic production function
but it is less clear whether the Cobb-Douglas production function is rejected in favor of the
Translog production function.
It is much less straight-forward to compare non-nested models such as the quadratic and the
Translog production functions.

2.7.1 Goodness of fit


As the linear and quadratic models use different dependent variables than the Cobb-Douglas and
Translog models (y vs. ln y), we cannot simply compare the R2 -values. However, we can calculate
the hypothetical R2 -values regarding y for the Cobb-Douglas and Translog production functions
and compare them with the R2 values of the linear and quadratic production functions. We can
also calculate the hypothetical R2 -value regarding ln y for the linear and quadratic production
functions and compare them with the R2 values of the Cobb-Douglas and Translog production
functions. We can calculate the (hypothetical) R2 values with function rSquared (package misc-
Tools). The first argument of this function must be a vector of the observed dependent variable
and the second argument must be a vector of the residuals. We start by extracting the R2 values
from the linear and quadratic models and calculate the hypothetical R2 -values regarding y for
the Cobb-Douglas and Translog production functions:

> summary(prodLin)$r.squared

[1] 0.786819

145
2 Primal Approach: Production Function

> summary(prodQuad)$r.squared

[1] 0.8448983

> rSquared( dat$qOut, dat$qOut - dat$qOutCD )

[,1]
[1,] 0.8067198

> rSquared( dat$qOut, dat$qOut - dat$qOutTL )

[,1]
[1,] 0.7696638

In this case, the R2 value regarding y is considerably higher for the quadratic function than for
the other functional forms, particularly the Translog functional form, which has the lowest R2
value regarding y. Similarly, we can extract the R2 values from the Cobb-Douglas and Translog
models and calculate the hypothetical R2 -values regarding ln y for the linear and quadratic pro-
duction functions. As the logarithm of non-positive numbers is not defined, we need to exclude
observations with non-positive predicted output quantities:

> summary(prodCD)$r.squared

[1] 0.5943154

> summary(prodTL)$r.squared

[1] 0.6295696

> rSquared( log( dat$qOut[ dat$qOutLin > 0 ] ),


+ log( dat$qOut[ dat$qOutLin > 0 ] ) - log( dat$qOutLin[ dat$qOutLin > 0 ] ) )

[,1]
[1,] 0.3796727

> rSquared( log( dat$qOut ), log( dat$qOut ) - log( dat$qOutQuad ) )

[,1]
[1,] 0.5481309

In contrast to the R2 values regarding y, the R2 value regarding ln y is considerably higher for
the Translog function than for the other functional forms. Hence, in our case, the R2 values do
not help much to select the most suitable functional form. As the quadratic and the Translog
functional forms have the same number of coefficients, we can base our comparison of these

146
2 Primal Approach: Production Function

functional forms on the unadjusted R2 values. In order to compare models that have different
numbers of coefficients, one should rather use adjusted R2 values.
Furthermore, we can visually compare the fit of the two models by looking at figures 2.7, 2.15,
2.23 and 2.36. The Cobb-Douglas and quadratic production functions clearly over-predict the
output of small firms so that small firms have rather large relative error terms. On the other
hand, the Translog production function has rather large absolute error terms for large firms. In
total, it seems that the fit of the linear and Translog production functions is slightly better than
the fit of the Cobb-Douglas and quadratic production functions.

2.7.2 Test for functional form misspecification


We conduct Ramsey’s (1969) Regression Equation Specification Error Test (RESET) on all four
functional forms:

> resettest( prodLin )

RESET test

data: prodLin
RESET = 17.639, df1 = 2, df2 = 134, p-value = 1.584e-07

> resettest( prodCD )

RESET test

data: prodCD
RESET = 2.9224, df1 = 2, df2 = 134, p-value = 0.05724

> resettest( prodQuad )

RESET test

data: prodQuad
RESET = 7.3663, df1 = 2, df2 = 128, p-value = 0.0009374

> resettest( prodTL )

RESET test

data: prodTL
RESET = 1.2811, df1 = 2, df2 = 128, p-value = 0.2813

While the linear and quadratic functional forms are clearly rejected, the Cobb-Douglas functional
form is only rejected at the 10%, and the Translog is not rejected at all.

147
2 Primal Approach: Production Function

2.7.3 Theoretical consistency


Furthermore, we can compare the theoretical consistency of the models. The total number of
monotonicity violations of the four functional forms can be obtained by

> with( dat, sum( eCap < 0 ) + sum( eLab < 0 ) + sum( eMat < 0 ) )

[1] 0

> with( dat, sum( mpCapCD < 0 ) + sum( mpLabCD < 0 ) + sum( mpMatCD < 0 ) )

[1] 0

> with( dat, sum( eCapQuad < 0 ) + sum( eLabQuad < 0 ) + sum( eMatQuad < 0 ) )

[1] 41

> with( dat, sum( eCapTL < 0 ) + sum( eLabTL < 0 ) + sum( eMatTL < 0 ) )

[1] 54

Alternatively, we could look at the number of observations, at which the monotonicity condition
is violated:

> table( dat$monoQuad )

FALSE TRUE
39 101

> table( dat$monoTL )

FALSE TRUE
48 92

While the monotonicity conditions are globally fulfilled for the linear and Cobb-Douglas functional
forms, the more flexible functional forms have several monotonicity violations. When comparing
only the two more flexible functional forms, we see that the monotonicity condition is more
often violated in the Translog function than in the quadratic function (according to both of the
measures of monotonicity violation).
While the Cobb-Douglas and Translog production functions always return positive output
quantities (as long as all input quantities are strictly positive), this is not necessarily the case
for linear and quadratic production functions. However, we have checked this in sections 2.3.4
and 2.5.6 and found only one negative predicted output quantity for the linear production func-
tion, while all output quantities predicted by the quadratic production function are positive.

148
2 Primal Approach: Production Function

Hence, the non-negativity condition is almost fulfilled for the linear production function, while it
is completely fulfilled for the remaining three functional forms.
Quasiconcavity is fulfilled at all observations for the linear and Cobb-Douglas production func-
tions and at 63 out of 140 observations for the Translog production function, while it is fulfilled at
no observation for the quadratic production function. However, quasiconcavity is mainly assumed
to simplify the (further) economic analysis (e.g. to obtain continuous input demand and output
supply functions) and there can be found good reasons for why the true production technology
is not quasiconcave (e.g. indivisibility of inputs).

2.7.4 Plausible estimates


While the elasticities of scale of some observations were implausibly large when estimated with
the linear production function, no elasticities of scale estimated by the Cobb-Douglas, quadratic
and Translog production functions are in the implausible range:

> table( dat$eScale >= 0.5 & dat$eScale <= 2 )

FALSE TRUE
67 73

> table( rep( sum( coef( prodCD )[-1] ) >= 0.5 & sum( coef( prodCD )[-1] ) <= 2,
+ nrow( dat ) ) )

TRUE
140

> table( dat$eScaleQuad >= 0.5 & dat$eScaleQuad <= 2 )

TRUE
140

> table( dat$eScaleTL >= 0.5 & dat$eScaleTL <= 2 )

TRUE
140

In the following we check for implausibly large output elasticities:

> with( dat, sum( eCap > 1 ) + sum( eLab > 1 ) + sum( eMat > 1 ) )

[1] 124

> ( coef( prodCD )[2] > 1 ) * nrow( dat ) +


+ ( coef( prodCD )[3] > 1 ) * nrow( dat ) +
+ ( coef( prodCD )[4] > 1 ) * nrow( dat )

149
2 Primal Approach: Production Function

log(qCap)
0

> with( dat, sum( eCapQuad > 1 ) + sum( eLabQuad > 1 ) + sum( eMatQuad > 1 ) )

[1] 28

> with( dat, sum( eCapTL > 1 ) + sum( eLabTL > 1 ) + sum( eMatTL > 1 ) )

[1] 56

The linear production function indicates the most implausibly large output elasticities, followed
by the Translog, quadratic, and Cobb-Douglas production functions, whereas the Cobb-Douglas
production function has no implausibly large output elasticities. When comparing just the two
more flexible functional forms, the Translog production function results in twice as many implau-
sible output elasticities than the quadratic production function.

2.7.5 Summary
The various criteria for assessing and comparing the appropriateness of the four functional forms
for analyzing the production technology in our data set are summarized in table 2.2. While the
linear production function seems to be the least appropriate for our specific empirical analysis, the
Cobb-Douglas functions performs rather well according to most indicators. When comparing the
two more flexible functional forms, we can see that the quadratic production function results in
less monotonicity violations and less implausible output elasticities than the Translog production
function, while the Translog production function seems to give a better fit to the data (visually
and according to Ramsey’s RESET).

Table 2.2: Criteria for assessing functional forms


linear Cobb-Douglas quadratic Translog
2
R of y 0.79 0.81 0.84 0.77
R2 of ln y 0.38 0.59 0.55 0.63
visual fit + − − (+)
RESET (P-value) 0 0.05724 0.00094 0.28127
total monotonicity violations 0 0 41 54
observations with monotonicity violated 0 0 39 48
negative output quantities 1 0 0 0
observations with quasiconcavity violated 0 0 140 77
implausible elasticities of scale 67 0 0 0
implausible output elasticities 124 0 28 56

150
2 Primal Approach: Production Function

2.8 Non-parametric production function


In order to avoid the specification of a functional form of the production function, the production
technology can be analyzed by nonparametric regression. We will use a local-linear kernel regres-
sor with an Epanechnikov kernel for the (continuous) regressors (see, e.g. Li and Racine, 2007;
Racine, 2008). “One can think of this estimator as a set of weighted linear regressions, where a
weighted linear regression is performed at each observation and the weights of the other obser-
vations decrease with the distance from the respective observation. The weights are determined
by a kernel function and a set of bandwidths, where a bandwidth for each explanatory variable
must be specified. The smaller the bandwidth, the faster the weight decreases with the distance
from the respective observation. In our study, we make the frequently used assumption that the
bandwidths can differ between regressors but are constant over the domain of each regressor.
While the bandwidths were initially determined by using a rule of thumb, nowadays increased
computing power allows us to select the optimal bandwidths for a given model and data set ac-
cording to the expected Kullback-Leibler cross-validation criterion (Hurvich, Simonoff, and Tsai,
1998). Hence, in nonparametric kernel regression, the overall shape of the relationship between
the inputs and the output is determined by the data and the (marginal) effects of the explana-
tory variables can differ between observations without being restricted by an arbitrarily chosen
functional form.” (Czekaj and Henningsen, 2012). Given that the distributions of the output
quantity and the input quantities are strongly right-skewed in our data set (many firms with
small quantities, only a few firms with large quantities), we use the logarithms of the output and
input quantities in order to achieve more uniform distributions, which are preferable in case of
fixed bandwidths. Furthermore, this allows us to interpret the gradients of the dependent vari-
able (logarithmic output quantity) with respect to the explanatory variables (logarithmic input
quantities) as output elasticities. The following commands load the R package np (Hayfield and
Racine, 2008), select the optimal bandwidths and estimate the model, and show summary results:

> library( "np" )

> prodNP <- npreg( log(qOut) ~ log(qCap) + log(qLab) + log(qMat), regtype = "ll",
+ bwmethod = "cv.aic", ckertype = "epanechnikov", data = dat,
+ gradients = TRUE )
> summary( prodNP )

Regression Data: 140 training points, in 3 variable(s)


log(qCap) log(qLab) log(qMat)
Bandwidth(s): 1.039647 332644 0.8418465

Kernel Regression Estimator: Local-Linear


Bandwidth Type: Fixed
Residual standard error: 0.6227669

151
2 Primal Approach: Production Function

R-squared: 0.6237078

Continuous Kernel Type: Second-Order Epanechnikov


No. Continuous Explanatory Vars.: 3

While the bandwidths of the logarithmic quantities of capital and materials are around one, the
bandwidth of the logarithmic labor quantity is rather large. These bandwidths indicate that the
logarithmic output quantity non-linearly changes with the logarithmic quantities of capital and
materials but it changes approximately linearly with the logarithmic labor quantity.
The estimated relationship between each explanatory variable and the dependent variable
(holding all other explanatory variables constant at their median values) can be visualized using
the plot method. We can use argument plot.errors.method to add confidence intervals:

> plot( prodNP, plot.errors.method = "bootstrap" )


16.0

16.0
log(qOut)

log(qOut)
14.5

14.5
13.0

13.0

9 10 11 12 13 11.5 12.0 12.5 13.0 13.5 14.0

log(qCap) log(qLab)
16.0
log(qOut)

14.5
13.0

9.0 9.5 10.0 10.5 11.0 11.5

log(qMat)

Figure 2.50: Production technology estimated by non-parametric kernel regression

The resulting graphs are shown in figure 2.50.


The estimated gradients of the dependent variable with respect to each explanatory variable
(holding all other explanatory variables constant at their median values) can be visualized using
the plot method with argument gradient set to TRUE:

> plot( prodNP, gradients = TRUE, plot.errors.method = "bootstrap" )

The resulting graphs are shown in figure 2.51.


Function npsigtest can be used to obtain the statistical significance of the explanatory vari-
ables:

152
Gradient Component 1 of log(qOut)

Gradient Component 2 of log(qOut)


2 Primal Approach: Production Function

0.5

0.5
−0.5

−0.5
9 10 11 12 13 11.5 12.0 12.5 13.0 13.5 14.0
Gradient Component 3 of log(qOut)

log(qCap) log(qLab)
0.5
−0.5

9.0 9.5 10.0 10.5 11.0 11.5

log(qMat)

Figure 2.51: Gradients (output elasticities) estimated by non-parametric kernel regression

> npsigtest( prodNP )

Kernel Regression Significance Test


Type I Test with IID Bootstrap (399 replications, Pivot = TRUE, joint = FALSE)
Explanatory variables tested for significance:
log(qCap) (1), log(qLab) (2), log(qMat) (3)

log(qCap) log(qLab) log(qMat)


Bandwidth(s): 1.039647 332644 0.8418465

Individual Significance Tests


P Value:
log(qCap) 0.11779
log(qLab) < 2e-16 ***
log(qMat) < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

The results confirm the results from the parametric regressions that labor and materials have a
significant effect on the output while capital does not have a significant effect (at 10% significance
level).
The following commands plot histograms of the three output elasticities and the elasticity of
scale:

153
2 Primal Approach: Production Function

> hist( gradients( prodNP )[ ,1] )


> hist( gradients( prodNP )[ ,2] )
> hist( gradients( prodNP )[ ,3] )
> hist( rowSums( gradients( prodNP ) ) )
40

40
Frequency

Frequency
20

20
0

0
−0.1 0.0 0.1 0.2 0.3 0.0 0.2 0.4 0.6 0.8 1.0

capital labor
40

30
Frequency

Frequency
20

0 10
0

0.4 0.6 0.8 1.0 1.2 1.4 1.3 1.4 1.5 1.6 1.7 1.8 1.9

materials scale

Figure 2.52: Output elasticities and elasticities of scale estimated by non-parametric kernel
regression

The resulting graphs are shown in figure 2.52. The monotonicity condition is fulfilled at almost
all observations, only 1 output elasticity of capital and 0 output elasticity of labor is negative.
All firms operate under increasing returns to scale with most farms having an elasticity of scale
around 1.4.
Finally, we visualize the relationship between firm size and the elasticity of scale based on our
non-parametric estimation results:

> plot( dat$qOut, rowSums( gradients( prodNP ) ), log = "x" )


> plot( dat$X, rowSums( gradients( prodNP ) ), log = "x" )

The resulting graph is shown in figure 2.53. The smallest firms generally would gain most from
increasing their size. However, also the largest firms would still considerably gain from increasing
their size—perhaps even more than medium-sized firms but there is probably insufficient evidence
to be sure about this.

154
2 Primal Approach: Production Function

1.9

1.9
● ●
● ●
● ●
● ●
1.7

1.7
elaScaleNP

● ●
● elaScaleNP ●


● ●
● ● ● ●●
● ● ●● ●●
● ●●
● ●
● ●● ● ● ●● ●
● ●● ●●
1.5

1.5
● ●●
● ●● ●● ●● ●● ●
● ●● ●●● ●
● ● ● ●●●● ● ● ●● ● ●●●●●●
●● ●●

● ● ●
● ●


●●
●●●●● ● ●● ● ● ● ● ●●
●●●

●●
●● ●

● ●● ● ● ●●
●● ●●● ● ●
● ●●●●
●● ● ●●●●●●●

●●

●● ●
● ●● ● ●
● ● ●●●● ●

●● ● ● ●●
●● ●●
● ● ●●●●

●● ●●



●●●●

● ● ●
●●●●●●●


● ●●● ● ● ●● ● ●● ●●●●
● ●●● ● ●●● ●● ●
●●●

1.3

1.3

● ● ●
●● ● ● ●
● ●

1e+05 5e+05 5e+06 0.5 1.0 2.0 5.0

qOut X

Figure 2.53: Relationship between firm size and elasticities of scale estimated by non-parametric
kernel regression

155
3 Dual Approach: Cost Functions

3.1 Theory
3.1.1 Cost function
Total cost is defined as:
X
c= wi x i (3.1)
i

The cost function:


X
c(w, y) = min wi xi , s.t. f (x) ≥ y (3.2)
x
i

returns the minimal (total) cost that is required to produce at least the output quantity y given
input prices w.
It is important to distinguish the cost definition (3.1) from the cost function (3.2).

3.1.2 Cost flexibility and elasticity of size


The ratio between the relative change in total costs and the relative change in the output quantity
is called “cost flexibility:”
∂c(w, y) y
(3.3)
∂y c(w, y)
The inverse of the cost flexibility is called “elasticity of size:”

∂y c(w, y)
∗ (w, y) = (3.4)
∂c(w, y) y

At the cost-minimizing points, the elasticity of size is equal to the elasticity of scale (Chambers,
1988, p. 71–72). For homothetic production technologies such as the Cobb-Douglas production
technology, the elasticity of size is always equal to the elasticity of scale (Chambers, 1988, p. 72–
74).1

3.1.3 Short-run cost functions


As producers often cannot instantly adjust the quantity of the some inputs (e.g. buildings, land,
0 0
apple trees), we separate the vector of input quantities (x) into two subvectors (x = (x1 , x2 )0 ),

1
Further details about the relationship between the elasticity of size and the elasticity of scale are available, e.g.,
in McClelland, Wetzstein, and Musserwetz (1986).

156
3 Dual Approach: Cost Functions

where vector x1 includes the quantities of the variable inputs, i.e. the inputs that can be freely
adjusted in the short run, and vector x2 includes the quantities of the quasi-fixed inputs, i.e. the
inputs that cannot be adjusted in the short run. In this case, the production function becomes
y = f (x1 , x2 ).
In the long run, when all input quantities can be freely adjusted, the cost minimization problem
remains:
0 0
min w1 x1 + w2 x2 , s.t. f (x1 , x2 ) ≥ y (3.5)
x1 ,x2

and the cost function remains

0 0
c(w, y) = c(w1 , w2 , y) = min w1 x1 + w2 x2 , s.t. f (x1 , x2 ) ≥ y, (3.6)
x1 ,x2

where w1 denotes the vector of the prices of the variable inputs and w2 denotes the vector of the
prices of the quasi-fixed inputs.
However, in the short run, when only the variable input quantities (x1 ) can be freely adjusted,
while the quasi-fixed input quantities (x2 ) cannot be adjusted, the costs of the quasi-fixed inputs
0
(w2 x2 ) are “sunk costs” and thus are irrelevant for short-run cost minimization. Hence, one only
needs to take into account—and minimize—the variable costs:

0
min w1 x1 , s.t. f (x1 , x2 ) ≥ y. (3.7)
x1

Based on this short-run (variable) cost minimization, we can derive the short-run (variable) cost
function:
0
cv (w1 , y, x2 ) = min w1 x1 , s.t. f (x1 , x2 ) ≥ y, (3.8)
x1

where cv denotes the variable costs defined in equation (1.3).


Total short-run costs consist of variable costs and sunk costs (see, e.g., Chambers, 1988, p. 103):

0
cs (w, y, x2 ) = cs (w1 , w2 , y, x2 ) = cv (w1 , y, x2 ) + w2 x2 . (3.9)

The long-run cost function can be expressed in terms of the short-run total cost function or
the short-run (variable) cost function (see, e.g., Chambers, 1988, p. 103):

0
h i
c(w, y) = min cs (w1 , w2 , y, x2 ) = min cv (w1 , y, x2 ) + w2 x2 . (3.10)
x2 x2

If producers cannot instantly adjust the quantity of the some inputs, estimating a short-run
cost function with some quasi-fixed input quantities might be more appropriate than estimating
a (long-run) cost function which assumes that all input quantities quantities can be adjusted
instantly.

157
3 Dual Approach: Cost Functions

3.2 Cobb-Douglas cost function


3.2.1 Specification
We start with estimating a Cobb-Douglas cost function. It has the following specification:
!
Y α
c=A wi i y αy (3.11)
i

This function can be linearized to


X
ln c = α0 + αi ln wi + αy ln y (3.12)
i

with α0 = ln A.

3.2.2 Estimation
The linearized Cobb-Douglas cost function can be estimated by OLS:

> costCD <- lm( log( cost ) ~ log( pCap ) + log( pLab ) + log( pMat ) + log( qOut ),
+ data = dat )
> summary( costCD )

Call:
lm(formula = log(cost) ~ log(pCap) + log(pLab) + log(pMat) +
log(qOut), data = dat)

Residuals:
Min 1Q Median 3Q Max
-0.77663 -0.23243 -0.00031 0.24439 0.74339

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.75383 0.40673 16.605 < 2e-16 ***
log(pCap) 0.07437 0.04878 1.525 0.12969
log(pLab) 0.46486 0.14694 3.164 0.00193 **
log(pMat) 0.48642 0.08112 5.996 1.74e-08 ***
log(qOut) 0.37341 0.03072 12.154 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3395 on 135 degrees of freedom

158
3 Dual Approach: Cost Functions

Multiple R-squared: 0.6884, Adjusted R-squared: 0.6792


F-statistic: 74.56 on 4 and 135 DF, p-value: < 2.2e-16

3.2.3 Properties
As the coefficients of the (logarithmic) input prices are all non-negative, this cost function is
monotonically non-decreasing in input prices. Furthermore, the coefficient of the (logarithmic)
output quantity is non-negative so that this cost function is monotonically non-decreasing in
output quantities. The Cobb-Douglas cost function always implies no fixed costs, as the costs
are always zero if the output quantity is zero. Given that A = exp(α0 ) is always positive,
all Cobb-Douglas cost functions that are based on its (estimated) linearized version fulfill the
non-negativity condition.
Finally, we check if the Cobb-Douglas cost function is positive linearly homogeneous in input
prices. This condition is fulfilled if

t c(w, y) = c(t w, y) (3.13)


X
ln(t c) = α0 + αi ln(t wi ) + αy ln y (3.14)
i
X X
ln t + ln c = α0 + αi ln t + αi ln wi + αy ln y (3.15)
i i
X X
ln c + ln t = α0 + ln t αi + αi ln wi + αy ln y (3.16)
i i
X
ln c + ln t = ln c + ln t αi (3.17)
i
X
ln t = ln t αi (3.18)
i
X
1= αi (3.19)
i

Hence, the homogeneity condition is only fulfilled if the coefficients of the (logarithmic) input
prices sum up to one. As they sum up to 1.03 the homogeneity condition is not fulfilled in our
estimated model.

3.2.4 Estimation with linear homogeneity in input prices imposed


In order to estimate a Cobb-Douglas cost function with linear homogeneity imposed, we re-arrange
the homogeneity condition to get
N
X −1
αN = 1 − αi (3.20)
i=1

and replace αN in the cost function (3.12) by the right-hand side of the above equation:

N −1 N −1
!
X X
ln c = α0 + αi ln wi + 1 − αi ln wN + αy ln y (3.21)
i=1 i=1

159
3 Dual Approach: Cost Functions

N
X −1
ln c = α0 + αi (ln wi − ln wN ) + ln wN + αy ln y (3.22)
i=1
N
X −1
ln c − ln wN = α0 + αi (ln wi − ln wN ) + αy ln y (3.23)
i=1
N −1
c X wi
ln = α0 + αi ln + αy ln y (3.24)
wN i=1
wN

This Cobb-Douglas cost function with linear homogeneity in input prices imposed can be esti-
mated by following command:

> costCDHom <- lm( log( cost / pMat ) ~ log( pCap / pMat ) + log( pLab / pMat ) +
+ log( qOut ), data = dat )
> summary( costCDHom )

Call:
lm(formula = log(cost/pMat) ~ log(pCap/pMat) + log(pLab/pMat) +
log(qOut), data = dat)

Residuals:
Min 1Q Median 3Q Max
-0.77096 -0.23022 -0.00154 0.24470 0.74688

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.75288 0.40522 16.665 < 2e-16 ***
log(pCap/pMat) 0.07241 0.04683 1.546 0.124
log(pLab/pMat) 0.44642 0.07949 5.616 1.06e-07 ***
log(qOut) 0.37415 0.03021 12.384 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3383 on 136 degrees of freedom


Multiple R-squared: 0.5456, Adjusted R-squared: 0.5355
F-statistic: 54.42 on 3 and 136 DF, p-value: < 2.2e-16

The coefficient of the N th (logarithmic) input price can be obtained by the homogeneity condition
(3.20). Hence, the estimate of αMat is 0.4812 in our model.
As there is no theory that says which input price should be taken for the normalization/deflation,
it is desirable that the estimation results do not depend on the price that is used for the nor-
malization/deflation. This desirable property is fulfilled for the Cobb-Douglas cost function and

160
3 Dual Approach: Cost Functions

we can verify this by re-estimating the cost function, while using a different input price for the
normalization/deflation, e.g. capital:

> costCDHomCap <- lm( log( cost / pCap ) ~ log( pLab / pCap ) + log( pMat / pCap ) +
+ log( qOut ), data = dat )
> summary( costCDHomCap )

Call:
lm(formula = log(cost/pCap) ~ log(pLab/pCap) + log(pMat/pCap) +
log(qOut), data = dat)

Residuals:
Min 1Q Median 3Q Max
-0.77096 -0.23022 -0.00154 0.24470 0.74688

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.75288 0.40522 16.665 < 2e-16 ***
log(pLab/pCap) 0.44642 0.07949 5.616 1.06e-07 ***
log(pMat/pCap) 0.48117 0.07285 6.604 8.26e-10 ***
log(qOut) 0.37415 0.03021 12.384 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3383 on 136 degrees of freedom


Multiple R-squared: 0.8168, Adjusted R-squared: 0.8128
F-statistic: 202.2 on 3 and 136 DF, p-value: < 2.2e-16

The results are identical to the results from the Cobb-Douglas cost function with the price of
materials used for the normalization/deflation. The coefficient of the (logarithmic) capital price
can be obtained by the homogeneity condition (3.20). Hence, the estimate of αCap is 0.0724 in
our model with the capital price as numéraire, which is identical to the corresponding estimate
from the model with the price of materials as numéraire. Both models have identical residuals:

> all.equal( residuals( costCDHom ), residuals( costCDHomCap ) )

[1] TRUE

However, as the two models have different dependent variables (c/pMat and c/pCap ), the R2 -values
differ between the two models.
We can test the restriction for imposing linear homogeneity in input prices, e.g. by a Wald
test or a likelihood ratio test. As the models without and with homogeneity imposed (costCD

161
3 Dual Approach: Cost Functions

and costCDHom) have different dependent variables (c and c/pMat ), we cannot use the function
waldtest for conducting the Wald test but we have to use the function linearHypothesis
(package car) and specify the homogeneity restriction manually:
> library( "car" )
> linearHypothesis( costCD, "log(pCap) + log(pLab) + log(pMat) = 1" )

Linear hypothesis test

Hypothesis:
log(pCap) + log(pLab) + log(pMat) = 1

Model 1: restricted model


Model 2: log(cost) ~ log(pCap) + log(pLab) + log(pMat) + log(qOut)

Res.Df RSS Df Sum of Sq F Pr(>F)


1 136 15.563
2 135 15.560 1 0.0025751 0.0223 0.8814

> lrtest( costCDHom, costCD )

Likelihood ratio test

Model 1: log(cost/pMat) ~ log(pCap/pMat) + log(pLab/pMat) + log(qOut)


Model 2: log(cost) ~ log(pCap) + log(pLab) + log(pMat) + log(qOut)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -44.878
2 6 -44.867 1 0.0232 0.879

These two tests clearly show that the data do not contradict linear homogeneity in input prices.
PN
Alternatively, one can test the homogeneity restriction by rearranging the hypothesis i=1 αi =
PN
1 to δ = 0 with δ = i=1 αi − 1. The definition of the auxiliary variable δ can be re-arranged to:

N
X −1
αN = 1 − αi + δ (3.25)
i=1

Replacing αN in equation (3.12) by the right-hand side of equation (3.25), we get (similarly to
the derivation in equations (3.21)–(3.24)):

N −1
c X wi
ln = α0 + αi ln + δ ln wN + αy ln y (3.26)
wN i=1
wN

This equation can be estimated by OLS and a standard t-test can be used to test the restric-
tion δ = 0:

162
3 Dual Approach: Cost Functions

> summary( lm( log( cost / pMat ) ~ log( pCap / pMat ) + log( pLab / pMat ) +
+ log( pMat ) + log( qOut ), data = dat ) )

Call:
lm(formula = log(cost/pMat) ~ log(pCap/pMat) + log(pLab/pMat) +
log(pMat) + log(qOut), data = dat)

Residuals:
Min 1Q Median 3Q Max
-0.77663 -0.23243 -0.00031 0.24439 0.74339

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.75383 0.40673 16.605 < 2e-16 ***
log(pCap/pMat) 0.07437 0.04878 1.525 0.12969
log(pLab/pMat) 0.46486 0.14694 3.164 0.00193 **
log(pMat) 0.02565 0.17159 0.149 0.88140
log(qOut) 0.37341 0.03072 12.154 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3395 on 135 degrees of freedom


Multiple R-squared: 0.5456, Adjusted R-squared: 0.5322
F-statistic: 40.53 on 4 and 135 DF, p-value: < 2.2e-16

This test is identical to the Wald test conducted above and hence, gives exactly the same P-value.

3.2.5 Checking concavity in input prices


The last property that we have to check is the concavity in input prices. A continuous and twice
continuously differentiable function is concave, if its Hessian matrix is negative semidefinite. A
necessary and sufficient condition for negative semidefiniteness of a symmetric matrix is that
all its ith-order principal minors (not only its leading principal minors) are non-positive for i
being odd and non-negative for i being even for all i ∈ {1, . . . , N } (see section 1.5.2). The first
derivatives of the Cobb-Douglas cost function with respect to the input prices are:

∂c ∂ ln c c c
= = αi (3.27)
∂wi ∂ ln wi wi wi

Now, we can calculate the second derivatives as derivatives of the first derivatives (3.27):
 
∂2c ∂ ∂c ∂ αi wci
= ∂wi = (3.28)
∂wi ∂wj ∂wj ∂wj

163
3 Dual Approach: Cost Functions

αi ∂c c
= − δij αi 2 (3.29)
wi ∂wj wi
αi c c
= αj − δij αi 2 (3.30)
wi wj wi
c
= αi (αj − δij ) , (3.31)
wi wj

where δij (again) denotes Kronecker’s delta (2.82). Alternative, the second derivatives of the
Cobb-Douglas cost function with respect to the input prices can be written as:

∂2c fi fj fi
= − δij , (3.32)
∂wi ∂wj c wi

where fi = ∂c/∂wi indicates the first derivative.


We start with checking concavity in input prices of the Cobb-Douglas cost function without
homogeneity imposed. As argued in section 2.4.11.1, we do the calculations with the predicted
dependent variables rather than with the observed dependent variables.2 We can use following
command to obtain the total costs which are predicted by the Cobb-Douglas cost function without
homogeneity imposed:

> dat$costCD <- exp( fitted( costCD ) )

To simplify the calculations, we define short-cuts for the coefficients:

> cCap <- coef( costCD )[ "log(pCap)" ]


> cLab <- coef( costCD )[ "log(pLab)" ]
> cMat <- coef( costCD )[ "log(pMat)" ]

Using these coefficients, we compute the second derivatives of our estimated Cobb-Douglas cost
function:

> dat$hCapCap <- cCap * ( cCap - 1 ) * dat$costCD / dat$pCap^2


> dat$hLabLab <- cLab * ( cLab - 1 ) * dat$costCD / dat$pLab^2
> dat$hMatMat <- cMat * ( cMat - 1 ) * dat$costCD / dat$pMat^2
> dat$hCapLab <- cCap * cLab * dat$costCD / ( dat$pCap * dat$pLab )
> dat$hCapMat <- cCap * cMat * dat$costCD / ( dat$pCap * dat$pMat )
> dat$hLabMat <- cLab * cMat * dat$costCD / ( dat$pLab * dat$pMat )

Now, we prepare the Hessian matrix for the first observation:

> hessian <- matrix( NA, nrow = 3, ncol = 3 )


> hessian[ 1, 1 ] <- dat$hCapCap[1]
2
Please note that the selection of c has no effect on the test for concavity, because all elements of the Hessian
matrix include c as a multiplicative term and c is always positive so that the value of c does not change the
sign of the principal minors and the determinant, as |c · M | = c · |M |, where M denotes a quadratic matrix, c
denotes a scalar, and the two vertical bars denote the determinant function.

164
3 Dual Approach: Cost Functions

> hessian[ 2, 2 ] <- dat$hLabLab[1]


> hessian[ 3, 3 ] <- dat$hMatMat[1]
> hessian[ 1, 2 ] <- hessian[ 2, 1 ] <- dat$hCapLab[1]
> hessian[ 1, 3 ] <- hessian[ 3, 1 ] <- dat$hCapMat[1]
> hessian[ 2, 3 ] <- hessian[ 3, 2 ] <- dat$hLabMat[1]
> print( hessian )

[,1] [,2] [,3]


[1,] -5031.9274 7323.804 775.3358
[2,] 7323.8043 -152736.317 14046.1549
[3,] 775.3358 14046.155 -1570.0447

As all diagonal elements of this Hessian matrix are non-positive, the conditions regarding the
first-order principal minors are all fulfilled. In the following, we calculate the three second-order
principal minors and the determinant (third-order principal minor):

> det( hessian[-3,-3] )

[1] 714919939

> det( hessian[-2,-2] )

[1] 7299205

> det( hessian[-1,-1] )

[1] 42508376

> det( hessian )

[1] 121651514835

As all three second-order principal minors are non-negative, the conditions regarding the second-
order principal minors are all fulfilled. However, the third-order principal minor is strictly posi-
tive, which indicates that this Hessian matrix is not negative semidefinite and consequently, the
Cobb-Douglas cost function is not concave at the first observation.3
We can check the semidefiniteness of a matrix more conveniently with the command semidef-
initeness (package miscTools), which (by default) checks the signs of the principal minors and
returns a logical value indicating whether the necessary and sufficient conditions for negative or
positive semidefiniteness are fulfilled:

3
Please note that this Hessian matrix is not positive semidefinite either, because the first-order principal minors
of this Hessian are negative, while positive semidefiniteness requires that all principal minors are non-negative.
Hence, the Cobb-Douglas cost function is neither concave nor convex at the first observation.

165
3 Dual Approach: Cost Functions

> semidefiniteness( hessian, positive = FALSE )

[1] FALSE

In the following, we will check whether concavity in input prices is fulfilled at each observation
in the sample by stacking the Hessian matrices of all observations upon each other to a three-
dimensional array:
> hessianCD <- array( NA, c( 3, 3, nrow( dat ) ) )
> hessianCD[ 1, 1, ] <- dat$hCapCap
> hessianCD[ 2, 2, ] <- dat$hLabLab
> hessianCD[ 3, 3, ] <- dat$hMatMat
> hessianCD[ 1, 2, ] <- hessianCD[ 2, 1, ] <- dat$hCapLab
> hessianCD[ 1, 3, ] <- hessianCD[ 3, 1, ] <- dat$hCapMat
> hessianCD[ 2, 3, ] <- hessianCD[ 3, 2, ] <- dat$hLabMat
> dat$concaveCD <- apply( hessianCD, 3, semidefiniteness,
+ positive = FALSE )
> table( dat$concaveCD )

FALSE
140

This shows that our Cobb-Douglas cost function without linear homogeneity imposed is concave
in input prices not at a single observation.
Now, we will check, whether our Cobb-Douglas cost function with linear homogeneity imposed
is concave in input prices. Again, we obtain the predicted total costs:
> dat$costCDHom <- exp( fitted( costCDHom ) ) * dat$pMat
We create short-cuts for the estimated coefficients:
> chCap <- coef( costCDHom )[ "log(pCap/pMat)" ]
> chLab <- coef( costCDHom )[ "log(pLab/pMat)" ]
> chMat <- 1 - chCap - chLab
We compute the second derivatives:
> dat$hhCapCap <- chCap * ( chCap - 1 ) * dat$costCDHom / dat$pCap^2
> dat$hhLabLab <- chLab * ( chLab - 1 ) * dat$costCDHom / dat$pLab^2
> dat$hhMatMat <- chMat * ( chMat - 1 ) * dat$costCDHom / dat$pMat^2
> dat$hhCapLab <- chCap * chLab * dat$costCDHom /
+ ( dat$pCap * dat$pLab )
> dat$hhCapMat <- chCap * chMat * dat$costCDHom /
+ ( dat$pCap * dat$pMat )
> dat$hhLabMat <- chLab * chMat * dat$costCDHom /
+ ( dat$pLab * dat$pMat )

166
3 Dual Approach: Cost Functions

And we prepare the Hessian matrix for the first observation:

> hessianHom <- matrix( NA, nrow = 3, ncol = 3 )


> hessianHom[ 1, 1 ] <- dat$hhCapCap[1]
> hessianHom[ 2, 2 ] <- dat$hhLabLab[1]
> hessianHom[ 3, 3 ] <- dat$hhMatMat[1]
> hessianHom[ 1, 2 ] <- hessianHom[ 2, 1 ] <- dat$hhCapLab[1]
> hessianHom[ 1, 3 ] <- hessianHom[ 3, 1 ] <- dat$hhCapMat[1]
> hessianHom[ 2, 3 ] <- hessianHom[ 3, 2 ] <- dat$hhLabMat[1]
> print( hessianHom )

[,1] [,2] [,3]


[1,] -4901.0204 6835.826 745.4417
[2,] 6835.8256 -151446.932 13318.1722
[3,] 745.4417 13318.172 -1566.0312

As all diagonal elements of this Hessian matrix are non-positive, the conditions regarding the
first-order principal minors are all fulfilled. In the following, we calculate the three second-order
principal minors and the determinant (third-order principal minor):

> det( hessianHom[-3,-3] )

[1] 695515989

> det( hessianHom[-2,-2] )

[1] 7119468

> det( hessianHom[-1,-1] )

[1] 59796915

> det( hessianHom )

[1] -0.0003162841

All three second-order principal minors are non-negative and the third-order principal minor is
close to zero, where it is negative on some computers but positive on other computers. As Hessian
matrices of linear homogeneous functions are always singular, it is expected that the determinant
of the Hessian matrix (the N th-order principal minor) is zero. However, the computed deter-
minant of our Hessian matrix is not exactly zero due to rounding errors, which are unavoidable
on digital computers. Given that the determinant of the Hessian matrix of our Cobb-Douglas
cost function with linear homogeneity imposed should always be zero, the condition for negative

167
3 Dual Approach: Cost Functions

semidefiniteness regarding the N th-order principal minor (sign of the determinant of the Hes-
sian matrix) should always be fulfilled. Consequently, we can conclude that our Cobb-Douglas
cost function with linear homogeneity imposed is concave in input prices at the first observa-
tion. Again, we can check the semidefiniteness of a matrix more conveniently with the command
semidefiniteness:

> semidefiniteness( hessianHom, positive = FALSE )

[1] TRUE

In the following, we will check whether concavity in input prices is fulfilled at each observation
in the sample:

> hessianCDHom <- array( NA, c( 3, 3, nrow( dat) ) )


> hessianCDHom[ 1, 1, ] <- dat$hhCapCap
> hessianCDHom[ 2, 2, ] <- dat$hhLabLab
> hessianCDHom[ 3, 3, ] <- dat$hhMatMat
> hessianCDHom[ 1, 2, ] <- hessianCDHom[ 2, 1, ] <- dat$hhCapLab
> hessianCDHom[ 1, 3, ] <- hessianCDHom[ 3, 1, ] <- dat$hhCapMat
> hessianCDHom[ 2, 3, ] <- hessianCDHom[ 3, 2, ] <- dat$hhLabMat
> dat$concaveCDHom <-
+ apply( hessianCDHom, 3, semidefiniteness, positive = FALSE )
> table( dat$concaveCDHom )

TRUE
140

This result indicates that the concavity condition is fulfilled at all observations.
In fact, all Cobb-Douglas cost functions that are non-decreasing and linearly homogeneous in
all input prices are always concave (e.g. Coelli, 1995, p. 266).4

3.2.6 Optimal input quantities


Shepard’s Lemma says that the cost-minimizing input quantities are equal to the partial deriva-
tives of the cost functions with respect to the respective input prices. Hence, we can use equa-
tion (3.27) to calculate the cost-minimizing input quantities predicted by a Cobb-Douglas cost
function:
∂c c
xi = = αi (3.33)
∂wi wi
The following commands compare the observed input quantities with the cost-minimizing input
quantities that are predicted by our estimated Cobb-Douglas cost function with linear homogene-
ity imposed:
4
A proof and further details are available at http://www.econ.ucsb.edu/~tedb/Courses/GraduateTheoryUCSB/
concavity.pdf.

168
3 Dual Approach: Cost Functions

> compPlot( chCap * dat$costCDHom / dat$pCap, dat$qCap )


> compPlot( chLab * dat$costCDHom / dat$pLab, dat$qLab )
> compPlot( chMat * dat$costCDHom / dat$pMat, dat$qMat )
> compPlot( chCap * dat$costCDHom / dat$pCap, dat$qCap, log = "xy" )
> compPlot( chLab * dat$costCDHom / dat$pLab, dat$qLab, log = "xy" )
> compPlot( chMat * dat$costCDHom / dat$pMat, dat$qMat, log = "xy" )

1200000
● ● ●

100000

4e+05



qCap observed

800000

qLab observed

qMat observed


● ●

● ●● ● ●●

60000
● ● ●
● ●
● ●● ● ●
2e+05

● ● ● ●

400000
●●● ●
● ● ●● ●
● ● ●●●● ● ●
●● ● ●● ● ●
●●● ●
● ●

● ● ● ● ● ●

●●●● ●● ●●●●● ●●● ● ● ●● ●

●●●● ● ●●

●● ●●● ●

● ●
●● ●● ●● ● ●●●● ● ● ●

20000
●●
● ●

●●●● ●●● ● ● ●
●●●

●● ●●●● ● ● ●● ●

●●
●●

●●●● ● ●●●








●●●
● ●


●● ●●●●
● ●● ●●● ● ●●●●
●●
●●


●●●● ● ●
●● ●
●●
● ●
●●
●●
● ●● ●● ●● ● ●●

●●

●● ● ● ●● ●● ●● ●● ●●●●
●●●
●●
●●
●●

●●●●
● ●●●●

●●
● ●
●● ●●

●●
●● ●●●
●● ●●●
0e+00






●●

●● ● ●●●●●
●●
●●●●
●●● ●●●

● ●●


●●● ●
● ●●●●● ●
●●
●● ● ● ●● ●

● ● ●
0

0e+00 2e+05 4e+05 0 400000 800000 1200000 20000 60000 100000

qCap optimal qLab optimal qMat optimal


5e+05

● ● ●

● ●
● ●

● ● ●● ● ●
● ●

● ●● ● ●
● ● ● ●● ●
5e+05

● ●

5e+04
● ● ●
●● ● ● ●
●● ●
●● ●●
1e+05

●● ● ● ●●
qCap observed


qLab observed

qMat observed
●● ●●● ●● ● ● ● ● ●●●● ● ●
●● ●● ● ● ● ●

● ● ●● ● ● ● ●● ● ● ● ●●
● ●●●● ●●● ●●
● ● ● ●

●●●●●● ● ● ● ●●● ●●● ● ●●

● ●● ●● ● ● ● ●●●●●●
●●● ●●
●●●●
●●
● ●●
●●
●● ● ● ●● ● ●●
●●●●●●●● ●● ● ● ● ●● ● ● ● ● ●● ●
2e+05

● ●● ●●● ● ●● ● ●
●●●●●● ● ● 2e+04 ● ● ● ●●

● ● ●●
● ●●● ● ●
● ●● ● ●●●
●● ●●●●● ●● ●
●● ●●●
● ●
● ● ●● ●

● ●● ● ●

●●●●
●● ● ● ●
●● ● ● ●

●●
2e+04

●●● ● ● ● ●● ● ●●● ●

●● ● ● ● ●●●● ● ● ● ●●●● ● ● ●
● ●
● ●● ● ● ●
●● ●● ● ●●
● ●●●
● ●● ●
● ● ● ● ● ●● ●


● ●●
● ● ●● ● ●

● ● ●●●● ● ●● ●
● ● ● ● ●●
● ● ● ●

● ● ● ●●
● ●● ●●
● ● ●● ●
● ● ● ● ●
5e+03

● ●
5e+04


5e+03

● ●●

5e+03 2e+04 1e+05 5e+05 5e+04 2e+05 5e+05 5e+03 2e+04 5e+04

qCap optimal qLab optimal qMat optimal

Figure 3.1: Observed and optimal input quantities

The resulting graphs are shown in figure 3.1. These results confirm results based on the production
function: most firms should increase the use of materials and decrease the use of capital goods.

3.2.7 Optimal cost shares


Given Shepard’s Lemma, the optimal cost shares derived from a Cobb-Douglas cost function are
equal to the coefficients of the (logarithmic) input prices:

∂ ln c(w, y) ∂c(w, y) wi wi wi xi (w, y)


αi = = = xi (w, y) = = si (w, y), (3.34)
∂ ln wi ∂wi ∂c(w, y) c(w, y) c(w, y)

where si = wi xi /c are the cost shares.

169
3 Dual Approach: Cost Functions

The following commands draw histograms of the observed cost shares and compare them to
the optimal cost shares, which are predicted by our Cobb-Douglas cost function with linear
homogeneity imposed:

> hist( dat$pCap * dat$qCap / dat$cost )


> lines( rep( chCap, 2), c( 0, 100 ), lwd = 3 )
> hist( dat$pLab * dat$qLab / dat$cost )
> lines( rep( chLab, 2), c( 0, 100 ), lwd = 3 )
> hist( dat$pMat * dat$qMat / dat$cost )
> lines( rep( chMat, 2), c( 0, 100 ), lwd = 3 )

30

30
35

25

25
30
25

20

20
Frequency

Frequency

Frequency
20

15

15
15

10

10
10

5
5
0

0
0.0 0.1 0.2 0.3 0.4 0.3 0.4 0.5 0.6 0.7 0.8 0.1 0.2 0.3 0.4 0.5 0.6

cost share Cap cost share Lab cost share Mat

Figure 3.2: Observed and optimal costs shares

The resulting graphs are shown in figure 3.2. These results confirm earlier results: most firms
should increase the use of materials and decrease the use of capital goods.

3.2.8 Derived input demand functions


Shepard’s Lemma says that the partial derivatives of the cost functions with respect to the input
prices are the conditional input demand functions. Therefore, the input demand functions based
on a Cobb-Douglas cost function are equal to the right-hand side of equation (3.27):

∂c(w, y) c(w, y)
xi (w, y) = = αi (3.35)
∂wi wi

Input demand functions should be homogeneous of degree zero in input prices:

xi (t w, y) = xi (w, y) (3.36)

170
3 Dual Approach: Cost Functions

This condition is fulfilled for the input demand functions derived from any linearly homogeneous
Cobb-Douglas cost function:

c(t w, y) t c(w, y) c(w, y)


xi (t w, y) = αi = αi = αi = xi (w, y) (3.37)
t wi t wi wi

Furthermore, input demand functions should be symmetric with respect to input prices:

∂xi (t w, y) ∂xj (t w, y)
= (3.38)
∂wj ∂wi

This condition is fulfilled for the input demand functions derived from any Cobb-Douglas cost
function:

∂xi (w, y) αi ∂c(w, y) αi c(w, y) αi αj


= = αj = c(w, y) ∀ i 6= j (3.39)
∂wj wi ∂wj wi wj wi wj
∂xj (w, y) αj ∂c(w, y) αj c(w, y) αi αj
= = αi = c(w, y) ∀ i 6= j (3.40)
∂wi wj ∂wi wj wi wi wj

Finally, input demand functions should fulfill the negativity condition:

∂xi (t w, y)
≤0 (3.41)
∂wi

This condition is fulfilled for the input demand functions derived from any linearly homogeneous
Cobb-Douglas cost function that is monotonically increasing in all input prices (as this implies
0 ≤ αi ≤ 1):

∂xi (w, y) αi ∂c(w, y) c(w, y)


= − αi (3.42)
∂wi wi ∂wi wi2
αi c(w, y) c(w, y)
= αi − αi (3.43)
wi wi wi2
c(w, y)
= αi (αi − 1) ≤ 0 (3.44)
wi2

3.2.9 Derived input demand elasticities


Based on the derived input demand functions (3.35), we can derive the conditional input demand
elasticities:

∂xi (w, y) wj
ij (w, y) = (3.45)
∂wj xi (w, y)
αi ∂c(w, y) wj c(w, y) wj
= − δij αi (3.46)
wi ∂wj xi (w, y) wj2 xi (w, y)
αi c(w, y) wj c(w, y)
= αj − δij αi (3.47)
wi wj xi (w, y) wi xi (w, y)

171
3 Dual Approach: Cost Functions

c(w, y) αi
= αi αj − δij (3.48)
wi xi (w, y) si (w, y)
αi αj αi
= − δij (3.49)
si (w, y) si (w, y)
= αj − δij (3.50)

∂xi (w, y) y
iy (w, y) = (3.51)
∂y xi (w, y)
∂c(w, y) αi y
= (3.52)
∂y wi xi (w, y)
c(w, y) αi y
= αy (3.53)
y wi xi (w, y)
c(w, y) y
= αi αy (3.54)
y wi xi (w, y)
c(w, y)
= αi αy (3.55)
wi xi (w, y)
αi
= αy (3.56)
si (w, y)
= αy (3.57)

All derived input demand elasticities based on our estimated Cobb-Douglas cost function with
linear homogeneity imposed are presented in table 3.1. If the price of capital increases by one
percent, the cost-minimizing firm will decrease the use of capital by 0.93% and increase the
use of labor and materials by 0.07% each. If the price of labor increases by one percent, the
cost-minimizing firm will decrease the use of labor by 0.55% and increase the use of capital and
materials by 0.45% each. If the price of materials increases by one percent, the cost-minimizing
firm will decrease the use of materials by 0.52% and increase the use of capital and labor by
0.48% each. If the cost-minimizing firm increases the output quantity by one percent, (s)he will
increase all input quantities by 0.37%. The price elasticities derived from the Cobb-Douglas cost
function with linear homogeneity imposed are rather similar to the price elasticities derived from
the Cobb-Douglas production function but the elasticities with respect to the output quantity are
rather dissimilar (compare Tables 2.1 and 3.1). In theory, elasticities derived from a cost function,
which corresponds to a specific production function, should be identical to elasticities which are
directly derived from the production function. However, although our production function and
cost function are supposed to model the same production technology, their elasticities are not
the same. These differences arise from different econometric assumptions (e.g. exogeneity of
explanatory variables) and the disturbance terms, which differ between both models so that the
production technology is fitted differently.
Given Euler’s theorem and the cost function’s homogeneity in input prices, following condition

172
3 Dual Approach: Cost Functions

Table 3.1: Conditional demand elasticities derived from Cobb-Douglas cost function (with linear
homogeneity imposed)
wcap wlab wmat y
xcap -0.93 0.45 0.48 0.37
xlab 0.07 -0.55 0.48 0.37
xmat 0.07 0.45 -0.52 0.37

for the price elasticities can be obtained:


X
ij = 0 ∀ i (3.58)
j

The input demand elasticities derived from any linearly homogeneous Cobb-Douglas cost function
fulfill the homogeneity condition:
X X X X
ij (w, y) = (αj − δij ) = αj − δij = 1 − 1 = 0 ∀ i (3.59)
j j j j

As we computed the elasticities in table 3.1 based on the Cobb-Douglas function with linear
homogeneity imposed, these conditions are fulfilled for these elasticities, e.g. for i = cap: -0.93 +
0.45 + 0.48 = 0.
It follows from the necessary conditions for the concavity of the cost function that all own-price
elasticities are non-positive:
ii ≤ 0 ∀ i (3.60)

The input demand elasticities derived from any linearly homogeneous Cobb-Douglas cost function
that is monotonically increasing in all input prices fulfill the negativity condition, because linear
= 1) and monotonicity (αi ≥ 0 ∀ i) together imply that all αi s (optimal cost
P
homogeneity ( i αi
shares) are between zero and one (0 ≤ αi ≤ 1 ∀ i):

ii = αi − 1 ≤ 0 ∀ i (3.61)

As our Cobb-Douglas function with linear homogeneity imposed fulfills the homogeneity, mono-
tonicity, and concavity condition, the own-price elasticities (on the diagonal) in table 3.1 fulfill
the negativity conditions.
The symmetry condition for derived demand elasticities

si ij = sj ji ∀ i, j (3.62)

is fulfilled for any Cobb-Douglas cost function:

si ij = αi αj = αj αi = sj ji ∀ i 6= j (3.63)


si ij = si ii = sj jj = sj ji ∀ i = j (3.64)

173
3 Dual Approach: Cost Functions

Hence, the symmetry condition is also fulfilled for the elasticities in table 3.1, e.g. scap cap,lab =
αcap cap,lab = 0.07 · 0.45 is equal to slab lab,cap = αlab lab,cap = 0.45 · 0.07.

3.2.10 Cost flexibility and elasticity of size


The coefficient of the (logarithmic) output quantity is equal to the “cost flexibility” (3.3). A value
of 0.37 (as in our estimated Cobb-Douglas cost function with linear homogeneity in input prices
imposed) means that a 1% increase in the output quantity results in a cost increase of 0.37%. The
“elasticity of size” is the inverse of the cost flexibility (3.4). A value of 2.67 (as derived from our
estimated Cobb-Douglas cost function with linear homogeneity in input prices imposed) means
that if costs are increased by 1%, the output quantity increases by 2.67%.

3.2.11 Marginal costs, average costs, and total costs


Marginal costs can be calculated by

∂c(w, y) c(w, y)
= αy (3.65)
∂y y

These marginal costs should be linearly homogeneous in input prices:

∂c(t w, y) ∂c(w, y)
=t (3.66)
∂y ∂y

This condition is fulfilled for the marginal costs derived from a linearly homogeneous Cobb-
Douglas cost function:

∂c(t w, y) c(t w, y) t c(w, y) c(w, y) ∂c(w, y)


= αy = αy = t αy =t (3.67)
∂y y y y ∂y

We can compute the marginal costs by following command:

> chOut <- coef( costCDHom )[ "log(qOut)" ]


> dat$margCost <- chOut * dat$costCDHom / dat$qOut

We can visualize these marginal costs with a histogram.

> hist( dat$margCost, 20 )

The resulting graph is shown in figure 3.3. It indicates that producing one additional output unit
increases the costs of most firms by around 0.08 monetary units.
Furthermore, we can check if the marginal costs are equal to the output prices, which is a
first-order condition for profit maximization:

> compPlot( dat$pOut, dat$margCost )


> compPlot( dat$pOut, dat$margCost, log = "xy" )

174
3 Dual Approach: Cost Functions

25
Frequency

15
0 5
0.0 0.1 0.2 0.3 0.4 0.5

margCost

Figure 3.3: Marginal costs


0.0 0.5 1.0 1.5 2.0 2.5 3.0

2.00
0.50


margCost

margCost


●●
●●

● ●

● ● ●
● ● ●
● ●●●●


●● ●●●
●● ●●



● ● ●
● ● ● ●
0.10

●●●● ●
●●●●

●●● ●● ●●

● ●
● ●● ●


●●●●●
●●●● ●
● ●●
●●
● ●
●●●●● ●
●●
●● ●
●●●●●
● ●●●● ●●●
● ●●● ● ●● ● ●




●● ●● ● ●
●● ● ●

●● ● ●

●● ●● ●●

●●● ●●
●●


● ●● ● ● ● ● ●●
●●●●
●● ●● ●
●● ●

●●●● ● ●●●● ● ●
● ●● ●● ●● ● ● ●
0.02

●●
●●
●●●

● ●
●●
●●● ●●●● ● ●● ●
●● ●●● ●

0.0 0.5 1.0 1.5 2.0 2.5 3.0 0.02 0.10 0.50 2.00

pOut pOut

Figure 3.4: Marginal costs and output prices

175
3 Dual Approach: Cost Functions

The resulting graphs are shown in figure 3.4. The marginal costs of all firms are considerably
smaller than their output prices. Hence, all firms would gain from increasing their output level.
This is not surprising for a technology with large economies of scale.
Now, we analyze, how the marginal costs depend on the output quantity:

> plot( dat$qOut, dat$margCost )


> plot( dat$qOut, dat$margCost, log = "xy" )

0.50
● ●
0.5

●● ●

● ● ● ●●


● ● ●●
0.4

● ●●

0.20


● ● ●●
● ●● ●●
margCost

margCost
● ●●●●

● ●
●●●●
0.3

●●●
●●
●●●
●● ●
● ●●●

0.10
●● ● ●● ●●

● ●●●●●● ●

● ●●● ●●● ●● ●

● ●●●●
● ●● ●●●
● ●● ●●●● ●
0.2


● ● ●
●● ●●●●●

●● ●● ● ● ●
●●
●●●

0.05
● ● ● ● ●
●●

●● ● ● ●● ●●
●●







● ●●● ●
0.1



●●●
● ●
●●●●






● ● ●●

●●

●●
●● ●●●
● ● ● ●
●●●●

● ●
●●●
●●
● ● ●
●●●
●● ●●
●●●●● ● ●
● ● ●● ● ● ●
● ●●●● ● ● ●

0.0e+00 1.0e+07 2.0e+07 1e+05 5e+05 5e+06

qOut qOut

Figure 3.5: Marginal costs depending on output quantity and firm size

The resulting graphs are shown in figure 3.5. Due to the large economies of size, the marginal
costs are decreasing with the output quantity.
The relation between output quantity and marginal costs in a Cobb-Douglas cost function can
be analyzed by taking the first derivative of the marginal costs (3.65) with respect to the output
quantity:
 
∂M C ∂ αy c(w,y)
y
= (3.68)
∂y ∂y
αy ∂c(w, y) c(w, y)
= − αy (3.69)
y ∂y y2
αy c(w, y) c(w, y)
= αy − αy (3.70)
y y y2
c
= αy 2 (αy − 1) (3.71)
y

As αy , c, and y 2 should always be positive, the marginal costs are (globally) increasing in the
output quantity, if there are decreasing returns to size (i.e. αy > 1) and the marginal costs are
(globally) decreasing in the output quantity, if there are increasing returns to size (i.e. αy < 1).
Now, we illustrate our estimated model by drawing the total cost curve for output quantities
between the minimum and the maximum output level in the sample, where we use the sample

176
3 Dual Approach: Cost Functions

means of the input prices. Furthermore, we draw the average cost curve and the marginal cost
curve for the above-mentioned output quantities and input prices:

> y <- seq( min( dat$qOut ), max( dat$qOut ), length.out = 200 )


> chInt <- coef(costCDHom)[ "(Intercept)" ]
> costs <- exp( chInt + chCap * log( mean( dat$pCap ) ) +
+ chLab * log( mean( dat$pLab ) ) + chMat * log( mean( dat$pMat ) ) +
+ chOut * log( y ) )

> plot( y, costs, type = "l" )

> # average costs


> plot( y, costs/y, type = "l" )

> # marginal costs


> lines( y, chOut * costs / y, lty = 2 )
> legend( "right", lty = c( 1, 2 ),
+ legend = c( "average costs", "marginal costs" ) )
average costs, marginal costs

1.5
1000000
total costs

1.0

average costs
600000

marginal costs
0.5
200000

0.0

0.0e+00 1.0e+07 2.0e+07 0.0e+00 1.0e+07 2.0e+07

y y

Figure 3.6: Total, marginal, and average costs

The resulting graphs are shown in figure 3.6. As the marginal costs are equal to the average costs
multiplied by a fixed factor, αy (see equation 3.65), the average cost curve and the marginal cost
curve of a Cobb-Douglas cost function cannot intersect. Hence, the average costs curve based on
a Cobb-Douglas cost function does not have a minimum (for finite output quantities y).

177
3 Dual Approach: Cost Functions

3.3 Cobb-Douglas short-run cost function


3.3.1 Specification
Given the general specification of a short-run cost function (3.8), a Cobb-Douglas short-run cost
function is   
α
wiαi  
Y Y
cv = A  xj j  y αy , (3.72)
i∈N 1 j∈N 2

where cv denotes the variable costs as defined in (1.3), N 1 is a vector of the indices of the variable
inputs, and N 2 is a vector of the indices of the quasi-fixed inputs. The Cobb-Douglas short-run
cost function can be linearized to
X X
ln cv = α0 + αi ln wi + αj ln xj + αy ln y (3.73)
i∈N 1 j∈N 2

with α0 = ln A.

3.3.2 Estimation
The following commands estimate a Cobb-Douglas short-run cost function with capital as a
quasi-fixed input and summarize the results:

> costCDSR <- lm( log( vCost ) ~ log( pLab ) + log( pMat ) + log( qCap ) + log( qOut ),
+ data = dat )
> summary( costCDSR )

Call:
lm(formula = log(vCost) ~ log(pLab) + log(pMat) + log(qCap) +
log(qOut), data = dat)

Residuals:
Min 1Q Median 3Q Max
-0.73935 -0.20934 -0.00571 0.20729 0.71633

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.66013 0.42523 13.311 < 2e-16 ***
log(pLab) 0.45683 0.13819 3.306 0.00121 **
log(pMat) 0.44144 0.07715 5.722 6.50e-08 ***
log(qCap) 0.19174 0.04034 4.754 5.05e-06 ***
log(qOut) 0.29127 0.03318 8.778 6.49e-15 ***
---

178
3 Dual Approach: Cost Functions

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3183 on 135 degrees of freedom


Multiple R-squared: 0.7265, Adjusted R-squared: 0.7183
F-statistic: 89.63 on 4 and 135 DF, p-value: < 2.2e-16

3.3.3 Properties
This short-run cost function is (significantly) increasing in the prices of the variable inputs (labor
and materials) as the coefficient of the labor price (0.457) and the coefficient of the materials
price (0.441) are both positive. However, this short-run cost function is not linearly homogeneous
in input prices, as the coefficient of the labor price and the coefficient of the materials price do not
sum up to one (0.457 + 0.441 = 0.898). The short-run cost function is increasing in the output
quantity with a short-run cost flexibility of 0.291, which corresponds to a short-run elasticity of
size of 3.433. However, this short-run cost function is increasing in the quantity of the fixed input
(capital), as the corresponding coefficient is (significantly) positive (0.192) which contradicts
microeconomic theory. This would mean that the apple producers could reduce variable costs
(costs from labor and materials) by reducing the capital input (e.g. by destroying their apple trees
and machinery), while still producing the same amount of apples. Producing the same output
level with less of all inputs is not plausible. The violation of the monotonicity property regarding
the capital input is probably caused by model misspecification. For instance, the assumption
that the capital input quantity is exogenously given may not hold; the capital input quantity
could be positively correlated with the error term, e.g. if poorly performing firms (with higher
variable costs) use more capital than well performing firms (with lower variable costs) to produce
the same output quantity.

3.3.4 Estimation with linear homogeneity in input prices imposed


We can impose linear homogeneity in the prices of the variable inputs as we did with the (long-
run) cost function (see equations 3.20 to 3.24):

c X wi X
ln = α0 + αi ln + αj ln xj + αy ln y (3.74)
wk 1
wk 2
i∈N \k j∈N

with k ∈ N 1 . We can estimate a Cobb-Douglas short-run cost function with capital as a quasi-
fixed input and linear homogeneity in input prices imposed by the command:

> costCDSRHom <- lm( log( vCost / pMat ) ~ log( pLab / pMat ) +
+ log( qCap ) + log( qOut ), data = dat )
> summary( costCDSRHom )

Call:
lm(formula = log(vCost/pMat) ~ log(pLab/pMat) + log(qCap) + log(qOut),

179
3 Dual Approach: Cost Functions

data = dat)

Residuals:
Min 1Q Median 3Q Max
-0.78305 -0.20539 -0.00265 0.19533 0.71792

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.67882 0.42335 13.414 < 2e-16 ***
log(pLab/pMat) 0.53487 0.06781 7.888 9.00e-13 ***
log(qCap) 0.18774 0.03978 4.720 5.79e-06 ***
log(qOut) 0.29010 0.03306 8.775 6.33e-15 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3176 on 136 degrees of freedom


Multiple R-squared: 0.5963, Adjusted R-squared: 0.5874
F-statistic: 66.97 on 3 and 136 DF, p-value: < 2.2e-16

We can obtain the coefficient of the materials price from the homogeneity condition (3.20): 1 −
0.535 = 0.465. We can test the homogeneity restriction by a likelihood ratio test:

> lrtest( costCDSRHom, costCDSR )

Likelihood ratio test

Model 1: log(vCost/pMat) ~ log(pLab/pMat) + log(qCap) + log(qOut)


Model 2: log(vCost) ~ log(pLab) + log(pMat) + log(qCap) + log(qOut)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -36.055
2 6 -35.838 1 0.4356 0.5093

Given the large P -value, we can conclude that the data do not contradict the linear homogeneity
in the prices of the variable inputs.
While the linear homogeneity in the prices of all variable inputs is accepted and the short-run
cost function is still increasing in the output quantity and the prices of all variable inputs, the
estimated short-run cost function is still increasing in the capital quantity, which contradicts
microeconomic theory. Therefore, a further microeconomic analysis with this function is not
reasonable.

180
3 Dual Approach: Cost Functions

3.4 Translog cost function


3.4.1 Specification
The general specification of a Translog cost function is

N
X
ln c(w, y) = α0 + αi ln wi + αy ln y (3.75)
i=1
N X N
1 1
αij ln wi ln wj + αyy (ln y)2
X
+
2 i=1 j=1
2
N
X
+ αiy ln wi ln y
i=1

with αij = αji ∀ i, j.

3.4.2 Estimation
The Translog cost function can be estimated by following command:

> costTL <- lm( log( cost ) ~ log( pCap ) + log( pLab ) + log( pMat ) +
+ log( qOut ) + I( 0.5 * log( pCap )^2 ) + I( 0.5 * log( pLab )^2 ) +
+ I( 0.5 * log( pMat )^2 ) + I( log( pCap ) * log( pLab ) ) +
+ I( log( pCap ) * log( pMat ) ) + I( log( pLab ) * log( pMat ) ) +
+ I( 0.5 * log( qOut )^2 ) + I( log( pCap ) * log( qOut ) ) +
+ I( log( pLab ) * log( qOut ) ) + I( log( pMat ) * log( qOut ) ),
+ data = dat )
> summary( costTL )

Call:
lm(formula = log(cost) ~ log(pCap) + log(pLab) + log(pMat) +
log(qOut) + I(0.5 * log(pCap)^2) + I(0.5 * log(pLab)^2) +
I(0.5 * log(pMat)^2) + I(log(pCap) * log(pLab)) + I(log(pCap) *
log(pMat)) + I(log(pLab) * log(pMat)) + I(0.5 * log(qOut)^2) +
I(log(pCap) * log(qOut)) + I(log(pLab) * log(qOut)) + I(log(pMat) *
log(qOut)), data = dat)

Residuals:
Min 1Q Median 3Q Max
-0.73251 -0.18718 0.02001 0.15447 0.82858

Coefficients:
Estimate Std. Error t value Pr(>|t|)

181
3 Dual Approach: Cost Functions

(Intercept) 25.383429 3.511353 7.229 4.26e-11 ***


log(pCap) 0.198813 0.537885 0.370 0.712291
log(pLab) -0.024792 2.232126 -0.011 0.991156
log(pMat) -1.244914 1.201129 -1.036 0.301992
log(qOut) -2.040079 0.510905 -3.993 0.000111 ***
I(0.5 * log(pCap)^2) -0.095173 0.105158 -0.905 0.367182
I(0.5 * log(pLab)^2) -0.503168 0.943390 -0.533 0.594730
I(0.5 * log(pMat)^2) 0.529021 0.337680 1.567 0.119728
I(log(pCap) * log(pLab)) -0.746199 0.244445 -3.053 0.002772 **
I(log(pCap) * log(pMat)) 0.182268 0.130463 1.397 0.164865
I(log(pLab) * log(pMat)) 0.139429 0.433408 0.322 0.748215
I(0.5 * log(qOut)^2) 0.164075 0.041078 3.994 0.000110 ***
I(log(pCap) * log(qOut)) -0.028090 0.042844 -0.656 0.513259
I(log(pLab) * log(qOut)) 0.007533 0.171134 0.044 0.964959
I(log(pMat) * log(qOut)) 0.048794 0.092266 0.529 0.597849
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3043 on 125 degrees of freedom


Multiple R-squared: 0.7682, Adjusted R-squared: 0.7423
F-statistic: 29.59 on 14 and 125 DF, p-value: < 2.2e-16

As the Cobb-Douglas cost function is nested in the Translog cost function, we can use a
statistical test to check whether the Cobb-Douglas cost function fits the data as good as the
Translog cost function:

> lrtest( costCD, costTL )

Likelihood ratio test

Model 1: log(cost) ~ log(pCap) + log(pLab) + log(pMat) + log(qOut)


Model 2: log(cost) ~ log(pCap) + log(pLab) + log(pMat) + log(qOut) + I(0.5 *
log(pCap)^2) + I(0.5 * log(pLab)^2) + I(0.5 * log(pMat)^2) +
I(log(pCap) * log(pLab)) + I(log(pCap) * log(pMat)) + I(log(pLab) *
log(pMat)) + I(0.5 * log(qOut)^2) + I(log(pCap) * log(qOut)) +
I(log(pLab) * log(qOut)) + I(log(pMat) * log(qOut))
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -44.867
2 16 -24.149 10 41.435 9.448e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

182
3 Dual Approach: Cost Functions

Given the very small P -value, we can conclude that the Cobb-Douglas cost function is not suitable
for analyzing the production technology in our data set.

3.4.3 Linear homogeneity in input prices


Linear homogeneity of a Translog cost function requires

ln(t c(w, y)) = ln c(t w, y) (3.76)


N
X
ln t + ln c(w, y) = α0 + αi ln(t wi ) + αy ln y (3.77)
i=1
N X N
1 1
αij ln(t wi ) ln(t wj ) + αyy (ln y)2
X
+
2 i=1 j=1
2
N
X
+ αiy ln(t wi ) ln y
i=1
N
X N
X
= α0 + αi ln(t) + αi ln(wi ) + αy ln y (3.78)
i=1 i=1
N
N X N X N
1X 1X
+ αij ln(t) ln(t) + αij ln(t) ln(wj )
2 i=1 j=1 2 i=1 j=1
N X N N X N
1X 1X
+ αij ln(wi ) ln(t) + αij ln(wi ) ln(wj )
2 i=1 j=1 2 i=1 j=1
N N
1
+ αyy (ln y)2 +
X X
αiy ln(t) ln y + αiy ln(wi ) ln y
2 i=1 i=1
N
X N
X
= α0 + ln(t) αi + αi ln(wi ) + αy ln y (3.79)
i=1 i=1
N XN N N
1 X 1 X X
+ ln(t) ln(t) αij + ln(t) ln(wj ) αij
2 i=1 j=1
2 j=1 i=1
N N N X N
1 X X 1X
+ ln(t) ln(wi ) αij + αij ln(wi ) ln(wj )
2 i=1 j=1
2 i=1 j=1
N N
1 2
X X
+ αyy (ln y) + ln(t) ln y αiy + αiy ln(wi ) ln y
2 i=1 i=1
N
X
= ln c(w, y) + ln(t) αi (3.80)
i=1
N XN N N
1 X 1 X X
+ ln(t) ln(t) αij + ln(t) ln(wj ) αij
2 i=1 j=1
2 j=1 i=1
N N N
1 X X X
+ ln(t) ln(wi ) αij + ln(t) ln y αiy
2 i=1 j=1 i=1

183
3 Dual Approach: Cost Functions

N N X N N N
X 1 X 1 X X
ln t = ln(t) αi + ln(t) ln(t) αij + ln(t) ln(wj ) αij (3.81)
i=1
2 i=1 j=1
2 j=1 i=1
N N N
1 X X X
+ ln(t) ln(wi ) αij + ln(t) ln y αiy
2 i=1 j=1 i=1
N N X N N N
X 1 X 1X X
1= αi + ln(t) αij + ln(wj ) αij (3.82)
i=1
2 i=1 j=1
2 j=1 i=1
N N N
1X X X
+ ln(wi ) αij + ln y αiy
2 i=1 j=1 i=1

Hence, the homogeneity condition is only globally fulfilled (i.e. no matter which values t, w, and
y have) if the following parameter restrictions hold:

N
X
αi = 1 (3.83)
i=1
N N
X αij =αji X
αij = 0 ∀ j ←−−−−→ αij = 0 ∀ i (3.84)
i=1 j=1
N
X
αiy = 0 (3.85)
i=1

We can see from the estimates above that these conditions are not fulfilled in our Translog cost
function. For instance, according to condition (3.83), the first-order coefficients of the input
prices should sum up to one but our estimates sum up to 0.199 + (−0.025) + (−1.245) = −1.071.
Hence, the homogeneity condition is not fulfilled in our estimated Translog cost function.

3.4.4 Estimation with linear homogeneity in input prices imposed


In order to impose linear homogeneity in input prices, we can rearrange these restrictions to get

N
X −1
αN = 1 − αi (3.86)
i=1
N
X −1
αN j = − αij ∀ j (3.87)
i=1
N
X −1
αiN = − αij ∀ i (3.88)
j=1
N
X −1
αN y = − αiy (3.89)
i=1

Replacing αN , αN y and all αiN and αjN in equation (3.75) by the right-hand sides of equa-

184
3 Dual Approach: Cost Functions

tions (3.86) to (3.89) and re-arranging, we get

N −1
c(w, y) X wi
ln = α0 + αi ln + αy ln y (3.90)
wN i=1
w N
−1 N −1
1 NX wi wj 1
+ αyy (ln y)2
X
+ αij ln ln
2 j=1 i=1 wN wN 2
N −1
X wi
+ αiy ln ln y.
i=1
wN

This Translog cost function with linear homogeneity imposed can be estimated by following
command:

> costTLHom <- lm( log( cost / pMat ) ~ log( pCap / pMat ) +
+ log( pLab / pMat ) + log( qOut ) +
+ I( 0.5 * log( pCap / pMat )^2 ) + I( 0.5 * log( pLab / pMat )^2 ) +
+ I( log( pCap / pMat ) * log( pLab / pMat ) ) +
+ I( 0.5 * log( qOut )^2 ) + I( log( pCap / pMat ) * log( qOut ) ) +
+ I( log( pLab / pMat ) * log( qOut ) ),
+ data = dat )
> summary( costTLHom )

Call:
lm(formula = log(cost/pMat) ~ log(pCap/pMat) + log(pLab/pMat) +
log(qOut) + I(0.5 * log(pCap/pMat)^2) + I(0.5 * log(pLab/pMat)^2) +
I(log(pCap/pMat) * log(pLab/pMat)) + I(0.5 * log(qOut)^2) +
I(log(pCap/pMat) * log(qOut)) + I(log(pLab/pMat) * log(qOut)),
data = dat)

Residuals:
Min 1Q Median 3Q Max
-0.6860 -0.2086 0.0192 0.1978 0.8281

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 23.714976 3.445289 6.883 2.24e-10 ***
log(pCap/pMat) 0.306159 0.525789 0.582 0.561383
log(pLab/pMat) 1.093860 1.169160 0.936 0.351216
log(qOut) -1.933605 0.501090 -3.859 0.000179 ***
I(0.5 * log(pCap/pMat)^2) 0.025951 0.089977 0.288 0.773486
I(0.5 * log(pLab/pMat)^2) 0.716467 0.338049 2.119 0.035957 *
I(log(pCap/pMat) * log(pLab/pMat)) -0.292889 0.142710 -2.052 0.042144 *

185
3 Dual Approach: Cost Functions

I(0.5 * log(qOut)^2) 0.158662 0.039866 3.980 0.000114 ***


I(log(pCap/pMat) * log(qOut)) -0.048274 0.040025 -1.206 0.229964
I(log(pLab/pMat) * log(qOut)) 0.008363 0.096490 0.087 0.931067
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3089 on 130 degrees of freedom


Multiple R-squared: 0.6377, Adjusted R-squared: 0.6126
F-statistic: 25.43 on 9 and 130 DF, p-value: < 2.2e-16

We can use a likelihood ratio test to compare this function with the unconstrained Translog cost
function (3.75):

> lrtest( costTL, costTLHom )

Likelihood ratio test

Model 1: log(cost) ~ log(pCap) + log(pLab) + log(pMat) + log(qOut) + I(0.5 *


log(pCap)^2) + I(0.5 * log(pLab)^2) + I(0.5 * log(pMat)^2) +
I(log(pCap) * log(pLab)) + I(log(pCap) * log(pMat)) + I(log(pLab) *
log(pMat)) + I(0.5 * log(qOut)^2) + I(log(pCap) * log(qOut)) +
I(log(pLab) * log(qOut)) + I(log(pMat) * log(qOut))
Model 2: log(cost/pMat) ~ log(pCap/pMat) + log(pLab/pMat) + log(qOut) +
I(0.5 * log(pCap/pMat)^2) + I(0.5 * log(pLab/pMat)^2) + I(log(pCap/pMat) *
log(pLab/pMat)) + I(0.5 * log(qOut)^2) + I(log(pCap/pMat) *
log(qOut)) + I(log(pLab/pMat) * log(qOut))
#Df LogLik Df Chisq Pr(>Chisq)
1 16 -24.149
2 11 -29.014 -5 9.7309 0.08323 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The null hypothesis, linear homogeneity in input prices, is rejected at the 10% significance level
but not at the 5% level. Given the importance of microeconomic consistency and that 5% is the
standard significance level, we continue our analysis with the Translog cost function with linear
homogeneity in input prices imposed.
Furthermore, we can use a likelihood ratio test to compare this function with the Cobb-Douglas
cost function with homogeneity imposed (3.24):

> lrtest( costCDHom, costTLHom )

Likelihood ratio test

186
3 Dual Approach: Cost Functions

Model 1: log(cost/pMat) ~ log(pCap/pMat) + log(pLab/pMat) + log(qOut)


Model 2: log(cost/pMat) ~ log(pCap/pMat) + log(pLab/pMat) + log(qOut) +
I(0.5 * log(pCap/pMat)^2) + I(0.5 * log(pLab/pMat)^2) + I(log(pCap/pMat) *
log(pLab/pMat)) + I(0.5 * log(qOut)^2) + I(log(pCap/pMat) *
log(qOut)) + I(log(pLab/pMat) * log(qOut))
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -44.878
2 11 -29.014 6 31.727 1.84e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Again, the Cobb-Douglas functional form is clearly rejected by the data in favor of the Translog
functional form.
We can compute the total costs that are predicted by our estimated Translog cost function and
compare them to the observed costs by following commands:

> dat$costTLHom <- exp( fitted( costTLHom ) ) * dat$pMat

> compPlot( dat$cost, dat$costTLHom )


> compPlot( dat$cost, dat$costTLHom, log = "xy" )


2e+06


2500000



●●

dat$costTLHom

dat$costTLHom



● ●
●●
●● ● ● ●●
● ●●● ●●
●● ●●
●●●
● ●●

5e+05

●●
● ●●● ● ●●
●● ●●
● ● ●● ●●● ●
●●

● ●
● ● ●●● ● ● ● ● ●
1000000


● ●● ●
●●●●●●●● ● ●



●● ● ● ●●● ● ● ●
●●●●●
●● ●● ●
● ● ●●
● ●
●●● ●
●● ● ● ●
●●●
●●● ●
2e+05

● ●●
●● ●
● ●●● ●● ●●●●
● ●●
● ●●
●●●●●
●●●
●● ●
● ●
●● ●
● ●●● ●
●●●
●●●
●●●●
●●
● ●●


●●
● ●
●●●
●●●
●●

●●●

●● ●


●●
●●
●● ●
●●


●●●●● ●

0

0 1000000 2500000 2e+05 5e+05 2e+06

dat$cost dat$cost

Figure 3.7: Translog cost function: observed vs. predicted costs

The resulting graphs are presented in figure 3.7.


Some parameters of the Translog cost function with linear homogeneity imposed (3.90) have
not been directly estimated (αN , αN y , all αiN , all αjN ) but they can be retrieved from the

187
3 Dual Approach: Cost Functions

(directly) estimated parameters and equations (3.86) to (3.89). Please note that the specification
in equation (3.90) is used for the econometric estimation only; after retrieving the non-estimated
parameters, we can do our analysis based on equation (3.75). To facilitate the further analysis,
we create short-cuts of all estimated parameters and obtain the parameters that have not been
directly estimated:

> ch0 <- coef( costTLHom )[ "(Intercept)" ]


> ch1 <- coef( costTLHom )[ "log(pCap/pMat)" ]
> ch2 <- coef( costTLHom )[ "log(pLab/pMat)" ]
> ch3 <- 1 - ch1 - ch2
> chy <- coef( costTLHom )[ "log(qOut)" ]
> ch11 <- coef( costTLHom )[ "I(0.5 * log(pCap/pMat)^2)" ]
> ch22 <- coef( costTLHom )[ "I(0.5 * log(pLab/pMat)^2)" ]
> chyy <- coef( costTLHom )[ "I(0.5 * log(qOut)^2)" ]
> ch12 <- ch21 <- coef( costTLHom )[ "I(log(pCap/pMat) * log(pLab/pMat))" ]
> ch13 <- ch31 <- 0 - ch11 - ch12
> ch23 <- ch32 <- 0 - ch12 - ch22
> ch33 <- 0 - ch13 - ch23
> ch1y <- coef( costTLHom )[ "I(log(pCap/pMat) * log(qOut))" ]
> ch2y <- coef( costTLHom )[ "I(log(pLab/pMat) * log(qOut))" ]
> ch3y <- 0 - ch1y - ch2y

Hence, our estimated Translog cost function has following parameters:

> # alpha_0, alpha_i, alpha_y


> unname( c( ch0, ch1, ch2, ch3, chy ) )

[1] 23.7149761 0.3061589 1.0938598 -0.4000187 -1.9336052

> # alpha_ij
> matrix( c( ch11, ch12, ch13, ch21, ch22, ch23, ch31, ch32, ch33 ), ncol=3 )

[,1] [,2] [,3]


[1,] 0.02595083 -0.2928892 0.2669384
[2,] -0.29288920 0.7164670 -0.4235778
[3,] 0.26693837 -0.4235778 0.1566394

> # alpha_iy, alpha_yy


> unname( c( ch1y, ch2y, ch3y, chyy ) )

[1] -0.048274484 0.008362717 0.039911768 0.158661757

188
3 Dual Approach: Cost Functions

3.4.5 Cost flexibility and elasticity of size


Based on the estimated parameters, we can calculate the cost flexibilities and the elasticities of
size. The cost flexibilities derived from a Translog cost function (3.75) are

N
∂ ln c(w, y) X
= αy + αiy ln wi + αyy ln y (3.91)
∂ ln y i=1

and the elasticities of size are—as always—their inverses:


−1
∂ ln y ∂ ln c(w, y)

= (3.92)
∂ ln c ∂ ln y

We can calculate the cost flexibilities and the elasticities of size with following commands:

> dat$costFlex <- with( dat, chy + ch1y * log( pCap ) +


+ ch2y * log( pLab ) + ch3y * log( pMat ) + chyy * log( qOut ) )
> dat$elaSize <- 1 / dat$costFlex

Now, we can visualize these values using histograms:

> hist( dat$costFlex )


> hist( dat$elaSize )
> hist( dat$elaSize[ dat$elaSize > 0 & dat$elaSize < 10 ] )
35

60
120
30

50
25

40
Frequency

Frequency

Frequency
80
20

30
60
15

20
40
10

10
20
5
0

0.0 0.2 0.4 0.6 0.8 −20 0 20 40 60 80 100 2 4 6 8 10

cost flexibility elasticity of size elasticity of size

Figure 3.8: Translog cost function: cost flexibility and elasticity of size

The resulting graphs are presented in figure 3.8. Only 1 out of 140 cost flexibilities is negative.
Hence, the estimated Translog cost function is to a very large extent increasing in the output
quantity. All cost flexibilities are lower than one, which indicates that all apple producers operate
under increasing returns to size. Most cost flexibilities are around 0.5, which corresponds to an
elasticity of size of 2. Hence, if the apple producers increase their output quantity by one percent,
the total costs of most producers increases by around 0.5 percent. Or—the other way round—if

189
3 Dual Approach: Cost Functions

the apple producers increase their input use so that their costs increase by one percent, the output
quantity of most producers would increase by around two percent.
With the following commands, we visualize the relationship between output quantity and
elasticity of size

> plot( dat$qOut, dat$elaSize )


> abline( 1, 0 )
> plot( dat$qOut, dat$elaSize, ylim = c( 0, 10 ) )
> abline( 1, 0 )
> plot( dat$qOut, dat$elaSize, ylim = c( 0, 10 ), log = "x" )
> abline( 1, 0 )
100

10

10


● ●●
80

8
● ●

● ●●
60
dat$elaSize

dat$elaSize

dat$elaSize

● ●●
6

6
● ●
● ●●
40

● ●

● ● ●●
● ●

●● ●
●●● ●
4

4

● ●
●●
● ●
● ●●
● ●
20



●● ● ● ●●●●●●
● ●●


●●
● ● ●

● ●●
●●●
● ●●

●●● ● ●
●●●●●●●
● ●
●●


●●

● ●●●

● ●
●●

● ●●


● ●●
●●

●●● ●● ●

●●●

●●●●
2

2

● ●
●●●
●●


●●

●● ● ●
● ●

●●
●●


●●


●●
●●

●●
●●
●●

●●
●●
● ●●●
● ●●●● ● ●●●
●●●●● ●

●●
●●●

●●

●●●●
●●●● ● ● ● ●●● ● ● ● ● ●●● ●
0

● ● ●●● ●●
−20


0

0
0.0e+00 1.0e+07 2.0e+07 0.0e+00 1.0e+07 2.0e+07 1e+05 5e+05 5e+06

qOut qOut qOut

Figure 3.9: Translog cost function: output quantity and elasticity of size

The resulting graphs are shown in figure 3.9. With increasing output quantity, the elasticity of
size approaches one (from above). Hence, small apple producers could gain a lot from increasing
their size, while large apple producers would gain much less from increasing their size. However,
even the largest producers still gain from increasing their size so that the optimal firm size is
larger than the largest firm in the sample.

3.4.6 Marginal costs and average costs


Marginal costs derived from a Translog cost function are

N
!
∂c(w, y) ∂ ln c(w, y) c(w, y) X c(w, y)
= = αy + αiy ln wi + αyy ln y . (3.93)
∂y ∂ ln y y i=1
y

Hence, they are—as always—equal to the cost flexibility multiplied by total costs and divided by
the output quantity. Hence, we can compute the marginal costs by:

> dat$margCostTL <- with( dat, costFlex * costTLHom / qOut )

We can visualize these marginal costs with a histogram.

190
3 Dual Approach: Cost Functions

> hist( dat$margCostTL, 15 )

40
Frequency

20
0
−0.15 −0.05 0.05 0.15

margCostTL

Figure 3.10: Translog cost function: Marginal costs

The resulting graph is shown in figure 3.10. It indicates that producing one additional output
unit increases the costs of most firms by around 0.09 monetary units.
Furthermore, we can check if the marginal costs are equal to the output prices, which is a
first-order condition for profit maximization:

> compPlot( dat$pOut, dat$margCostTL )


> compPlot( dat$pOut[ dat$margCostTL > 0 ],
+ dat$margCostTL[ dat$margCostTL > 0 ], log = "xy" )
3.0

2.00
2.0

0.50
margCostTL

margCostTL


●● ●
● ●● ●
●●
●●●
●● ● ●●
●●
0.10

●●
●●● ●
●●●
1.0



● ●●●●

●●● ●●

●● ●
●●
●●
●●

● ●
●●●
●●●● ●

●●●
●●●
● ●
●●●
●●●
● ● ●●●

● ● ●●●

●●
●●●●●
● ●
●● ●●●●●
● ● ●
●●


0.02


● ●
●●●●

●●● ●● ●● ●●● ●●●●● ● ●

●●
●●●●
●●

● ●●
●●●
● ●● ● ●●●●
●●●
0.0



●●
●●

●●
●●
●●
●●



●●●
● ●
● ● ●●
● ●

0.0 0.5 1.0 1.5 2.0 2.5 3.0 0.02 0.10 0.50 2.00

pOut pOut

Figure 3.11: Translog cost function: marginal costs and output prices

The resulting graphs are shown in figure 3.11. The marginal costs of all firms are considerably
smaller than their output prices. Hence, all firms would gain from increasing their output level.
This is not surprising for a technology with large economies of scale.
Now, we analyze, how the marginal costs depend on the output quantity:

> plot( dat$qOut, dat$margCostTL )


> plot( dat$qOut, dat$margCostTL, log = "x" )

191
3 Dual Approach: Cost Functions

● ●
● ●

0.15

0.15
●●
● ● ● ●
●● ● ●
● ● ●
●●●

●●● ●●● ●
● ●●●● ●● ●●● ● ● ●
●●
●● ●
●● ● ●
●●● ●

●●●●
● ●●●● ● ● ● ●
●● ● ●● ●● ● ●●● ● ●
● ●
● ●● ● ● ●
●●●
●●●
●●●●●
● ● ●●● ● ●●●
●● ●

● ●●●●● ●
●● ●
●●●

●●
●● ●
●●●●●●
● ● ● ●
●●●●●●
●●

●●●● ●●
● ●
●●
●●
●●
●●


●●
● ● ● ● ●●●●
● ●● ●●
●● ●
●● ●
● ●● ●

●●●


●●● ● ●●● ● ●

● ●●
● ●●● ●

margCost

margCost
● ●

0.05

0.05
●●● ●
●●● ●
● ● ● ● ● ●●
●●● ●● ● ●

● ●
● ●
● ●

−0.05

−0.05
−0.15

−0.15
● ●

0.0e+00 1.0e+07 2.0e+07 1e+05 5e+05 5e+06

qOut qOut

Figure 3.12: Translog cost function: Marginal costs depending on output quantity

The resulting graphs are shown in figure 3.12. There is no clear relationship between marginal
costs and the output quantity.
Now, we illustrate our estimated model by drawing the average cost curve and the marginal
cost curve for output quantities between 0 and five times the maximum output level in the sample,
where we use the sample means of the input prices.

> y <- seq( 0, 5 * max( dat$qOut ), length.out = 200 )


> lpCap <- log( mean( dat$pCap ) )
> lpLab <- log( mean( dat$pLab ) )
> lpMat <- log( mean( dat$pMat ) )
> totalCost <- exp( ch0 + ch1 * lpCap + ch2 * lpLab + ch3 * lpMat +
+ chy * log( y ) + 0.5 * chyy * log( y )^2 +
+ 0.5 * ch11 * lpCap^2 + 0.5 * ch22 * lpLab^2 + 0.5 * ch33 * lpMat^2 +
+ ch12 * lpCap * lpLab + ch13 * lpCap * lpMat + ch23 * lpLab * lpMat +
+ ch1y * lpCap * log( y ) + ch2y * lpLab * log( y ) + ch3y * lpMat * log( y ) )
> margCost <- ( chy + chyy * log( y ) +
+ ch1y * lpCap + ch2y * lpLab + ch3y * lpMat ) * totalCost / y

> # average costs


> plot( y, totalCost/y, type = "l" )

> # marginal costs


> lines( y, margCost, lty = 2 )
> # maximum output level in the sample
> lines( rep( max( dat$qOut ), 2 ), c( 0, 1 ) )
> legend( "topright", lty = c( 1, 2 ),
+ legend = c( "average costs", "marginal costs" ) )

192
3 Dual Approach: Cost Functions

> # average costs


> plot( y, totalCost/y, type = "l", ylim = c( 0.07, 0.10 ) )

> # marginal costs


> lines( y, margCost, lty = 2 )
> # maximum output level in the sample
> lines( rep( max( dat$qOut ), 2 ), c( 0, 1 ) )
> legend( "topright", lty = c( 1, 2 ),
+ legend = c( "average costs", "marginal costs" ) )

0.100
0.5
average costs, marginal costs

average costs, marginal costs


average costs average costs
marginal costs marginal costs
0.4

0.090
0.3

0.080
0.2
0.1

0.070

0.0e+00 4.0e+07 8.0e+07 1.2e+08 0.0e+00 4.0e+07 8.0e+07 1.2e+08

y y

Figure 3.13: Translog cost function: marginal and average costs

The resulting graphs are shown in figure 3.13. The average costs are decreasing until an output
level of around 70,000,000 units (1 unit ≈ 1 Euro) and they are increasing for larger output
quantities. The average cost curve intersects the marginal cost curve (of course) at its minimum.
However, as the maximum output level in the sample (approx. 25,000,000 units) is considerably
lower than the minimum of the average cost curve (approx. 70,000,000 units), the estimated
minimum of the average cost curve cannot be reliably determined because there are no data in
this region.

3.4.7 Derived input demand functions


We can derive the cost-minimizing input quantities from the Translog cost function using Shep-
ard’s lemma:

∂c(w, y)
xi (w, y) = (3.94)
∂wi
∂ ln c(w, y) c
= (3.95)
∂ ln wi wi

193
3 Dual Approach: Cost Functions
 
N
X c
= αi + αij ln wj + αiy ln y  (3.96)
j=1
wi

And we can re-arrange these derived input demand functions in order to obtain the cost-minimizing
cost shares:
N
wi xi (w, y) X
si (w, y) ≡ = αi + αij ln wj + αiy ln y (3.97)
c j=1

We can calculate the cost-minimizing cost shares based on our estimated Translog cost function
by following commands:

> dat$shCap <- with( dat, ch1 + ch11 * log( pCap ) +


+ ch12 * log( pLab ) + ch13 * log( pMat ) + ch1y * log( qOut ) )
> dat$shLab <- with( dat, ch2 + ch21 * log( pCap ) +
+ ch22 * log( pLab ) + ch23 * log( pMat ) + ch2y * log( qOut ) )
> dat$shMat <- with( dat, ch3 + ch31 * log( pCap ) +
+ ch32 * log( pLab ) + ch33 * log( pMat ) + ch3y * log( qOut ) )

We visualize the cost-minimizing cost shares with histograms:

> hist( dat$shCap )


> hist( dat$shLab )
> hist( dat$shMat )
25

30
30
20

25
Frequency

Frequency

Frequency

20
15

20

15
10

10
10
5

5
0

−0.1 0.0 0.1 0.2 0.3 0.4 0.0 0.5 1.0 −0.2 0.2 0.4 0.6 0.8 1.0

shCap shLab shMat

Figure 3.14: Translog cost function: cost-minimizing cost shares

The resulting graphs are shown in figure 3.14. As the signs of the derived optimal cost shares are
equal to the signs of the first derivatives of the cost function with respect to the input prices, we
can check whether the cost function is non-decreasing in input prices by checking if the derived
optimal cost shares are non-negative. Counting the negative derived optimal cost shares, we find
that our estimated cost function is decreasing in the capital price at 24 observations, decreasing
in the labor price at 10 observations, and decreasing in the materials price at 3 observations.

194
3 Dual Approach: Cost Functions

Given that out data set has 140 observations, our estimated cost function is to a large extent
non-decreasing in input prices.
As our estimated cost function is (forced to be) linearly homogeneous in all input prices, the
derived optimal cost shares always sum up to one:

> range( with( dat, shCap + shLab + shMat ) )

[1] 1 1

We can use the following commands to compare the observed cost shares with the derived
cost-minimizing cost shares:

> compPlot( dat$shCap, dat$vCap / dat$cost )


> compPlot( dat$shLab, dat$vLab / dat$cost )
> compPlot( dat$shMat, dat$vMat / dat$cost )

shCap shLab shMat

1.0
0.1 0.2 0.3 0.4



●● ●
1.0

● ●● ●
● ● ● ●●
● ●
● ● ●● ●
●● ● ● ●

0.6
● ● ● ●
● ●● ● ●● ●●
● ● ●
●● ●●● ●● ●●●● ● ● ● ●● ● ●
observed

observed

observed
●●● ●
● ● ●●● ● ●●●● ●● ● ●● ● ● ●●
●●
● ●● ● ● ● ● ● ● ● ●●
● ●
●● ●● ● ● ●● ● ●● ●
●● ●●
● ●●● ●
● ●

●● ● ● ● ●● ● ● ● ● ● ● ● ● ●●●


●●●●● ●

● ●
●●● ● ●● ● ● ● ●● ●
0.5

● ● ●●
●●●

● ●● ●
● ●● ●●

●●●
● ●
●● ● ●
● ●

● ● ● ●●
● ● ● ●●● ●●● ● ● ●
● ●
● ● ●●● ● ● ●●●●●
●● ●
● ● ●●
●●
●●●


●●
●● ●
● ● ● ●● ●●● ● ● ●●●
●●●
● ●●●●● ●● ●●● ● ●●● ●●●●●●●● ● ●
●●
●● ● ● ● ● ● ● ● ●
●●● ●
●●
●●● ●
●●●●
● ●●
●●● ●● ●●
●● ●
● ● ●● ● ●●●●●●● ●● ● ● ● ●● ● ● ●



● ● ● ●● ●●● ●●

0.2
● ● ● ● ● ● ● ● ● ●● ●● ● ●●
● ● ● ● ● ●● ●●● ●● ●

0.0
−0.1

−0.2

−0.1 0.0 0.1 0.2 0.3 0.4 0.0 0.5 1.0 −0.2 0.0 0.2 0.4 0.6 0.8 1.0

optimal optimal optimal

Figure 3.15: Translog cost function: observed and cost-minimizing cost shares

The resulting graphs are shown in figure 3.15. Most firms use less than optimal materials, while
there is a tendency to use more than optimal capital and a very slight tendency to use more than
optimal labor.
Similarly, we can compare the observed input quantities with the cost-minimizing input quan-
tities:

> compPlot( dat$shCap * dat$costTLHom / dat$pCap,


+ dat$vCap / dat$pCap )
> compPlot( dat$shLab * dat$costTLHom / dat$pLab,
+ dat$vLab / dat$pLab )
> compPlot( dat$shMat * dat$costTLHom / dat$pMat,
+ dat$vMat / dat$pMat )

The resulting graphs are shown in figure 3.16. Of course, the conclusions derived from these
graphs are the same as conclusions derived from figure 3.15.

195
3 Dual Approach: Cost Functions

qCap qLab qMat


● ●

200000
1e+06

2e+05 4e+05


● ●

observed

observed

observed
● ●
● ● ●
● ● ● ●

5e+05

100000
● ● ●● ●

● ●● ● ●

● ● ● ●●●● ● ●
● ●
● ● ● ● ●●● ● ●●● ● ●●● ●●●●●● ●
●● ●●● ●●●●●●●●●●
● ● ●●
● ● ● ● ● ●
● ●●

●●

●●●●
● ● ●●● ● ●●

● ● ●●●●● ●
●●

●●●
●●●● ●● ● ● ●

●●●●● ●
●●●●

● ●
●●●
● ● ●

●●●


●●●●
● ●
● ●
● ●●



●● ●● ●● ●●●
● ●● ● ●●
●●●●

●●●

●●


●●●

● ● ● ● ● ●●
●● ●●

0e+00
●●
●● ● ●

●● ● ●● ● ●●●●
●●
● ●
●●● ●●●
●● ●
●●●





●●●
● ●●● ● ●
●●

● ●●●●●●

● ●● ●
●●
●●●
● ●


●●●●●

●●●●●●
●●● ●
●●●
●● ●
●●●●●
●●

−1e+05

● ●●● ● ● ●
●● ●
●●●




●●



●●
●●●●

0
−1e+05 1e+05 3e+05 5e+05 0e+00 5e+05 1e+06 0 50000 150000 250000

optimal optimal optimal

Figure 3.16: Translog cost function: observed and cost-minimizing input quantities

3.4.8 Derived input demand elasticities


Based on the derived input demand functions (3.96), we can derive the input demand elasticities
with respect to input prices:

∂xi (w, y) wj
ij (w, y) = (3.98)
∂wj xi (w, y)
 PN  
c
∂ αi + k=1 αik ln wk + αiy ln y wi wj
= (3.99)
∂wj xi
N
" !
αij c X xj
= + αi + αik ln wk + αiy ln y (3.100)
wj wi k=1
wi
N
! #
X c wj
−δij αi + αik ln wk + αiy ln y
k=1
wi2 xi
" #
αij c x i wi x j x i wi c wj
= + − δij (3.101)
wi wj c wi c wi2 xi
αij c wj x j wj
= + − δij (3.102)
wi x i c wi
αij
= + sj − δij , (3.103)
si

where δij (again) denotes Kronecker’s delta (2.82), and the input demand elasticities with respect
to the output quantity:

∂xi (w, y) y
iy (w, y) = (3.104)
∂y xi (w, y)
 PN  
c
∂ αi + k=1 αik ln wk + αiy ln y wi y
= (3.105)
∂y xi
N
" ! #
αiy c X ∂c 1 y
= + αi + αik ln wk + αiy ln y (3.106)
y wi k=1
∂y wi xi

196
3 Dual Approach: Cost Functions

αiy c wi xi ∂c 1 y
 
= + (3.107)
wi y c ∂y wi xi
αiy c ∂c y
= + (3.108)
wi xi ∂y c
αiy ∂ ln c
= + , (3.109)
si ∂ ln y

where ∂ ln c/∂ ln y is the cost flexibility (see section 3.1.2).


With the following commands, we compute the input demand elasticities at the first observa-
tion:

> ela <- matrix( NA, nrow = 3, ncol = 4 )


> rownames( ela ) <- c( "qCap", "qLab", "qMat" )
> colnames( ela ) <- c( "wCap", "wLab", "wMat", "y" )
> ela[ 1, 1 ] <- ch11 / dat$shCap[1] + dat$shCap[1] - 1
> ela[ 1, 2 ] <- ch12 / dat$shCap[1] + dat$shLab[1]
> ela[ 1, 3 ] <- ch13 / dat$shCap[1] + dat$shMat[1]
> ela[ 1, 4 ] <- ch1y / dat$shCap[1] + dat$costFlex[1]
> ela[ 2, 1 ] <- ch21 / dat$shLab[1] + dat$shCap[1]
> ela[ 2, 2 ] <- ch22 / dat$shLab[1] + dat$shLab[1] - 1
> ela[ 2, 3 ] <- ch23 / dat$shLab[1] + dat$shMat[1]
> ela[ 2, 4 ] <- ch2y / dat$shLab[1] + dat$costFlex[1]
> ela[ 3, 1 ] <- ch31 / dat$shMat[1] + dat$shCap[1]
> ela[ 3, 2 ] <- ch32 / dat$shMat[1] + dat$shLab[1]
> ela[ 3, 3 ] <- ch33 / dat$shMat[1] + dat$shMat[1] - 1
> ela[ 3, 4 ] <- ch3y / dat$shMat[1] + dat$costFlex[1]
> ela

wCap wLab wMat y


qCap -0.6383107 -1.1835104 1.821821136 0.1653394
qLab 4.4484591 -11.3084023 6.859943173 0.2293691
qMat 0.5938258 -0.5948896 0.001063746 0.3983336

These demand elasticities indicate that when the capital price increases by one percent, the
demand for capital decreases by 0.638 percent, the demand for labor increases by 4.448 percent,
and the demand for materials increases by 0.594 percent. When the labor price increases by one
percent, the elasticities indicate that the demand for all inputs decreases, which is not possible
when the output quantity should be maintained. Furthermore, the symmetry condition for the
elasticities (3.62) indicates that the cross-price elasticities of each input pair must have the same
sign. However, this is not the case for the pairs capital–labor and materials–labor. The reason
for this is the negative predicted input share of labor:

> dat[ 1, c( "shCap", "shLab", "shMat" ) ]

197
3 Dual Approach: Cost Functions

shCap shLab shMat


1 0.2630271 -0.06997825 0.8069511

Finally, the negativity constraint (3.60) is violated, because the own-price elasticity of materials
is positive (0.001).
When the output quantity is increased by one percent, the demand for capital increases by
0.165 percent, the demand for labor increases by 0.229 percent, and the demand for materials
increases by 0.398 percent.
Now, we create a three-dimensional array and compute the demand elasticities for all observa-
tions:

> elaAll <- array( NA, c( 3, 4, nrow( dat ) ) )


> dimnames( elaAll ) <- list( c( "qCap", "qLab", "qMat" ),
+ c( "wCap", "wLab", "wMat", "y" ), 1:nrow(dat) )
> elaAll[ 1, 1, ] <- ch11 / dat$shCap + dat$shCap - 1
> elaAll[ 1, 2, ] <- ch12 / dat$shCap + dat$shLab
> elaAll[ 1, 3, ] <- ch13 / dat$shCap + dat$shMat
> elaAll[ 1, 4, ] <- ch1y / dat$shCap + dat$costFlex
> elaAll[ 2, 1, ] <- ch21 / dat$shLab + dat$shCap
> elaAll[ 2, 2, ] <- ch22 / dat$shLab + dat$shLab - 1
> elaAll[ 2, 3, ] <- ch23 / dat$shLab + dat$shMat
> elaAll[ 2, 4, ] <- ch2y / dat$shLab + dat$costFlex
> elaAll[ 3, 1, ] <- ch31 / dat$shMat + dat$shCap
> elaAll[ 3, 2, ] <- ch32 / dat$shMat + dat$shLab
> elaAll[ 3, 3, ] <- ch33 / dat$shMat + dat$shMat - 1
> elaAll[ 3, 4, ] <- ch3y / dat$shMat + dat$costFlex

The following commands present the median values of the elasticities over all observations, at
which the monotonicity conditions are fulfilled; this makes sure that the optimal input shares are
always positive.

> dat$monoCostTLHom <- with( dat, shCap >= 0 & shLab >= 0 & shMat >= 0 &
+ costFlex >= 0 )
> apply( elaAll[ , , dat$monoCostTLHom ], c(1,2), median )

wCap wLab wMat y


qCap -0.6486401 -2.0250830 2.6857495 -0.007520786
qLab -0.7529717 1.4426349 -0.6992232 0.467598439
qMat 0.6641220 -0.5086388 -0.1645389 0.506421497

We can visualize the variations of the elasticities using histograms, where we—again—only
include observations, at which the monotonicity conditions are fulfilled.

198
3 Dual Approach: Cost Functions

> hist( elaAll[1,1,dat$monoCostTLHom] )


> hist( elaAll[1,2,dat$monoCostTLHom] )
> hist( elaAll[1,3,dat$monoCostTLHom] )
> hist( elaAll[2,1,dat$monoCostTLHom] )
> hist( elaAll[2,2,dat$monoCostTLHom] )
> hist( elaAll[2,3,dat$monoCostTLHom] )
> hist( elaAll[3,1,dat$monoCostTLHom] )
> hist( elaAll[3,2,dat$monoCostTLHom] )
> hist( elaAll[3,3,dat$monoCostTLHom] )
> hist( elaAll[1,4,dat$monoCostTLHom] )
> hist( elaAll[2,4,dat$monoCostTLHom] )
> hist( elaAll[3,4,dat$monoCostTLHom] )

The resulting graphs are shown in figure 3.17. While the conditional own-price elasticities of
capital and materials are negative at almost all observations, the conditional own-price elasticity
of labor is positive at almost all observations. These violations of the negativity constraint (3.60)
originate from the violation of the concavity condition. As all conditional elasticities of the capital
demand with respect to the materials price as well as all conditional elasticities of the materials
demand with respect to the capital price are positive, we can conclude that capital and materials
are net substitutes. In contrast, all cross-price elasticities between capital and labor as well as
between labor and materials are negative. This indicates that the two pairs capital and labor as
well as labor and materials are net complements.
When the output quantity is increased by one percent, most farms would increase both the
labor quantity and the materials quantity by around 0.5% and either increase or decrease the
capital quantity.

3.4.9 Theoretical consistency


The Translog cost function (3.75) is always continuous for positive input prices and a positive
output quantity.
The non-negativity is always fulfilled for the Translog cost function, because the predicted cost
is equal to the exponential function of the right-hand side of equation (3.75) and the exponential
function always returns a non-negative value (also when the right-hand side of equation (3.75) is
negative).
If the output quantity approaches zero (from above), the right-hand side of the Translog cost
functions (equation 3.75) approaches:
 
N N X N N
1X 1
αij ln wi ln wj + αyy (ln y)2 +
X X
lim α0 + αi ln wi + αy ln y + αiy ln wi ln y 
y→0+
i=1
2 i=1 j=1 2 i=1
(3.110)

199
3 Dual Approach: Cost Functions

100

100
80

80

80
60
Frequency

Frequency

Frequency
60

60
40

40

40
20

20

20
0

0
0 5 10 15 20 −300 −200 −100 0 0 50 100 150 200 250

E cap cap E cap lab E cap mat


100

100

100
80

80

80
Frequency

Frequency

Frequency
60

60

60
40

40

40
20

20

20
0

0
−40 −30 −20 −10 0 0 20 40 60 80 100 −70 −50 −30 −10 0

E lab cap E lab lab E lab mat

100
80

80

80
60

60
Frequency

Frequency

Frequency

60
40

40

40
20

20

20
0

0 1 2 3 4 5 6 7 −8 −6 −4 −2 0 −0.5 0.5 1.5 2.5

E mat cap E mat lab E mat mat


50

50
40
40

40
30
Frequency

Frequency

Frequency
30

30
20
20

20
10
10

10
0

−40 −30 −20 −10 0 0.0 0.5 1.0 1.5 0.0 0.4 0.8 1.2

E cap y E lab y E mat y

Figure 3.17: Translog cost function: derived demand elasticities

200
3 Dual Approach: Cost Functions

N
!
1
αy ln y + αyy (ln y)2 +
X
= lim αiy ln wi ln y (3.111)
y→0+ 2 i=1
N
! !
1 X
= lim αy + αyy ln y + αiy ln wi ln y (3.112)
y→0+ 2 i=1
N
!
1 X
= lim αy + αyy ln y + αiy ln wi lim ln y (3.113)
y→0+ 2 i=1
y→0+

= lim (αyy ln y) lim ln y = (−αyy ∞)(−∞) = αyy ∞ (3.114)


y→0+ y→0+

Hence, if coefficient αyy is negative and the output quantity approaches zero (from above), the
predicted cost (exponential function of the right-hand side of equation 3.75) approaches zero so
that the “no fixed costs” property is asymptotically fulfilled.
Our estimated Translog cost function with linear homogeneity in input prices imposed (of
course) is linearly homogeneous in input prices. Hence, the linear homogeneity property is globally
fulfilled.
A cost function is non-decreasing in the output quantity if the cost flexibility and the elasticity
of size are non-negative. As we can see from figure 3.8, only a single cost flexibility and thus,
only a single elasticity of size is negative. Hence, our estimated Translog cost function with linear
homogeneity in input prices imposed violates the monotonicity condition regarding the output
quantity only at a single observation.
Given Shepard’s lemma, a cost function is non-decreasing in input prices if the derived cost-
minimizing input quantities and the corresponding cost shares are non-negative. As we can see
from figure 3.14, our estimated Translog cost function with linear homogeneity in input prices
imposed predicts that 24 cost shares of capital, 10 cost shares of labor, and 3 cost shares of
materials are negative. In total, the monotonicity condition regarding the input prices is violated
at 36 observations:

> table( dat$shCap >= 0 & dat$shLab >= 0 & dat$shMat >= 0 )

FALSE TRUE
36 104

Concavity in input prices of the cost function requires that the Hessian matrix of the cost
function with respect to the input prices is negative semidefinite. The elements of the Hessian
matrix are:

∂ 2 c(w, y) ∂xi (w, y)


Hij = = (3.115)
∂wi ∂wj ∂wj
 PN  
c
∂ αi + k=1 αik ln wk + αiy ln y wi
= (3.116)
∂wj

201
3 Dual Approach: Cost Functions

N N
! !
αij c X xj X c
= + αi + αik ln wk + αiy ln y − δij αi + αik ln wk + αiy ln y
wj wi k=1
wi k=1
wi2
(3.117)
αij c x i wi x j x i wi c
= + − δij (3.118)
wi wj c wi c wi2
αij c xi xj xi
= + − δij , (3.119)
wi wj c wi

where δij (again) denotes Kronecker’s delta (2.82). As the elements of the Hessian matrix have
the same sign as the corresponding elasticities (Hij = ij (w, y) xi /wj ), the positive own-price
elasticities of labor in figure 3.17 indicate that the element Hlab,lab is positive at all observa-
tions, where the monotonicity conditions regarding the input prices are fulfilled. As negative
semidefiniteness requires that all diagonal elements of the (Hessian) matrix are negative, we can
conclude that the estimated Translog cost function is concave at not a single observation where
the monotonicity conditions regarding the input prices are fulfilled.
This means that our estimated Translog cost function is inconsistent with microeconomic theory
at all observations.

202
4 Dual Approach: Profit Function

4.1 Theory
4.1.1 Profit functions
The profit function:
X
π(p, w) = max p y − wi xi , s.t. y = f (x) (4.1)
y,x
i

returns the maximum profit that is attainable given the output price p and input prices w.
It is important to distinguish the profit definition (1.4) from the profit function (4.1).

4.1.2 Short-run profit functions


As producers often cannot instantly adjust the quantity of the some inputs (e.g. capital, land,
apple trees), estimating a short-run profit function with some quasi-fixed input quantities might
be more appropriate than a (long-run) profit function which assumes that all input quantities
and output quantities can be adjusted instantly. Furthermore, a short-run profit function can
model technologies with increasing returns to scale, if the sum over the output elasticities of the
variable inputs is lower than one.
In general, a short-run profit function is defined as
n o
π v (p, w1 , x2 ) = max p y − cs (w1 , y, x2 ) , (4.2)
y≥0

where w1 denotes the vector of the prices of all variable inputs, x2 denotes the vector of the
quantities of all quasi-fixed inputs, cs (w1 , y, x2 ) is the short-run cost function (see section 3.3),
π v denotes the gross margin defined in equation (1.5), and N 1 is a vector of the indices of the
variable inputs.

4.2 Graphical illustration of profit and gross margin


We use the following commands to visualize the variation of the profits and the relationship
between profits and firm size:

> hist( dat$profit, 30 )


> plot( dat$X, dat$profit, log = "xy" )

203
4 Dual Approach: Profit Function

80

1e+07

● ● ●

60
●●●
● ● ● ●
● ●
●● ●●● ● ● ● ●
Frequency

● ● ●●
● ● ● ● ●● ● ● ●

profit
● ● ●● ● ● ● ● ● ●●
● ●●●● ● ● ●
40

●● ●
●● ● ● ●●●● ● ●

5e+05
● ●● ●●
● ●● ● ● ●●
●●●● ● ● ● ●
● ●
● ●●● ●
● ●● ● ●● ●
● ●
20

● ●
● ● ●●
● ● ● ● ●

2e+04


0

0e+00 2e+07 4e+07 6e+07 0.5 1.0 2.0 5.0

profit X

Figure 4.1: Profit

The resulting graphs are shown in figure 4.1. The histogram shows that 14 out of 140 apple
producers (10%) have (slightly) negative profits. Although this seems to be not unrealistic, this
contradicts the non-negativity condition of the profit function. However, the observed negative
profits might have been caused by deviations from the theoretical assumptions that we have made
to derive the profit function, e.g. that all inputs can be instantly adjusted and that there are no
unexpected events such as severe weather conditions or pests. We will deal with these deviations
from our assumptions later and for now just ignore the observations with negative profits in
our analyses with the profit function. The right part of figure 4.1 shows that the profit clearly
increases with firm size.
The following commands graphically illustrate the variation of the gross margins and their
relationship to the firm size and the quantity of the quasi-fixed input:

> hist( dat$vProfit, 30 )


> plot( dat$X, dat$vProfit, log = "xy" )
> plot( dat$qCap, dat$vProfit, log = "xy" )

The resulting graphs are shown in figure 4.2. The histogram on the left shows that 8 out of
140 apple producers (6%) have (slightly) negative gross margins. Although this does not seem
to be unrealistic, this contradicts the non-negativity condition of the short-run profit function.
However, the observed negative gross margins might have been caused by deviations from the
theoretical assumptions, e.g. that there are no unexpected events such as severe weather condi-
tions or pests. The center part of figure 4.2 shows that the gross margin clearly increases with
the firm size (as expected). However, the right part of this figure shows that the gross margin is
only weakly positively correlated with the fixed input.
Please note that according to microeconomic theory, the short-run total profit π s —in contrast

204
4 Dual Approach: Profit Function

5e+03 5e+04 5e+05 5e+06 5e+07

5e+03 5e+04 5e+05 5e+06 5e+07


● ●
● ●

80
● ●
● ●
● ● ● ● ●
● ●●
●●●● ● ● ● ●
● ● ●● ●
●●● ●

● ● ●
●● ●●●● ● ●● ● ● ●● ● ● ● ● ●● ●
● ● ● ● ● ● ● ●●● ● ●
● ●
60
● ● ● ● ●
● ●
● ● ●

gross margin

gross margin
●● ● ● ● ● ● ●● ● ● ●●● ●● ● ●●
Frequency

● ●●
●● ● ● ● ● ● ●●●●●● ● ●● ● ●
●● ● ● ●
●● ● ● ●●

●●●
● ● ●● ● ● ● ● ●
●●●●● ●● ●

● ● ●● ●● ●
● ● ● ●● ● ● ● ●

● ● ● ● ●●● ● ●
● ●●
● ●●● ●

●●●
● ●● ●●● ●●●
●● ●

● ●
40


● ● ● ● ● ● ● ●
● ● ● ● ●
●● ● ●● ●


● ●● ● ● ●
● ● ● ●● ●
20

● ●
● ●● ● ● ●
● ●

● ●
0

0e+00 2e+07 4e+07 6e+07 0.5 1.0 2.0 5.0 5e+03 2e+04 1e+05 5e+05

gross margin X qCap

Figure 4.2: Gross margins

to the gross margin π v —might be negative due to fixed costs:


X
π s (p, w, x2 ) = π v (p, w1 , x2 ) − wj x j , (4.3)
j∈N 2

where N 2 is a vector of the indices of the quasi-fixed inputs. However, in the long-run, profit
must be non-negative:
π(p, w) = max π s (p, w, x2 ) ≥ 0, (4.4)
x2

as all costs are variable in the long run.

4.3 Cobb-Douglas profit function


4.3.1 Specification
The Cobb-Douglas profit function1 has the following specification:
!
Y α
αp
π = Ap w i i , (4.5)
i

This function can be linearized to


X
ln π = α0 + αp ln p + αi ln wi (4.6)
i

with α0 = ln A.

1
Please note that the Cobb-Douglas profit function is used as a simple example here but that it is much too
restrictive for most “real” empirical applications (Chand and Kaul, 1986).

205
4 Dual Approach: Profit Function

4.3.2 Estimation
The linearized Cobb-Douglas profit function can be estimated by OLS. As the logarithm of a
negative number is not defined and function lm automatically removes observations with missing
data, we do not have to remove the observations (apple producers) with negative profits manually.

> profitCD <- lm( log( profit ) ~ log( pOut ) + log( pCap ) + log( pLab ) +
+ log( pMat ), data = dat )
> summary( profitCD )

Call:
lm(formula = log(profit) ~ log(pOut) + log(pCap) + log(pLab) +
log(pMat), data = dat)

Residuals:
Min 1Q Median 3Q Max
-3.6183 -0.2778 0.1261 0.5986 2.0442

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 13.9380 0.4921 28.321 < 2e-16 ***
log(pOut) 2.7117 0.2340 11.590 < 2e-16 ***
log(pCap) -0.7298 0.1752 -4.165 5.86e-05 ***
log(pLab) -0.1940 0.4623 -0.420 0.676
log(pMat) 0.1612 0.2543 0.634 0.527
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9815 on 121 degrees of freedom


(14 observations deleted due to missingness)
Multiple R-squared: 0.5911, Adjusted R-squared: 0.5776
F-statistic: 43.73 on 4 and 121 DF, p-value: < 2.2e-16

As expected, lm reports that 14 observations have been removed due to missing data (logarithms
of negative numbers).

4.3.3 Properties
A Cobb-Douglas profit function is always continuous and twice continuously differentiable for all
p > 0 and wi > 0 ∀i. Furthermore, a Cobb-Douglas profit function automatically fulfills the
non-negativity property, because the profit predicted by equation (4.5) is always positive as long
as coefficient A is positive (given that all input prices and the output price are positive). As A

206
4 Dual Approach: Profit Function

is usually obtained by applying the exponential function to the estimate of α0 , i.e. A = exp(α0 ),
A and hence, also the predicted profit, are always positive (even if α0 is non-positive).
The estimated coefficients of the output price and the input prices indicate that profit is
increasing in the output price and decreasing in the capital and labor price but it is increasing in
the price of materials, which contradicts microeconomic theory. However, the positive coefficient
of the (logarithmic) price of materials is statistically not significantly different from zero.
The Cobb-Douglas profit function is linearly homogeneous in all prices (output price and all
input prices) if the following condition is fulfilled:

t π(p, w) = π(t p, t w) (4.7)


X
ln(t π) = α0 + αp ln(t p) + αi ln(t wi ) (4.8)
i
X X
ln t + ln π = α0 + αp ln t + αp ln p + αi ln t + αi ln wi (4.9)
i i
!
X X
ln t + ln π = α0 + αp ln p + αi ln wi + ln t αp + αi (4.10)
i i
!
X
ln π = ln π + ln t αp + αi − 1 (4.11)
i
!
X
0 = ln t αp + αi − 1 (4.12)
i
X
0 = αp + αi − 1 (4.13)
i
X
1 = αp + αi (4.14)
i

Hence, the homogeneity condition is only fulfilled if the coefficient of the (logarithmic) output
price and the coefficients of the (logarithmic) input prices sum up to one. As they sum up to
2.71 + (−0.73) + (−0.19) + 0.16 = 1.95, the homogeneity condition is not fulfilled in our estimated
model.

4.3.4 Estimation with linear homogeneity in all prices imposed


In order to derive a Cobb-Douglas profit function with linear homogeneity in input prices imposed,
we re-arrange the homogeneity condition (4.14) to get

N
X
αp = 1 − αi (4.15)
i=1

and replace αp in the profit function (4.6) by the right-hand side of the above equation:
!
X X
ln π = α0 + 1 − αi ln p + αi ln wi (4.16)
i i

207
4 Dual Approach: Profit Function

X X
ln π = α0 + ln p − αi ln p + αi ln wi (4.17)
i i
X
ln π − ln p = α0 + αi (ln wi − ln p) (4.18)
i
π X wi
ln = α0 + αi ln (4.19)
p i
p

This Cobb-Douglas profit function with linear homogeneity imposed can be estimated by following
command:

> profitCDHom <- lm( log( profit / pOut ) ~ log( pCap / pOut ) +
+ log( pLab / pOut ) + log( pMat / pOut ), data = dat )
> summary( profitCDHom )

Call:
lm(formula = log(profit/pOut) ~ log(pCap/pOut) + log(pLab/pOut) +
log(pMat/pOut), data = dat)

Residuals:
Min 1Q Median 3Q Max
-3.6045 -0.2724 0.0972 0.6013 2.0385

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 14.27961 0.45962 31.068 < 2e-16 ***
log(pCap/pOut) -0.82114 0.16953 -4.844 3.78e-06 ***
log(pLab/pOut) -0.90068 0.25591 -3.519 0.000609 ***
log(pMat/pOut) -0.02469 0.23530 -0.105 0.916610
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9909 on 122 degrees of freedom


(14 observations deleted due to missingness)
Multiple R-squared: 0.3568, Adjusted R-squared: 0.341
F-statistic: 22.56 on 3 and 122 DF, p-value: 1.091e-11

The coefficient of the (logarithmic) output price can be obtained by the homogeneity restric-
tion (4.15). Hence, it is 1 − (−0.82) − (−0.9) − (−0.02) = 2.75. Now, all monotonicity conditions
are fulfilled: profit is increasing in the output price and decreasing in all input prices. We can
use a Wald test or a likelihood-ratio test to test whether the model and the data contradict the
homogeneity assumption:

208
4 Dual Approach: Profit Function

> library( "car" )


> linearHypothesis( profitCD, "log(pOut) + log(pCap) + log(pLab) + log(pMat) = 1" )

Linear hypothesis test

Hypothesis:
log(pOut) + log(pCap) + log(pLab) + log(pMat) = 1

Model 1: restricted model


Model 2: log(profit) ~ log(pOut) + log(pCap) + log(pLab) + log(pMat)

Res.Df RSS Df Sum of Sq F Pr(>F)


1 122 119.78
2 121 116.57 1 3.2183 3.3407 0.07005 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> lrtest( profitCD, profitCDHom )

Likelihood ratio test

Model 1: log(profit) ~ log(pOut) + log(pCap) + log(pLab) + log(pMat)


Model 2: log(profit/pOut) ~ log(pCap/pOut) + log(pLab/pOut) + log(pMat/pOut)
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -173.88
2 5 -175.60 -1 3.4316 0.06396 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Both tests reject the null hypothesis, linear homogeneity in all prices, at the 10% significance
level but not at the 5% level. Given the importance of microeconomic consistency and that 5%
is the standard significance level, we continue our analysis with the Cobb-Douglas profit function
with linear homogeneity imposed.

4.3.5 Checking convexity in all prices


The last property that we have to check is the convexity in all prices. A continuous and twice
continuously differentiable function is convex, if its Hessian matrix is positive semidefinite. A
necessary and sufficient condition for positive semidefiniteness is that all its principal minors (not
only its leading principal minors) are non-negative (see section 1.5.2). The first derivatives of the

209
4 Dual Approach: Profit Function

Cobb-Douglas profit function with respect to the input prices are:

∂π ∂ ln π π π
= = αi (4.20)
∂wi ∂ ln wi wi wi

and the first derivative with respect to the output price is:

∂π ∂ ln π π π
= = αp (4.21)
∂p ∂ ln p p p

Now, we can calculate the second derivatives as derivatives of the first derivatives (4.20)
and (4.21):
 
∂2π
∂π
∂ ∂w ∂ αi wπi
i
= = (4.22)
∂wi ∂wj ∂wj ∂wj
αi ∂π π
= − δij αi 2 (4.23)
wi ∂wj wi
αi π π
= αj − δij αi 2 (4.24)
wi wj wi
π
= αi (αj − δij ) (4.25)
wi wj
 
∂2π
∂π
∂ ∂w ∂ αi wπi
i
= = (4.26)
∂wi ∂p ∂p ∂p
αi ∂π
= (4.27)
wi ∂p
αi π
= αp (4.28)
wi p
π
= αi αp (4.29)
wi p
 
∂2π ∂ ∂π
∂p
∂ αp πp
= = (4.30)
∂p2 ∂p ∂p
αp ∂π π
= − αp 2 (4.31)
p ∂p p
αp π π
= αp − αp 2 (4.32)
p p p
π
= αp (αp − 1) 2 , (4.33)
p

where δij (again) denotes Kronecker’s delta (2.82).


As all elements of the Hessian matrix include π as a multiplicative term, we can ignore this
variable in the calculation of the Hessian matrix, because the value π neither changes the signs of
the (diagonal) elements of the matrix, nor the signs of the principal minors and the determinant
(as long as π is positive, i.e. the non-negativity condition is fulfilled) given the general rule that
|π · M | = π · |M |, where M denotes a quadratic matrix, π denotes a scalar, and the two vertical
bars denote the determinant function.

210
4 Dual Approach: Profit Function

We start with checking convexity in all prices of the Cobb-Douglas profit function without
homogeneity imposed.
To simplify the calculations, we define short-cuts for the coefficients:

> gCap <- coef( profitCD )[ "log(pCap)" ]


> gLab <- coef( profitCD )[ "log(pLab)" ]
> gMat <- coef( profitCD )[ "log(pMat)" ]
> gOut <- coef( profitCD )[ "log(pOut)" ]

Using these coefficients, we compute the second derivatives of our estimated Cobb-Douglas profit
function:

> hpCapCap <- gCap * ( gCap - 1 ) / dat$pCap^2


> hpLabLab <- gLab * ( gLab - 1 ) / dat$pLab^2
> hpMatMat <- gMat * ( gMat - 1 ) / dat$pMat^2
> hpCapLab <- gCap * gLab / ( dat$pCap * dat$pLab )
> hpCapMat <- gCap * gMat / ( dat$pCap * dat$pMat )
> hpLabMat <- gLab * gMat / ( dat$pLab * dat$pMat )
> hpCapOut <- gCap * gOut / ( dat$pCap * dat$pOut )
> hpLabOut <- gLab * gOut / ( dat$pLab * dat$pOut )
> hpMatOut <- gMat * gOut / ( dat$pMat * dat$pOut )
> hpOutOut <- gOut * ( gOut - 1 ) / dat$pOut^2

Now, we prepare the Hessian matrix for the first observation:

> hessian <- matrix( NA, nrow = 4, ncol = 4 )


> hessian[ 1, 1 ] <- hpCapCap[1]
> hessian[ 2, 2 ] <- hpLabLab[1]
> hessian[ 3, 3 ] <- hpMatMat[1]
> hessian[ 1, 2 ] <- hessian[ 2, 1 ] <- hpCapLab[1]
> hessian[ 1, 3 ] <- hessian[ 3, 1 ] <- hpCapMat[1]
> hessian[ 2, 3 ] <- hessian[ 3, 2 ] <- hpLabMat[1]
> hessian[ 1, 4 ] <- hessian[ 4, 1 ] <- hpCapOut[1]
> hessian[ 2, 4 ] <- hessian[ 4, 2 ] <- hpLabOut[1]
> hessian[ 3, 4 ] <- hessian[ 4, 3 ] <- hpMatOut[1]
> hessian[ 4, 4 ] <- hpOutOut[1]
> print( hessian )

[,1] [,2] [,3] [,4]


[1,] 0.185633270 0.060331020 -0.005072286 -1.14920901
[2,] 0.060331020 0.286060178 -0.003907371 -0.88527867
[3,] -0.005072286 -0.003907371 -0.001709437 0.07442915
[4,] -1.149209014 -0.885278673 0.074429148 10.64451706

211
4 Dual Approach: Profit Function

As the third element on the diagonal of this Hessian matrix is negative, the conditions for positive
semidefiniteness regarding the first-order principal minors are not fulfilled. Hence, we do not need
to calculate the higher-order principal minors of the Hessian matrix, as we already can conclude
that the Hessian matrix is not positive semidefinite and hence, the estimated profit function is
not convex at the first observation.2
We can check whether the third element on the diagonal of the Hessian matrix is non-negative
at other observations:

> table( hpMatMat >= 0 )

FALSE
140

As it is non-negative not at a single observation, we must conclude that the estimated Cobb-
Douglas profit function without homogeneity imposed violates the convexity property at all ob-
servations.
Now, we will check, whether our Cobb-Douglas profit function with linear homogeneity imposed
is convex in all prices. Again, we create short-cuts for the estimated coefficients:

> ghCap <- coef( profitCDHom )["log(pCap/pOut)"]


> ghLab <- coef( profitCDHom )["log(pLab/pOut)"]
> ghMat <- coef( profitCDHom )["log(pMat/pOut)"]
> ghOut <- 1- ghCap - ghLab - ghMat

We compute the second derivatives:

> hphCapCap <- ghCap * ( ghCap - 1 ) / dat$pCap^2


> hphLabLab <- ghLab * ( ghLab - 1 ) / dat$pLab^2
> hphMatMat <- ghMat * ( ghMat - 1 ) / dat$pMat^2
> hphCapLab <- ghCap * ghLab / ( dat$pCap * dat$pLab )
> hphCapMat <- ghCap * ghMat / ( dat$pCap * dat$pMat )
> hphLabMat <- ghLab * ghMat / ( dat$pLab * dat$pMat )
> hphCapOut <- ghCap * ghOut / ( dat$pCap * dat$pOut )
> hphLabOut <- ghLab * ghOut / ( dat$pLab * dat$pOut )
> hphMatOut <- ghMat * ghOut / ( dat$pMat * dat$pOut )
> hphOutOut <- ghOut * ( ghOut - 1 ) / dat$pOut^2

And we prepare the Hessian matrix for the first observation:

> hessianHom <- matrix( NA, nrow = 4, ncol = 4 )


> hessianHom[ 1, 1 ] <- hphCapCap[1]
2
Please note that this Hessian matrix is not negative semidefinite either, because the other two first-order
principal minors are positive, while negative semidefiniteness requires that all first-order principal minors are
non-positive. Hence, the Cobb-Douglas profit function is neither concave nor convex at the first observation.

212
4 Dual Approach: Profit Function

> hessianHom[ 2, 2 ] <- hphLabLab[1]


> hessianHom[ 3, 3 ] <- hphMatMat[1]
> hessianHom[ 1, 2 ] <- hessianHom[ 2, 1 ] <- hphCapLab[1]
> hessianHom[ 1, 3 ] <- hessianHom[ 3, 1 ] <- hphCapMat[1]
> hessianHom[ 2, 3 ] <- hessianHom[ 3, 2 ] <- hphLabMat[1]
> hessianHom[ 1, 4 ] <- hessianHom[ 4, 1 ] <- hphCapOut[1]
> hessianHom[ 2, 4 ] <- hessianHom[ 4, 2 ] <- hphLabOut[1]
> hessianHom[ 3, 4 ] <- hessianHom[ 4, 3 ] <- hphMatOut[1]
> hessianHom[ 4, 4 ] <- hphOutOut[1]
> print( hessianHom )

[,1] [,2] [,3] [,4]


[1,] 0.2198994186 0.315188197 0.0008740851 -1.30964735
[2,] 0.3151881974 2.114366248 0.0027786041 -4.16320062
[3,] 0.0008740851 0.002778604 0.0003198275 -0.01154546
[4,] -1.3096473550 -4.163200623 -0.0115454561 11.00022565

As all diagonal elements of this Hessian matrix are non-negative, the conditions regarding the first-
order principal minors are all fulfilled. In the following, we calculate the six second-order principal
minors, the four third-order principal minors, and the determinant (fourth-order principal minor):

> det( hessianHom[ c(1:2), c(1:2)] )

[1] 0.3656043

> det( hessianHom[ c(1:3), c(1:3)] )

[1] 0.0001151481

> det( hessianHom[ c(1:4), c(1:4)] )

[1] -1.129906e-19

> det( hessianHom[ c(2:3), c(2:3)] )

[1] 0.0006685118

> det( hessianHom[ c(2:4), c(2:4)] )

[1] 0.001795727

> det( hessianHom[ c(3:4), c(3:4)] )

[1] 0.003384877

213
4 Dual Approach: Profit Function

> det( hessianHom[-4,-4] )

[1] 0.0001151481

> det( hessianHom[-3,-3] )

[1] 0.02088665

> det( hessianHom[-2,-2] )

[1] 0.0002138007

> det( hessianHom[-1,-1] )

[1] 0.001795727

> det( hessianHom )

[1] -1.129906e-19

These principal minors are all either positive or very close to zero. For instance, the determinant
(fourth-order principal minor) of the Hessian is close to zero, where it is negative on some com-
puters but positive on other computers. As Hessian matrices of linear homogeneous functions
are always singular, it is expected that the determinant of the Hessian matrix (the N th-order
principal minor) is zero. However, the computed determinant of our Hessian matrix is not ex-
actly zero due to rounding errors, which are unavoidable on digital computers. Rounding errors
may also have caused that our calculations of other principle minors resulted in values that are
negative but very close to zero, although they are in fact zero or slightly positive. Assuming
that the principal minors that are very close to zero are in fact zero or positive, we can conclude
that our Cobb-Douglas profit function with linear homogeneity imposed is convex in all prices
at the first observation. We can check the semidefiniteness of a matrix more conveniently with
the command semidefiniteness (package miscTools), which (by default) checks the signs of
the principal minors and returns a logical value indicating whether the necessary and sufficient
conditions for negative or positive semidefiniteness are fulfilled:
We can check the semidefiniteness of a matrix more conveniently with the command semidef-
initeness (package miscTools), which (by default) checks the signs of the principal minors and
returns a logical value indicating whether the necessary and sufficient conditions for negative or
positive semidefiniteness are fulfilled:

> semidefiniteness( hessianHom, positive = TRUE )

[1] TRUE

In the following, we will check whether convexity in all prices is fulfilled at each observation in
the sample:

214
4 Dual Approach: Profit Function

> dat$convexCDHom <- NA


> for( obs in 1:nrow( dat ) ) {
+ hessianLoop <- matrix( NA, nrow = 4, ncol = 4 )
+ hessianLoop[ 1, 1 ] <- hphCapCap[obs]
+ hessianLoop[ 2, 2 ] <- hphLabLab[obs]
+ hessianLoop[ 3, 3 ] <- hphMatMat[obs]
+ hessianLoop[ 1, 2 ] <- hessianLoop[ 2, 1 ] <- hphCapLab[obs]
+ hessianLoop[ 1, 3 ] <- hessianLoop[ 3, 1 ] <- hphCapMat[obs]
+ hessianLoop[ 2, 3 ] <- hessianLoop[ 3, 2 ] <- hphLabMat[obs]
+ hessianLoop[ 1, 4 ] <- hessianLoop[ 4, 1 ] <- hphCapOut[obs]
+ hessianLoop[ 2, 4 ] <- hessianLoop[ 4, 2 ] <- hphLabOut[obs]
+ hessianLoop[ 3, 4 ] <- hessianLoop[ 4, 3 ] <- hphMatOut[obs]
+ hessianLoop[ 4, 4 ] <- hphOutOut[obs]
+ dat$convexCDHom[obs] <-
+ semidefiniteness( hessianLoop, positive = TRUE, tol = 1e-10 )
+ }
> table( dat$convexCDHom )

TRUE
140

This result indicates that the convexity condition is violated not at a single observation. Conse-
quently, our Cobb-Douglas profit function with linear homogeneity imposed is convex in all prices
at all observations.

4.3.6 Predicted profit


As the dependent variable of the Cobb-Douglas profit function without homogeneity imposed is
ln(π), we have to apply the exponential function to the fitted dependent variable, in order obtain
the fitted profit π. Furthermore, we have to be aware of that the fitted method only returns
the predicted values for the observations that were included in the estimation. Hence, we have
to make sure that the predicted profits are only assigned to the observations that have a positive
profit and hence, were included in the estimation:

> dat$profitCD[ dat$profit > 0 ] <- exp( fitted( profitCD ) )

We obtain the predicted profit from the Cobb-Douglas profit function with homogeneity im-
posed by:

> dat$profitCDHom[ dat$profit > 0 ] <- exp( fitted( profitCDHom ) ) * dat$pOut

215
4 Dual Approach: Profit Function

4.3.7 Optimal profit shares


Given Hotelling’s Lemma, the coefficients of the (logarithmic) output price and the (logarithmic)
input prices are equal to the optimal “profit shares” derived from a Cobb-Douglas profit function:

∂ ln π(p, w) ∂π(p, w) p p p y(p, w)


αp = = = y(p, w) = ≡ r(p, w) ≥ 1 (4.34)
∂ ln p ∂p π(p, w) π(p, w) π(w, y)
∂ ln π(p, w) ∂π(p, w) wi wi wi xi (p, w)
αi = = = −xi (p, w) =− ≡ ri (p, w) ≤ 0 (4.35)
∂ ln wi ∂wi π(p, w) π(p, w) π(w, y)

In contrast to “real” shares, these “profit shares” are never between zero and one but they sum
up to one, as do “real” shares:

py−
P
py X wi x i i wi xi π
X  
r+ ri = + − = = =1 (4.36)
i
π i
π π π

For instance, an optimal profit share of the output of αp = 2.75 means that profit maximization
would result in a total revenue that is 2.75 times as large as the profit, which corresponds to
a return on sales of 1/2.75 = 36%. Similarly, an optimal profit share of the capital input of
αcap = −0.82 means that profit maximization would result in total capital costs that are 0.82
times as large as the profit.
The following commands draw histograms of the observed profit shares and compare them to
the optimal profit shares, which are predicted by our Cobb-Douglas profit function with linear
homogeneity imposed:

> hist( ( dat$pOut * dat$qOut / dat$profit )[


+ dat$profit > 0 ], 30 )
> lines( rep( ghOut, 2), c( 0, 100 ), lwd = 3 )
> hist( ( - dat$pCap * dat$qCap / dat$profit )[
+ dat$profit > 0 ], 30 )
> lines( rep( ghCap, 2), c( 0, 100 ), lwd = 3 )
> hist( ( - dat$pLab * dat$qLab / dat$profit )[
+ dat$profit > 0 ], 30 )
> lines( rep( ghLab, 2), c( 0, 100 ), lwd = 3 )
> hist( ( - dat$pMat * dat$qMat / dat$profit )[
+ dat$profit > 0 ], 30 )
> lines( rep( ghMat, 2), c( 0, 100 ), lwd = 3 )

The resulting graphs are shown in figure 4.3. These results somewhat contradict previous results.
While the results based on production functions and cost functions indicate that the apple pro-
ducers on average use too much capital and too few materials, the results of the Cobb-Douglas
profit function indicate that almost all apple producers use too much materials and most apple
producers use too less capital and labor. However, the results of the Cobb-Douglas profit function

216
4 Dual Approach: Profit Function

80

80
60
Frequency

Frequency

60
40

40
20

20
0

0
5 10 15 20 −6 −5 −4 −3 −2 −1 0

profit share out profit share cap


80
60

60
Frequency

Frequency
40

40
20

20
0

−6 −4 −2 0 −5 −4 −3 −2 −1 0

profit share lab profit share mat

Figure 4.3: Cobb-Douglas profit function: observed and optimal profit shares

217
4 Dual Approach: Profit Function

are consistent with previous results regarding the output quantity: all results suggest that most
apple producers should produce more output.

4.3.8 Derived output supply and input demand functions


Hotelling’s Lemma says that the partial derivative of a profit function with respect to the output
price is the output supply function and that the partial derivatives of a profit function with
respect to the input prices are the negative (unconditional) input demand functions:

∂π(p, w) π(p, w)
y(p, w) = = αp (4.37)
∂p p
∂π(p, w) π(p, w)
xi (p, w) = − = −αi (4.38)
∂wi wi

These output supply and input demand functions should be homogeneous of degree zero in all
prices:

y(t p, t w) = y(p, w) (4.39)


xi (t p, t w) = xi (p, w) (4.40)

This condition is fulfilled for the output supply and input demand functions derived from a
linearly homogeneous Cobb-Douglas profit function:

π(t p, t w) t π(p, w) π(p, w)


y(t p, t w) = αp = αp = αp = y(p, w) (4.41)
tp tp p
π(t p, t w) t π(p, w) π(p, w)
xi (t p, t w) = −αi = −αi = −αi = xi (p, w) (4.42)
t wi t wi wi

4.3.9 Derived output supply and input demand elasticities


Based on the derived output supply function (4.37) and the derived input demand functions (4.38),
we can derive the output supply elasticities and the (unconditional) input demand elasticities:

∂y(p, w) p
yp (p, w) = (4.43)
∂p y(p, w)
αp ∂π(p, w) p π(p, w) p
= − αp 2
(4.44)
p ∂p y(p, w) p y(p, w)
αp p π(p, w)
= y(p, w) − αp (4.45)
p y(p, w) p y(p, w)
αp
= αp − (4.46)
r(w, y)
= αp − 1 (4.47)

218
4 Dual Approach: Profit Function

∂y(p, w) wj
yj (p, w) = (4.48)
∂wj y(p, w)
αp ∂π(p, w) wj
= (4.49)
p ∂wj y(p, w)
αp wj
=− xj (p, w) (4.50)
p y(p, w)
π(p, w) wj xj (p, w)
= −αp (4.51)
p y(p, w) π(p, w)
αp rj (w, y)
= (4.52)
r(w, y)
= αj (4.53)

∂xi (p, w) p
ip (p, w) = (4.54)
∂p xi (p, w)
αi ∂π(p, w) p
=− (4.55)
wi ∂p xi (p, w)
αi p
=− y(p, w) (4.56)
wi xi (p, w)
π(p, w) p y(p, w)
= −αi (4.57)
wi xi (p, w) π(p, w)
αi αp
= (4.58)
ri (w, y)
= αp (4.59)

∂xi (p, w) wj
ij (p, w) = (4.60)
∂wj xi (p, w)
αi ∂π(p, w) wj π(p, w) wj
=− + δij αi 2 (4.61)
wi ∂wj xi (p, w) wj xi (p, w)
αi wj π(p, w)
= xj (p, w) + δij αi (4.62)
wi xi (p, w) wi xi (p, w)
π(p, w) wj xj (p, w) αi
= αi − δij (4.63)
wi xi (p, w) π(p, w) ri (w, y)
αi rj (w, y) αi
= − δij (4.64)
ri (w, y) ri (w, y)
= αj − δij (4.65)

All derived input demand elasticities based on our Cobb-Douglas profit function with linear
homogeneity imposed are presented in table 4.1. If the output price increases by one percent, the

219
4 Dual Approach: Profit Function

profit-maximizing firm will increase the use of capital, labor, and materials by 2.75% each, which
increases the production by 1.75%. The proportional increase of the input quantities (+2.75%)
results in a less than proportional increase in the output quantity (+1.75%). This indicates
that the model exhibits decreasing returns to scale, which is not surprising, because a profit
maximum cannot be in an area of increasing returns to scale (if all inputs are variable and all
markets function perfectly). If the price of capital increases by one percent, the profit-maximizing
firm will decrease the use of capital by 1.82% and decrease the use of labor and materials by 0.82%
each, which decreases the production by 0.82%. If the price of labor increases by one percent,
the profit-maximizing firm will decrease the use of labor by 1.9% and decrease the use of capital
and materials by 0.9% each, which decreases the production by 0.9%. If the price of materials
increases by one percent, the profit-maximizing firm will decrease the use of materials by 1.02%
and decrease the use of capital and labor by 0.02% each, which will decrease the production by
0.02%.

Table 4.1: Output supply and input demand elasticities derived from Cobb-Douglas profit func-
tion (with linear homogeneity imposed)
p wcap wlab wmat
y 1.75 -0.82 -0.9 -0.02
xcap 2.75 -1.82 -0.9 -0.02
xlab 2.75 -0.82 -1.9 -0.02
xmat 2.75 -0.82 -0.9 -1.02

4.4 Cobb-Douglas short-run profit function


4.4.1 Specification
The specification of a Cobb-Douglas short-run profit function is
  
α
wiαi  
Y Y
π v = A pαp  xj j  , (4.66)
i∈N 1 j∈N 2

This Cobb-Douglas short-run profit function can be linearized to


X X
ln π v = α0 + αp ln p + αi ln wi + αj ln xj (4.67)
i∈N 1 j∈N 2

with α0 = ln A.

4.4.2 Estimation
We can estimate a Cobb-Douglas short-run profit function with capital as a quasi-fixed input
using the following commands. Again, function lm automatically removes the observations (apple

220
4 Dual Approach: Profit Function

producers) with negative gross margin:

> profitCDSR <- lm( log( vProfit ) ~ log( pOut ) + log( pLab ) + log( pMat ) +
+ log( qCap ), data = dat )
> summary( profitCDSR )

Call:
lm(formula = log(vProfit) ~ log(pOut) + log(pLab) + log(pMat) +
log(qCap), data = dat)

Residuals:
Min 1Q Median 3Q Max
-4.7422 -0.0646 0.2578 0.4931 0.8989

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.2739 1.2261 2.670 0.008571 **
log(pOut) 3.1745 0.2263 14.025 < 2e-16 ***
log(pLab) -1.6188 0.4434 -3.651 0.000381 ***
log(pMat) -0.7637 0.2687 -2.842 0.005226 **
log(qCap) 1.0960 0.1245 8.802 8.31e-15 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9659 on 127 degrees of freedom


(8 observations deleted due to missingness)
Multiple R-squared: 0.6591, Adjusted R-squared: 0.6484
F-statistic: 61.4 on 4 and 127 DF, p-value: < 2.2e-16

4.4.3 Properties
This short-run profit function fulfills all microeconomic monotonicity conditions: it is increasing
in the output price, it is decreasing in the prices of all variable inputs, and it is increasing in the
quasi-fixed input quantity. However, the homogeneity condition is not fulfilled, as the coefficient
of the output price and the coefficients of the prices of the variable inputs do not sum up to one
but to 3.17 + (−1.62) + (−0.76) = 0.79.

4.4.4 Estimation with linear homogeneity in all prices imposed


We can impose the homogeneity condition on the Cobb-Douglas short-run profit function using
the same method as for the Cobb-Douglas (long-run) profit function:

221
4 Dual Approach: Profit Function

> profitCDSRHom <- lm( log( vProfit / pOut ) ~ log( pLab / pOut ) +
+ log( pMat / pOut ) + log( qCap ), data = dat )
> summary( profitCDSRHom )

Call:
lm(formula = log(vProfit/pOut) ~ log(pLab/pOut) + log(pMat/pOut) +
log(qCap), data = dat)

Residuals:
Min 1Q Median 3Q Max
-4.7302 -0.0677 0.2598 0.5160 0.8916

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.3145 1.2184 2.720 0.00743 **
log(pLab/pOut) -1.4574 0.2252 -6.471 1.88e-09 ***
log(pMat/pOut) -0.7156 0.2427 -2.949 0.00380 **
log(qCap) 1.0847 0.1212 8.949 3.50e-15 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9628 on 128 degrees of freedom


(8 observations deleted due to missingness)
Multiple R-squared: 0.5227, Adjusted R-squared: 0.5115
F-statistic: 46.73 on 3 and 128 DF, p-value: < 2.2e-16

We can obtain the coefficient of the output price from the homogeneity condition (4.15): 1 −
(−1.457) − (−0.716) = 3.173. All microeconomic monotonicity conditions are still fulfilled: the
Cobb-Douglas short-run profit function with homogeneity imposed is increasing in the output
price, decreasing in the prices of all variable inputs, and increasing in the quasi-fixed input
quantity.
We can test the homogeneity restriction by a likelihood ratio test:

> lrtest( profitCDSRHom, profitCDSR )

Likelihood ratio test

Model 1: log(vProfit/pOut) ~ log(pLab/pOut) + log(pMat/pOut) + log(qCap)


Model 2: log(vProfit) ~ log(pOut) + log(pLab) + log(pMat) + log(qCap)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -180.27
2 6 -180.17 1 0.1859 0.6664

222
4 Dual Approach: Profit Function

Given the large P -value, we can conclude that the data do not contradict the linear homogeneity
in the output price and the prices of the variable inputs.

4.4.5 Returns to scale


The sum over the coefficients of all quasi-fixed inputs indicates the percentage change of the gross
margin if the quantities of all quasi-fixed inputs are increased by one percent: If this sum is larger
than one, the increase in gross margin is more than proportional to the increase in the quasi-fixed
inputs. Hence, the technology has increasing returns to scale. If this sum over the coefficients of
all quasi-fixed inputs is smaller than one, the increase in gross margin is less than proportional
to the increase in the quasi-fixed inputs and the technology has decreasing returns to scale. As
the coefficient of our (single) quasi-fixed input is larger than one (1.085), we can conclude that
the technology has increasing returns to scale.

4.4.6 Shadow prices of quasi-fixed inputs


The partial derivatives of the short-run profit function with respect to the quantities of the
quasi-fixed inputs denote the additional gross margins that can be earned by an additional unit
of these quasi-fixed inputs. These internal marginal values of the quasi-fixed inputs are usually
called “shadow prices”. In case of the Cobb-Douglas short-run profit function, the shadow prices
can be computed by
∂π v ∂ ln π v π v πv
= = αj (4.68)
∂xj ∂ ln xj xj xj
Before we can calculate the shadow price of the capital input, we need to calculate the predicted
gross margin π v . As the dependent variable of the Cobb-Douglas short-run profit function with
homogeneity imposed is ln(π v / ln p), we have to apply the exponential function to the fitted
dependent variable and then we have to multiply the result with p, in order obtain the fitted
gross margins π v . Furthermore, we have to be aware of that the fitted method only returns
the predicted values for the observations that were included in the estimation. Hence, we have
to make sure that the predicted gross margins are only assigned to the observations that have a
positive gross margin and hence, were included in the estimation:

> dat$vProfitCDHom[ dat$vProfit > 0 ] <-


+ exp( fitted( profitCDSRHom ) ) * dat$pOut[ dat$vProfit > 0 ]

Now, we can calculate the shadow price of the capital input for each apple producer who has a
positive gross margin and hence, was included in the estimation:

> dat$pCapShadow <- with( dat, coef(profitCDSRHom)["log(qCap)"] *


+ vProfitCDHom / qCap )

The following commands show the variation of the shadow prices of capital and compare them
to the observed capital prices:

223
4 Dual Approach: Profit Function

> hist( dat$pCapShadow, 30 )


> hist( dat$pCapShadow[ dat$pCapShadow < 30 ], 30 )
> compPlot( dat$pCap, dat$pCapShadow, log = "xy" )

500.0
60


● ●
● ●●

10
● ●● ●● ●
50

● ●
●● ●● ●
●●●

50.0
8

●●●●

shadow prices
●● ●●
40

● ● ● ●
Frequency

Frequency
●●●●●●●●● ●
● ● ●● ●● ●●●
● ●
●●●● ●● ● ●

6
●● ● ●
●●
30

● ●●
● ●
● ● ●●
●●●●● ●

●●

●●● ●●

5.0
● ● ● ●
● ● ●
● ●●● ● ●
●● ●
●●●●● ●●●
●● ●

4
20

● ●

1.0
10

0.2
0

0 100 200 300 400 0 0 5 10 15 20 25 30 0.2 1.0 5.0 20.0 200.0

shadow price of capital shadow price of capital observed prices

Figure 4.4: Shadow prices of capital

The resulting graphs are shown in figure 4.4. The two histograms show that most shadow prices
are below 30 and many shadow prices are between 3 and 11 but there are also some apple
producers who would gain much more from increasing their capital input. Indeed, all apple
producers have a higher shadow price of capital than the observed price of capital, where the
difference is small for some producers and large for other producers. These differences can be
explained by risk aversion and market failures on the credit market or land market (e.g. marginal
prices are not equal to average prices).

224
5 Efficiency Measures

5.1 Technical efficiency


5.1.1 Output-oriented technical efficiency with one output
The output-oriented technical efficiency according to Shepard is defined as

y
TE = ⇔ y = T E · y∗ 0 ≤ T E ≤ 1, (5.1)
y∗

where y is the observed output quantity and y ∗ is the maximum output quantity that can be
produced with the observed input quantities x.
The output-oriented technical efficiency according to Farrell is defined as

y∗
TE = ⇔ y∗ = T E · y T E ≥ 1. (5.2)
y

These efficiency measures are graphically illustrated in Bogetoft and Otto (2011, p. 26, fig-
ure 2.2).

5.1.2 Input-oriented technical efficiency with one input


The input-oriented technical efficiency according to Shepard is defined as

x
TE = ⇔ x = T E · x∗ T E ≥ 1, (5.3)
x∗

where x is the observed input quantity and x∗ is the minimum input quantity at which the
observed output quantities y can be produced.
The input-oriented technical efficiency according to Farrell is defined as

x∗
TE = ⇔ x∗ = T E · x 0 ≤ T E ≤ 1. (5.4)
x

These efficiency measures are graphically illustrated in Bogetoft and Otto (2011, p. 26, fig-
ure 2.2).

5.1.3 Output-oriented technical efficiency with two or more outputs


The output-oriented technical efficiencies according to Shepard and Farrell assume a proportional
increase of all output quantities, while all input quantities are held constant.

225
5 Efficiency Measures

Hence, the output-oriented technical efficiency according to Shepard is defined as

y1 y2 yM
TE = ∗ = ∗ = ... = ∗ ⇔ yi = T E · yi∗ ∀ i 0 ≤ T E ≤ 1, (5.5)
y1 y2 yM

where y1 , y2 , . . . , yM are the observed output quantities, y1∗ , y2∗ , . . . , yM


∗ are the maximum output

quantities (given a proportional increase of all output quantities) that can be produced with the
observed input quantities x, and M is the number of outputs.
The output-oriented technical efficiency according to Farrell is defined as

y1∗ y∗ y∗
TE = = 2 = ... = M ⇔ yi∗ = T E · yi ∀ i T E ≥ 1. (5.6)
y1 y2 yM

These efficiency measures are graphically illustrated in Bogetoft and Otto (2011, p. 27, fig-
ure 2.3, right panel).

5.1.4 Input-oriented technical efficiency with two or more inputs


The input-oriented technical efficiencies according to Shepard and Farrell assume a proportional
reduction of all inputs, while all outputs are held constant.
Hence, the input-oriented technical efficiency according to Shepard is defined as

x1 x2 xN
TE = ∗ = ∗ = ... = ∗ ⇔ xi = T E · x∗i ∀ i TE ≥ 1 (5.7)
x1 x2 xN

where x1 , x2 , . . . , xN are the observed input quantities, x∗1 , x∗2 , . . . , x∗N are the minimum input
quantities (given a proportional decrease of all input quantities) at which the observed output
quantities y can be produced, and N is the number of inputs.
The input-oriented technical efficiency according to Farrell is defined as

x∗1 x∗ x∗
TE = = 2 = ... = N ⇔ x∗i = T E · xi ∀ i 0 ≤ T E ≤ 1. (5.8)
x1 x2 xN

These efficiency measures are graphically illustrated in Bogetoft and Otto (2011, p. 27, fig-
ure 2.3, left panel).

5.2 Allocative efficiency, revenue efficiency, cost efficiency


5.2.1 Output-oriented allocative efficiency and revenue efficiency
According to equation (5.6), the output-oriented technical efficiency according to Farrell is

ỹ1 ỹ2 ỹM p ỹ


TE = = = ... = = , (5.9)
y1 y2 yM py

where ỹ is the vector of technically efficient output quantities and p is the vector of output prices.

226
5 Efficiency Measures

Proof of the last equality in equation (5.9):


P P P
p ỹ pi ỹi i pi T E y i p i yi
= Pi = P = T E Pi = TE (5.10)
py i p i yi i pi yi i pi yi

The output-oriented allocative efficiency according to Farrell is defined as

p y∗ p ŷ
AE = = , (5.11)
p ỹ p ỹ

where y ∗ is the vector of technically efficient and allocatively efficient output quantities and ŷ is
the vector of output quantities so that p ŷ = p y ∗ and ŷi /ỹi = AE ∀ i.
Finally, the revenue efficiency according to Farrell is

p y∗ p y ∗ p ỹ
RE = = = AE · T E (5.12)
py p ỹ p y

All these efficiency measures can also be specified according to Shepard by just taking the in-
verse of the Farrell specifications. These efficiency measures are graphically illustrated in Bogetoft
and Otto (2011, p. 40, figure 2.11).

5.2.2 Input-oriented allocative efficiency and cost efficiency


According to equation (5.8), the input-oriented technical efficiency according to Farrell is

x̃1 x̃2 x̃N w x̃


TE = = = ... = = , (5.13)
x1 x2 xN wx

where x̃ is the vector of technically efficient input quantities and w is the vector of output prices.
The input-oriented allocative efficiency according to Farrell is defined as

w x∗ w x̂
AE = = , (5.14)
w x̃ w x̃

where x∗ is the vector of technically efficient and allocatively efficient input quantities and x̂ is
the vector of output quantities so that w x̂ = w x∗ and x̂i /x̃i = AE ∀ i.
Finally, the cost efficiency according to Farrell is

w x∗ w x∗ w x̃
CE = = = AE · T E (5.15)
wx w x̃ w x

All these efficiency measures can also be specified according to Shepard by just taking the in-
verse of the Farrell specifications. These efficiency measures are graphically illustrated in Bogetoft
and Otto (2011, p. 36, figure 2.9).

227
5 Efficiency Measures

5.3 Profit efficiency


The profit efficiency according to Farrell is defined as

p y ∗ − w x∗
PE = , (5.16)
py−w x

where y ∗ and x∗ denote the profit maximizing output quantities and input quantities, respectively
(assuming full technical efficiency). The profit efficiency according to Shepard is just the inverse
of the Farrell specifications.

5.4 Scale efficiency


In case of one input x and one output y = f (x), the scale efficiency according to Farrell is defined
as
AP ∗
SE = , (5.17)
AP
where AP = f (x)/x is the observed average product AP ∗ = f (x∗ )/x∗ is the maximum average
product, and x∗ is the input quantity that results in the maximum average product.
The first-order condition for a maximum of the average product is

∂AP ∂f (x) 1 f (x)


= − 2 =0 (5.18)
∂x ∂x x x

This condition can be re-arranged to

∂f (x) x
=1 (5.19)
∂x f (x)

Hence, a necessary (but not sufficient) condition for a maximum of the average product is an
elasticity of scale equal to one.

228
6 Stochastic Frontier Analysis

6.1 Stochastic production frontiers


6.1.1 Specification
In section 2, we have estimated average production functions, where about half of the observations
were below the estimated production function and about half of the observations were above the
estimated production function (see left panel of figure 6.1). However, in microeconomic theory,
the production function indicates the maximum output quantity for each given set of input
quantities. Hence, theoretically, no observation could be above the production function and an
observations below the production function would indicate technical inefficiency.

y y

o o
o o o o o o
o o o o
o o o o o o
o o o o
o o
o o o o
o o
o o
o o

x x
Source: Bogetoft and Otto (2011)

Figure 6.1: Production function estimation: ordinary regression and with intercept correction

This means that all residuals must be negative or zero. A production function with only
non-positive residuals could look like:

ln y = ln f (x) − u with u ≥ 0, (6.1)

where −u ≤ 0 are the non-positive residuals. One solution to achieve this could be to estimate
an average production function by ordinary least squares and then simply shift the production
function up until all residuals are negative or zero (see right panel of figure 6.1). However, this

229
6 Stochastic Frontier Analysis

procedure does not account for statistical noise and is very sensitive to positive outliers.1 As
virtually all data sets and models are flawed with statistical noise, e.g. due to measurement
errors, omitted variables, and approximation errors, Meeusen and van den Broeck (1977) and
Aigner, Lovell, and Schmidt (1977) independently proposed the stochastic frontier model that
simultaneously accounts for statistical noise and technical inefficiency:

ln y = ln f (x) − u + v with u ≥ 0, (6.2)

where −u ≤ 0 accounts for technical inefficiency and v accounts for statistical noise. This model
can be re-written (see, e.g. Coelli et al., 2005, p. 243):

y = f (x) e−u ev (6.3)

As explained in section 5.1, Shepard’s output-oriented technical efficiencies are defined as the
ratio between the observed output and the frontier output (see also, e.g., Coelli et al., 2005,
p. 244):
y f (x) e−u ev
TE = = = e−u , (6.4)
f (x) ev f (x) ev
while Farrell’s output-oriented technical efficiencies are defined as the ratio between the frontier
output and the observed output:

f (x) ev f (x) ev
TE = = = eu . (6.5)
y f (x) e−u ev

As Shepard’s output-oriented technical efficiencies are much more frequently used than Farrell’s
output-oriented technical efficiencies, we will continue using Shepard’s output-oriented technical
efficiencies.
The stochastic frontier model is usually estimated by an econometric maximum likelihood
estimation, which requires distributional assumptions of the error terms. Most often, it is assumed
that the noise term v follows a normal distribution with zero mean and constant variance σv2 ,
the inefficiency term u follows a positive half-normal distribution or a positive truncated normal
distribution with constant scale parameter σu2 , and all vs and all us are independent:

v ∼ N (0, σv2 ) (6.6)


u ∼ N + (µ, σu2 ), (6.7)

where µ = 0 for a positive half-normal distribution and µ 6= 0 for a positive truncated normal
distribution. These assumptions result in a left-skewed distribution of the total error terms ε =
−u + v, i.e. the density function is flat on the left and steep on the right. Hence, it is very rare
that a firm has a large positive residual (much higher output than the production function) but

1
This is also true for the frequently-used Data Envelopment Analysis (DEA).

230
6 Stochastic Frontier Analysis

it is not so rare that a firm has a large negative residual (much lower output than the production
function).

6.1.1.1 Marginal products and output elasticities in SFA models

Given the multiplicative specification of stochastic production frontier models (6.3) and assuming
that the random error v is zero, we can see that the marginal products are downscaled by the
level of the technical efficiency:

∂y ∂f (x) −u ∂f (x) f (x)


= e = TE = T E αi (6.8)
∂xi ∂xi ∂xi xi

However, the partial production elasticities are unaffected by the efficiency level:

∂y xi ∂f (x) −u xi ∂f (x) xi ∂ ln f (x)


= e −u
= = = αi (6.9)
∂xi y ∂xi f (x)e ∂xi f (x) ∂ ln xi

As the output elasticities do not depend on the firm’s technical efficiency, also the elasticity of
scale does not depend on the firm’s technical efficiency.

6.1.2 Skewness of residuals from OLS estimations


The following commands plot histograms of the residuals taken from the Cobb-Douglas and the
Translog production function:

> hist( residuals( prodCD ), 15 )


> hist( residuals( prodTL ), 15 )
10 15 20

10 15 20
Frequency

Frequency
5

5
0

−1.5 −0.5 0.5 1.0 1.5 −1.5 −0.5 0.5 1.0 1.5

residuals prodCD residuals prodTL

Figure 6.2: Residuals of Cobb-Douglas and Translog production functions

The resulting graphs are shown in figure 6.2. The residuals of both production functions are
left-skewed. This visual assessment of the skewness can be confirmed by calculating the skewness
using the function skewness that is available in the package moments:

231
6 Stochastic Frontier Analysis

> library( "moments" )


> skewness( residuals( prodCD ) )

[1] -0.4191323

> skewness( residuals( prodTL ) )

[1] -0.3194211

As a negative skewness means that the residuals are left-skewed, it is likely that not all apple
producers are fully technically efficient.
However, the distribution of the residuals does not always have the expected skewness. Possible
reasons for an unexpected skewness of OLS residuals are explained in section 6.2.2.

6.1.3 Cobb-Douglas stochastic production frontier


6.1.3.1 Estimation

We can use the command sfa (package frontier) to estimate stochastic production frontiers. The
basic syntax of the command sfa is similar to the syntax of the command lm. The following
command estimates a Cobb-Douglas stochastic production frontier assuming that the inefficiency
term u follows a positive halfnormal distribution:

> library( "frontier" )


> prodCDSfa <- sfa( log( qOut ) ~ log( qCap ) + log( qLab ) + log( qMat ),
+ data = dat )
> summary( prodCDSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 12 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.228813 1.247739 0.1834 0.8544981
log(qCap) 0.160934 0.081883 1.9654 0.0493668 *
log(qLab) 0.684777 0.146797 4.6648 3.089e-06 ***
log(qMat) 0.465871 0.131588 3.5404 0.0003996 ***
sigmaSq 1.000040 0.202456 4.9395 7.830e-07 ***
gamma 0.896664 0.070952 12.6375 < 2.2e-16 ***

232
6 Stochastic Frontier Analysis

---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -133.8893

cross-sectional data
total number of observations = 140

mean efficiency: 0.5379937

The parameters of the Cobb-Douglas production frontier can be interpreted as before. The
estimated production function is monotonically increasing in all inputs. The output elasticity of
capital is 0.161, the output elasticity of labor is 0.685, The output elasticity of materials is 0.466,
and the elasticity of scale is 1.312.

6.1.3.2 Variance parameters

The estimation algorithm re-parameterizes the variance parameter of the noise term (σv2 ) and the
scale parameter of the inefficiency term (σu2 ) and instead estimates the parameters σ 2 = σv2 + σu2
and γ = σu2 /σ 2 . The parameter γ lies between zero and one and indicates the importance of the
inefficiency term. If γ is zero, the inefficiency term u is irrelevant and the results should be equal
to OLS results. In contrast, if γ is one, the noise term v is irrelevant and all deviations from the
production frontier are explained by technical inefficiency. As the estimate of γ is 0.897, we can
conclude that both statistical noise and inefficiency are important for explaining deviations from
the production function but that inefficiency is more important than noise. As σu2 is not equal to
the variance of the inefficiency term u, the estimated parameter γ cannot be interpreted as the
proportion of the total variance that is due to inefficiency. In fact, the variance of the inefficiency
term u is      2 
µ µ µ

σu φ σu φ σu
V ar(u) = σu2 1 − −     , (6.10)
   
µ µ
Φ σu Φ σu

where Φ(.) indicates the cumulative distribution function and φ(.) the probability density function
of the standard normal distribution. If the inefficiency term u follows a positive halfnormal
distribution (i.e. µ = 0), the above equation reduces to
h i
V ar(u) = σu2 1 − (2 φ (0))2 , (6.11)

We can calculate the estimated variances of the inefficiency term u and the noise term v by
following commands:

> gamma <- unname( coef(prodCDSfa)["gamma"] )

[1] 0.8966641

233
6 Stochastic Frontier Analysis

> sigmaSq <- unname( coef(prodCDSfa)["sigmaSq"] )

[1] 1.00004

> sigmaSqU <- gamma * sigmaSq

[1] 0.8966997

> varU <- sigmaSqU * ( 1 - ( 2 * dnorm(0) )^2 )

[1] 0.3258429

> varV <- sigmaSqV <- ( 1 - gamma ) * sigmaSq

[1] 0.10334

Hence, the proportion of the total variance (V ar(−u + v) = V ar(u) + V ar(v))2 that is due to
inefficiency is estimated to be:

> varU / ( varU + varV )

[1] 0.7592169

This indicates that around 75.9% of the total variance is due to inefficiency.
The frontier package calculates these additional variance parameters (and some further variance
parameters) automatically, if argument extraPar of the summary() method is set to TRUE:

> summary( prodCDSfa, extraPar = TRUE )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 12 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.228813 1.247739 0.1834 0.8544981
log(qCap) 0.160934 0.081883 1.9654 0.0493668 *
log(qLab) 0.684777 0.146797 4.6648 3.089e-06 ***
log(qMat) 0.465871 0.131588 3.5404 0.0003996 ***
2
This equation relies on the assumption that the inefficiency term u and the noise term v are independent, i.e.
their covariance is zero.

234
6 Stochastic Frontier Analysis

sigmaSq 1.000040 0.202456 4.9395 7.830e-07 ***


gamma 0.896664 0.070952 12.6375 < 2.2e-16 ***
sigmaSqU 0.896700 0.241715 3.7097 0.0002075 ***
sigmaSqV 0.103340 0.055831 1.8509 0.0641777 .
sigma 1.000020 0.101226 9.8791 < 2.2e-16 ***
sigmaU 0.946942 0.127629 7.4195 1.176e-13 ***
sigmaV 0.321465 0.086838 3.7019 0.0002140 ***
lambdaSq 8.677179 6.644543 1.3059 0.1915829
lambda 2.945705 1.127836 2.6118 0.0090061 **
varU 0.325843 NA NA NA
sdU 0.570827 NA NA NA
gammaVar 0.759217 NA NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -133.8893

cross-sectional data
total number of observations = 140

mean efficiency: 0.5379937

The additionally returned parameter are defined as follows: sigmaSqU = σu2 = σ 2 · γ, sigmaSqV

= σv2 = σ 2 · (1 − γ) = V ar (v), sigma = σ = σ 2 , sigmaU = σu = σu2 , sigmaV = σv = σv2 ,
p p

lambdaSq = λ2 = σu2 /σv2 , lambda = λ = σu /σv , varU = V ar (u), sdU =


p
V ar (u), and gammaVar
= V ar (u)/(V ar (u) + V ar (v)).

6.1.3.3 Statistical tests for inefficiencies

If there would be no inefficiencies, i.e. u = 0 for all observations, coefficient γ would be equal
to zero. Hence, one can test the null hypothesis of no inefficiencies by simply testing whether
γ is equal to (does not significantly deviate from) zero. However, a t-test of the null hypothesis
γ = 0 (e.g. reported in the output of the summary method) is not valid, because γ is bound to the
interval [0, 1] and hence, cannot follow a t-distribution. Instead, we can use a likelihood ratio test
to check whether adding the inefficiency term u significantly improves the fit of the model. If the
lrtest method is called just with a single stochastic frontier model, it compares the stochastic
frontier model with the corresponding OLS model (i.e. a model with γ equal to zero):

> lrtest( prodCDSfa )

Likelihood ratio test

235
6 Stochastic Frontier Analysis

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -137.61
2 6 -133.89 1 7.4387 0.003192 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Under the null hypothesis (no inefficiency, only noise), the test statistic asymptotically follows a
mixed χ2 -distribution (Coelli, 1995).3 The rather small P-value indicates that the data clearly
reject the OLS model in favor of the stochastic frontier model, i.e. there is significant technical
inefficiency.

6.1.3.4 Obtaining technical efficiency estimates

As neither the noise term v nor the inefficiency term u but only the total error term ε = −u + v
is known, the technical efficiencies T E = e−u are generally unknown. However, given that the
parameter estimates (including the parameters σ 2 and γ or σv2 and σu2 ) and the total error term ε
are known, it is possible to determine the expected value of the technical efficiency (see, e.g.
Coelli et al., 2005, p. 255):
E = E e−u
 
Td (6.12)

These efficiency estimates can be obtained by the efficiencies method:

> dat$effCD <- efficiencies( prodCDSfa )

Now, we visualize the variation of the efficiency estimates using a histogram and we explore
the correlation between the efficiency estimates and the output as well as the firm size (measured
as aggregate input use by a Fisher quantity index of all inputs):

> hist( dat$effCD, 15 )


> plot( dat$qOut, dat$effCD, log = "x" )
> plot( dat$X, dat$effCD, log = "x" )

The resulting graphs are shown in figure 6.3. The efficiency estimates are rather low: the firms
only produce between 10% and 90% of the maximum possible output quantities. As the efficiency
directly influences the output quantity, it is not surprising that the efficiency estimates are highly
correlated with the output quantity. On the other hand, the efficiency estimates are only slightly
correlated with firm size. However, the largest firms all have an above-average efficiency estimate,
while only a very few of the smallest firms have an above-average efficiency estimate.

3
As a standard likelihood ratio test assumes that the test statistic follows a (standard) χ2 -distribution under the
null hypothesis, a test that is conducted by the command lrtest( prodCD, prodCDSfa ) returns an incorrect
P-value.

236
6 Stochastic Frontier Analysis

●● ●
● ●●●● ●
●● ● ●● ●

0.8

0.8
●● ●●●● ● ● ●
● ● ● ● ●●● ●●

15
● ● ● ●● ● ●●


●● ●●● ●● ● ● ● ●
●● ●
● ● ●
●● ● ● ● ● ● ●
●● ● ● ●● ● ●
● ● ● ● ● ● ● ●
● ● ● ● ●●● ● ● ● ● ● ●

●● ●● ● ●● ●● ● ●
● ● ●● ● ●

0.6

0.6
●●
● ●● ● ●
Frequency

● ● ●
●● ● ●●
● ●
10

●● ●● ●●

effCD

effCD
● ● ●
● ●
● ●●●● ● ●●● ● ●●
● ●●● ●●●●
●● ● ● ●● ● ● ● ●
● ● ●
● ●
●● ● ● ●
● ● ● ● ● ● ● ●

0.4

0.4
● ● ● ● ● ● ● ● ● ●
●● ●● ●
● ● ●
●● ●● ●● ●●
●● ● ● ● ●
5

● ● ● ●
●●● ● ● ● ●
● ●● ● ●● ●
● ●
● ●
● ●

0.2

0.2
● ● ● ● ● ● ●●
● ●● ● ●●
● ●●
● ● ● ●● ●
● ● ● ●
0

0.2 0.4 0.6 0.8 1e+05 5e+05 5e+06 0.5 1.0 2.0 5.0

effCD qOut X

Figure 6.3: Efficiency estimates of Cobb-Douglas production frontier

6.1.4 Translog production frontier


6.1.4.1 Estimation

As the Cobb-Douglas functional form is very restrictive, we additionally estimate a Translog


stochastic production frontier:

> prodTLSfa <- sfa( log( qOut ) ~ log( qCap ) + log( qLab ) + log( qMat )
+ + I( 0.5 * log( qCap )^2 ) + I( 0.5 * log( qLab )^2 )
+ + I( 0.5 * log( qMat )^2 ) + I( log( qCap ) * log( qLab ) )
+ + I( log( qCap ) * log( qMat ) ) + I( log( qLab ) * log( qMat ) ),
+ data = dat )
> summary( prodTLSfa, extraPar = TRUE )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 23 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) -8.8110424 19.9181626 -0.4424 0.6582271
log(qCap) -0.6332521 2.0855273 -0.3036 0.7614012
log(qLab) 4.4511064 4.4552358 0.9991 0.3177593
log(qMat) -1.3976309 3.8097808 -0.3669 0.7137284
I(0.5 * log(qCap)^2) 0.0053258 0.1866174 0.0285 0.9772324
I(0.5 * log(qLab)^2) -1.5030433 0.6812813 -2.2062 0.0273700 *
I(0.5 * log(qMat)^2) -0.5113559 0.3733348 -1.3697 0.1707812

237
6 Stochastic Frontier Analysis

I(log(qCap) * log(qLab)) 0.4187529 0.2747251 1.5243 0.1274434


I(log(qCap) * log(qMat)) -0.4371561 0.1902856 -2.2974 0.0215978 *
I(log(qLab) * log(qMat)) 0.9800294 0.4216638 2.3242 0.0201150 *
sigmaSq 0.9587307 0.1968009 4.8716 1.107e-06 ***
gamma 0.9153387 0.0647478 14.1370 < 2.2e-16 ***
sigmaSqU 0.8775633 0.2328364 3.7690 0.0001639 ***
sigmaSqV 0.0811674 0.0497448 1.6317 0.1027476
sigma 0.9791480 0.1004960 9.7432 < 2.2e-16 ***
sigmaU 0.9367835 0.1242744 7.5380 4.771e-14 ***
sigmaV 0.2848989 0.0873025 3.2634 0.0011010 **
lambdaSq 10.8117752 9.0334818 1.1969 0.2313628
lambda 3.2881264 1.3736519 2.3937 0.0166789 *
varU 0.3188892 NA NA NA
sdU 0.5647027 NA NA NA
gammaVar 0.7971103 NA NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -128.0684

cross-sectional data
total number of observations = 140

mean efficiency: 0.5379939

6.1.4.2 Statistical test for inefficiencies

A likelihood ratio test confirms that the stochastic frontier model fits the data much better than
an average production function estimated by OLS:

> lrtest( prodTLSfa )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 11 -131.25
2 12 -128.07 1 6.353 0.005859 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

238
6 Stochastic Frontier Analysis

6.1.4.3 Testing against the Cobb-Douglas functional form

A further likelihood ratio test indicates that it is not really clear whether the Translog stochastic
frontier model fits the data significantly better than the Cobb-Douglas stochastic frontier model:

> lrtest( prodCDSfa, prodTLSfa )

Likelihood ratio test

Model 1: prodCDSfa
Model 2: prodTLSfa
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -133.89
2 12 -128.07 6 11.642 0.07045 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

While the Cobb-Douglas functional form is accepted at the 5% significance level, it is rejected in
favor of the Translog functional form at the 10% significance level.

6.1.4.4 Obtaining technical efficiency estimates

The efficiency estimates based on the Translog stochastic production frontier can be obtained
(again) by the efficiencies method:

> dat$effTL <- efficiencies( prodTLSfa )

The following commands illustrate their variation, their correlation with the output level, and
their correlation with the firm size (measured as input use):

> hist( dat$effTL, 15 )


> plot( dat$qOut, dat$effTL, log = "x" )
> plot( dat$X, dat$effTL, log = "x" )

The resulting graphs are shown in figure 6.4. These efficiency estimates are rather similar to the
efficiency estimates based on the Cobb-Douglas stochastic production frontier. This is confirmed
by a direct comparison of these efficiency estimates:

> compPlot( dat$effCD, dat$effTL )

The resulting graph is shown in figure 6.5. Most efficiency estimates only slightly differ between
the two functional forms but a few efficiency estimates are considerably higher for the Translog
functional form. The inflexibility of the Cobb-Douglas functional form probably resulted in an
insufficient adaptation of the frontier to some observations, which lead to larger negative residuals
and hence, lower efficiency estimates in the Cobb-Douglas model.

239
6 Stochastic Frontier Analysis

●● ● ●●●● ●
●●● ● ●●
12

●● ●●●● ●
● ●● ●● ● ● ●

0.8

0.8

●● ●● ● ● ● ● ●

● ● ● ● ●● ●● ● ● ● ● ● ● ●● ● ●
●●● ●● ●● ●
● ●●
10

●● ●
● ● ● ●
● ● ● ●● ●
●●●●●● ● ● ● ●● ●● ●
●● ● ●
●● ● ● ●
● ● ● ● ●● ●
●●●●

0.6

0.6
● ●● ● ● ● ● ●
Frequency

● ●● ● ●●
8

● ● ● ●● ●

●●

effTL

effTL
● ● ● ● ●
● ● ● ●● ● ●
●● ●
● ●
● ●●●●● ●● ●
● ●● ●●

●●●
6

● ●● ● ●

0.4

0.4


● ●● ●
● ●
● ●●● ● ● ●● ● ●
● ●●● ● ● ● ●● ●● ● ●
●● ● ●● ●
4

● ● ● ● ● ● ●
● ● ● ● ●
● ● ●● ● ● ● ● ●●●
● ● ● ● ● ● ●

0.2

0.2
● ● ● ● ●
2

● ● ●●
● ● ● ●●
● ●●
● ● ●●● ● ●
● ●
● ●
0

0.2 0.4 0.6 0.8 1e+05 5e+05 5e+06 0.5 1.0 2.0 5.0

effTL qOut X

Figure 6.4: Efficiency estimates of Translog production frontier


●●


● ●●
●●

●●●●
0.8

● ● ●
●● ● ●●● ●
●● ●●
● ●● ● ●
● ●



● ●● ●
●● ● ●●●● ●
● ● ●●●●
● ●●●
0.6

● ●
● ●
● ●
● ●



effTL

●● ●●●
● ● ●
● ●●●
●●●

●●
●●● ●
0.4



●●
●● ●



●●
●●
●●
● ● ●●
● ●
●● ●●
●●●
●●
0.2

●● ●●
●●
●● ●


0.2 0.4 0.6 0.8

effCD

Figure 6.5: Efficiency estimates of Cobb-Douglas and Translog production frontier

240
6 Stochastic Frontier Analysis

6.1.5 Translog production frontier with mean-scaled variables


As argued in section 2.6.15, it is sometimes convenient to estimate a Translog production (frontier)
function with mean-scaled variables. The following command estimates a Translog production
function with mean-scaled output and input quantities:

> prodTLmSfa <- sfa( log( qmOut ) ~ log( qmCap ) + log( qmLab ) + log( qmMat )
+ + I( 0.5 * log( qmCap )^2 ) + I( 0.5 * log( qmLab )^2 )
+ + I( 0.5 * log( qmMat )^2 ) + I( log( qmCap ) * log( qmLab ) )
+ + I( log( qmCap ) * log( qmMat ) ) + I( log( qmLab ) * log( qmMat ) ),
+ data = dat )
> summary( prodTLmSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 17 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.6388793 0.1311531 4.8712 1.109e-06 ***
log(qmCap) 0.1308903 0.1003318 1.3046 0.192038
log(qmLab) 0.7065404 0.1555606 4.5419 5.575e-06 ***
log(qmMat) 0.4657266 0.1516483 3.0711 0.002133 **
I(0.5 * log(qmCap)^2) 0.0053227 0.1848995 0.0288 0.977034
I(0.5 * log(qmLab)^2) -1.5030266 0.6761522 -2.2229 0.026222 *
I(0.5 * log(qmMat)^2) -0.5113617 0.3749803 -1.3637 0.172661
I(log(qmCap) * log(qmLab)) 0.4187571 0.2686428 1.5588 0.119047
I(log(qmCap) * log(qmMat)) -0.4371473 0.1886950 -2.3167 0.020521 *
I(log(qmLab) * log(qmMat)) 0.9800162 0.4201674 2.3324 0.019677 *
sigmaSq 0.9587158 0.1967744 4.8722 1.104e-06 ***
gamma 0.9153349 0.0659588 13.8774 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -128.0684

cross-sectional data
total number of observations = 140

241
6 Stochastic Frontier Analysis

mean efficiency: 0.5379969

> all.equal( coef( prodTLmSfa )[-c(1:4)], coef( prodTLmSfa )[-c(1:4)] )

[1] TRUE

> all.equal( efficiencies( prodTLmSfa ), efficiencies( prodTLSfa ) )

[1] "Mean relative difference: 7.059776e-06"

While the intercept and the first-order parameters have adjusted to the new units of measure-
ment, the second-order parameters, the variance parameters, and the efficiency estimates re-
main (nearly) unchanged. From the estimated coefficients of the Translog production frontier
with mean-scaled input quantities, we can immediately see that the monotonicity condition is
fulfilled at the sample mean, that the output elasticities of capital, labor, and materials are
0.131, 0.707, and 0.466, respectively, at the sample mean, and that the elasticity of scale is
0.131 + 0.707 + 0.466 = 1.303 at the sample mean.

6.2 Stochastic cost frontiers


6.2.1 Specification
The general specification of a stochastic cost frontier is

ln c = ln c(w, y) + u + v with u ≥ 0, (6.13)

where u ≥ 0 accounts for cost inefficiency and v accounts for statistical noise. This model can be
re-written as:
c = c(w, y) eu ev (6.14)

The cost efficiency according to Shepard is

c f (x) eu ev
CE = = = eu , (6.15)
c(w, y) ev c(w, y) ev

while the cost efficiency according to Farrell is

c(w, y) ev c(w, y) ev
CE = = = e−u . (6.16)
c f (x) eu ev

Assuming a normal distribution of the noise term v and a positive half-normal distribution of
the inefficiency term u, the distribution of the residuals from a cost function is expected to be
right-skewed in the case of cost inefficiencies.

242
6 Stochastic Frontier Analysis

6.2.2 Skewness of residuals from OLS estimations


The following commands visualize the distribution of the residuals of the OLS estimations of the
Cobb-Douglas and Translog cost functions with linear homogeneity in input prices imposed:

> hist( residuals( costCDHom ) )


> hist( residuals( costTLHom ) )

10 20 30 40
25
Frequency

Frequency
15
0 5

0
−0.5 0.0 0.5 −0.5 0.0 0.5 1.0

residuals costCDHom residuals costTLHom

Figure 6.6: Residuals of Cobb-Douglas and Translog cost functions

The resulting graphs are shown in figure 6.6. The distributions of the residuals look approximately
symmetric and rather a little left-skewed than right-skewed (although we expected the latter).
This visual assessment of the skewness can be confirmed by calculating the skewness using the
function skewness that is available in the package moments:

> library( "moments" )


> skewness( residuals( costCDHom ) )

[1] -0.05788105

> skewness( residuals( costTLHom ) )

[1] -0.03709506

The residuals of the two cost functions have both a small (in absolute terms) but negative
skewness, which means that the residuals are slightly left-skewed, although we expected right-
skewed residuals. It could be that the distribution of the unknown true total error term (u + v)
in the sample is indeed symmetric or slightly left-skewed, e.g. because

ˆ there is no cost inefficiency (but only noise) (the distribution of residuals is “correct”),
ˆ the distribution of the noise term is left-skewed, which neutralizes the right-skewed distri-
bution of the inefficiency term (misspecification of the distribution of the noise term in the
SFA model),

243
6 Stochastic Frontier Analysis

ˆ the distribution of the inefficiency term is symmetric or left-skewed (misspecification of the


distribution of the inefficiency term in the SFA model),
ˆ the sampling of the observations by coincidence resulted in a symmetric or left-skewed dis-
tribution of the true total error term (u+v) in this specific sample, although the distribution
of the true total error term (u + v) in the population is right-skewed, and/or
ˆ the farm managers do not aim at maximizing profit (which implies minimizing costs) but
have other objectives.

It could also be that the distribution of the unknown true residuals in the sample is right-skewed,
but the OLS estimates are left-skewed, e.g. because

ˆ the parameter estimates are imprecise (but unbiased),


ˆ the estimated functional forms (Cobb-Douglas and Translog) are poor approximations of
the unknown true functional form (functional-form misspecification),
ˆ there are further relevant explanatory variables that are not included in the model specifi-
cation (omitted-variables bias),
ˆ there are measurement errors in the variables, particularly in the explanatory variables
(errors-in-variables problem), and/or
ˆ the output quantity or the input prices are not exogenously given (endogeneity bias).

Hence, a left-skewed distribution of the residuals does not necessarily mean that there is no
cost inefficiency, but it could also mean that the model is misspecified or that this is just by
coincidence.

6.2.3 Estimation of a Cobb-Douglas stochastic cost frontier


The following command estimates a Cobb-Douglas stochastic cost frontier with linear homogene-
ity in input prices imposed:

> costCDHomSfa <- sfa( log( cost / pMat ) ~ log( pCap / pMat ) +
+ log( pLab / pMat ) + log( qOut ), data = dat,
+ ineffDecrease = FALSE )
> summary( costCDHomSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency increases the endogenous variable (as in a cost function)
The dependent variable is logged
Iterative ML estimation terminated after 63 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)

244
6 Stochastic Frontier Analysis

(Intercept) 6.75019293 0.68299735 9.8832 < 2.2e-16 ***


log(pCap/pMat) 0.07241373 0.04552092 1.5908 0.1117
log(pLab/pMat) 0.44642053 0.07939730 5.6226 1.881e-08 ***
log(qOut) 0.37415322 0.02998349 12.4786 < 2.2e-16 ***
sigmaSq 0.11116990 0.01404204 7.9169 2.434e-15 ***
gamma 0.00010221 0.04300042 0.0024 0.9981
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -44.87812

cross-sectional data
total number of observations = 140

mean efficiency: 0.9973161

The parameter γ, which indicates the proportion of the total residual variance that is caused by
inefficiency is close to zero and a t-test suggests that it is statistically not significantly different
from zero. As the t-test for the parameter γ is not always reliable, we use a likelihood ratio test
to verify this result:

> lrtest( costCDHomSfa )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -44.878
2 6 -44.878 1 0 0.499

This test confirms that the fit of the OLS model (which assumes that γ is zero and hence, that
there is no inefficiency) is not significantly worse than the fit of the stochastic frontier model.
In fact, the cost efficiency estimates are all very close to one. By default, the efficiencies()
method calculates the efficiency estimates as E [e−u ], which means that we obtain estimates
of Farrell-type cost efficiencies (6.16). Given that E [eu ] is not equal to 1/E [e−u ] (as the ex-
pectation operator is an additive operator), we cannot obtain estimates of Shepard-type cost
efficiencies (6.15) by taking the inverse of the estimates of the Farrell-type cost efficiencies (6.16).
However, we can obtain estimates of Shepard-type cost efficiencies (6.15) by setting argument
minusU of the efficiencies() method equal to FALSE, which tells the efficiencies() method
to calculate the efficiency estimates as E [eu ].

245
6 Stochastic Frontier Analysis

> dat$costEffCDHomFarrell <- efficiencies( costCDHomSfa )


> dat$costEffCDHomShepard <- efficiencies( costCDHomSfa, minusU = FALSE )

> hist( dat$costEffCDHomFarrell, 15 )


> hist( dat$costEffCDHomShepard, 15 )

25
Frequency

Frequency
15

15
0 5

0 5
0.99729 0.99731 0.99733 1.00267 1.00269 1.00271

costEffCDHomFarrell costEffCDHomShepard

Figure 6.7: Efficiency estimates of Cobb-Douglas cost frontier

The resulting graphs are shown in figure 6.7. While the Farrell-type cost efficiencies are all slightly
below one, the Shepard-type cost efficiencies are all slightly above one. Both graphs show that
we do not find any relevant cost inefficiencies, although we have found considerable technical
inefficiencies.

6.2.4 Short-run cost frontiers


> hist( residuals( costCDSRHom ) )
30
Frequency

20
10
0

−0.5 0.0 0.5

residuals costCDSRHom

Figure 6.8: Residuals of Cobb-Douglas short-run cost function

The resulting graph is shown in figure 6.8.

> costCDSRHomSfa <- sfa( log( vCost / pMat ) ~ log( pLab / pMat ) +
+ log( qCap ) + log( qOut ), data = dat, ineffDecrease = FALSE )
> summary( costCDSRHomSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency increases the endogenous variable (as in a cost function)
The dependent variable is logged

246
6 Stochastic Frontier Analysis

iteration failed

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 5.62206 1.00000 5.6221 1.887e-08 ***
log(pLab/pMat) 0.53487 1.00000 0.5349 0.5927
log(qCap) 0.18774 1.00000 0.1877 0.8511
log(qOut) 0.29010 1.00000 0.2901 0.7717
sigmaSq 0.10122 1.00000 0.1012 0.9194
gamma 0.05000 1.00000 0.0500 0.9601
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -36.05615

cross-sectional data
total number of observations = 140

mean efficiency: 0.9456755

> costCDSRHomSfa <- sfa( log( vCost / pMat ) ~ log( pLab / pMat ) +
+ log( qCap ) + log( qOut ), data = dat, ineffDecrease = FALSE,
+ startVal = c( coef( costCDSRHom ), 0.1, 0.01 ) )
> summary( costCDSRHomSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency increases the endogenous variable (as in a cost function)
The dependent variable is logged
Iterative ML estimation terminated after 47 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 5.6702532 0.7528702 7.5315 5.015e-14 ***
log(pLab/pMat) 0.5348722 0.0654827 8.1681 3.132e-16 ***
log(qCap) 0.1877462 0.0371666 5.0515 4.384e-07 ***
log(qOut) 0.2900998 0.0302850 9.5790 < 2.2e-16 ***
sigmaSq 0.0980706 0.0184157 5.3254 1.007e-07 ***
gamma 0.0011602 0.2124073 0.0055 0.9956
---

247
6 Stochastic Frontier Analysis

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -36.05537

cross-sectional data
total number of observations = 140

mean efficiency: 0.9915456

> dat$costEffCDSRHom <- efficiencies( costCDSRHomSfa )

> hist( dat$costEffCDSRHom, 15 )


20
Frequency

5 10
0

0.9912 0.9914 0.9916 0.9918

costEffCDSRHom

Figure 6.9: Efficiency estimates of Cobb-Douglas short-run cost frontier

The resulting graphs are shown in figure 6.9.

6.2.5 Profit frontiers


ln π = ln π(p, w) − u + v with u ≥ 0, (6.17)

where −u ≤ 0 accounts for profit inefficiency and v accounts for statistical noise. This model can
be re-written as:
π = π(p, w) e−u ev (6.18)

Profit efficiency according to Farrell:

π π(w, y) e−u ev
PE = = = e−u (6.19)
π(w, y) ev π(w, y) ev

6.3 Analyzing the effects of z variables


In many empirical cases, the output quantity does not only depend on the input quantities but
also on some other variables, e.g. the manager’s education and experience and in agricultural
production also the soil quality and rainfall. If these factors influence the production process,
they must be included in applied production analyses in order to avoid an omitted-variables bias.
Our data set on French apple producers includes the variable adv, which is a dummy variable

248
6 Stochastic Frontier Analysis

and indicates whether the apple producer uses an advisory service. In the following, we will
apply different methods to figure out whether the production process differs between users and
non-users of an advisory service.

6.3.1 Production functions with z variables


Additional factors that influence the production process (z) can be included as additional ex-
planatory variables in the production function:

y = f (x, z). (6.20)

This function can be used to analyze how the additional explanatory variables (z) affect the
output quantity for given input quantities, i.e. how they affect the productivity.
In case of a Cobb-Douglas functional form, we get following extended production function:
X
ln y = α0 + αi ln xi + αz z (6.21)
i

Based on this Cobb-Douglas production function and our data set on French apple producers,
we can check whether the apple producers who use an advisory service produce a different output
quantity than non-users with the same input quantities, i.e. whether the productivity differs
between users and non-users. This extended production function can be estimated by following
command:

> prodCDAdv <- lm( log( qOut ) ~ log( qCap ) + log( qLab ) + log( qMat ) + adv,
+ data = dat )
> summary( prodCDAdv )

Call:
lm(formula = log(qOut) ~ log(qCap) + log(qLab) + log(qMat) +
adv, data = dat)

Residuals:
Min 1Q Median 3Q Max
-1.7807 -0.3821 0.0022 0.4709 1.3323

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.33371 1.29590 -1.801 0.0740 .
log(qCap) 0.15673 0.08581 1.826 0.0700 .
log(qLab) 0.69225 0.15190 4.557 1.15e-05 ***
log(qMat) 0.62814 0.12379 5.074 1.26e-06 ***

249
6 Stochastic Frontier Analysis

adv 0.25896 0.10932 2.369 0.0193 *


---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6452 on 135 degrees of freedom


Multiple R-squared: 0.6105, Adjusted R-squared: 0.599
F-statistic: 52.9 on 4 and 135 DF, p-value: < 2.2e-16

The estimation result shows that users of an advisory service produce significantly more than
non-users with the same input quantities. Given the Cobb-Douglas production function (6.21),
the coefficient of an additional explanatory variable can be interpreted as the marginal effect on
the relative change of the output quantity:

∂ ln y ∂ ln y ∂y ∂y 1
αz = = = (6.22)
∂z ∂y ∂z ∂z y

Hence, our estimation result indicates that users of an advisory service produce approximately
25.9% more output than non-users with the same input quantity but the large standard error
of this coefficient indicates that this estimate is rather imprecise. Given that the change of a
dummy variable from zero to one is not marginal and that the coefficient of the variable adv is
not close to zero, the above interpretation of this coefficient is a rather poor approximation. In
fact, our estimation results suggest that the output quantity of apple producers with advisory
service is on average exp(αz ) = 1.296 times as large as (29.6% larger than) the output quantity of
apple producers without advisory service given the same input quantities. As users and non-users
of an advisory service probably differ in some unobserved variables that affect the productivity
(e.g. motivation and effort to increase productivity), the coefficient az is not necessarily the
causal effect of the advisory service but describes the difference in productivity between users
and non-users of the advisory service.

6.3.2 Production frontiers with z variables


A production function that includes additional factors that influence the production process (6.20)
can also be estimated as a stochastic production frontier. In this specification, it is assumed that
the additional explanatory variables influence the production frontier.
The following command estimates the extended Cobb-Douglas production function (6.21) using
the stochastic frontier method:

> prodCDAdvSfa <- sfa( log( qOut ) ~ log( qCap ) + log( qLab ) + log( qMat ) + adv,
+ data = dat )
> summary( prodCDAdvSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)

250
6 Stochastic Frontier Analysis

The dependent variable is logged


Iterative ML estimation terminated after 14 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.247751 1.357917 -0.1824 0.8552301
log(qCap) 0.156906 0.081337 1.9291 0.0537222 .
log(qLab) 0.695977 0.148793 4.6775 2.904e-06 ***
log(qMat) 0.491840 0.139348 3.5296 0.0004162 ***
adv 0.150742 0.111233 1.3552 0.1753583
sigmaSq 0.916031 0.231604 3.9552 7.648e-05 ***
gamma 0.861029 0.114087 7.5471 4.450e-14 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -132.8679

cross-sectional data
total number of observations = 140

mean efficiency: 0.5545099

The estimation result still indicates that users of an advisory service have a higher productivity
than non users, but the coefficient is smaller and no longer statistically significant. The result of
the t-test is confirmed by a likelihood-ratio test:

> lrtest( prodCDSfa, prodCDAdvSfa )

Likelihood ratio test

Model 1: prodCDSfa
Model 2: prodCDAdvSfa
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -133.89
2 7 -132.87 1 2.0428 0.1529

The model with advisory service as additional explanatory variable indicates that there are
significant inefficiencies (at 5% significance level):

> lrtest( prodCDAdvSfa )

251
6 Stochastic Frontier Analysis

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -134.76
2 7 -132.87 1 3.78 0.02593 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The following commands compute the technical efficiency estimates and compare them to the
efficiency estimates obtained from the Cobb-Douglas production frontier without advisory service
as an explanatory variable:

> dat$effCDAdv <- efficiencies( prodCDAdvSfa )

> compPlot( dat$effCD[ dat$adv == 0 ],


+ dat$effCDAdv[ dat$adv == 0 ] )

> points( dat$effCD[ dat$adv == 1 ],


+ dat$effCDAdv[ dat$adv == 1 ], pch = 20 )

●●



●●●
Production frontier with advisory service


0.8


● ●●●
●● ●●●

●● ●●●●
● ●●
●●● ●


● ●●● ●

●● ●
●●
● ● ●●●●●●● ●
0.6

●●
●●● ●
●●

● ●


●● ●

● ●●
●● ●●●●●
● ●●
● ●●●●
● ●●●●


0.4

● ●
● ●
●●
● ●●●


●●
●● ●


0.2



●●
●●



0.2 0.4 0.6 0.8

Production frontier without advisory service

Figure 6.10: Technical efficiency estimates of Cobb-Douglas production frontier with and without
advisory service as additional explanatory variable (circles = producers who do not
use an advisory service, solid dots = producers who use an advisory service

The resulting graph is shown in figure 6.10. It appears as if the non-users of an advisory service
became somewhat more efficient. This is because the stochastic frontier model that includes

252
6 Stochastic Frontier Analysis

the advisory service as an explanatory variable has in fact two production frontiers: a lower
frontier for the non-users of an advisory service and a higher frontier for the users of an advisory
service. The coefficient of the dummy variable adv, i.e. αadv , can be interpreted as a quick
estimate of the difference between the two frontier functions. In our empirical case, the difference
is approximately 15.1%. However, a precise calculation indicates that the frontier of the users of
the advisory service is exp (αadv ) = 1.163 times (16.3% higher than) the frontier of the non-users
of advisory service. And the frontier of the non-users of the advisory service is exp (−αadv ) =
0.86 times (14% lower than) the frontier of the users of advisory service. As the non-users of
an advisory service are compared to a lower frontier now, they appear to be more efficient now.
While it is reasonable to have different frontier functions for different soil types, it does not seem
to be too reasonable to have different frontier functions for users and non-users of an advisory
service, because there is no physical reasons, why users of an advisory service should have a
maximum output quantity that is different from the maximum output quantity of non-users.

6.3.3 Efficiency effects production frontiers


As explained above, it does not seem to be too reasonable to have different frontier functions for
users and non-users of an advisory service. However, it seems to be reasonable to assume that
users of an advisory service have on average different efficiencies than non-users. A model that
can account for this has been proposed by Battese and Coelli (1995). In this stochastic frontier
model, the efficiency level might be affected by additional explanatory variables: The inefficiency
term u follows a positive truncated normal distribution with constant scale parameter σu2 and a
location parameter µ that depends on additional explanatory variables:

u ∼ N + (µ, σu2 ) with µ = δ z, (6.23)

where δ is an additional parameter (vector) to be estimated. Function sfa can also estimate
these “efficiency effects frontiers”. The additional variables that should explain the efficiency
level must be specified at the end of the model formula, where a vertical bar separates them from
the (regular) input variables:

> prodCDSfaAdvInt <- sfa( log( qOut ) ~ log( qCap ) + log( qLab ) + log( qMat ) |
+ adv, data = dat )
> summary( prodCDSfaAdvInt )

Efficiency Effects Frontier (see Battese & Coelli 1995)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 19 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

253
6 Stochastic Frontier Analysis

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.090700 1.235454 -0.0734 0.941476
log(qCap) 0.168623 0.081284 2.0745 0.038034 *
log(qLab) 0.653860 0.146054 4.4768 7.576e-06 ***
log(qMat) 0.513533 0.132236 3.8835 0.000103 ***
Z_(Intercept) -0.016812 1.255298 -0.0134 0.989314
Z_adv -1.077590 1.053764 -1.0226 0.306492
sigmaSq 1.096521 0.789599 1.3887 0.164922
gamma 0.863095 0.099424 8.6809 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -130.516

cross-sectional data
total number of observations = 140

mean efficiency: 0.6004358

One can use the lrtest() method to test the statistical significance of the entire inefficiency
model, i.e. the null hypothesis is H0 : γ = 0 and δj = 0 ∀ j:

> lrtest( prodCDSfaAdvInt )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Efficiency Effects Frontier (EEF)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -137.61
2 8 -130.52 3 14.185 0.001123 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The test indicates that the fit of this model is significantly better than the fit of the OLS model
(without advisory service as explanatory variable).
The coefficient of the advisory service in the inefficiency model is negative but statistically
insignificant. By default, an intercept is added to the inefficiency model but it is completely
statistically insignificant. In many econometric estimations of the efficiency effects frontier model,
the intercept of the inefficiency model (δ0 ) is only weakly identified, because the values of δ0 can

254
6 Stochastic Frontier Analysis

often be changed with only marginally reducing the log-likelihood value, if the slope parameters of
the inefficiency model (δi , i 6= 0) and the variance parameters (σ 2 and γ) are adjusted accordingly.
This can be checked by taking a look at the correlation matrix of the estimated parameters:

> round( cov2cor( vcov( prodCDSfaAdvInt ) ), 2 )

(Intercept) log(qCap) log(qLab) log(qMat) Z_(Intercept) Z_adv


(Intercept) 1.00 -0.06 -0.50 -0.18 0.02 0.05
log(qCap) -0.06 1.00 -0.37 -0.15 -0.15 -0.16
log(qLab) -0.50 -0.37 1.00 -0.58 0.24 0.27
log(qMat) -0.18 -0.15 -0.58 1.00 -0.12 -0.19
Z_(Intercept) 0.02 -0.15 0.24 -0.12 1.00 0.90
Z_adv 0.05 -0.16 0.27 -0.19 0.90 1.00
sigmaSq 0.09 0.12 -0.20 0.02 -0.95 -0.86
gamma 0.33 -0.01 0.00 -0.30 -0.59 -0.46
sigmaSq gamma
(Intercept) 0.09 0.33
log(qCap) 0.12 -0.01
log(qLab) -0.20 0.00
log(qMat) 0.02 -0.30
Z_(Intercept) -0.95 -0.59
Z_adv -0.86 -0.46
sigmaSq 1.00 0.76
gamma 0.76 1.00

The estimate of the intercept of the inefficiency model (δ0 ) is very highly correlated with the
estimate of the (slope) coefficient of the advisory service in the inefficiency model (δ1 ) and the
estimate of the parameter σ 2 and it is considerably correlated with the estimate of the parame-
ter γ.
The intercept can be suppressed by adding a “-1” to the specification of the inefficiency model:

> prodCDSfaAdv <- sfa( log( qOut ) ~ log( qCap ) + log( qLab ) + log( qMat ) |
+ adv - 1, data = dat )
> summary( prodCDSfaAdv )

Efficiency Effects Frontier (see Battese & Coelli 1995)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 14 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

255
6 Stochastic Frontier Analysis

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.090455 1.247496 -0.0725 0.94220
log(qCap) 0.168471 0.077008 2.1877 0.02869 *
log(qLab) 0.654341 0.139669 4.6849 2.800e-06 ***
log(qMat) 0.513291 0.130854 3.9226 8.759e-05 ***
Z_adv -1.064859 0.545950 -1.9505 0.05112 .
sigmaSq 1.086417 0.255371 4.2543 2.097e-05 ***
gamma 0.862306 0.081468 10.5845 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -130.5161

cross-sectional data
total number of observations = 140

mean efficiency: 0.599406

A likelihood ratio test against the corresponding OLS model indicates that the fit of this SFA
model is significantly better than the fit of the corresponding OLS model (without advisory
service as explanatory variable):

> lrtest( prodCDSfaAdv )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Efficiency Effects Frontier (EEF)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -137.61
2 7 -130.52 2 14.185 0.0002907 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

A likelihood ratio test confirms the t-test that the intercept in the inefficiency model is statistically
insignificant:

> lrtest( prodCDSfaAdv, prodCDSfaAdvInt )

Likelihood ratio test

Model 1: prodCDSfaAdv

256
6 Stochastic Frontier Analysis

Model 2: prodCDSfaAdvInt
#Df LogLik Df Chisq Pr(>Chisq)
1 7 -130.52
2 8 -130.52 1 2e-04 0.9892

The coefficient of the advisory service in the inefficiency model is now significantly negative
(at 10% significance level), which means that users of an advisory service have a significantly
smaller inefficiency term u, i.e. are significantly more efficient. The size of the coefficients of the
inefficiency model (δ) cannot be reasonably interpreted. However, if argument margEff of the
efficiencies method is set to TRUE, this method does not only return the efficiency estimates but
also the marginal effects of the variables that should explain the efficiency level on the efficiency
estimates (see Olsen and Henningsen, 2011):

> dat$effCDAdv2 <- efficiencies( prodCDSfaAdv, margEff = TRUE )

The marginal effects differ between observations and are available in the attribute margEff. The
following command extracts and visualizes the marginal effects of the variable that indicates the
use of an advisory service on the efficiency estimates:

> hist( attr( dat$effCDAdv2, "margEff" ), 20 )


Frequency

15
5
0

0.02 0.03 0.04 0.05 0.06

marginal effect

Figure 6.11: Marginal effects of the variable that indicates the use of an advisory service on the
efficiency estimates

The resulting graph is shown in figure 6.11. It indicates that apple producers who use an advisory
service are between 1.4 and 6.4 percentage points more efficient than apple producers who do not
use an advisory service.

6.4 Decomposition of cost efficiency


In this section, we estimate a Cobb-Douglas production function and decompose cost efficiency
into (cost) technical efficiency and (cost) allocative efficiency. The following code replicates an
example in the textbook of Coelli et al. (2005, p. 273, Table 10.2):

257
6 Stochastic Frontier Analysis

> # estimating a Copbb-Douglas production frontier (ignoring "other inputs")


> riceCdSfaTime <- sfa( log(prod) ~ YEARDUM + log(area) + log(labor) + log(npk),
+ data = riceProdPhil )
> summary( riceCdSfaTime, extraPar = TRUE )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 10 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.2705295 0.0373920 7.2350 4.657e-13 ***
YEARDUM 0.0148901 0.0067910 2.1926 0.028335 *
log(area) 0.3557513 0.0597575 5.9533 2.629e-09 ***
log(labor) 0.3507348 0.0635010 5.5233 3.327e-08 ***
log(npk) 0.2565320 0.0352279 7.2821 3.287e-13 ***
sigmaSq 0.2418370 0.0262782 9.2030 < 2.2e-16 ***
gamma 0.8979776 0.0310801 28.8924 < 2.2e-16 ***
sigmaSqU 0.2171642 0.0291291 7.4552 8.970e-14 ***
sigmaSqV 0.0246728 0.0060797 4.0582 4.945e-05 ***
sigma 0.4917693 0.0267180 18.4059 < 2.2e-16 ***
sigmaU 0.4660088 0.0312538 14.9105 < 2.2e-16 ***
sigmaV 0.1570757 0.0193529 8.1164 4.802e-16 ***
lambdaSq 8.8017709 2.9860105 2.9477 0.003202 **
lambda 2.9667779 0.5032413 5.8953 3.739e-09 ***
varU 0.0789132 NA NA NA
sdU 0.2809149 NA NA NA
gammaVar 0.7618134 NA NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -83.76704

cross-sectional data
total number of observations = 344

mean efficiency: 0.7201092

258
6 Stochastic Frontier Analysis

> # extracting coefficients


> b0 <- coef( riceCdSfaTime )["(Intercept)"]
> theta <- coef( riceCdSfaTime )["YEARDUM"]
> b1 <- coef( riceCdSfaTime )["log(area)"]
> b2 <- coef( riceCdSfaTime )["log(labor)"]
> b3 <- coef( riceCdSfaTime )["log(npk)"]
> sig2 <- coef( riceCdSfaTime )["sigmaSq"]
> gamma <- coef( riceCdSfaTime )["gamma"]
> print( lambda <- unname( sqrt( gamma) / sqrt( 1 - gamma ) ) )

[1] 2.966778

> print( sigma <- unname( sqrt( sig2 ) ) )

[1] 0.4917693

> # calculating technical efficiencies manually


> sig2v <- sig2 * ( 1 - gamma )
> sig2u <- sig2 * gamma
> mustar <- - residuals( riceCdSfaTime, asInData = TRUE ) * gamma
> sigstar <- sqrt( sig2u * sig2v / sig2 )
> musig <- mustar/sigstar
> uhati <- mustar + sigstar * dnorm(musig) / pnorm(musig)
> tei <- ( pnorm(musig-sigstar) / pnorm(musig) ) * exp( sigstar^2 / 2 - mustar )
> # calculating technical efficiencies with the frontier package
> tei2 <- efficiencies( riceCdSfaTime, asInData = TRUE )
> all.equal( tei, tei2 )

[1] TRUE

> # calculating cost efficiencies


> h2 <- log( riceProdPhil$sArea / riceProdPhil$sLabor ) - log(b1/b2)
> h3 <- log( riceProdPhil$sArea / riceProdPhil$sNpk ) - log(b1/b3)
> r <- b1 + b2 + b3
> ai <- (1/r) * (b2*h2 + b3*h3) + log(b1 + b2*exp(-h2) + b3*exp(-h3))
> # cost efficiency due to technical inefficiency
> ctei <- exp( -uhati / r )
> # cost efficiency due to allocative inefficiency
> caei = exp( log(r) - ai )
> # cost efficiency
> cei <- ctei * caei
> # collecting all efficiency measures in a data frame

259
6 Stochastic Frontier Analysis

> eff <- data.frame( tei, ctei, caei, cei )


> # efficiencies of first and last observations
> eff[ c(1:4, 339:344), ]

tei ctei caei cei


1 0.7516838 0.7361695 0.9304091 0.6849388
2 0.7404122 0.7245165 0.9494638 0.6879022
3 0.7848997 0.7707317 0.9343774 0.7201543
4 0.8670764 0.8577511 0.8378218 0.7186425
339 0.9362054 0.9321857 0.7034357 0.6557327
340 0.6608281 0.6431254 0.8376981 0.5387449
341 0.7711476 0.7563807 0.9158451 0.6927275
342 0.9260517 0.9212374 0.7758011 0.7146970
343 0.8261157 0.8141105 0.8493577 0.6914710
344 0.8980248 0.8910094 0.8012788 0.7139469

> # some summary statistics of efficiencies


> t(sapply(eff, function(x)
+ c( N=length(x), MEAN=mean(x), ST.DEV=sd(x), VARIANCE=var(x),
+ MINIMUM = min(x), MAXIMUM = max(x), COEF.OF.VAR=sd(x)/mean(x))))

N MEAN ST.DEV VARIANCE MINIMUM MAXIMUM COEF.OF.VAR


tei 344 0.7201092 0.15320508 0.023471796 0.12701877 0.9574515 0.2127526
ctei 344 0.7059377 0.15662013 0.024529864 0.11600023 0.9550248 0.2218611
caei 344 0.8885442 0.07884834 0.006217061 0.60541374 0.9973617 0.0887388
cei 344 0.6221760 0.12735580 0.016219501 0.08423157 0.8335533 0.2046942

260
7 Data Envelopment Analysis (DEA)

7.1 Preparations
We load the R package “Benchmarking” in order to use it for Data Envelopment Analysis:

> library( "Benchmarking" )

We create a matrix of input quantities and a vector of output quantities:

> xMat <- cbind( dat$qCap, dat$qLab, dat$qMat )


> yVec <- dat$qOut

7.2 DEA with input-oriented efficiencies


The following command conducts an input-oriented DEA with VRS:

> deaVrsIn <- dea( xMat, yVec )


> hist( eff( deaVrsIn ) )

Display the “peers” of the first 14 observations:

> peers( deaVrsIn )[ 1:14, ]

peer1 peer2 peer3 peer4


[1,] 44 73 80 135
[2,] 80 100 126 NA
[3,] 44 54 73 100
[4,] 4 NA NA NA
[5,] 17 54 81 NA
[6,] 41 73 126 132
[7,] 7 44 NA NA
[8,] 44 54 80 83
[9,] 100 126 132 NA
[10,] 38 73 80 135
[11,] 54 81 100 NA
[12,] 44 54 81 100
[13,] 38 73 80 135
[14,] 44 54 81 100

261
7 Data Envelopment Analysis (DEA)

Display the λs of the first 14 observations:


> lambda( deaVrsIn )[ 1:14, ]

L4 L7 L17 L19 L38 L41 L44 L54 L61 L64


[1,] 0 0 0.00000000 0 0.00000000 0.0000000 8.707089e-02 0.00000000 0 0
[2,] 0 0 0.00000000 0 0.00000000 0.0000000 0.000000e+00 0.00000000 0 0
[3,] 0 0 0.00000000 0 0.00000000 0.0000000 5.466873e-02 0.34157362 0 0
[4,] 1 0 0.00000000 0 0.00000000 0.0000000 0.000000e+00 0.00000000 0 0
[5,] 0 0 0.07874218 0 0.00000000 0.0000000 0.000000e+00 0.62716635 0 0
[6,] 0 0 0.00000000 0 0.00000000 0.9520817 0.000000e+00 0.00000000 0 0
[7,] 0 1 0.00000000 0 0.00000000 0.0000000 2.000151e-12 0.00000000 0 0
[8,] 0 0 0.00000000 0 0.00000000 0.0000000 3.922860e-01 0.34818591 0 0
[9,] 0 0 0.00000000 0 0.00000000 0.0000000 0.000000e+00 0.00000000 0 0
[10,] 0 0 0.00000000 0 0.06541405 0.0000000 0.000000e+00 0.00000000 0 0
[11,] 0 0 0.00000000 0 0.00000000 0.0000000 0.000000e+00 0.52820862 0 0
[12,] 0 0 0.00000000 0 0.00000000 0.0000000 4.407646e-01 0.09749327 0 0
[13,] 0 0 0.00000000 0 0.01725343 0.0000000 0.000000e+00 0.00000000 0 0
[14,] 0 0 0.00000000 0 0.00000000 0.0000000 3.593759e-01 0.44329381 0 0
L73 L74 L78 L80 L81 L83 L100 L103
[1,] 0.243735897 0 0 0.6423537 0.00000000 0.00000000 0.0000000 0
[2,] 0.000000000 0 0 0.5147430 0.00000000 0.00000000 0.3620871 0
[3,] 0.153372277 0 0 0.0000000 0.00000000 0.00000000 0.4503854 0
[4,] 0.000000000 0 0 0.0000000 0.00000000 0.00000000 0.0000000 0
[5,] 0.000000000 0 0 0.0000000 0.29409147 0.00000000 0.0000000 0
[6,] 0.002769034 0 0 0.0000000 0.00000000 0.00000000 0.0000000 0
[7,] 0.000000000 0 0 0.0000000 0.00000000 0.00000000 0.0000000 0
[8,] 0.000000000 0 0 0.2101886 0.00000000 0.04933947 0.0000000 0
[9,] 0.000000000 0 0 0.0000000 0.00000000 0.00000000 0.6917918 0
[10,] 0.068686498 0 0 0.2825911 0.00000000 0.00000000 0.0000000 0
[11,] 0.000000000 0 0 0.0000000 0.25455055 0.00000000 0.2172408 0
[12,] 0.000000000 0 0 0.0000000 0.29388540 0.00000000 0.1678567 0
[13,] 0.383969646 0 0 0.5669254 0.00000000 0.00000000 0.0000000 0
[14,] 0.000000000 0 0 0.0000000 0.04033289 0.00000000 0.1569974 0
L126 L129 L132 L135 L137
[1,] 0.000000000 0 0.00000000 0.02683954 0
[2,] 0.123169836 0 0.00000000 0.00000000 0
[3,] 0.000000000 0 0.00000000 0.00000000 0
[4,] 0.000000000 0 0.00000000 0.00000000 0
[5,] 0.000000000 0 0.00000000 0.00000000 0
[6,] 0.008468157 0 0.03668108 0.00000000 0

262
7 Data Envelopment Analysis (DEA)

[7,] 0.000000000 0 0.00000000 0.00000000 0


[8,] 0.000000000 0 0.00000000 0.00000000 0
[9,] 0.249102366 0 0.05910586 0.00000000 0
[10,] 0.000000000 0 0.00000000 0.58330837 0
[11,] 0.000000000 0 0.00000000 0.00000000 0
[12,] 0.000000000 0 0.00000000 0.00000000 0
[13,] 0.000000000 0 0.00000000 0.03185153 0
[14,] 0.000000000 0 0.00000000 0.00000000 0

The following commands display the “slack” of the first 14 observations in an input-oriented
DEA with VRS:

> deaVrsIn <- dea( xMat, yVec, SLACK = TRUE )


> table( deaVrsIn$slack )

FALSE TRUE
78 62

> deaVrsIn$sx[ 1:14, ]

sx1 sx2 sx3


[1,] 0 0 0.00000
[2,] 0 0 345.70719
[3,] 0 0 0.00000
[4,] 0 0 0.00000
[5,] 0 0 38.54949
[6,] 0 0 0.00000
[7,] 0 0 0.00000
[8,] 0 0 0.00000
[9,] 0 0 1624.33417
[10,] 0 0 0.00000
[11,] 0 0 12993.07250
[12,] 0 0 0.00000
[13,] 0 0 0.00000
[14,] 0 0 0.00000

> deaVrsIn$sy[ 1:14, ]

[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0

The following command conducts an input-oriented DEA with CRS:

> deaCrsIn <- dea( xMat, yVec, RTS = "crs" )


> hist( eff( deaCrsIn ) )

263
7 Data Envelopment Analysis (DEA)

We can calculate the scale efficiencies by:


> se <- eff( deaCrsIn ) / eff( deaVrsIn )
> hist( se )
The following command conducts an input-oriented DEA with DRS
> deaDrsIn <- dea( xMat, yVec, RTS = "drs" )
> hist( eff( deaDrsIn ) )
And we check if firms are too small or too large. This is the number of observations that
produce at the scale below the optimal scale size:
> sum( eff( deaVrsIn ) - eff( deaDrsIn ) > 1e-4 )

[1] 117

7.3 DEA with output-oriented efficiencies


The following command conducts an output-oriented DEA with VRS:
> deaVrsOut <- dea( xMat, yVec, ORIENTATION = "out" )
> hist( efficiencies( deaVrsOut ) )
The following command conducts an output-oriented DEA with CRS:
> deaCrsOut <- dea( xMat, yVec, RTS = "crs", ORIENTATION = "out" )
> hist( eff( deaCrsOut ) )
In case of CRS, input-oriented efficiencies are equivalent to output-oriented efficiencies:
> all.equal( eff( deaCrsIn ), 1 / eff( deaCrsOut ) )

[1] TRUE

7.4 DEA with “super efficiencies”


The following command obtains “super efficiencies” for an input-oriented DEA with CRS:
> sdeaVrsIn <- sdea( xMat, yVec )
> hist( eff( sdeaVrsIn ) )

7.5 DEA with graph hyperbolic efficiencies


The following command conducts a DEA with graph hyperbolic efficiencies and VRS:
> deaVrsGraph <- dea( xMat, yVec, ORIENTATION = "graph" )
> hist( eff( deaVrsGraph ) )
> plot( eff( deaVrsIn ), eff( deaVrsGraph ) )
> abline(0,1)

264
8 Distance Functions

8.1 Theory
8.1.1 Output distance functions
The Shepard output distance function is defined as:

Do (x, y) = min{λ > 0|y/λ ∈ P (x)} (8.1)

or (equivalently) as:
Do (x, y) = min{λ > 0|(x, y/λ) ∈ T }, (8.2)

where x is a vector of input quantities, y is a vector of output quantities, P (x) is the production
possibility set, and T is the technology set. The Shepard output distance function, Do (x, y), de-
fined in (8.1) and (8.2) returns the Shepard output-oriented technical efficiencies defined in (5.1)
and (5.5). Thus, it returns a value of one for fully efficient sets of inputs and outputs (x, y),
whereas it returns a non-negative value smaller than one for inefficient sets of inputs and out-
puts (x, y).1

8.1.1.1 Properties

It is usually assumed that the Shepard output distance function Do (x, y) given in (8.1) fulfills
the following properties (see, e.g., Färe and Primont, 1995; Coelli et al., 2005):

1. Do (x, 0) = 0 for all non-negative x

2. Do (x, y) is non-increasing in x, i.e. ∂Do (x, y)/∂xi ≤ 0 ∀ i

3. Do (x, y) is non-decreasing in y, i.e. ∂Do (x, y)/∂ym ≥ 0 ∀ m

4. Do (x, y) is linearly homogeneous in y, i.e. Do (x, k y) = k Do (x, y) ∀ k > 0

5. Do (x, y) is quasiconvex in x ⇒ convex isoquants2


1
The Farrell output distance function is defined as the inverse of the Shepard output distance function:
DoF (x, y) = max{λ > 0|λ y ∈ P (x)} = 1/Do (x, y). It returns the Farrell output-oriented technical efficiencies
defined in (5.2) and (5.6).
2
O’Donnell and Coelli (2005) clarified a typographical error in Färe and Primont (1995, p. 152) who state
by mistake that the output distance function is quasiconcave in input quantities x. The quasiconcavity of the
production function is equivalent to the quasiconvexity of the output distance function, whereas the ‘conversion’
between quasiconcavity and quasiconvexity is caused by the opposite ‘direction’ regarding the input quantities

265
8 Distance Functions

6. Do (x, y) is convex in y ⇒ concave transformation curves (i.e., joint production is advanta-


geous compared to specialized production for a given set of input quantities)

7. Do (x, y) ≤ 1 indicates that y belongs to the production possibility set of x, i.e. y ∈ P (x),
while Do (x, y) > 1 indicates that y does not belong to the production possibility set of x.

8. Do (x, y) = 1 indicates that y is at the boundary of the production possibility set P (x), i.e.
y lies on the transformation curve (given x) and x lies on the isoquant (given y).

We will illustrate these properties using a very simple output distance function with two in-
puts x = (x1 , x2 )0 and two outputs y = (y1 , y2 )0 :3
q
Do (x, y) = y12 + y22 x−0.4
1 x2−0.4 (8.3)

In the following, we illustrate that this simple output distance function fulfills the above-
mentioned properties 1–4:

ˆ no output
p
Do (x, 0) = 02 + 02 x1−0.4 x2−0.4 = 0 (8.4)

ˆ monotonically non-increasing in x
q
∂Do (x, y) −0.4 y12 + y22 x1−0.4 x−0.4
2
= ≤ 0; i ∈ {1, 2} (8.5)
∂xi xi

ˆ monotonically non-decreasing in y

∂Do (x, y) x−0.4 x−0.4 yi


= 1q 2 ≥ 0; i ∈ {1, 2} (8.6)
∂yi y12 + y22

ˆ linear homogeneous in y
q
Do (x, ky) = (ky1 )2 + (ky2 )2 x1−0.4 x2−0.4 (8.7)
q
= k 2 y12 + k 2 y22 x−0.4
1 x2−0.4 (8.8)
q
k 2 y12 + y22 x1−0.4 x−0.4

= 2 (8.9)
√ q
= k 2 y12 + y22 x−0.4
1 x2−0.4 (8.10)
q
= k y12 + y22 x−0.4
1 x−0.4
2 (8.11)
= kDo (x, y) (8.12)

(i.e., the production function is increasing in input quantities, while the output distance function is decreasing
in input quantities).
3
This output distance function is a very much simplified version of the multiple-output “ray frontier production
function” suggested by Löthgren (1997, 2000).

266
8 Distance Functions

ˆ quasiconvexity in x
A sufficient condition for quasiconvexity is that all leading principal minors of the bordered
Hessian matrix are strictly negative (see section 1.5.3). The first derivatives of the output
distance function (8.3) with respect to the input quantities are given in (8.5). The remaining
elements of the bordered Hessian matrix, i.e. the second derivatives with respect to the input
quantities, are:
q
∂ 2 Do (x, y) 0.4(∆ij + 0.4) y12 + y22 x1−0.4 x2−0.4
= ; i ∈ {1, 2} (8.13)
∂xi ∂xj xi xj

1 if i = j
∆ij = (8.14)
0 if i 6= j

The first leading principal minor of the bordered Hessian B is:


2
∂Do (x, y)

|B1 | = − (8.15)
∂x1
 q 2
= − −0.4 y12 + y22 x−1.4
1 x−0.4
2 (8.16)
 
= −0.42 y12 + y22 x1−2.8 x−0.8
2 (8.17)
< 0 ∀ x1 , x2 > 0; y1 , y2 ≥ 0; y1 + y2 > 0 (8.18)

The determinant of the (3 × 3) bordered Hessian is:

∂Do (x, y) ∂Do (x, y) ∂ 2 Do (x, y)


|B| =2 (8.19)
∂x1 ∂x2 ∂x1 ∂x2
2 2 o
o
∂D (x, y) ∂ D (x, y) ∂Do (x, y) 2 ∂ 2 Do (x, y)
  
− −
∂x1 ∂x22 ∂x2 ∂x21
 q  q 
= 2 −0.4 y12 + y22 x−1.4
1 x−0.4
2 −0.4 y12 + y22 x1−0.4 x−1.4
2 (8.20)
 q 
0.42 y12 + y22 x−1.4
1 x2−1.4
 q 2  q 
− −0.4 y12 + y22 x−1.4
1 x−0.4
2 0.4 · 1.4 y12 + y22 x1−0.4 x2−2.4
 q 2  q 
− −0.4 y12 + y22 x−0.4
1 x−1.4
2 0.4 · 1.4 y12 + y22 x1−2.4 x2−0.4
 q 3
= 0.4 y12 + y22 x−0.4
1 x−0.4
2 (8.21)
      2    2  
2 −x−1
1 −x−1
2 0.4 x−1 −1
1 x2 − −x−1
1 1.4 x−2
2 − −x−1
2 1.4 x−2
1
 q 3 h i
= 0.4 y12 + y22 x−0.4
1 x−0.4
2 0.8 x−2 −2 −2 −2 −2 −2
1 x2 − 1.4 x1 x2 − 1.4 x1 x2 (8.22)

267
8 Distance Functions

 q 3
= − 2 0.4 y12 + y22 x−0.4
1 x−0.4
2 x−2 −2
1 x2 (8.23)
q 3
= − 2 · 0.43 y12 + y22 x−3.2
1 x2−3.2 (8.24)

< 0 ∀ x1 , x2 > 0; y1 , y2 ≥ 0; y1 + y2 > 0 (8.25)

If both of the input quantities are strictly positive and at least one of the output quantities
is strictly positive, the first leading principal minor and the determinant of the bordered
Hessian matrix are both strictly negative, which means that both the necessary condition
and the sufficient condition for quasiconvexity are fulfilled.
Figure 8.1 illustrates the relationship between the two input quantities x1 and x2 and the
output distance measure Do (x, y) holding the output quantities y1 and y2 constant so that
q √
y12 + y22 = 1, e.g. y1 = y2 = 0.5 (please note that the origin, i.e. x1 = x2 = 0, is in the
back). The grey part of the surface indicates distance measures that are larger than one
(Do (x, y) > 1), i.e. combinations of the input quantities x1 and x2 that are too small to
produce the output quantities y1 and y2 . The dark green line is an isoquant that indicates all
combinations of the input quantities x1 and x2 that a fully efficient firm (i.e. Do (x, y) = 1)
needs to produce the output quantities y1 and y2 . Given that the output distance function
is quasiconvex in x, the lower contour sets, i.e. the sets of input combinations that give an
output distance measure (Do (x, y)) smaller than a certain value (e.g. 1), are convex sets
(see section 1.5.3). As the origin (x1 = x2 = 0) is not inside the lower contour sets, the
quasiconvexity of the output distance function in x results in isoquants that are convex
to the origin. The light green part of the surface indicates distance measures (Do (x, y))
that are slightly smaller than one, indicating small technical inefficiency. The red part of
the surface indicates distance measures (Do (x, y)) that are considerably smaller than one,
indicating considerable technical inefficiency.
ˆ convexity in y
Convexity requires that the Hessian matrix is positive semidefinite (see section 1.5.2). The
elements of the Hessian matrix, i.e. the second derivatives with respect to the output quan-
tities, are:

∂ 2 Do (x, y) x−0.4 x−0.4 yi yj


 
1 2
= q ∆ij − 2 ; i, j ∈ {1, 2} (8.26)
∂yi ∂yj y12 + y22 y1 + y22

1 if i = j
∆ij = (8.27)
0 if i 6= j

Equation (8.26) shows that all diagonal elements of the Hessian matrix (i.e. i = j) are
non-negative, because 1 − yi2 /(y11 + y22 ) is non-negative for i ∈ {1, 2}.

268
8 Distance Functions

1.0

Do ( x, y )
0.5
0

1
0
x2

1
x1
2
2

Figure 8.1: Output distance function for different input quantities

The determinant of the (2 × 2) Hessian matrix is:


!2
∂ 2 Di (x, y) ∂ 2 Di (x, y) ∂ 2 Di (x, y)
|H| = · − (8.28)
∂x21 ∂x22 ∂x1 ∂x2
 2
x−0.4 x−0.4 x−0.4 x2−0.4 x−0.4 x2−0.4
! !
1 2 y12 1 y22 1 y1 y2 
1− 1− −  q
y12 + y22 y12 + y22 y12 + y22
q q
y12 + y22 y12 + y22 y12 + y22
(8.29)
 2  2
−0.4
x−0.4 −0.4
x−0.4
! ! 2
x1 y2 y2 x1 y1 y2

=  q 2  1− 2 1 2 1− 2 2 2 − q 2 
y12 + y22 y1 + y2 y1 + y2 y12 + y22 y1 + y22
2

(8.30)
 2 "
−0.4
x−0.4
! ! 2 #
x1 y2 y2 y1 y2

=  q 2  1− 2 1 2 1− 2 2 2 − (8.31)
y12 + y22 y1 + y2 y1 + y2 y1 + y22
2

 2 "
x−0.4 x−0.4
#
 1 2 y22 y12 y12 y22
=  − (8.32)
y12 + y22 y12 + y22
q 2
y12 + y22 y12 + y22
 2 "
x−0.4 x−0.4
#
 1 2 y22 y12 y12 y22
= q  2 − 2 =0≥0 (8.33)
y12 + y22 y12 + y22 y12 + y22

As all three principal minors (the two diagonal elements and the determinant) of the Hessian
matrix are non-negative, we can conclude that the Hessian matrix is positive semidefinite
and, thus, the output distance function 8.3 is convex in y.

269
8 Distance Functions

It is indeed not surprising that the determinant of the Hessian matrix is exactly zero,
because the output distance function is linearly homogeneous in y and the determinants of
linearly homogeneous functions are always zero.
Figure 8.2 illustrates the relationship between the two output quantities y1 and y2 and
the output distance measure Do (x, y) holding the input quantities x1 and x2 constant so
that x0.4 0.4
1 x2 = 1, e.g. x1 = x2 = 1 (please note that the origin, i.e. y1 = y2 = 0, is in
the front). The grey part of the surface indicates distance measures that are larger than
one (Do (x, y) > 1), i.e. combinations of the output quantities y1 and y2 that cannot be
produced by the input quantities x1 and x2 . The dark green line is a transformation curve
that indicates all combinations of the output quantities y1 and y2 that a fully efficient firm
(i.e. Do (x, y) = 1) can produce from the input quantities x1 and x2 . Given that the output
distance function is convex in y, it is also quasiconvex in y so that the lower contour sets,
i.e. the sets of output combinations that give an output distance measure (Do (x, y)) smaller
than a certain value (e.g. 1), are convex sets (see section 1.5.3). As the origin (y1 = y2 = 0)
is inside the lower contour sets, the convexity of the output distance function in y results
in transformation curves that are concave to the origin. The light green part of the surface
indicates distance measures (Do (x, y)) that are slightly smaller than one, indicating small
technical inefficiency. The red part of the surface indicates distance measures (Do (x, y))
that are considerably smaller than one, indicating considerable technical inefficiency.

1.5

1.0
Do ( x, y )

0.5

0.0
1.5

1.0

1.5
y2

0.5
1.0

0.5 y1
0.0
0.0

Figure 8.2: Output distance function for different output quantities

The following code generates figures 8.1 and 8.2:


> nVal <- 100
> colRedGreen <- colorRampPalette( c( "red", "green" ) )( 100 )

270
8 Distance Functions

> x1 <- seq( 0.2, 2, length.out = nVal )


> x2 <- seq( 0.2, 2, length.out = nVal )
> dxMat <- outer( x1, x2, function( a, b ) a^(-0.4 ) * b^(-0.4 ) )
> dxFacet <- ( dxMat[-1, -1] + dxMat[-1, -nVal] + dxMat[-nVal, -1] +
+ dxMat[-nVal, -nVal] ) / 4
> dxInt <- cut( dxFacet,
+ seq( min( dxMat ), 1, length.out = length( colRedGreen ) ) )
> dxCol <- colRedGreen[ dxInt ]
> dxCol[ dxFacet > 1 ] <- "grey"
> dxMat[ dxMat > dxMat[1,nVal] ] <- NA

> ppx <- persp( x1, x2, dxMat, xlim = c( 0, max( x1 ) ), ylim = c( 0, max( x2 ) ),
+ zlim = c( min( dxMat, na.rm = TRUE ) - 0.1, max( dxMat, na.rm = TRUE ) ),
+ zlab = "Do ( x, y )", ticktype = "detailed", nticks = 3,
+ theta = 155, phi = 20, col = dxCol, border = NA )
> xa <- seq( 1/max(x2), max(x1), length.out = nVal )
> lines( trans3d( xa, 1/xa, 1, ppx ), col = "darkgreen", lwd = 5 )

> y1 <- seq( 0, 1.5, length.out = nVal )


> y2 <- seq( 0, 1.5, length.out = nVal )
> dyMat <- outer( y1, y2, function( a, b ) sqrt( a^2 + b^2 ) )
> dyFacet <- ( dyMat[-1, -1] + dyMat[-1, -nVal] + dyMat[-nVal, -1] +
+ dyMat[-nVal, -nVal] ) / 4
> dyInt <- cut( dyFacet,
+ seq( min( dyMat ), 1, length.out = length( colRedGreen ) ) )
> dyCol <- colRedGreen[ dyInt ]
> dyCol[ dyFacet > 1 ] <- "grey"
> dyMat[ dyMat > dyMat[ 1, nVal ] ] <- NA

> ppy <- persp( y1, y2, dyMat, zlab = "Do ( x, y )",
+ ticktype = "detailed", nticks = 3,
+ theta = -25, phi = 20, col = dyCol, border = NA )
> ya <- seq( 0, 1, length.out = nVal )
> lines( trans3d( ya, sqrt(1-ya^2), 1, ppy ), col = "darkgreen", lwd = 5 )

8.1.1.2 Distance elasticities

The distance elasticities of the output distance function Do (x, y) with respect to the input quan-
tities (x), I , measure the relative change in the output distance measure (and, hence, in the
firm’s efficiency) given a change in one input quantity. The distance elasticity of the ith input is
defined as:
∂Do (x, y) xi ∂ ln Do (x, y)
Ii = = ≤0 (8.34)
∂xi Do ∂ ln xi

271
8 Distance Functions

The distance elasticities of the output distance function Do (x, y) with respect to output quan-
tities (y), O , measure the relative change in the output distance measure (hence, in the firm’s
efficiency) given a change in one output quantity. The distance elasticity of the mth output is
defined as:
∂Do (x, y) ym ∂ ln Do (x, y)
O
m = = ≥0 (8.35)
∂ym Do ∂ ln ym
Linear homogeneity of the output distance function Do (x, y) in output quantities implies that
the distance elasticities with respect to the output quantities sum to one:
X
O
m =1 (8.36)
m

8.1.1.3 Elasticity of scale

The elasticity of scale of an output distance function Do (x, y) equals the negative sum of the
distance elasticities with respect to the input quantities:
X
=− Ii (8.37)
i

8.1.2 Input distance functions


The Shepard input distance function is defined as:

Di (x, y) = max{λ > 0|x/λ ∈ L(y)} (8.38)

or (equivalently) as:
Di (x, y) = max{λ > 0|(x/λ, y) ∈ T }, (8.39)

where x is a vector of input quantities, y is a vector of output quantities, L(y) is the input
requirement set, and T is the technology set. The Shepard input distance function, Di (x, y), de-
fined in (8.38) and (8.39) returns the Shepard input-oriented technical efficiencies defined in (5.3)
and (5.7). Thus, it returns a value of one for fully efficient sets of inputs and outputs (x, y),
whereas it returns a value larger than one for inefficient sets of inputs and outputs (x, y).4

8.1.2.1 Properties

It is usually assumed that the Shepard input distance function Di (x, y) defined in (8.38) fulfills
the following properties (see, e.g., Färe and Primont, 1995; Coelli et al., 2005):

1. Di (x, y) is non-decreasing in x, i.e. ∂Di (x, y)/∂xi ≥ 0 ∀ i

2. Di (x, y) is non-increasing in y, i.e. ∂Di (x, y)/∂ym ≤ 0 ∀ m


4
The Farrell input distance function is defined as the inverse of the Shepard input distance function: DiF (x, y) =
min{λ > 0|λ x ∈ L(y)} = 1/DiF (x, y). It returns the Farrell input-oriented technical efficiencies defined in (5.4)
and (5.8).

272
8 Distance Functions

3. Di (x, y) is linearly homogeneous in x, i.e. Di (k x, y) = k Di (x, y) ∀ k > 0

4. Di (x, y) is concave in x ⇒ convex isoquants

5. Di (x, y) is quasiconcave in y ⇒ concave transformation curves5 (i.e., joint production is


advantageous compared to specialized production for a given set of input quantities)

6. Di (x, y) ≥ 1 indicates that x belongs to the input requirement set of y, i.e. x ∈ L(y), while
Di (x, y) < 1 indicates that x does not belong to the input requirement set of y.

7. Di (x, y) = 1 indicates that x is at the boundary of the input requirement set L(y), i.e. x
lies on the isoquant (given y) and y lies on the transformation curve (given x).

We will illustrate these properties using a very simple input distance function with two in-
puts x = (x1 , x2 )0 and two outputs y = (y1 , y2 )0 :6

x0.5 x0.5
Di (x, y) = q1 2 (8.40)
y12 + y22

In the following, we illustrate that this simple input distance function fulfills the above-
mentioned properties 1–3:

ˆ monotonically non-decreasing in x

∂Di (x, y) x0.5


1 x2
0.5
= 0.5 q ≥ 0; i ∈ {1, 2} (8.41)
∂xi x y2 + y2
i 1 2

ˆ monotonically non-increasing in y

∂Di (x, y) x0.5 x0.5 yi


= − 1 2 1.5 ≤ 0; i ∈ {1, 2} (8.42)
∂yi y12 + y22

ˆ linear homogeneous in x

(k x1 )0.5 (k x2 )0.5
Di (kx, y) = q (8.43)
y12 + y22
k 0.5 x0.5
1 k
0.5 x0.5
2
= q (8.44)
y12 + y22
k x0.5 x0.5
= q1 2 (8.45)
y12 + y22
= k Di (x, y) (8.46)
5
O’Donnell and Coelli (2005) clarified a typographical error in Färe and Primont (1995, p. 152) who state by
mistake that the input distance function is quasiconvex in output quantities y.
6
The specification of this input distance function is inspired by the multiple-output “ray frontier production
function” suggested by Löthgren (1997, 2000).

273
8 Distance Functions

ˆ concave x
Concavity requires that the Hessian matrix is negative semidefinite (see section 1.5.2).
The elements of the Hessian matrix, i.e. the second derivatives with respect to the input
quantities, are:

∂ 2 Di (x, y) x0.5
1 x2
0.5
= 0.5 (0.5 − ∆ij ) q (8.47)
∂xi ∂xj xi xj y12 + y22

1 if i = j
∆ij = (8.48)
0 if i 6= j

Equation (8.47) shows that all diagonal elements of the Hessian matrix (i.e. i = j) are
non-positive, because (0.5 − ∆ii ) is negative for i ∈ {1, 2}, while all other terms on the
right-hand side of (8.47) are always non-negative.
The determinant of the (2 × 2) Hessian matrix is:
!2
∂ 2 Di (x, y) ∂ 2 Di (x, y) ∂ 2 Di (x, y)
|H| = · − (8.49)
∂x21 ∂x22 ∂x1 ∂x2
 2
x0.5
1 x2
0.5 x10.5 x0.5
2 x10.5 x20.5
= 0.5 (−0.5) q · 0.5 (−0.5) q − 0.5 · 0.5 q 
x21 y12 + y22 x22 y12 + y22 x1 x2 y12 + y22
(8.50)
0.54 0.54
= −  =0≥0 (8.51)
x1 x2 y12 + y22 x1 x2 y12 + y22


As all first-order principal minors (i.e. the two diagonal elements) are non-positive and
the second-order principal (i.e. the determinant) is non-negative, we can conclude that
the Hessian matrix is negative semidefinite and, thus, the input distance function (8.40)
is concave in x. It is indeed not surprising that the determinant of the Hessian matrix
is exactly zero, because the input distance function is linearly homogeneous in x and the
determinants of linearly homogeneous functions are always zero.
Figure 8.3 illustrates the relationship between the two input quantities x1 and x2 and the
input distance measure Di (x, y) holding the output quantities y1 and y2 constant so that
q √
y12 + y22 = 1, e.g. y1 = y2 = 0.5 (please note that the origin, i.e. x1 = x2 = 0, is
in the front). The grey part of the surface indicates distance measures that are smaller
than one (Di (x, y) < 1), i.e. combinations of the input quantities x1 and x2 that are too
small to produce the output quantities y1 and y2 . The dark green line is an isoquant that
indicates all combinations of the input quantities x1 and x2 that a fully efficient firm (i.e.
Di (x, y) = 1) needs to produce the output quantities y1 and y2 . Given that the input
distance function is concave in x, it is also quasiconcave in x so that the upper contour sets,
i.e. the sets of input combinations that give an input distance measure (Di (x, y)) larger

274
8 Distance Functions

than a certain value (e.g. 1), are convex sets (see section 1.5.3). As the origin (x1 = x2 = 0)
is not inside the upper contour sets (only on its border if Di (x, y) = 0), the concavity of the
input distance function in x results in isoquants that are convex to the origin. The light
green part of the surface indicates distance measures (Di (x, y)) that are slightly larger than
one, indicating small technical inefficiency. The red part of the surface indicates distance
measures (Di (x, y)) that are considerably larger than one, indicating considerable technical
inefficiency.

2
Di ( x, y )

0
4

2
4
x2

2
x1
0
0

Figure 8.3: Input distance function for different input quantities

ˆ quasiconcavity in y
A sufficient condition for quasiconcavity of a function with two arguments is that the first
leading principal minor of the bordered Hessian matrix is strictly negative, while its second
leading principle minor is strictly positive (see section 1.5.3). The first derivatives of the
input distance function (8.40) with respect to the output quantities are given in (8.42). The
remaining elements of the bordered Hessian matrix, i.e. the second derivatives with respect
to the output quantities, are:

∂ 2 Di (x, y) x10.5 x20.5 3 yi yj


 
= 1.5 − ∆ij ; i ∈ {1, 2} (8.52)
∂yi ∂yj y12 + y22 y12 + y22

1 if i = j
∆ij = (8.53)
0 if i 6= j

The first leading principal minor of the bordered Hessian B is:


2
∂Do (x, y)

|B1 | = − (8.54)
∂x1

275
8 Distance Functions

!2
x0.5 0.5
1 x2 y1
=− − 1.5 (8.55)
y12 + y22
x1 x2 y12
=− 3 (8.56)
y12 + y22
< 0 ∀ x1 , x2 > 0; y1 > 0; y2 ≥ 0 (8.57)

The determinant of the (3 × 3) bordered Hessian is:

∂Di (x, y) ∂Di (x, y) ∂ 2 Di (x, y)


|B| =2 (8.58)
∂y1 ∂y2 ∂y1 ∂y2
!2 !2
∂Di (x, y) ∂ 2 Di (x, y) ∂Di (x, y) ∂ 2 Di (x, y)
− −
∂y1 ∂y22 ∂y2 ∂y12
! ! !
x0.5 0.5
1 x 2 y1 x10.5 x20.5 y2 3 x10.5 x20.5 y1 y2
=2 − 1.5 − 1.5 2.5 (8.59)
y12 + y22 y12 + y22 y12 + y22
!2 !!
x0.5 0.5
1 x2 y1 x0.5
1 x2
0.5 3 y22
− − 1.5 1.5 −1
y12 + y22 y12 + y22 y12 + y22
!2 !!
x0.5 0.5
1 x2 y2 x0.5
1 x2
0.5 3 y12
− − 1.5 1.5 −1
y12 + y22 y12 + y22 y12 + y22
!3 " ! !#
x0.5
1 x2
0.5 6 y12 y22 3 y22 3 y12
= 1.5 − y12 − 1 − y22 −1 (8.60)
y12 + y22 y12 + y22 y12 + y22 y12 + y22
!
x1.5
1 x2
1.5 h i
= y12 + y22 (8.61)
y12 + y2 2 4.5


x1.5
1 x2
1.5
= 3.5 (8.62)
y12 + y22
> 0 ∀ x1 , x2 > 0; y1 , y2 ≥ 0; y1 + y2 > 0 (8.63)

If both of the input quantities are strictly positive and at least one of the output quantities
is strictly positive. the first leading principal minor of the bordered Hessian matrix is non-
positive and its determinant is non-negative, which means that the necessary conditions for
quasiconvexity are fulfilled. If the quantities of both of the inputs and of the first output
are strictly positive and the quantity of the second output is non-negative, the first leading
principal minor of the bordered Hessian matrix is strictly negative and its determinant
is strictly positive, which means that also the sufficient conditions for quasiconvexity are
fulfilled. As the order of the outputs is arbitrary, we can rearrange the order of the outputs so
that the quantity of the first input is strictly positive as long as at least one output quantity
is strictly positive. Hence, if at least one of the output quantities is strictly positive, not only
the necessary conditions but also the sufficient conditions for quasiconvexity are fulfilled.
Figure 8.4 illustrates the relationship between the two output quantities y1 and y2 and
the input distance measure Di (x, y) holding the input quantities x1 and x2 constant so

276
8 Distance Functions

that x0.5 0.5


1 x2 = 1, e.g. x1 = x2 = 1 (please note that the origin, i.e. y1 = y2 = 0, is in
the back). The grey part of the surface indicates distance measures that are smaller than
one (Di (x, y) < 1), i.e. combinations of the output quantities y1 and y2 that cannot be
produced by the input quantities x1 and x2 . The dark green line is a transformation curve
that indicates all combinations of the output quantities y1 and y2 that a fully efficient
firm (i.e. Di (x, y) = 1) can produce from the input quantities x1 and x2 . Given that the
input distance function is quasiconcave in y, the upper contour sets, i.e. the sets of output
combinations that give an input distance measure (Di (x, y)) larger than a certain value
(e.g. 1), are convex sets (see section 1.5.3). As the origin (y1 = y2 = 0) is inside the upper
contour sets, the quasiconcavity of the input distance function in y results in transformation
curves that are concave to the origin. The light green part of the surface indicates distance
measures (Di (x, y)) that are slightly larger than one, indicating small technical inefficiency.
The red part of the surface indicates distance measures (Di (x, y)) that are considerably
larger than one, indicating considerable technical inefficiency.

2.0

1.5
Do ( x, y )

1.0

0.5
0.0

0.5

0.0
y2

1.0
0.5

1.0 y1
1.5
1.5

Figure 8.4: Input distance function for different output quantities

The following code generates figures 8.3 and 8.4:

> nVal <- 100


> colRedGreen <- colorRampPalette( c( "green", "red" ) )( 100 )
> x1 <- seq( 0, 4, length.out = nVal )
> x2 <- seq( 0, 4, length.out = nVal )
> dxMat <- outer( x1, x2, function( a, b ) a^( 0.5 ) * b^( 0.5 ) )
> dxFacet <- ( dxMat[-1, -1] + dxMat[-1, -nVal] + dxMat[-nVal, -1] +
+ dxMat[-nVal, -nVal] ) / 4

277
8 Distance Functions

> dxInt <- cut( dxFacet,


+ seq( 1, 3, length.out = length( colRedGreen ) ) )
> dxCol <- colRedGreen[ dxInt ]
> dxCol[ dxFacet < 1 ] <- "grey"
> dxMat[ dxMat > 3 ] <- NA

> ppx <- persp( x1, x2, dxMat, xlim = c( 0, max( x1 ) ), ylim = c( 0, max( x2 ) ),
+ zlim = c( min( dxMat, na.rm = TRUE ), max( dxMat, na.rm = TRUE ) ),
+ zlab = "Di ( x, y )", ticktype = "detailed", nticks = 3,
+ theta = -25, phi = 20, col = dxCol, border = NA )
> xa <- seq( 1/max(x2), max(x1), length.out = nVal )
> lines( trans3d( xa, 1/xa, 1, ppx ), col = "darkgreen", lwd = 5 )

> y1 <- seq( 0, 1.5, length.out = nVal )


> y2 <- seq( 0, 1.5, length.out = nVal )
> dyMat <- outer( y1, y2, function( a, b ) 1 / sqrt( a^2 + b^2 ) )
> dyFacet <- ( dyMat[-1, -1] + dyMat[-1, -nVal] + dyMat[-nVal, -1] +
+ dyMat[-nVal, -nVal] ) / 4
> dyInt <- cut( dyFacet,
+ seq( 1, 2, length.out = length( colRedGreen ) ) )
> dyCol <- colRedGreen[ dyInt ]
> dyCol[ dyFacet < 1 ] <- "grey"
> # dyMat[ dyMat > dyMat[ 1, nVal ] ] <- NA
> dyMat[ dyMat > 2 ] <- NA

> ppy <- persp( y1, y2, dyMat, zlab = "Do ( x, y )",
+ ticktype = "detailed", nticks = 3,
+ theta = 155, phi = 20, col = dyCol, border = NA )
> ya <- seq( 0, 1, length.out = nVal )
> lines( trans3d( ya, sqrt(1-ya^2), 1, ppy ), col = "darkgreen", lwd = 5 )

8.1.2.2 Distance elasticities

The distance elasticities of the input distance function Di (x, y) with respect to input quanti-
ties (x), I , measure the relative change in the input distance measure (and, hence, in the firm’s
inefficiency) given a change in one input quantity. The distance elasticity of the ith input quantity
is defined as:
∂Di (x, y) xi ∂ ln Di (x, y)
Ii = = ≥0 (8.64)
∂xi Di ∂ ln xi

278
8 Distance Functions

Linear homogeneity of the input distance function Di (x, y) in input quantities implies that its
distance elasticities with respect to the input quantities sum to one:
X
Ii = 1 (8.65)
i

The distance elasticities of the input distance function Di (x, y) with respect to output quantities
(y), O , measure the relative change in the input distance measure (and, hence, in the firm’s
inefficiency) given a change in one output quantity. The distance elasticity of the mth output
quantity is defined as:
∂Di (x, y) ym ∂ ln Di (x, y)
O
m = i
= ≤0 (8.66)
∂ym D ∂ ln ym

8.1.2.3 Elasticity of scale

The elasticity of scale of an input distance function Di (x, y) equals the inverse of the negative
sum of distance elasticities with respect to the output quantities:
!−1
X
= − O
m (8.67)
m

8.2 Cobb-Douglas output distance function


8.2.1 Specification
The general form of the Cobb-Douglas output distance function is

N M
! !
xαi i
Y Y
o βm
D (x, y) = A ym , (8.68)
i=1 m=1

which can be linearized to:


N
X M
X
ln Do (x, y) = α0 + αi ln xi + βm ln ym (8.69)
i=1 m=1

with α0 = ln A.

8.2.2 Estimation
The Cobb-Douglas output distance function can be expressed (and then estimated) as traditional
stochastic frontier model.
In the following, we will derive, under which conditions the Cobb-Douglas output distance
function defined in (8.68) and (8.69) is linear homogeneous in output quantities (y):

kDo (x, y) = Do (x, ky) (8.70)

279
8 Distance Functions

ln(kDo (x, y)) = ln Do (x, ky) (8.71)


N
X M
X
ln(kDo (x, y)) = α0 + αi ln xi + βm ln(k ym ) (8.72)
i=1 m=1
XN XM M
X
o
ln k + ln D (x, y) = α0 + αi ln xi + βm ln k + βm ln ym (8.73)
i=1 m=1 m=1
M
X
ln k + ln Do (x, y) = ln Do (x, y) + ln k βm (8.74)
m=1
M
X
ln k = ln k βm (8.75)
m=1
M
X
1= βm (8.76)
m=1

Hence, the Cobb-Douglas output distance function is linear homogeneous in output quantities if
the coefficients of the output quantities (βm ) sum up to one. We can impose linear homogeneity
in output quantities by re-arranging equation (8.76) to:

M
X −1
βM = 1 − βm (8.77)
m=1

and by substituting the right-hand side of (8.77) for βM in (8.69):

N M −1 M −1
!
X X X
ln Do (x, y) = α0 + αi ln xi + βm ln(ym ) + 1 − βm ln(yM ) (8.78)
i=1 m=1 m=1
XN M
X −1
ln Do (x, y) = α0 + αi ln xi + βm (ln ym − ln yM ) + ln yM (8.79)
i=1 m=1
XN M
X −1
− ln yM = α0 + αi ln xi + βm ln(ym /yM ) − ln Do (x, y). (8.80)
i=1 m=1

We can assume that u ≡ − ln(Do (x, y)) ≥ 0 follows a half normal or truncated normal distri-
bution (i.e. u ∼ N + (µ, σu2 )) and add a disturbance term v, that accounts for statistical noise and
follows a normal distribution (i.e. v ∼ N (0, σv2 )) so that we get:

N
X M
X −1
− ln(yM ) = α0 + αi ln xi + βm ln(ym /yM ) + u + v. (8.81)
i=1 m=1

This specification is equivalent to the specification of stochastic frontier models so that we can
use the stochastic frontier methods introduced in Chapter 6 to estimate this output distance
function.
In the following, we will estimate a Cobb-Douglas output distance function with our data set
of French apple producers. This data set distinguishes between two outputs: the quantity of

280
8 Distance Functions

apples produced (qApples) and the quantity of the other outputs (qOtherOut). The following
command estimates the Cobb-Douglas output distance function using the command sfa() for
stochastic frontier analysis:

> odfCD <- sfa( -log(qApples) ~ log( qCap ) + log( qLab ) + log( qMat ) +
+ log( qOtherOut/qApples), data = dat, ineffDecrease = FALSE )
> summary( odfCD )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency increases the endogenous variable (as in a cost function)
The dependent variable is logged
Iterative ML estimation terminated after 12 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 10.776577 1.396634 7.7161 1.199e-14 ***
log(qCap) -0.087292 0.086579 -1.0082 0.3133419
log(qLab) -0.501941 0.156948 -3.1981 0.0013832 **
log(qMat) -0.451896 0.116299 -3.8856 0.0001021 ***
log(qOtherOut/qApples) 0.621160 0.044419 13.9842 < 2.2e-16 ***
sigmaSq 1.306175 0.215974 6.0478 1.468e-09 ***
gamma 0.923600 0.039358 23.4666 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -147.8225

cross-sectional data
total number of observations = 140

mean efficiency: 0.5069131

8.2.3 Distance elasticities


The distance elasticities of a Cobb-Douglas output distance function with respect to input quan-
tities (x), I , can be calculated as:

∂Do (x, y) xi ∂ ln Do (x, y)


Ii = = = αi (8.82)
∂xi Do ∂ ln xi

The distance elasticities of a Cobb-Douglas output distance function with respect to output

281
8 Distance Functions

quantities (y), O , can be calculated as:

∂Do (x, y) ym ∂ ln Do (x, y)


O
m = = = βm (8.83)
∂ym Do ∂ ln ym

Since the distance elasticities of Cobb-Douglas output distance functions are equal to some
of the estimated parameters, they can be directly obtained from the estimation output. The
distance elasticity with respect to the capital input (IqCap = −0.087) indicates that a 1% increase
in the capital input results (ceteris paribus) in a 0.09% decrease of the distance measure (i.e.
efficiency decreases and inefficiency increases). The distance elasticity with respect to the labor
input (IqLab = −0.502) indicates that a 1% increase in the labor input results (ceteris paribus) in
a 0.5% decrease of the distance measure (i.e. efficiency decreases and inefficiency increases). The
distance elasticity with respect to the material input (IqMat = −0.452) indicates that a 1% increase
in the materials input results (ceteris paribus) in a 0.45% decrease of the distance measure (i.e.
efficiency decreases and inefficiency increases).
The distance elasticity with respect to the other output (O
qOtherOut = 0.621) indicates that a
1% increase in other outputs results (ceteris paribus) in a 0.62% increase of the distance measure
(i.e. efficiency increases and inefficiency decreases). Based on the homogeneity property (8.77),
we can calculate the distance elasticity of the apple quantity O O
qApples = 1 − qOtherOut = 0.379,
which indicates that a 1% increase in the output of apples results (ceteris paribus) in a 0.38%
increase of the distance measure (i.e. efficiency increases and inefficiency decreases).

8.2.4 Elasticity of scale


The elasticity of scale for an output distance function Do (x, y) equals the negative sum of distance
elasticities with respect to the input quantities:
X
=− Ii (8.84)
i

For our Cobb-Douglas output distance function, the elasticity of scale can be obtained by using
following command:

> -sum(coef(odfCD)[c("log(qCap)", "log(qLab)", "log(qMat)")])

[1] 1.041129

The estimated elasticity of scale  = 1.04 indicates slightly increasing returns to scale.

282
8 Distance Functions

8.2.5 Properties
8.2.5.1 Non-increasing in input quantities

Do (x, y) is non-increasing in x if its partial derivatives with respect to the input quantities are
non-positive:

∂Do (x, y) ∂ ln Do (x, y) Do (x, y) Do (x, y)


= = αi ≤0 (8.85)
∂xi ∂ ln xi xi xi

Given that Do (x, y) and xi are always non-negative, a Cobb-Douglas output distance function
Do (x, y) is non-increasing in x if all coefficients αi are non-positive.
We can see from the summary() output of our estimated Cobb-Douglas output distance function
that all coefficients related to input quantities are negative. This means that monotonicity in
input quantities is fulfilled.

8.2.5.2 Non-decreasing in output quantities

Do (x, y) is non-decreasing in y if its partial derivatives with respect to the output quantities are
non-negative:

∂Do (x, y) ∂ ln Do (x, y) Do (x, y) Do (x, y)


= = βm ≥0 (8.86)
∂ym ∂ ln ym ym ym

Given that Do (x, y) and ym are always non-negative, a Cobb-Douglas output distance function
Do (x, y) is non-decreasing in y if all coefficients βm are non-negative.
For our Cobb-Douglas output distance function, the coefficient of the (normalized) quantity of
“other outputs” is positive (0.621). The coefficient of the apple quantity can be recovered from
the homogeneity condition (1-0.621 = 0.379). Since the coefficients of both output quantities are
positive, we can conclude that monotonicity in output quantities is fulfilled.

8.2.5.3 Quasiconvex in input quantities

In the following, we check if our estimated Cobb-Douglas output distance function is quasiconvex
in input quantities (x). A sufficient condition for quasiconvexity of Do (x, y) in x is that |Bi | <
0; i = 1, . . . , N , where |Bi | is the ith leading principal minor of the bordered Hessian matrix B
with  
0 f1 f2 ... fN
 
 f1 f11 f12 ... f1N 
 
 
 f2
B= f12 f22 ... f2N , (8.87)

 . .. .. .. ..
 ..

 . . . . 

fN f1N f2N . . . fN N

where fi = ∂Do (x, y)/∂xi are the first-order partial derivatives and fij are the second-order
partial derivatives of the Cobb-Douglas output distance function Do (x, y) with respect to the

283
8 Distance Functions

input quantities x:
o o
   
∂ 2 Do (x, y) ∂ ∂D∂x(x,y)
i
∂ αi D x(x,y)
i
fij = = = (8.88)
∂xi ∂xj ∂xj ∂xj
αi ∂Do (x, y) Do (x, y)
= − δij αi (8.89)
xi ∂xi x2i
o
αi D (x, y) Do (x, y)
= αj − δij αi (8.90)
xi xj x2i
Do (x, y)
= αi (αj − δij ) , (8.91)
xi xj

where δij is (again) Kronecker’s delta (2.82).


As all elements of the bordered Hessian matrix (both the first derivatives and the second
derivatives) contain the output distance measure Do (x, y) as a multiplicative element, we can
factor it out of the bordered Hessian matrix. As the output distance measure Do (x, y) is non-
negative, it does not affect the signs of the principal minors so that we can ignore it in our further
calculations.
For a sake of simplicity of the code, we create short-cuts for the coefficients.

> oCap <- coef(odfCD)["log(qCap)"]


> oLab <- coef(odfCD)["log(qLab)"]
> oMat <- coef(odfCD)["log(qMat)"]

The following code computes the first-order and second-order partial derivatives of the Cobb-
Douglas output distance function with respect to the input quantities (with the output distance
measures being factored out of the bordered Hessian matrix or assuming that the firms are fully
efficient, i.e. Do (x, y) = 1):

> dat$fCap <- oCap * 1 / dat$qCap


> dat$fLab <- oLab * 1 / dat$qLab
> dat$fMat <- oMat * 1 / dat$qMat
> dat$fCapCap <- oCap * ( oCap - 1 ) * 1 / dat$qCap^2
> dat$fLabLab <- oLab * ( oLab - 1 ) * 1 / dat$qLab^2
> dat$fMatMat <- oMat * ( oMat - 1 ) * 1 / dat$qMat^2
> dat$fCapLab <- oCap * oLab * 1 / ( dat$qCap * dat$qLab )
> dat$fCapMat <- oCap * oMat * 1 / ( dat$qCap * dat$qMat )
> dat$fLabMat <- oLab * oMat * 1 / ( dat$qLab * dat$qMat )

The following code generates a three-dimensional array of the bordered Hessian matrices
stacked for all observation:

> bhmArray <- array( 0, c( 4, 4, nrow( dat ) ) )


> bhmArray[ 1, 2, ] <- bhmArray[ 2, 1, ] <- dat$fCap

284
8 Distance Functions

> bhmArray[ 1, 3, ] <- bhmArray[ 3, 1, ] <- dat$fLab


> bhmArray[ 1, 4, ] <- bhmArray[ 4, 1, ] <- dat$fMat
> bhmArray[ 2, 2, ] <- dat$fCapCap
> bhmArray[ 3, 3, ] <- dat$fLabLab
> bhmArray[ 4, 4, ] <- dat$fMatMat
> bhmArray[ 2, 3, ] <- bhmArray[ 3, 2, ] <- dat$fCapLab
> bhmArray[ 2, 4, ] <- bhmArray[ 4, 2, ] <- dat$fCapMat
> bhmArray[ 3, 4, ] <- bhmArray[ 4, 3, ] <- dat$fLabMat
> print( bhmArray[ , , 1 ] )

[,1] [,2] [,3] [,4]


[1,] 0.000000e+00 -1.038562e-06 -1.394028e-06 -1.325728e-05
[2,] -1.038562e-06 1.343503e-11 1.447784e-12 1.376851e-11
[3,] -1.394028e-06 1.447784e-12 5.814907e-12 1.848102e-11
[4,] -1.325728e-05 1.376851e-11 1.848102e-11 5.646850e-10

The following code checks if our estimated Cobb-Douglas output distance function is quasicon-
vex at the first observation:

> det( bhmArray[ 1:2, 1:2, 1 ] )

[1] -1.078611e-12

> det( bhmArray[ 1:3, 1:3, 1 ] )

[1] -2.818833e-23

> det( bhmArray[ , , 1 ] )

[1] -1.937125e-32

As all three leading principal minors of the bordered Hessian matrix are negative, we can conclude
that our estimated Cobb-Douglas output distance function is quasiconvex in input quantities at
the first observation.
The following code checks the conditions for quasiconvexity in inputs at all observations:

> dat$quasiConvexInOdfCD <- apply( bhmArray[ 1:2, 1:2, ], 3, det ) < 0 &
+ apply( bhmArray[ 1:3, 1:3, ], 3, det ) < 0 &
+ apply( bhmArray, 3, det ) < 0
> table( dat$quasiConvexInOdfCD )

TRUE
140

Our estimated Cobb-Douglas output distance function is quasiconvex in input quantities (x) at
all observations in our data set.

285
8 Distance Functions

8.2.5.4 Convex in output quantities

In the following, we check if our estimated Cobb-Douglas output distance function is convex in
output quantities (y). An output distance function Do (x, y) is convex in y if and only if its
Hessian matrix H with respect to the output quantities is positive semidefinite, which is the case
if all its principal minors (not only the leading principal minors) are non-negative. The Hessian
matrix with respect to the output quantities is
 
f11 f12 ... f1M
 
 f12 f22 ... f2M 
H= . , (8.92)
 
 .. .. .. ..
 . . . 

f1M f2M . . . fM M

where fmn are the second derivatives of the output distance function with respect to the output
quantities:

∂Do (x,y) o
   
∂ 2 Do (x, y) ∂ ∂ym ∂ βm D y(x,y)
m
fmn = = = (8.93)
∂ym ∂yn ∂yn ∂yn
βm ∂Do (x, y) Do (x, y)
= − δij βm (8.94)
ym ∂ym x2i
o
βm D (x, y) Do (x, y)
= βn − δij βm (8.95)
ym yn x2i
Do (x, y)
= βm (βn − δij ) (8.96)
ym yn

As all elements of the Hessian matrix (all second derivatives) contain the output distance
measure Do (x, y) as a multiplicative element, we can factor it out of the Hessian matrix. As the
output distance measure Do (x, y) is non-negative, it does not affect the signs of the principal
minors so that we can ignore it in our further calculations.
In order to facilitate the following computations, we create a short-cut for the coefficient of the
(normalized) quantity of “other outputs”:

> oOther <- coef(odfCD)["log(qOtherOut/qApples)"]

Applying the homogeneity condition (8.77), we can calculate the coefficient of the apple quantity:

> oApples <- 1 - oOther

The following code computes the second derivatives of the Cobb-Douglas output distance func-
tion with respect to the output quantities (with the output distance measures being factored out
of the Hessian matrix or assuming that the firms are fully efficient, i.e. Do (x, y) = 1):

> dat$fApplesApples <- oApples * ( oApples - 1 ) * 1 / dat$qApples^2


> dat$fApplesOther <- oApples * oOther * 1 / (dat$qApples * dat$qOtherOut)
> dat$fOtherOther <- oOther * ( oOther - 1 ) * 1 / dat$qOtherOut^2

286
8 Distance Functions

The following code generates a three-dimensional array of the Hessian matrices stacked for all
observations:

> hessianArray <- array( NA, c( 2, 2, nrow( dat ) ) )


> hessianArray[ 1, 1, ] <- dat$fApplesApples
> hessianArray[ 2, 2, ] <- dat$fOtherOther
> hessianArray[ 1, 2, ] <- hessianArray[ 2, 1, ] <- dat$fApplesOther
> print( hessianArray[ , , 1 ] )

[,1] [,2]
[1,] -0.1214798 0.1730080
[2,] 0.1730080 -0.2463931

The following code checks whether the Hessian matrix is positive semidefinite at the first
observation:

> diag( hessianArray[ , , 1 ] )

[1] -0.1214798 -0.2463931

> det( hessianArray[ , , 1 ] )

[1] -4.801937e-18

As the two diagonal elements (first-order principal minors) of the Hessian matrix are strictly
negative, we can conclude that the Hessian matrix is not positive semidefinite and, thus, our
estimated Cobb-Douglas output distance function is not convex in output quantities at the first
observation.
It is not surprising that the determinant of the Hessian matrix with respect to the output
quantities is exactly zero or very close to zero, because the output distance function is linearly
homogeneous in output quantities, which implies that the determinant of the Hessian must be
zero.
The following code checks the semidefiniteness of the Hessian matrix at each individual obser-
vation:

> dat$convexOutOdfCD <- apply( hessianArray, 3, semidefiniteness,


+ positive = TRUE )
> table( dat$convexOutOdfCD )

FALSE
140

This shows that our estimated Cobb-Douglas output distance function is convex in output quan-
tities y not at a single observation.
Indeed, Cobb-Douglas output distance functions cannot be convex in output quantities, because
this functional form implies transformation curves that are convex to the origin.

287
8 Distance Functions

8.2.6 Efficiency estimates


If there were no inefficiencies, the output distance measures Do (x, y) would be equal to one (which
would imply that u = − ln Do = − ln 1 = 0) and all observations would be on the frontier. We
can use a likelihood ratio test to investigate if there is significant inefficiency.

> lrtest( odfCD )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -156.41
2 7 -147.82 1 17.179 1.701e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The very small p-value confirms that there is significant inefficiency.


The efficiency estimates can be obtained by the efficiencies method:

> dat$effOdfCD <- efficiencies( odfCD )


> summary( dat$effOdfCD )

efficiency
Min. :0.02638
1st Qu.:0.33640
Median :0.54409
Mean :0.50691
3rd Qu.:0.67876
Max. :0.89680

A median Shepard output-oriented efficiency estimate of 0.544 indicates that this apple producer
produces 45.6% less of each output quantity than would be possible to produce with its input
quantities.

8.3 Translog output distance function


8.3.1 Specification
The general form of the Translog output distance function is:

N N X N
X 1X
ln Do (x, y) = α0 + αi ln xi + αij ln xi ln xj (8.97)
i=1
2 i=1 j=1

288
8 Distance Functions

M M X M
X 1 X
+ βm ln ym + βmn ln ym ln yn
m=1
2 m=1 n=1
N X
X M
+ ζim ln xi ln ym
i=1 m=1

with αij = αji ∀ i, j and βmn = βnm ∀ n, m.

8.3.2 Estimation
The Translog output distance function can be expressed (and then estimated) as traditional
stochastic frontier model. This is facilitated by imposing linear homogeneity in the output quan-
tities (y).
In the following, we will derive, under which conditions the Translog output distance function
defined in (8.97) is linear homogeneous in output quantities (y):

k Do (x, y) =Do (x, k y) (8.98)


ln(kDo (x, y)) = ln Do (x, ky) (8.99)
N N X N
X 1X
ln(kDo (x, y)) =α0 + αi ln xi + αij ln xi ln xj (8.100)
i=1
2 i=1 j=1
M M X M
X 1 X
+ βm ln(k ym ) + βmn ln(k ym ) ln(k yn )
m=1
2 m=1 n=1
N X
X M
+ ζim ln xi ln(k ym )
i=1 m=1
N N X N
X 1X
ln k + ln Do (x, y) =α0 + αi ln xi + αij ln xi ln xj (8.101)
i=1
2 i=1 j=1
M
X M
X
+ βm ln(k) + βm ln ym
m=1 m=1
M X
M M X M
1 X 1 X
+ βmn ln(k) ln(k) + βmn ln(k) ln(yn )
2 m=1 n=1 2 m=1 n=1
M X M M X M
1 X 1 X
+ βmn ln(ym ) ln(k) + βmn ln(ym ) ln(yn )
2 m=1 n=1 2 m=1 n=1
N X
X M N X
X M
+ ζim ln xi ln k + ζim ln xi ln ym
i=1 m=1 i=1 m=1
M M X M
X 1 X
ln k + ln Do (x, y) = ln Do (x, y) + ln(k) βm + ln(k) ln(k) βmn (8.102)
m=1
2 m=1 n=1
M M M M
1X X 1 X X
+ ln(k) ln(yn ) βmn + ln(k) ln(ym ) βmn
2 n=1 m=1
2 m=1 n=1

289
8 Distance Functions

N
X M
X
+ ln k ln xi ζim
i=1 m=1
M M X M
X 1 X
ln k = ln(k) βm + ln(k) ln(k) βmn (8.103)
m=1
2 m=1 n=1
M M M M
1X X 1 X X
+ ln(k) ln(yn ) βmn + ln(k) ln(ym ) βmn
2 n=1 m=1
2 m=1 n=1
N
X M
X
+ ln k ln xi ζim
i=1 m=1
M M X M
X 1 X
1= βm + ln(k) βmn (8.104)
m=1
2 m=1 n=1
M M M M
1X X 1 X X
+ ln(yn ) βmn + ln(ym ) βmn
2 n=1 m=1
2 m=1 n=1
N
X M
X
+ ln xi ζim
i=1 m=1

This condition is only fulfilled for all values of k, ym , and xi , if the parameters fulfill the following
conditions:
M
X
βm = 1 (8.105)
m=1
M M
X βmn =βnm X
βmn = 0 ∀ n ←−−−−−−→ βmn = 0 ∀ m (8.106)
m=1 n=1
XM
ζim = 0 ∀ i (8.107)
m=1

In order to impose linear homogeneity in output quantities, we can rearrange these restrictions
to get:

M
X −1
βM = 1 − βm (8.108)
m=1
M
X −1
βM n = − βmn ∀ n (8.109)
m=1
M
X −1
βmN = − βmn ∀ m (8.110)
n=1
M
X −1
ζiM = − ζim ∀ i (8.111)
m=1

By substituting the right-hand sides of equations (8.108) to (8.111) for βM , βM n , βmN , and

290
8 Distance Functions

ζiM in equation (8.97) and re-arranging this equation, we get:

N N X N
X 1X
− ln yM =α0 + αi ln xi + αij ln xi ln xj (8.112)
i=1
2 i=1 j=1
M −1 −1 M −1
X ym 1 MX X ym yn
+ βm ln + βmn ln ln
m=1
yM 2 m=1 n=1 yM yM
N M −1
X X ym
+ ζim ln xi ln − ln Do (x, y).
i=1 m=1
yM

We can assume that u ≡ − ln(Do (x, y)) ≥ 0 follows a half-normal or truncated normal distri-
bution (i.e. u ∼ N + (µ, σu2 ) ) and add a disturbance term v that accounts for statistical noise and
follows a normal distribution (i.e. v ∼ N (0, σv2 ) ) so that we get:

N N X N
X 1X
− ln yM =α0 + αi ln xi + αij ln xi ln xj (8.113)
i=1
2 i=1 j=1
M −1 −1 M −1
X ym 1 MX X ym yn
+ βm ln + βmn ln ln
m=1
yM 2 m=1 n=1 yM yM
N M −1
X X ym
+ ζim ln xi ln + u + v. (8.114)
i=1 m=1
yM

This specification is equivalent to the specification of stochastic frontier models so that we


can use the stochastic frontier methods introduced in Chapter 6 to estimate this output distance
function. In the following, we use command sfa() to estimate a Translog output distance function
for our data set of French apple producers:

> odfTL <- sfa( -log(qApples) ~ log( qCap ) + log( qLab ) + log( qMat ) +
+ I( 0.5 * log( qCap )^2 ) + I( 0.5 * log( qLab )^2 ) +
+ I( 0.5 * log( qMat )^2 ) + I( log( qCap ) * log( qLab ) ) +
+ I( log( qCap ) * log( qMat ) ) + I( log( qLab ) * log( qMat ) ) +
+ log( qOtherOut/qApples) + I( 0.5 * log( qOtherOut/qApples )^2 ) +
+ I( log( qCap ) * log( qOtherOut/qApples ) ) +
+ I( log( qLab ) * log( qOtherOut/qApples ) ) +
+ I( log( qMat ) * log( qOtherOut/qApples ) ),
+ data = dat, ineffDecrease = FALSE)
> summary( odfTL )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency increases the endogenous variable (as in a cost function)
The dependent variable is logged
Iterative ML estimation terminated after 28 iterations:
log likelihood values and parameters of two successive iterations

291
8 Distance Functions

are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 38.882431 21.847091 1.7798 0.0751164
log(qCap) 0.901531 2.138098 0.4217 0.6732797
log(qLab) -5.046845 4.402014 -1.1465 0.2515943
log(qMat) -1.509307 3.738472 -0.4037 0.6864165
I(0.5 * log(qCap)^2) 0.068372 0.186448 0.3667 0.7138388
I(0.5 * log(qLab)^2) 1.185172 0.654824 1.8099 0.0703097
I(0.5 * log(qMat)^2) 0.204052 0.368668 0.5535 0.5799313
I(log(qCap) * log(qLab)) -0.475477 0.275217 -1.7276 0.0840518
I(log(qCap) * log(qMat)) 0.401302 0.194155 2.0669 0.0387422
I(log(qLab) * log(qMat)) -0.458295 0.409950 -1.1179 0.2635971
log(qOtherOut/qApples) -0.076972 0.784813 -0.0981 0.9218712
I(0.5 * log(qOtherOut/qApples)^2) 0.130865 0.018159 7.2065 5.740e-13
I(log(qCap) * log(qOtherOut/qApples)) -0.022233 0.052472 -0.4237 0.6717711
I(log(qLab) * log(qOtherOut/qApples)) 0.028802 0.081368 0.3540 0.7233620
I(log(qMat) * log(qOtherOut/qApples)) 0.057849 0.071400 0.8102 0.4178179
sigmaSq 0.677662 0.175928 3.8519 0.0001172
gamma 0.820876 0.135616 6.0530 1.422e-09

(Intercept) .
log(qCap)
log(qLab)
log(qMat)
I(0.5 * log(qCap)^2)
I(0.5 * log(qLab)^2) .
I(0.5 * log(qMat)^2)
I(log(qCap) * log(qLab)) .
I(log(qCap) * log(qMat)) *
I(log(qLab) * log(qMat))
log(qOtherOut/qApples)
I(0.5 * log(qOtherOut/qApples)^2) ***
I(log(qCap) * log(qOtherOut/qApples))
I(log(qLab) * log(qOtherOut/qApples))
I(log(qMat) * log(qOtherOut/qApples))
sigmaSq ***
gamma ***

292
8 Distance Functions

---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -116.8208

cross-sectional data
total number of observations = 140

mean efficiency: 0.6032496

We can use a likelihood ratio test to compare the Translog output distance function with the
corresponding Cobb-Douglas output distance function:

> lrtest( odfCD, odfTL )

Likelihood ratio test

Model 1: odfCD
Model 2: odfTL
#Df LogLik Df Chisq Pr(>Chisq)
1 7 -147.82
2 17 -116.82 10 62.003 1.511e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The likelihood ratio test clearly rejects the Cobb-Douglas output distance function in favor of
the Translog output distance function.

8.3.3 Distance elasticities


The distance elasticities of a Translog output distance function with respect to input quanti-
ties (x), I , can be obtained by:

N M
∂Do (x, y) xi ∂ ln Do (x, y) X X
Ii = = = α i + α ij ln x j + ζim ln ym (8.115)
∂xi Do ∂ ln xi j=1 m=1

The distance elasticities of a Translog output distance function with respect to output quanti-
ties (y), O , can be obtained by:

M N
∂Do (x, y) ym ∂ ln Do (x, y) X X
O
m = = = β m + βmn ln y n + ζim ln xi (8.116)
∂ym Do ∂ ln ym n=1 i=1

In order to facilitate the calculation of the distance elasticities, we create short-cuts for the
estimated coefficients:

293
8 Distance Functions

> aCap <- coef( odfTL )["log(qCap)"]


> aLab <- coef( odfTL )["log(qLab)"]
> aMat <- coef( odfTL )["log(qMat)"]
> aCapCap <- coef( odfTL )["I(0.5 * log(qCap)^2)"]
> aCapLab <- aLabCap <- coef( odfTL )["I(log(qCap) * log(qLab))"]
> aCapMat <- aMatCap <- coef( odfTL )["I(log(qCap) * log(qMat))"]
> aLabLab <- coef( odfTL )["I(0.5 * log(qLab)^2)"]
> aLabMat <- aMatLab <- coef( odfTL )["I(log(qLab) * log(qMat))"]
> aMatMat <- coef( odfTL )["I(0.5 * log(qMat)^2)"]
> bOther <- coef( odfTL )["log(qOtherOut/qApples)"]
> bApples <- 1 - bOther
> bOtherOther <- coef( odfTL )["I(0.5 * log(qOtherOut/qApples)^2)"]
> bOtherApples <- bApplesOther <- - bOtherOther
> bApplesApples <- - bApplesOther
> zCapOther <- coef( odfTL )["I(log(qCap) * log(qOtherOut/qApples))"]
> zCapApples <- - zCapOther
> zLabOther <- coef( odfTL )["I(log(qLab) * log(qOtherOut/qApples))"]
> zLabApples <- - zLabOther
> zMatOther <- coef( odfTL )["I(log(qLab) * log(qOtherOut/qApples))"]
> zMatApples <- - zMatOther

The following R code computes the distance elasticities of the inputs and of the outputs:

> dat$eCapOdfTL <- with( dat, aCap +


+ aCapCap * log( qCap ) + aCapLab * log( qLab ) + aCapMat * log( qMat ) +
+ zCapApples * log( qApples ) + zCapOther * log( qOtherOut ) )
> dat$eLabOdfTL <- with( dat, aLab +
+ aLabCap * log( qCap ) + aLabLab * log( qLab ) + aLabMat * log( qMat ) +
+ zLabApples * log( qApples ) + zLabOther * log( qOtherOut ) )
> dat$eMatOdfTL <- with( dat, aMat +
+ aMatCap * log( qCap ) + aMatLab * log( qLab ) + aMatMat * log( qMat ) +
+ zMatApples * log( qApples ) + zMatOther * log( qOtherOut ) )
> dat$eApplesOdfTL <- with( dat, bApples +
+ bApplesApples * log( qApples ) + bApplesOther * log( qOtherOut ) +
+ zCapApples * log( qCap ) + zLabApples * log( qLab ) +
+ zMatApples * log( qMat ) )
> dat$eOtherOdfTL <- with( dat, bOther +
+ bOtherApples * log( qApples ) + bOtherOther * log( qOtherOut ) +
+ zCapOther * log( qCap ) + zLabOther * log( qLab ) +
+ zMatOther * log( qMat ) )
> summary( dat[ ,

294
8 Distance Functions

+ c( "eCapOdfTL", "eLabOdfTL", "eMatOdfTL", "eApplesOdfTL", "eOtherOdfTL" ) ] )

eCapOdfTL eLabOdfTL eMatOdfTL eApplesOdfTL


Min. :-0.75715 Min. :-1.5312 Min. :-1.6197 Min. :-0.2249
1st Qu.:-0.25962 1st Qu.:-0.8143 1st Qu.:-0.7400 1st Qu.: 0.5500
Median :-0.13894 Median :-0.4487 Median :-0.5943 Median : 0.6826
Mean :-0.11768 Mean :-0.4782 Mean :-0.5788 Mean : 0.6847
3rd Qu.: 0.01858 3rd Qu.:-0.1502 3rd Qu.:-0.3732 3rd Qu.: 0.8129
Max. : 0.38125 Max. : 0.8224 Max. : 0.1527 Max. : 1.3829
eOtherOdfTL
Min. :-0.3829
1st Qu.: 0.1871
Median : 0.3174
Mean : 0.3153
3rd Qu.: 0.4500
Max. : 1.2249

We can check whether the distance elasticities with respect to the output quantities always
sum up to one:

> range( dat$eApplesOdfTL + dat$eOtherOdfTL )

[1] 1 1

8.3.4 Elasticity of scale


We can use equation (8.37) in section 8.1.1.3 to calculate the elasticity of scale for our estimated
Translog output distance function:

> dat$eScaleOdfTL <- -rowSums( dat[ , c( "eCapOdfTL", "eLabOdfTL", "eMatOdfTL" ) ] )


> summary( dat$eScaleOdfTL )

Min. 1st Qu. Median Mean 3rd Qu. Max.


0.5949 1.0534 1.1879 1.1747 1.3011 1.6127

On average, the estimated elasticity of scale is  = 1.175, which indicates increasing returns to
scale.
The following code plots the elasticities of scale against the two measures of firm size:

> plot( dat$qOut, dat$eScaleOdfTL, log = "x" )


> abline( 1, 0 )
> plot( dat$X, dat$eScaleOdfTL, log = "x" )
> abline( 1, 0 )

295
8 Distance Functions

1.6

1.6
● ●

● ●
● ●● ● ● ● ●●
● ●
● ● ● ●
● ●● ● ● ●

1.4

1.4
● ● ●
● ● ● ● ● ● ●● ● ●●
● ● ●
● ● ● ● ●●
●● ●
●● ●● ●● ● ● ●

●●●
● ● ● ● ● ●●●● ● ●
●●● ●
dat$eScaleOdfTL

dat$eScaleOdfTL
● ● ● ●●●●
● ●● ● ● ● ● ● ● ● ● ●
● ●● ● ●
● ● ● ● ●●
● ●●● ● ●
● ● ●●

● ● ● ●
1.2

1.2
●● ● ● ● ●
●● ● ● ●● ●● ●●●
●● ●
● ● ●● ● ● ● ● ●

●● ● ●● ● ● ● ● ●●
●● ● ●
● ●● ● ● ● ●
● ●●
● ●●●
● ●●
● ●

● ● ● ● ● ● ●
● ●
● ● ● ●
● ● ● ● ●● ● ● ●
● ● ●● ● ●●
1.0

1.0
● ● ●●
● ● ● ● ● ● ●● ● ●
● ● ● ●
● ● ● ● ●
● ●●
● ● ● ●● ● ●
● ●●● ●
● ● ● ●
●● ●

0.8

0.8
● ● ●

● ●
0.6

0.6
●● ● ●

1e+05 5e+05 2e+06 1e+07 0.5 1.0 2.0 5.0

dat$qOut dat$X

Figure 8.5: Estimated elasticities of scale for different farm sizes

The resulting graphs are shown in figure 8.5. According to these estimates of the elasticity of
scale, farms with an aggregate output quantity of less than 1,000,000 units and with an aggregate
input quantity of less than the sample mean generally have increasing returns to scale so that
increasing their size would increase their (total factor) productivity. In contrast, farms with an
aggregate output quantity of more than 5,000,000 units and with an aggregate input quantity of
more than 1.5 times the sample mean generally have decreasing returns to scale so that increasing
their size would decrease their (total factor) productivity.

8.3.5 Properties
8.3.5.1 Non-increasing in input quantities

In order to investigate the monotonicity of Translog output distance function in input quantities x,
we calculate the partial derivatives (fi ; i = 1, . . . , N ) of the Translog output distance function
with respect to the input quantities (xi ):

∂Do (x, y) ∂ ln Do (x, y) Do (x, y) Do (x, y)


fi = = = Ii ∀i. (8.117)
∂xi ∂ ln xi xi xi

As the output distance measure Do (x, y) and the input quantities xi are always non-negative,
we can check the monotonicity in input quantities by checking the sign of the distance elasticities
with respect to the input quantities:

> table( dat$eCapOdfTL <= 0 )

FALSE TRUE

296
8 Distance Functions

36 104

> table( dat$eLabOdfTL <= 0 )

FALSE TRUE
20 120

> table( dat$eMatOdfTL <= 0 )

FALSE TRUE
6 134

> dat$monoInOdfTL <- dat$eCapOdfTL <= 0 & dat$eLabOdfTL <= 0 & dat$eMatOdfTL <= 0
> table( dat$monoInOdfTL <= 0 )

FALSE TRUE
83 57

8.3.5.2 Non-decreasing in output quantities

In a similar way, we check the monotonicity of the Translog output distance function in output
quantities y by calculating the partial derivatives (hm ; m = 1, . . . , M ) of the Translog output
distance function with respect to the output quantities (ym ):

∂Do (x, y) ∂ ln Do (x, y) Do (x, y) Do (x, y)


hm = = = O
m ∀ m. (8.118)
∂ym ∂ ln ym ym ym

As the output distance measure Do (x, y) and the output quantities yi are always non-negative,
we can check the monotonicity in output quantities by checking the sign of the distance elasticities
with respect to the output quantities:

> table( dat$eApplesOdfTL >= 0 )

FALSE TRUE
2 138

> table( dat$eOtherOdfTL >= 0 )

FALSE TRUE
14 126

> dat$monoOutOdfTL <- dat$eApplesOdfTL >= 0 & dat$eOtherOdfTL >= 0


> table( dat$monoOutOdfTL )

FALSE TRUE
16 124

297
8 Distance Functions

Combining the monotonicity conditions for inputs and outputs, we can investigate how many
observations fulfill all monotonicity conditions:

> dat$monoOdfTL <- dat$monoInOdfTL & dat$monoOutOdfTL


> table( dat$monoOdfTL )

FALSE TRUE
66 74

8.3.5.3 Quasiconvex in input quantities

In the following, we will check if our estimated Translog output distance function is quasiconvex
in input quantities. A sufficient condition for quasiconvexity of Do (x, y) in x is that |Bi | < 0; i =
1, . . . , N , where |Bi | is the ith leading principal minor of the bordered Hessian matrix B with
 
0 f1 f2 ... fN
 
 f1 f11 f12 ... f1N 
 
 
 f2
B= f12 f22 ... f2N , (8.119)

 . .. .. .. ..
 ..

 . . . . 

fN f1N f2N . . . fN N

where fi = ∂Do (x, y)/∂xi are the first-order partial derivatives and fij are the second-order
partial derivatives of the Translog output distance function Do (x, y) with respect to the input
quantities x.
We use equation (8.117) and the following R code to calculate the (first-order) partial derivatives
of the Translog output distance function with respect to the input quantities x at the “frontier”
(i.e. Do (x, y) = 1) for each observation:

> dat$fCapOdfTL <- with( dat, eCapOdfTL / log( qCap ) )


> dat$fLabOdfTL <- with( dat, eLabOdfTL / log( qLab ) )
> dat$fMatOdfTL <- with( dat, eMatOdfTL / log( qMat ) )
> summary( dat[ , c( "fCapOdfTL", "fLabOdfTL", "fMatOdfTL" ) ] )

fCapOdfTL fLabOdfTL fMatOdfTL


Min. :-0.078161 Min. :-0.13579 Min. :-0.17684
1st Qu.:-0.023016 1st Qu.:-0.06684 1st Qu.:-0.07388
Median :-0.012524 Median :-0.03750 Median :-0.06069
Mean :-0.011128 Mean :-0.03979 Mean :-0.05890
3rd Qu.: 0.001739 3rd Qu.:-0.01235 3rd Qu.:-0.03708
Max. : 0.035140 Max. : 0.06752 Max. : 0.01422

We can calculate the second-order derivatives with respect to input quantities with following

298
8 Distance Functions

formula:
o o (x,y)
∂ 2 Do (x, y) ∂fi ∂( ∂ ln∂Dln x(x,y)
i
D
xi )
fij = = = (8.120)
∂xi ∂xj ∂xj ∂xj
Do (x,y)
 PN PM  
∂ αi + j=1 αij ln xj + m=1 ζim ln ym xi
= (8.121)
∂xj
αi j D (x, y) ∂ ln D (x, y) ∂ ln Do (x, y) Do (x, y)
o o
= + (8.122)
xi xi ∂ ln xi ∂ ln xj xi xj
o o
∂ ln D (x, y) D (x, y)
− δij (8.123)
∂ ln xj xi xj
o
D (x, y) Do (x, y)
= αij + Ii Ij (8.124)
xi xj xi xj
o
D (x, y)
− δij Ij (8.125)
xi xj
  D o (x, y)
= αij + Ii Ij − δij Ij (8.126)
xi xj

We use the following R code to compute the second-order derivatives of the Translog output
distance function with respect to input quantities x for each observation:

> dat$fCapCapOdfTL <- with( dat,


+ ( aCapCap + eCapOdfTL^2 - eCapOdfTL ) / qCap^2 )
> dat$fLabLabOdfTL <- with( dat,
+ ( aLabLab + eLabOdfTL^2 - eLabOdfTL ) / qLab^2 )
> dat$fMatMatOdfTL <- with( dat,
+ ( aMatMat + eMatOdfTL^2 - eMatOdfTL ) / qMat^2 )
> dat$fCapLabOdfTL <- fLabCapOdfTL <- with( dat,
+ ( aCapLab + eCapOdfTL * eLabOdfTL ) / ( qCap * qLab ) )
> dat$fCapMatOdfTL <- fMatCapOdfTL <- with( dat,
+ ( aCapMat + eCapOdfTL * eMatOdfTL ) / ( qCap * qMat ) )
> dat$fLabMatOdfTL <- fMatLabOdfTL <- with( dat,
+ ( aLabMat + eLabOdfTL * eMatOdfTL ) / ( qLab * qMat ) )
> summary( dat[ , c( "fCapCapOdfTL", "fLabLabOdfTL", "fMatMatOdfTL",
+ "fCapLabOdfTL", "fCapMatOdfTL", "fLabMatOdfTL" ) ] )

fCapCapOdfTL fLabLabOdfTL fMatMatOdfTL


Min. :-1.467e-10 Min. :7.648e-13 Min. :1.989e-11
1st Qu.: 2.215e-12 1st Qu.:2.479e-11 1st Qu.:6.195e-10
Median : 3.855e-11 Median :5.406e-11 Median :2.487e-09
Mean : 5.273e-10 Mean :9.229e-11 Mean :6.709e-09
3rd Qu.: 1.061e-10 3rd Qu.:1.046e-10 3rd Qu.:5.549e-09
Max. : 2.840e-08 Max. :8.129e-10 Max. :1.041e-07

299
8 Distance Functions

fCapLabOdfTL fCapMatOdfTL fLabMatOdfTL


Min. :-1.326e-09 Min. :7.656e-12 Min. :-1.409e-09
1st Qu.:-6.957e-11 1st Qu.:1.100e-10 1st Qu.:-1.029e-10
Median :-3.427e-11 Median :3.553e-10 Median :-4.682e-11
Mean :-7.517e-11 Mean :1.083e-09 Mean :-1.088e-10
3rd Qu.:-1.810e-11 3rd Qu.:7.019e-10 3rd Qu.:-2.164e-11
Max. :-8.438e-13 Max. :2.339e-08 Max. : 2.013e-10

The following code generates a three-dimensional array of the bordered Hessian matrices
stacked for all observation:

> bhmArray <- array( 0, c( 4, 4, nrow( dat ) ) )


> bhmArray[ 1, 2, ] <- bhmArray[ 2, 1, ] <- dat$fCapOdfTL
> bhmArray[ 1, 3, ] <- bhmArray[ 3, 1, ] <- dat$fLabOdfTL
> bhmArray[ 1, 4, ] <- bhmArray[ 4, 1, ] <- dat$fMatOdfTL
> bhmArray[ 2, 2, ] <- dat$fCapCapOdfTL
> bhmArray[ 3, 3, ] <- dat$fLabLabOdfTL
> bhmArray[ 4, 4, ] <- dat$fMatMatOdfTL
> bhmArray[ 2, 3, ] <- bhmArray[ 3, 2, ] <- dat$fCapLabOdfTL
> bhmArray[ 2, 4, ] <- bhmArray[ 4, 2, ] <- dat$fCapMatOdfTL
> bhmArray[ 3, 4, ] <- bhmArray[ 4, 3, ] <- dat$fLabMatOdfTL
> print( bhmArray[ , , 1 ] )

[,1] [,2] [,3] [,4]


[1,] 0.000000000 -1.855062e-02 -5.351674e-03 -6.734781e-02
[2,] -0.018550617 4.571703e-11 -1.523524e-11 1.916769e-10
[3,] -0.005351674 -1.523524e-11 9.705798e-12 -3.341931e-11
[4,] -0.067347806 1.916769e-10 -3.341931e-11 1.205777e-09

The following code checks if our estimated Translog output distance function is quasiconvex
at the first observation:

> det( bhmArray[ 1:2, 1:2, 1 ] )

[1] -0.0003441254

> det( bhmArray[ 1:3, 1:3, 1 ] )

[1] -7.67438e-15

> det( bhmArray[ , , 1 ] )

[1] -3.124912e-24

300
8 Distance Functions

As all three leading principal minors of the bordered Hessian matrix are negative, we can conclude
that our estimated Translog output distance function is quasiconvex in input quantities at the
first observation.
The following code checks the conditions for quasiconvexity in inputs at all observations:

> dat$quasiConvexInOdfTL <- apply( bhmArray[ 1:2, 1:2, ], 3, det ) < 0 &
+ apply( bhmArray[ 1:3, 1:3, ], 3, det ) < 0 &
+ apply( bhmArray, 3, det ) < 0
> table( dat$quasiConvexInOdfTL )

FALSE TRUE
65 75

Our estimated Translog output distance function is not quasiconvex in input quantities (x) at 65
out of 140 observations in our data set.

8.3.5.4 Convex in output quantities

In the following, we will check if our estimated Translog output distance function is convex in
output quantities (y). An output distance function Do (x, y) is convex in y if and only if its
Hessian matrix H with respect to the output quantities is positive semidefinite, which is the case
if all its principal minors (not only the leading principal minors) are non-negative. The Hessian
matrix with respect to the output quantities is
 
h11 h12 ... h1M
 
 h12 h22 ... h2M 
H= . , (8.127)
 
 .. .. .. ..
 . . . 

h1M h2M . . . hM M

where hmn are the second-order derivatives of the output distance function with respect to the
output quantities:
o o
∂ 2 Do (x, y) ∂hm ∂( ∂ ln∂ D (x,y) D (x,y)
ln ym ym )
hmn = = = (8.128)
∂ym ∂yn ∂yn ∂yn
Do (x,y)
 PM PN  
∂ βm + n=1 βmn ln yn + i=1 ζim ln xi xi
= (8.129)
∂xj
βm n D (x, y) ∂ ln D (x, y) ∂ ln Do (x, y) Do (x, y)
o o
= + (8.130)
ym ym ∂ ln ym ∂ ln yn ym yn
∂ ln Do (x, y) Do (x, y)
− δmn (8.131)
∂ ln yn ym yn
o
D (x, y) o
O D (x, y)
= βmn + O
n m (8.132)
ym yn ym yn

301
8 Distance Functions

Do (x, y)
− δmn O
n (8.133)
ym yn
  D o (x, y)
= βmn + O O O
n m − δmn m (8.134)
ym yn

where δij is (again) Kronecker’s delta (2.82).


As all elements of the Hessian matrix (all second derivatives) contain the output distance
measure Do (x, y) as a multiplicative element, we can factor it out of the Hessian matrix. As the
output distance measure Do (x, y) is non-negative, it does not affect the signs of the principal
minors so that we can ignore it in our further calculations.
The following code computes the second derivatives of the Translog output distance function
with respect to the output quantities (with the output distance measures being factored out of
the Hessian matrix or assuming that the firms are fully efficient, i.e. Do (x, y) = 1):

> dat$hApplesApples <- with( dat,


+ ( bApplesApples + eApplesOdfTL^2 - eApplesOdfTL ) / qApples^2 )
> dat$hOtherOther <- with( dat,
+ ( bOtherOther + eOtherOdfTL^2 - eOtherOdfTL ) / qOtherOut^2 )
> dat$hApplesOther <- with( dat,
+ ( bApplesOther + eApplesOdfTL * eOtherOdfTL ) / ( qApples * qOtherOut) )
> summary( dat[ , c( "hApplesApples", "hOtherOther", "hApplesOther" ) ] )

hApplesApples hOtherOther hApplesOther


Min. : -679.3 Min. : -9.2093 Min. :-1022.7487
1st Qu.: -0.5 1st Qu.: -0.0732 1st Qu.: 0.0013
Median : 0.0 Median : -0.0264 Median : 0.0299
Mean : 8297.6 Mean : 19.7216 Mean : -7.6936
3rd Qu.: 0.0 3rd Qu.: -0.0026 3rd Qu.: 0.1595
Max. :1092097.8 Max. :2611.4404 Max. : 49.0017

The following code generates a three-dimensional array of the Hessian matrices stacked for all
observations:

> hessianArray <- array( NA, c( 2, 2, nrow( dat ) ) )


> hessianArray[ 1, 1, ] <- dat$hApplesApples
> hessianArray[ 2, 2, ] <- dat$hOtherOther
> hessianArray[ 1, 2, ] <- hessianArray[ 2, 1, ] <- dat$hApplesOther
> print( hessianArray[ , , 1 ] )

[,1] [,2]
[1,] -0.03953748 0.05630816
[2,] 0.05630816 -0.08019249

302
8 Distance Functions

The following code checks whether the Hessian matrix is positive semidefinite at the first
observation:

> diag( hessianArray[ , , 1 ] )

[1] -0.03953748 -0.08019249

> det( hessianArray[ , , 1 ] )

[1] -5.079313e-18

As the two diagonal elements (first-order principal minors) of the Hessian matrix are strictly nega-
tive, we can conclude that the Hessian matrix is not positive semidefinite and, thus, our estimated
Translog output distance function is not convex in output quantities at the first observation.
It is not surprising that the determinant of the Hessian matrix with respect to the output
quantities is exactly zero or very close to zero, because the output distance function is linearly
homogeneous in output quantities, which implies that the determinant of the Hessian must be
zero.
The following code checks the semidefiniteness of the Hessian matrix at each individual obser-
vation:

> dat$convexOutOdfTL <- apply( hessianArray, 3, isSemidefinite,


+ positive = TRUE )
> table( dat$convexOutOdfTL )

FALSE TRUE
107 33

This shows that our estimated Translog output distance function is not convex in output quan-
tities y at 107 out of 140 observations.

8.3.6 Efficiency estimates


If there were no inefficiencies, the output distance measure Do of all observations would be equal
to 1 (which implies u = − ln Do = 0) and all observations would be on the frontier. We can use
a likelihood ratio test to investigate if there is inefficiency:

> lrtest( odfTL )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)

303
8 Distance Functions

1 16 -117.87
2 17 -116.82 1 2.1065 0.07334 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The efficiency estimates can be obtained by the efficiencies() method:

> dat$effOdfTL <- efficiencies( odfTL )


> summary( dat$effOdfTL )

efficiency
Min. :0.1494
1st Qu.:0.4773
Median :0.6359
Mean :0.6032
3rd Qu.:0.7348
Max. :0.8843

The following command creates a histogram of the efficiency estimates:

> hist( dat$effOdfTL, 20 )


20
15
Frequency

10
5
0

0.2 0.4 0.6 0.8

dat$effOdfTL

Figure 8.6: Efficiency estimates of the Translog output distance function

The resulting graph is shown in figure 8.6.

304
8 Distance Functions

8.4 Cobb-Douglas input distance function


8.4.1 Specification
The general form of the Cobb-Douglas input distance function is:

N M
! !
xαi i
Y Y
i βm
D (x, y) = A ym , (8.135)
i=1 m=1

which can be linearized to:


N
X M
X
ln Di (x, y) = α0 + αi ln xi + βm ln ym (8.136)
i=1 m=1

with α0 = ln A.

8.4.2 Estimation
The Cobb-Douglas input distance function can be expressed (and then estimated) as traditional
stochastic frontier model.
In the following, we will derive, under which conditions the Cobb-Douglas input distance
function defined in (8.135) and (8.136) is linear homogeneous in input quantities (x):

kDi (x, y) = Di (kx, y) (8.137)


i i
ln(kD (x, y)) = ln D (kx, y) (8.138)
N
X M
X
ln(kDi (x, y)) = α0 + αi ln k ln xi + βm ln ym (8.139)
i=1 m=1
M
X N
X M
X
i
ln k + ln D (x, y) = α0 + αi ln k + αi ln xi + βm ln ym (8.140)
m=1 i=1 m=1
N
X
ln k + ln Di (x, y) = ln Di (x, y) + ln k αi (8.141)
i=1
N
X
ln k = ln k αi (8.142)
i=1
N
X
1= αi (8.143)
i=1

Hence, the Cobb-Douglas input distance function is linear homogeneous in input quantities if the
coefficients of the input quantities (αi ) sum up to one. We can impose linear homogeneity in
input quantities by re-arranging equation (8.143) to:

N
X −1
αN = 1 − αi (8.144)
i=1

305
8 Distance Functions

and by substituting the right-hand side of (8.144) for αN in (8.136):

N
X −1 N
X −1 M
X
ln Di (x, y) = α0 + αi ln xi + (1 − αi ) ln xN + βm ln(ym ) (8.145)
i=1 i=1 m=1
N
X −1 M
X
i
ln D (x, y) = α0 + αi (ln xi − ln xN ) + ln xi + βm ln yM (8.146)
i=1 m=1
N
X M
X
i
ln D (x, y) − ln xN = α0 + αi (ln xi /xN ) + βm ln ym (8.147)
i=1 m=1
XN XM
− ln xN = α0 + αi (ln xi /xN ) + βm ln ym − ln Di (x, y) (8.148)
i=1 m=1

We can assume that u ≡ ln(Di (x, y)) ≥ 0 follows a half normal or truncated normal distribution
(i.e. u ∼ N + (µ, σu2 )) and add a disturbance term v that accounts for statistical noise and follows
a normal distribution (i.e. v ∼ N (0, σv2 )) so that we get:

N
X −1 M
X
− ln(xN ) = α0 + αi ln(xi /xN ) + βm ln ym − u + v (8.149)
i=1 m=1

This specification is equivalent to the specification of stochastic frontier models so that we can use
the stochastic frontier methods introduced in Chapter 6 to estimate this input distance function.
In the following, we will estimate a Cobb-Douglas input distance function with our data set
of French apple producers. This data set distinguishes between two outputs: the quantity of
apples produced (qApples) and the quantity of the other outputs (qOtherOut). The following
command estimates the Cobb-Douglas input distance function using the command sfa() for
stochastic frontier analysis:

> idfCD <- sfa( -log(qMat) ~ log( qCap/qMat ) + log( qLab/qMat ) +


+ log( qApples ) + log ( qOtherOut ),
+ ineffDecrease = TRUE, data = dat )
> summary( idfCD )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 10 iterations:
cannot find a parameter vector that results in a log-likelihood value
larger than the log-likelihood value obtained in the previous step

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) -11.084030 0.135311 -81.9155 < 2.2e-16 ***

306
8 Distance Functions

log(qCap/qMat) 0.029982 0.040619 0.7381 0.4604


log(qLab/qMat) 0.684137 0.065195 10.4938 < 2.2e-16 ***
log(qApples) -0.158068 0.022508 -7.0229 2.173e-12 ***
log(qOtherOut) -0.129456 0.028820 -4.4918 7.061e-06 ***
sigmaSq 0.375209 0.065546 5.7243 1.038e-08 ***
gamma 0.925826 0.044667 20.7271 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -60.46615

cross-sectional data
total number of observations = 140

mean efficiency: 0.6594516

8.4.3 Distance elasticities


The distance elasticities of a Cobb-Douglas input distance function Di (x, y) with respect to input
quantities (x), I , can be calculated as:

∂Di (x, y) xi ∂ ln Di (x, y)


Ii = = = αi (8.150)
∂xi Di ∂ ln xi

The distance elasticities of a Cobb-Douglas input distance function Di (x, y) with respect to
output quantities (y), O , can be calculated as:

∂Di (x, y) ym ∂ ln Di (x, y)


O
m = = = βm (8.151)
∂ym Di ∂ ln ym

Since the distance elasticities of Cobb-Douglas input distance functions are equal to some of
the estimated parameters, they can be directly obtained from the estimation output.
The distance elasticity with respect to the capital input (IqCap = 0.03) indicates that a 1%
increases in the capital input results (ceteris paribus) in a 0.03% increase of the distance measure
(i.e., inefficiency increases and efficiency decreases). The distance elasticity with respect to the
labor input (IqLab = 0.684) indicates that a 1% increases in the labor input results (ceteris paribus)
in a 0.68% increase of the distance measure (i.e., inefficiency increases and efficiency decreases).
The distance elasticity with respect to the material input (IqMat = 0.286) indicates that a 1%
increase in the material input results (ceteris paribus) in a 0.29% increase of the distance measure
(i.e., inefficiency increases and efficiency decreases).
The distance elasticity with respect to the apples output (O
qApples = −0.158 indicates that a 1%
increase in the apple output results (ceteris paribus) in a 0.16% decrease of the distance measure
(i.e., inefficiency decreases and efficiency increases). The distance elasticity with respect to the

307
8 Distance Functions

other outputs (O


qOther = −0.129 indicates that a 1% increase in the other outputs results (ceteris
paribus) in a 0.13% decrease of the distance measure (i.e., inefficiency decreases and efficiency
increases).

8.4.4 Elasticity of scale


The elasticity of scale for an input distance function Di (x, y) equals the inverse of the negative
sum of the distance elasticities with respect to the output quantities:
!−1
X
= − O
m (8.152)
m

For our Cobb-Douglas input distance function, the elasticity of scale can be obtained by using
following command:

> (-sum(coef(idfCD)[c("log(qApples)", "log(qOtherOut)")]))^(-1)

[1] 3.477971

The estimated elasticity of scale  = 3.478 indicates highly increasing returns to scale.

8.4.5 Properties
8.4.5.1 Non-decreasing in input quantities

Di (x, y) is non-decreasing in x if its partial derivatives with respect to the input quantities are
non-negative:

∂Di (x, y) ∂ ln Di (x, y) Di (x, y) Di (x, y)


= = αi ≥ 0. (8.153)
∂xi ∂ ln xi xi xi

Given that Di (x, y) and xi are always non-negative, a Cobb-Douglas input distance function
fulfills the monotonicity condition, if all coefficients of the (normalized) input quantities are
positive. This is the case for our estimated Cobb-Douglas input distance function, where the
coefficient of the quantity of the material input (qMat) that was not directly estimated can be
obtained from the homogeneity condition, i.e., 1 − 0.03 − 0.684 = 0.286.

8.4.5.2 Non-increasing in output quantities

Di (x, y) is non-increasing in y if its partial derivatives with respect to the output quantities are
non-positive:

∂Di (x, y) ∂ ln Di (x, y) Di (x, y) Di (x, y)


= = βm ≤ 0. (8.154)
∂ym ∂ ln ym ym ym

308
8 Distance Functions

Given that Di (x, y) and xi are always non-negative, a Cobb-Douglas input distance function is
non-increasing in output quantities if the coefficients of all output quantities are non-positive.
This is the case for our estimated Cobb-Douglas input distance function so that we can conclude
that it is non-increasing in output quantities.

8.4.5.3 Concave in input quantities

In the following, we check if the estimated Cobb-Douglas input distance function is concave in
input quantities (x). Di (x, y) is concave in x if and only if its Hessian matrix H with respect to
the input quantities is negative semidefinite. A sufficient condition for negative semidefiniteness
of a symmetric matrix is that all its ith-order principal minors (not only its leading principal
minors) are non-positive for i being odd and non-negative for i being even for all i ∈ {1, . . . , N }
(see section 1.5.2). The Hessian matrix with respect to the input quantities is
 
f11 f12 ... f1N
 
 f12 f22 ... f2N 
H= . , (8.155)
 
 .. .. .. ..
 . . . 

f1N f2N . . . fN N

where fij are the second derivatives of Di (x, y) with respect to input quantities x:
i i (x,y)
∂ 2 Di (x, y) ∂fi ∂( ∂ ln∂Dln x(x,y)
i
D
xi )
fij = = = (8.156)
∂xi ∂xj ∂xj ∂xj
αi ∂Di (x, y) Di (x, y)
= − δij αi (8.157)
xi ∂xi x2i
αi Do (x, y) Di (x, y)
= αj − δij αi (8.158)
xi xj x2i
Di (x, y)
= αi (αj − δij ) (8.159)
xi xj

where δij is (again) Kronecker’s delta (2.82).


As all elements of the Hessian matrix (all second derivatives) contain the input distance measure
Di (x, y) as a multiplicative element, we can factor it out of the Hessian matrix. As the input
distance measure Di (x, y) is non-negative, it does not affect the signs of the principal minors so
that we can ignore it in our further calculations.
Again, for the sake of simplicity of the code, we create short-cuts for the coefficients:

> iCap <- coef(idfCD)["log(qCap/qMat)"]


> iLab <- coef(idfCD)["log(qCap/qMat)"]
> iMat <- 1-(iCap+iLab)

The following code computes the second derivatives of our estimated Cobb-Douglas input

309
8 Distance Functions

distance function with respect to input quantities (x) (with the input distance measures being
factored out of the Hessian matrix or assuming that the firms are fully efficient, i.e. Di (x, y) = 1):

> dat$fCapCap <- iCap * ( iCap - 1 ) * 1 / dat$qCap^2


> dat$fLabLab <- iLab * ( iLab - 1 ) * 1 / dat$qLab^2
> dat$fMatMat <- iMat * ( iMat - 1 ) * 1 / dat$qMat^2
> dat$fCapLab <- iCap * iLab * 1 / ( dat$qCap * dat$qLab )
> dat$fCapMat <- iCap * iMat * 1 / ( dat$qCap * dat$qMat )
> dat$fLabMat <- iLab * iMat * 1 / ( dat$qLab * dat$qMat )

The following code generates a three-dimensional array of the Hessian matrices stacked for all
observations:

> hessianArray <- array( NA, c( 3, 3, nrow( dat ) ) )


> hessianArray[ 1, 1, ] <- dat$fCapCap
> hessianArray[ 1, 2, ] <- hessianArray[ 2, 1, ] <- dat$fCapLab
> hessianArray[ 1, 3, ] <- hessianArray[ 3, 1, ] <- dat$fCapMat
> hessianArray[ 2, 2, ] <- dat$fLabLab
> hessianArray[ 2, 3, ] <- hessianArray[ 3, 2, ] <- dat$fLabMat
> hessianArray[ 3, 3, ] <- dat$fMatMat
> print( hessianArray[ , , 1 ] )

[,1] [,2] [,3]


[1,] -4.116775e-12 2.970247e-14 9.837352e-12
[2,] 2.970247e-14 -2.243230e-13 2.296342e-12
[3,] 9.837352e-12 2.296342e-12 -4.851371e-11

In the following, we compute all principal minors at the first observation:

> diag( hessianArray[ , , 1 ] )

[1] -4.116775e-12 -2.243230e-13 -4.851371e-11

> det( hessianArray[ -3, -3, 1 ] )

[1] 9.226048e-25

> det( hessianArray[ -2, -2, 1 ] )

[1] 1.029465e-22

> det( hessianArray[ -1, -1, 1 ] )

[1] 5.609554e-24

310
8 Distance Functions

> det( hessianArray[ , , 1 ] )

[1] -2.755384e-50

As all first-order principal minors (diagonal elements) are negative, all second-order principal
minors are positive, and the determinant (third-order principal minor) is virtually zero, the
conditions for concavity are fulfilled at the first observation.
The following code checks the concavity at all observations:

> dat$CDidfConcaveX <- apply( hessianArray, 3, semidefiniteness,


+ positive = FALSE )
> table( dat$CDidfConcaveX )

TRUE
140

The estimated Cobb-Douglas input distance function is concave in input quantities at all obser-
vations.

8.4.5.4 Quasiconcave in output quantities

In the following, we check if the estimated Cobb-Douglas input distance function Di (x, y) is
quasiconcave in output quantities (y). A sufficient condition for quasiconcavity in y is that
|B1 | < 0, |B2 | > 0, |B3 | < 0, . . . , (−1)N |BN | > 0, where |Bi | is the ith principal minor of the
bordered Hessian matrix B with
 
0 f1 f2 ... fN
 
 f1 f11 f12 ... f1N 
 
 
 f2
B= f12 f22 ... f2N , (8.160)

 . .. .. .. ..
 ..

 . . . . 

fN f1N f2N . . . fN N

where fm = ∂Di (x, y)/∂ym are the first partial derivatives and fmn are the second partial deriva-
tives of the input distance function with respect to the output quantities y:
i i
   
∂ 2 Di (x, y) ∂ ∂D∂y(x,y)
m
∂ βm D y(x,y)
m
fmn = = = (8.161)
∂ym ∂yn ∂yn ∂yn
βm ∂Di (x, y) Di (x, y)
= − δij βm 2
(8.162)
ym ∂yn ym
βm Di (x, y) Di (x, y)
= βn − δij βm 2
(8.163)
ym yn ym
i
D (x, y)
= βm (βn − δij ) (8.164)
ym yn

311
8 Distance Functions

where δij is (again) Kronecker’s delta (2.82).


As all elements of the bordered Hessian matrix (both the first derivatives and the second
derivatives) contain the input distance measure Di (x, y) as a multiplicative element, we can
factor it out of the bordered Hessian matrix. As the output distance measure Di (x, y) is non-
negative, it does not affect the signs of the principal minors so that we can ignore it in our further
calculations.
In order to facilitate further computations, we create short-cuts for the coefficients regarding
the output quantities y:

> iApples <- coef(idfCD)["log(qApples)"]


> iOther <- coef(idfCD)["log(qOtherOut)"]

The following code computes the first-order and second-order partial derivatives of the Cobb-
Douglas input distance function with respect to the output quantities (with the input distance
measures being factored out of the bordered Hessian matrix or assuming that the firms are fully
efficient, i.e. Di (x, y) = 1):

> dat$fApples <- iApples * 1 / dat$qApples


> dat$fOther <- iOther * 1 / dat$qOtherOut
> dat$fApplesApples <- iApples * ( iApples - 1 ) * 1 / dat$qApples^2
> dat$fApplesOther <- iApples * iOther * 1 / (dat$qApples * dat$qOtherOut)
> dat$fOtherOther <- iOther * ( iOther - 1 ) * 1 / dat$qOtherOut^2

The following code creates a three-dimensional array with the bordered Hessian matrices at all
observations stacked upon each other:

> bhmArray <- array( 0, c( 3, 3, nrow( dat ) ) )


> bhmArray[ 1, 2, ] <- bhmArray[ 2, 1, ] <- dat$fApples
> bhmArray[ 1, 3, ] <- bhmArray[ 3, 1, ] <- dat$fOther
> bhmArray[ 2, 2, ] <- dat$fApplesApples
> bhmArray[ 2, 3, ] <- bhmArray[ 3, 2, ] <- dat$fApplesOther
> bhmArray[ 3, 3, ] <- dat$fOtherOther
> print( bhmArray[ , , 1 ] )

[,1] [,2] [,3]


[1,] 0.0000000 -0.11357085 -0.13246637
[2,] -0.1135708 0.09449814 0.01504432
[3,] -0.1324664 0.01504432 0.15309443

We check quasiconcavity in output quantities at the first observation by calculating the first
and second leading principal minor:

> det( bhmArray[ 1:2, 1:2, 1 ] )

312
8 Distance Functions

[1] -0.01289834

> det( bhmArray[ , , 1 ] )

[1] -0.003180192

As the determinant (second leading principal minor) of the bordered Hessian matrix is negative,
we can conclude that the estimated Cobb-Douglas input distance function is not quasiconcave in
output quantities at the first observation.
The following code checks this at all observations:
> dat$CDidfQuasiConcaveY <- apply( bhmArray[1:2,1:2, ], 3, det ) < 0 &
+ apply( bhmArray, 3, det ) > 0
> table( dat$CDidfQuasiConcaveY )

FALSE
140

This estimated Cobb-Douglas input distance function is quasiconcave in output quantities (y)
not at a single observation in our data set.
Indeed, Cobb-Douglas input distance functions cannot be quasiconcave in output quantities,
because this functional form implies transformation curves that are convex to the origin.

8.4.6 Efficiency estimates


If there were no inefficiencies the input distance Di would be equal to 1 (what would imply that
ln Di (1) = 0, i.e., u = 0) and all observations would be on the frontier. We can use likelihood
ratio test to investigate if there is inefficiency
> lrtest( idfCD )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -66.739
2 7 -60.466 1 12.546 0.0001986 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The small p-value indicates that there is statistically significant inefficiency.


The efficiency estimates can be obtained by the efficiencies method. By default, the effi-
E = E[e−u ]. If we set argument minusU
ciencies method calculates the efficiency estimates as Td
E = E[eu ].7
of the efficiencies method to FALSE, it calculates the efficiency estimates as Td
−1
7
Please note that E[eu ] is not equal to E[e−u ] .

313
8 Distance Functions

Hence, in order to obtain Shepard input-oriented efficiency estimates from an input distance
function, we need to set argument minusU of the efficiencies method to FALSE:

> dat$effIdfCD <- efficiencies( idfCD, minusU = FALSE )


> summary( dat$effIdfCD )

efficiency
Min. :1.069
1st Qu.:1.244
Median :1.493
Mean :1.718
3rd Qu.:1.887
Max. :5.207

A median Shepard input-oriented efficiency estimate of 1.493 indicates that this apple producer
uses 49.3% more of each input quantity than would be necessary to produce its output quantities.

8.5 Translog input distance function


8.5.1 Specification
The general form of the Translog input distance function is:

N N X N
X 1X
ln Di (x, y) =α0 + αi ln xi + αij ln xi ln xj (8.165)
i=1
2 i=1 j=1
M M X M
X 1 X
+ βm ln ym + βmn ln ym ln yn
m=1
2 m=1 n=1
N X
X M
+ ζim ln xi ln ym ,
i=1 m=1

with αij = αji ∀ i, j and βmn = βnm ∀ n, m.

8.5.2 Estimation
The Translog input distance function can be expressed (and then estimated) as traditional
stochastic frontier model. This is facilitated by imposing linear homogeneity in the input quan-
tities (x).
In the following, we will derive, under which conditions the Translog input distance function
defined in (8.165) is linear homogeneous in input quantities (x):

k Di (x, y) =Di (k x, y) (8.166)


ln(kDi (x, y)) = ln Di (k x, y) (8.167)

314
8 Distance Functions

N N X N
X 1X
ln(kDi (x, y)) =α0 + αi ln(k xi ) + αij ln(k xi ) ln(k xj ) (8.168)
i=1
2 i=1 j=1
M M X M
X 1 X
+ βm ln yi + βmn ln ym ln yn
m=1
2 m=1 n=1
N X
X M
+ ζim ln(k xi ) ln ym
i=1 m=1
XN N
X
ln k + ln Di (x, y) =α0 + αi ln k + αi ln xi (8.169)
i=1 i=1
N X N N X M
1 X 1X
+ αij ln k ln k + αij ln k ln xj
2 i=1 j=1
2 i=1 j=1
N X N N X N
1X 1X
+ αij ln xi ln k + αij ln xi ln xj (8.170)
2 i=1 j=1 2 i=1 j=1

M M X M
X 1 X
+ βm ln ym + αmn ln ym ln yn
m=1
2 m=1 n=1
N X
X M N X
X M
+ ζim ln k ln ym + ζim ln xi ln ym
i=1 m=1 i=1 m=1
N N X N
X 1X
ln k + ln Di (x, y) = ln Di (x, y) + ln k αi + ln k ln k αij (8.171)
i=1
2 i=1 j=1
N N N N
1X X 1X X
+ ln k ln xj αij + ln k ln xi αij
2 j=1 i=1
2 i=1 j=1
M
X N
X
+ ln k ln ym ζim
m=1 i=1
N N X N
X 1X
ln k = ln k αi + ln k ln k αij (8.172)
i=1
2 i=1 j=1
N N N M
1X X 1X X
+ ln k ln xj αij + ln k ln xi αij
2 j=1 i=1
2 i=1 j=1
M
X N
X
+ ln k ln ym ζim
m=1 i=1
N N N
X 1 XX
1= αi + ln k αij (8.173)
i=1
2 i=1 j=1
N N N N
1X X 1X X
+ ln xj αij + ln xi αij
2 j=1 i=1
2 i=1 j=1
M
X N
X
+ ln ym ζim
m=1 i=1

315
8 Distance Functions

This condition is only fulfilled for all values of k, xi , and ym if the parameters fulfill the following
conditions:
N
X
αi = 1 (8.174)
i=1
N N
X αij =αji X
αij = 0 ∀ j ←−−−−→ αij = 0 ∀ i (8.175)
i=1 j=1
N
X
ζim = 0 ∀ m (8.176)
i=1

In order to impose linear homogeneity in input quantities, we can rearrange these restrictions
to get:

N
X −1
αN = 1 − αi (8.177)
i=1
N
X −1
αN j = − αij ∀ j (8.178)
i=1
N
X −1
αiN = − αij ∀ i (8.179)
j=1
N
X −1
ζN m = − ζim ∀ m (8.180)
i=1

By substituting the right-hand sides of equations (8.177) to (8.180) for αN , αN j , αiN , and ζN m
in equation (8.165) and re-arranging this equation, we get:

N −1 −1 N −1
X xi 1 NX X xi xj
− ln xN =α0 + αi ln + αij ln ln (8.181)
i=1
xN 2 i=1 j=1 xN xN
M M X M
X 1 X
+ βm ln ym + βmn ln ym ln yn
m=1
2 m=1 n=1
N −1 X
M
X xi
+ ζim ln ln ym − ln Di (x, y).
i=1 m=1
xN

We can assume that u ≡ ln(Di (x, y)) ≥ 0 follows a half-normal or truncated normal distribution
(i.e. u ∼ N + (µ, σu2 ) ) and add a disturbance term v that accounts for statistical noise and follows
a normal distribution (i.e. v ∼ N (0, σv2 ) ) so that we get:

N −1 −1 N −1
X xi 1 NX X xi xj
− ln xN =α0 + αi ln + αij ln ln (8.182)
i=1
xN 2 i=1 j=1 xN xN
M M X M
X 1 X
+ βm ln ym + βmn ln ym ln yn
m=1
2 m=1 n=1

316
8 Distance Functions

N −1 X
M
X xi
+ ζim ln ln ym − u + v.
i=1 m=1
xN

This specification is equivalent to the specification of stochastic frontier models so that we


can use the stochastic frontier methods introduced in Chapter 6 to estimate this output distance
function. In the following, we use command sfa() to estimate a Translog output distance function
for our data set of French apple producers:

> idfTL <- sfa( -log(qMat) ~ log( qCap/qMat ) + log( qLab/qMat )


+ + I( 0.5 * log( qCap/qMat )^2 ) + I( 0.5 * log( qLab/qMat )^2 )
+ + I( log( qCap/qMat ) * log( qLab/qMat ) )
+ + log( qApples) + log ( qOtherOut )
+ + I( 0.5 * log( qApples )^2 ) + I( 0.5 * log( qOtherOut )^2 )
+ + I( log( qApples) * log ( qOtherOut ) )
+ + I( log( qCap/qMat ) * log( qApples ) )
+ + I( log( qCap/qMat ) * log( qOtherOut ) )
+ + I( log( qLab/qMat ) * log( qApples ) )
+ + I( log( qLab/qMat ) * log( qOtherOut ) ),
+ data = dat, ineffDecrease = TRUE )
> summary( idfTL )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 22 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) -10.6399124 0.3968280 -26.8124 < 2.2e-16
log(qCap/qMat) -0.4212393 0.2066687 -2.0382 0.04153
log(qLab/qMat) 0.5768280 0.4168776 1.3837 0.16645
I(0.5 * log(qCap/qMat)^2) 0.1343118 0.0840011 1.5989 0.10984
I(0.5 * log(qLab/qMat)^2) -0.0586589 0.2218504 -0.2644 0.79147
I(log(qCap/qMat) * log(qLab/qMat)) 0.1436734 0.1014410 1.4163 0.15668
log(qApples) -0.3003764 0.0709196 -4.2355 2.281e-05
log(qOtherOut) -0.2566521 0.1475028 -1.7400 0.08186
I(0.5 * log(qApples)^2) -0.0842968 0.0110531 -7.6266 2.411e-14
I(0.5 * log(qOtherOut)^2) -0.0204688 0.0269612 -0.7592 0.44774
I(log(qApples) * log(qOtherOut)) 0.0127001 0.0181271 0.7006 0.48354

317
8 Distance Functions

I(log(qCap/qMat) * log(qApples)) 0.0535355 0.0296150 1.8077 0.07065


I(log(qCap/qMat) * log(qOtherOut)) 0.0081670 0.0461674 0.1769 0.85959
I(log(qLab/qMat) * log(qApples)) 0.0038709 0.0267088 0.1449 0.88477
I(log(qLab/qMat) * log(qOtherOut)) 0.0406196 0.0701908 0.5787 0.56279
sigmaSq 0.2280426 0.0438838 5.1965 2.031e-07
gamma 0.9048670 0.0599052 15.1050 < 2.2e-16

(Intercept) ***
log(qCap/qMat) *
log(qLab/qMat)
I(0.5 * log(qCap/qMat)^2)
I(0.5 * log(qLab/qMat)^2)
I(log(qCap/qMat) * log(qLab/qMat))
log(qApples) ***
log(qOtherOut) .
I(0.5 * log(qApples)^2) ***
I(0.5 * log(qOtherOut)^2)
I(log(qApples) * log(qOtherOut))
I(log(qCap/qMat) * log(qApples)) .
I(log(qCap/qMat) * log(qOtherOut))
I(log(qLab/qMat) * log(qApples))
I(log(qLab/qMat) * log(qOtherOut))
sigmaSq ***
gamma ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -29.39859

cross-sectional data
total number of observations = 140

mean efficiency: 0.7180246

We can use a likelihood ratio test to compare the Translog input distance function with the
corresponding Cobb-Douglas input distance function:

> lrtest( idfCD, idfTL )

Likelihood ratio test

Model 1: idfCD

318
8 Distance Functions

Model 2: idfTL
#Df LogLik Df Chisq Pr(>Chisq)
1 7 -60.466
2 17 -29.399 10 62.135 1.426e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The likelihood ratio test clearly rejects the Cobb-Douglas input distance function in favor of the
Translog input distance function.

8.5.3 Distance elasticities


The distance elasticities of a Translog input distance function with respect to the input quantities
(x), I , can be calculated as:

N M
∂Di (x, y) xi ∂ ln Di (x, y) X X
Ii = = = αi + αij ln xj + ζim ln ym (8.183)
∂xi Di ∂ ln xi j=1 m=1

The distance elasticities of a Translog input distance function with respect to the output
quantities (y), O , can be calculated as:

M N
∂Di (x, y) ym ∂ ln Di (x, y) X X
O
m = = = βm + βmn ln yn + ζim ln xi (8.184)
∂ym Di ∂ ln ym n=1 i=1

In order to facilitate the calculation of the distance elasticities, we create short-cuts for the
estimated coefficients:

> aCap <- coef( idfTL )["log(qCap/qMat)"]


> aLab <- coef( idfTL )["log(qLab/qMat)"]
> aMat <- 1 - ( aCap + aLab )
> aCapCap <- coef( idfTL )["I(0.5 * log(qCap/qMat)^2)"]
> aCapLab <- aLabCap <- coef( idfTL )["I(log(qCap/qMat) * log(qLab/qMat))"]
> aCapMat <- aMatCap <- - ( aCapCap + aCapLab )
> aLabLab <- coef( idfTL )["I(0.5 * log(qLab/qMat)^2)"]
> aLabMat <- aMatLab <- - ( aLabCap + aLabLab )
> aMatMat <- - ( aMatCap + aMatLab )
> bApples <- coef( idfTL )["log(qApples)"]
> bOther <- coef( idfTL )["log(qOtherOut)"]
> bApplesApples <- - coef( idfTL )["I(0.5 * log(qApples)^2)"]
> bOtherOther <- coef( idfTL )["I(0.5 * log(qOtherOut)^2)"]
> bOtherApples <- bApplesOther <- coef( idfTL )["I(log(qApples) * log(qOtherOut))"]
> zCapOther <- coef( idfTL )["I(log(qCap/qMat) * log(qOtherOut))"]

319
8 Distance Functions

> zCapApples <- coef( idfTL )["I(log(qCap/qMat) * log(qApples))"]


> zLabOther <- coef( idfTL )["I(log(qLab/qMat) * log(qOtherOut))"]
> zLabApples <- coef( idfTL )["I(log(qLab/qMat) * log(qApples))"]
> zMatOther <- - ( zCapOther + zLabOther )
> zMatApples <- - ( zCapApples + zLabApples )

The following R code computes the distance elasticities of the inputs and of the outputs:

> dat$eCapTLidf <- with( dat, aCap +


+ aCapCap * log( qCap ) + aCapLab * log( qLab ) + aCapMat * log( qMat ) +
+ zCapApples * log( qApples ) + zCapOther * log( qOtherOut ) )
> dat$eLabTLidf <- with( dat, aLab +
+ aLabLab * log( qLab ) + aLabCap * log( qCap ) + aLabMat * log( qMat ) +
+ zLabApples * log( qApples ) + zLabOther * log( qOtherOut ) )
> dat$eMatTLidf <- with( dat, aMat +
+ aMatMat * log( qMat ) + aMatCap * log( qCap ) + aMatLab * log( qLab ) +
+ zMatApples * log( qApples ) + zMatOther * log( qOtherOut ) )
> dat$eApplesTLidf <- with( dat, bApples +
+ bApplesApples * log( qApples ) + bApplesOther * log( qOtherOut ) +
+ zCapApples * log( qCap ) + zLabApples * log( qLab ) +
+ zMatApples * log( qMat ) )
> dat$eOtherTLidf <- with( dat, bOther +
+ bOtherApples * log( qApples ) + bOtherOther * log( qOtherOut ) +
+ zCapOther * log( qCap ) + zLabOther * log( qLab ) +
+ zMatOther * log( qMat ) )
> summary( dat[ ,
+ c( "eCapTLidf", "eLabTLidf", "eMatTLidf", "eApplesTLidf", "eOtherTLidf" ) ] )

eCapTLidf eLabTLidf eMatTLidf eApplesTLidf


Min. :-0.59401 Min. :0.2841 Min. :-0.1160 Min. :-0.8872
1st Qu.:-0.05709 1st Qu.:0.5514 1st Qu.: 0.1759 1st Qu.:-0.3100
Median : 0.06433 Median :0.6240 Median : 0.3072 Median :-0.2169
Mean : 0.04577 Mean :0.6124 Mean : 0.3418 Mean :-0.2309
3rd Qu.: 0.16061 3rd Qu.:0.6818 3rd Qu.: 0.5105 3rd Qu.:-0.1347
Max. : 0.35954 Max. :0.8099 Max. : 1.0109 Max. : 0.0692
eOtherTLidf
Min. :-0.29949
1st Qu.:-0.18255
Median :-0.15620
Mean :-0.15859
3rd Qu.:-0.13553

320
8 Distance Functions

Max. :-0.07973

We can check whether the distance elasticities with respect to the input quantities always sum
up to one:

> range( dat$eCapTLidf + dat$eLabTLidf + dat$eMatTLidf )

[1] 1 1

8.5.4 Elasticity of scale


We can use equation (8.67) in section 8.1.2.3 to calculate the elasticity of scale for our estimated
Translog input distance function:

> dat$eScaleTLidf <- ( - ( dat$eApplesTLidf + dat$eOtherTLidf ) )^(-1)


> summary( dat$eScaleTLidf )

Min. 1st Qu. Median Mean 3rd Qu. Max.


0.8427 2.1040 2.6986 3.4690 3.5041 29.0136

8.5.5 Efficiency estimates


If there were no inefficiencies, the input distance measure Di of all observations would be equal
to 1 (which implies u = ln Di = 0) and all observations would be on the frontier. We can use a
likelihood ratio test to investigate whether there is inefficiency:

> lrtest( idfTL )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 16 -31.980
2 17 -29.399 1 5.1635 0.01153 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The test rejects the hypothesis that all firms are fully technically efficient at 5% significance level.
The Shepard input-oriented efficiency estimates can be obtained by the efficiencies method:

> dat$effIdfTL <- efficiencies( idfTL, minusU = FALSE )


> summary( dat$effIdfTL )

321
8 Distance Functions

efficiency
Min. :1.059
1st Qu.:1.190
Median :1.348
Mean :1.498
3rd Qu.:1.719
Max. :2.937

322
9 Panel Data and Technological Change

Until now, we have only analyzed cross-sectional data, i.e. all observations refer to the same period
of time. Hence, it was reasonable to assume that the same technology is available to all firms
(observations). However, when analyzing time series data or panel data, i.e. when observations
can originate from different time periods, different technologies might be available in the different
time periods due to technological change. Hence, the state of the available technologies must be
included as an explanatory variable in order to conduct a reasonable production analysis. Often,
a time trend is used as a proxy for a gradually changing state of the available technologies.
We will demonstrate how to analyze production technologies with data from different time
periods by using a balanced panel data set of annual data collected from 43 smallholder rice
producers in the Tarlac region of the Philippines between 1990 and 1997. We loaded this data set
(riceProdPhil) in section 1.4.2. As it does not contain information about the panel structure,
we created a copy of the data set (pdat) that includes information on the panel structure.

9.1 Average production functions with technological change


In case of an applied production analysis with time-series data or panel data, usually the time (t)
is included as additional explanatory variable in the production function:

y = f (x, t). (9.1)

This function can be used to analyze how the time (t) affects the (available) production technol-
ogy.
The average production technology (potentially depending on the time period) can be estimated
from panel data sets by the OLS method (i.e. “pooled”) or by any of the usual panel data methods
(e.g. fixed effects, random effects).

9.1.1 Cobb-Douglas production function with technological change


In case of a Cobb-Douglas production function, usually a linear time trend is added to account
for technological change:
X
ln y = α0 + αi ln xi + αt t (9.2)
i

323
9 Panel Data and Technological Change

Given this specification, the coefficient of the (linear) time trend can be interpreted as the rate
of technological change per unit of the time variable t:

∆y
∂ ln y ∂ ln y ∂y y
αt = = ≈ (9.3)
∂t ∂y ∂t ∆x

9.1.1.1 Pooled estimation of the Cobb-Douglas production function with technological


change

The pooled estimation can be done by:

> riceCdTime <- lm( log( PROD ) ~ log( AREA ) + log( LABOR ) + log( NPK ) +
+ mYear, data = riceProdPhil )
> summary( riceCdTime )

Call:
lm(formula = log(PROD) ~ log(AREA) + log(LABOR) + log(NPK) +
mYear, data = riceProdPhil)

Residuals:
Min 1Q Median 3Q Max
-1.83351 -0.16006 0.05329 0.22110 0.86745

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.665096 0.248509 -6.700 8.68e-11 ***
log(AREA) 0.333214 0.062403 5.340 1.71e-07 ***
log(LABOR) 0.395573 0.066421 5.956 6.48e-09 ***
log(NPK) 0.270847 0.041027 6.602 1.57e-10 ***
mYear 0.010090 0.008007 1.260 0.208
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3299 on 339 degrees of freedom


Multiple R-squared: 0.86, Adjusted R-squared: 0.8583
F-statistic: 520.6 on 4 and 339 DF, p-value: < 2.2e-16

The estimation result indicates an annual rate of technical change of 1%, but this is not statisti-
cally different from 0%, which means no technological change.
The command above can be simplified by using the pre-calculated logarithmic (and mean-
scaled) quantities:

324
9 Panel Data and Technological Change

> riceCdTimeS <- lm( lProd ~ lArea + lLabor + lNpk + mYear, data = riceProdPhil )
> summary( riceCdTimeS )

Call:
lm(formula = lProd ~ lArea + lLabor + lNpk + mYear, data = riceProdPhil)

Residuals:
Min 1Q Median 3Q Max
-1.83351 -0.16006 0.05329 0.22110 0.86745

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.015590 0.019325 -0.807 0.420
lArea 0.333214 0.062403 5.340 1.71e-07 ***
lLabor 0.395573 0.066421 5.956 6.48e-09 ***
lNpk 0.270847 0.041027 6.602 1.57e-10 ***
mYear 0.010090 0.008007 1.260 0.208
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3299 on 339 degrees of freedom


Multiple R-squared: 0.86, Adjusted R-squared: 0.8583
F-statistic: 520.6 on 4 and 339 DF, p-value: < 2.2e-16

The intercept has changed because of the mean-scaling of the input and output quantities but
all slope parameters are unaffected by using the pre-calculated logarithmic (and mean-scaled)
quantities:

> all.equal( coef( riceCdTime )[-1], coef( riceCdTimeS )[-1],


+ check.attributes = FALSE )

[1] TRUE

9.1.1.2 Panel data estimations of the Cobb-Douglas production function with technological
change

The panel data estimation with fixed individual effects can be done by:

> riceCdTimeFe <- plm( lProd ~ lArea + lLabor + lNpk + mYear, data = pdat )
> summary( riceCdTimeFe )

Oneway (individual) effect Within Model

325
9 Panel Data and Technological Change

Call:
plm(formula = lProd ~ lArea + lLabor + lNpk + mYear, data = pdat)

Balanced Panel: n = 43, T = 8, N = 344

Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-1.585363 -0.156896 0.045606 0.177983 0.818168

Coefficients:
Estimate Std. Error t-value Pr(>|t|)
lArea 0.5607756 0.0785370 7.1403 7.195e-12 ***
lLabor 0.2549108 0.0690631 3.6910 0.0002657 ***
lNpk 0.1748528 0.0484684 3.6076 0.0003625 ***
mYear 0.0130908 0.0071824 1.8226 0.0693667 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares: 43.632


Residual Sum of Squares: 24.872
R-Squared: 0.42995
Adj. R-Squared: 0.34165
F-statistic: 56.0008 on 4 and 297 DF, p-value: < 2.22e-16

And the panel data estimation with random individual effects can be done by:

> riceCdTimeRan <- plm( lProd ~ lArea + lLabor + lNpk + mYear, data = pdat,
+ model = "random" )
> summary( riceCdTimeRan )

Oneway (individual) effect Random Effect Model


(Swamy-Arora's transformation)

Call:
plm(formula = lProd ~ lArea + lLabor + lNpk + mYear, data = pdat,
model = "random")

Balanced Panel: n = 43, T = 8, N = 344

Effects:
var std.dev share

326
9 Panel Data and Technological Change

idiosyncratic 0.08375 0.28939 0.8


individual 0.02088 0.14451 0.2
theta: 0.4222

Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-1.749676 -0.142852 0.048474 0.190936 0.851886

Coefficients:
Estimate Std. Error t-value Pr(>|t|)
(Intercept) -0.0213044 0.0292268 -0.7289 0.4665
lArea 0.4563002 0.0662979 6.8826 2.854e-11 ***
lLabor 0.3190041 0.0647524 4.9265 1.311e-06 ***
lNpk 0.2268399 0.0426651 5.3168 1.921e-07 ***
mYear 0.0115453 0.0071921 1.6053 0.1094
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares: 117.05


Residual Sum of Squares: 29.195
R-Squared: 0.75058
Adj. R-Squared: 0.74764
F-statistic: 255.045 on 4 and 339 DF, p-value: < 2.22e-16

A variable-coefficient model for panel model with individual-specific coefficients can be esti-
mated by:

> riceCdTimeVc <- pvcm( lProd ~ lArea + lLabor + lNpk + mYear, data = pdat )
> summary( riceCdTimeVc )

Oneway (individual) effect No-pooling model

Call:
pvcm(formula = lProd ~ lArea + lLabor + lNpk + mYear, data = pdat)

Balanced Panel: n = 43, T = 8, N = 344

Residuals:
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.817465 -0.081972 0.006677 0.000000 0.093985 0.554124

327
9 Panel Data and Technological Change

Coefficients:
(Intercept) lArea lLabor lNpk
Min. :-3.8110 Min. :-5.2850 Min. :-2.72761 Min. :-1.3094
1st Qu.:-0.3006 1st Qu.:-0.4200 1st Qu.:-0.30989 1st Qu.:-0.1867
Median : 0.1145 Median : 0.6978 Median : 0.08778 Median : 0.1050
Mean : 0.1839 Mean : 0.5896 Mean : 0.06079 Mean : 0.1265
3rd Qu.: 0.5617 3rd Qu.: 1.8914 3rd Qu.: 0.61479 3rd Qu.: 0.3808
Max. : 3.7270 Max. : 4.7633 Max. : 1.75595 Max. : 1.7180
NA's :18
mYear
Min. :-0.471049
1st Qu.:-0.044359
Median :-0.008111
Mean :-0.012327
3rd Qu.: 0.054743
Max. : 0.275875

Total Sum of Squares: 2861.8


Residual Sum of Squares: 8.9734
Multiple R-Squared: 0.99686

A pooled estimation can also be done by

> riceCdTimePool <- plm( lProd ~ lArea + lLabor + lNpk + mYear, data = pdat,
+ model = "pooling" )

This gives the same estimated coefficients as the model estimated by lm:

> all.equal( coef( riceCdTimeS ), coef( riceCdTimePool ) )

[1] TRUE

A Hausman test can be used to check the consistency of the random-effects estimator:

> phtest( riceCdTimeRan, riceCdTimeFe )

Hausman Test

data: lProd ~ lArea + lLabor + lNpk + mYear


chisq = 14.62, df = 4, p-value = 0.005557
alternative hypothesis: one model is inconsistent

328
9 Panel Data and Technological Change

The Hausman test clearly shows that the random-effects estimator is inconsistent (due to corre-
lation between the individual effects and the explanatory variables).
Now, we test the poolability of the model:

> pooltest( riceCdTimePool, riceCdTimeFe )

F statistic

data: lProd ~ lArea + lLabor + lNpk + mYear


F = 3.4175, df1 = 42, df2 = 297, p-value = 4.038e-10
alternative hypothesis: unstability

> pooltest( riceCdTimePool, riceCdTimeVc )

F statistic

data: lProd ~ lArea + lLabor + lNpk + mYear


F = 1.9113, df1 = 210, df2 = 129, p-value = 4.022e-05
alternative hypothesis: unstability

> pooltest( riceCdTimeFe, riceCdTimeVc )

F statistic

data: lProd ~ lArea + lLabor + lNpk + mYear


F = 1.3605, df1 = 168, df2 = 129, p-value = 0.03339
alternative hypothesis: unstability

The pooled model (riceCdTimePool) is clearly rejected in favor of the model with fixed indi-
vidual effects (riceCdTimeFe) and the variable-coefficient model (riceCdTimeVc). The model
with fixed individual effects (riceCdTimeFe) is rejected in favor of the variable-coefficient model
(riceCdTimeVc) at 5% significance level but not at 1% significance level.

9.1.2 Translog production function with constant and neutral technological change
A Translog production function that accounts for constant and neutral (unbiased) technological
change has following specification:
X 1 XX
ln y = α0 + αi ln xi + αij ln xi ln xj + αt t (9.4)
i
2 i j

In this specification, the rate of technological change is

∂ ln y
= αt (9.5)
∂t

329
9 Panel Data and Technological Change

and the output elasticities are the same as in the time-invariant Translog production func-
tion (2.121):

∂ ln y X
i = = αi + αij ln xj (9.6)
∂ ln xi j

In order to be able to interpret the first-order coefficients of the (logarithmic) input quantities
(αi ) as output elasticities (i ) at the sample mean, we use the mean-scaled input quantities. We
also use the mean-scaled output quantity in order to use the same variables as Coelli et al. (2005,
p. 250).

9.1.2.1 Pooled estimation of the Translog production function with constant and neutral
technological change

The following command estimates a Translog production function that can account for constant
and neutral technical change:

> riceTlTime <- lm( lProd ~ lArea + lLabor + lNpk +


+ I( 0.5 * lArea^2 ) + I( 0.5 * lLabor^2 ) + I( 0.5 * lNpk^2 ) +
+ I( lArea * lLabor ) + I( lArea * lNpk ) + I( lLabor * lNpk ) + mYear,
+ data = riceProdPhil )
> summary( riceTlTime )

Call:
lm(formula = lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) +
I(0.5 * lLabor^2) + I(0.5 * lNpk^2) + I(lArea * lLabor) +
I(lArea * lNpk) + I(lLabor * lNpk) + mYear, data = riceProdPhil)

Residuals:
Min 1Q Median 3Q Max
-1.52184 -0.18121 0.04356 0.22298 0.87019

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.013756 0.024645 0.558 0.57712
lArea 0.588097 0.085162 6.906 2.54e-11 ***
lLabor 0.191764 0.080876 2.371 0.01831 *
lNpk 0.197875 0.051605 3.834 0.00015 ***
I(0.5 * lArea^2) -0.435547 0.247491 -1.760 0.07935 .
I(0.5 * lLabor^2) -0.742242 0.303236 -2.448 0.01489 *
I(0.5 * lNpk^2) 0.020367 0.097907 0.208 0.83534
I(lArea * lLabor) 0.678647 0.216594 3.133 0.00188 **

330
9 Panel Data and Technological Change

I(lArea * lNpk) 0.063920 0.145613 0.439 0.66097


I(lLabor * lNpk) -0.178286 0.138611 -1.286 0.19926
mYear 0.012682 0.007795 1.627 0.10468
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3184 on 333 degrees of freedom


Multiple R-squared: 0.8719, Adjusted R-squared: 0.868
F-statistic: 226.6 on 10 and 333 DF, p-value: < 2.2e-16

In the Translog production function that accounts for constant and neutral technological change,
the monotonicity conditions are fulfilled at the sample mean and the estimated output elasticities
of land, labor and fertilizer are 0.588, 0.192, and 0.198, respectively, at the sample mean. The
estimated (constant) annual rate of technological progress is around 1.3%.
Conduct a Wald test to test whether the Translog production function outperforms the Cobb-
Douglas production function:

> library( "lmtest" )


> waldtest( riceCdTimeS, riceTlTime )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + mYear


Model 2: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +
I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear
Res.Df Df F Pr(>F)
1 339
2 333 6 5.1483 4.451e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The Cobb-Douglas specification is clearly rejected in favor of the Translog specification for the
pooled estimation.

9.1.2.2 Panel-data estimations of the Translog production function with constant and
neutral technological change

The following command estimates a Translog production function that can account for constant
and neutral technical change with fixed individual effects:

> riceTlTimeFe <- plm( lProd ~ lArea + lLabor + lNpk +


+ I( 0.5 * lArea^2 ) + I( 0.5 * lLabor^2 ) + I( 0.5 * lNpk^2 ) +

331
9 Panel Data and Technological Change

+ I( lArea * lLabor ) + I( lArea * lNpk ) + I( lLabor * lNpk ) + mYear,


+ data = pdat, model = "within" )
> summary( riceTlTimeFe )

Oneway (individual) effect Within Model

Call:
plm(formula = lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) +
I(0.5 * lLabor^2) + I(0.5 * lNpk^2) + I(lArea * lLabor) +
I(lArea * lNpk) + I(lLabor * lNpk) + mYear, data = pdat,
model = "within")

Balanced Panel: n = 43, T = 8, N = 344

Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-1.012473 -0.144573 0.019129 0.167687 0.745525

Coefficients:
Estimate Std. Error t-value Pr(>|t|)
lArea 0.5828102 0.1173298 4.9673 1.16e-06 ***
lLabor 0.0473355 0.0848594 0.5578 0.577402
lNpk 0.1211928 0.0610114 1.9864 0.047927 *
I(0.5 * lArea^2) -0.8543901 0.2861292 -2.9860 0.003067 **
I(0.5 * lLabor^2) -0.6217163 0.2935429 -2.1180 0.035025 *
I(0.5 * lNpk^2) 0.0429446 0.0987119 0.4350 0.663849
I(lArea * lLabor) 0.5867063 0.2125686 2.7601 0.006145 **
I(lArea * lNpk) 0.1167509 0.1461380 0.7989 0.424995
I(lLabor * lNpk) -0.2371219 0.1268671 -1.8691 0.062619 .
mYear 0.0165309 0.0069206 2.3887 0.017547 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares: 43.632


Residual Sum of Squares: 21.912
R-Squared: 0.49781
Adj. R-Squared: 0.40807
F-statistic: 28.8456 on 10 and 291 DF, p-value: < 2.22e-16

And the panel data estimation with random individual effects can be done by:

332
9 Panel Data and Technological Change

> riceTlTimeRan <- plm( lProd ~ lArea + lLabor + lNpk +


+ I( 0.5 * lArea^2 ) + I( 0.5 * lLabor^2 ) + I( 0.5 * lNpk^2 ) +
+ I( lArea * lLabor ) + I( lArea * lNpk ) + I( lLabor * lNpk ) + mYear,
+ data = pdat, model = "random" )
> summary( riceTlTimeRan )

Oneway (individual) effect Random Effect Model


(Swamy-Arora's transformation)

Call:
plm(formula = lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) +
I(0.5 * lLabor^2) + I(0.5 * lNpk^2) + I(lArea * lLabor) +
I(lArea * lNpk) + I(lLabor * lNpk) + mYear, data = pdat,
model = "random")

Balanced Panel: n = 43, T = 8, N = 344

Effects:
var std.dev share
idiosyncratic 0.07530 0.27440 0.79
individual 0.01997 0.14130 0.21
theta: 0.434

Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-1.393176 -0.162097 0.045567 0.184209 0.798214

Coefficients:
Estimate Std. Error t-value Pr(>|t|)
(Intercept) 0.0213211 0.0347371 0.6138 0.539776
lArea 0.6831045 0.0922069 7.4084 1.061e-12 ***
lLabor 0.0974523 0.0804060 1.2120 0.226370
lNpk 0.1708366 0.0546853 3.1240 0.001941 **
I(0.5 * lArea^2) -0.4275328 0.2468086 -1.7322 0.084156 .
I(0.5 * lLabor^2) -0.6367899 0.2872825 -2.2166 0.027326 *
I(0.5 * lNpk^2) 0.0307547 0.0957745 0.3211 0.748324
I(lArea * lLabor) 0.5666863 0.2059076 2.7521 0.006245 **
I(lArea * lNpk) 0.1037657 0.1421739 0.7299 0.465995
I(lLabor * lNpk) -0.2055786 0.1277476 -1.6093 0.108508
mYear 0.0142202 0.0070184 2.0261 0.043549 *

333
9 Panel Data and Technological Change

---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares: 114.08


Residual Sum of Squares: 26.624
R-Squared: 0.76662
Adj. R-Squared: 0.75961
F-statistic: 109.386 on 10 and 333 DF, p-value: < 2.22e-16

The Translog production function cannot be estimated by a variable-coefficient model for panel
model with our data set, because the number of time periods in the data set is smaller than the
number of the coefficients.
A pooled estimation can be done by

> riceTlTimePool <- plm( lProd ~ lArea + lLabor + lNpk +


+ I( 0.5 * lArea^2 ) + I( 0.5 * lLabor^2 ) + I( 0.5 * lNpk^2 ) +
+ I( lArea * lLabor ) + I( lArea * lNpk ) + I( lLabor * lNpk ) + mYear,
+ data = pdat, model = "pooling" )
> summary(riceTlTimePool)

Pooling Model

Call:
plm(formula = lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) +
I(0.5 * lLabor^2) + I(0.5 * lNpk^2) + I(lArea * lLabor) +
I(lArea * lNpk) + I(lLabor * lNpk) + mYear, data = pdat,
model = "pooling")

Balanced Panel: n = 43, T = 8, N = 344

Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-1.521838 -0.181205 0.043555 0.222979 0.870190

Coefficients:
Estimate Std. Error t-value Pr(>|t|)
(Intercept) 0.0137557 0.0246454 0.5581 0.5771201
lArea 0.5880972 0.0851622 6.9056 2.542e-11 ***
lLabor 0.1917638 0.0808764 2.3711 0.0183052 *
lNpk 0.1978747 0.0516045 3.8344 0.0001505 ***
I(0.5 * lArea^2) -0.4355466 0.2474913 -1.7598 0.0793520 .

334
9 Panel Data and Technological Change

I(0.5 * lLabor^2) -0.7422415 0.3032362 -2.4477 0.0148916 *


I(0.5 * lNpk^2) 0.0203673 0.0979072 0.2080 0.8353358
I(lArea * lLabor) 0.6786472 0.2165937 3.1333 0.0018822 **
I(lArea * lNpk) 0.0639200 0.1456135 0.4390 0.6609677
I(lLabor * lNpk) -0.1782859 0.1386111 -1.2862 0.1992559
mYear 0.0126820 0.0077947 1.6270 0.1046801
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares: 263.52


Residual Sum of Squares: 33.761
R-Squared: 0.87189
Adj. R-Squared: 0.86804
F-statistic: 226.623 on 10 and 333 DF, p-value: < 2.22e-16

This gives the same estimated coefficients as the model estimated by lm:

> all.equal( coef( riceTlTime ), coef( riceTlTimePool ) )

[1] TRUE

A Hausman test can be used to check the consistency of the random-effects estimator:

> phtest( riceTlTimeRan, riceTlTimeFe )

Hausman Test

data: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) + ...
chisq = 66.071, df = 10, p-value = 2.528e-10
alternative hypothesis: one model is inconsistent

The Hausman test clearly rejects the consistency of the random-effects estimator.
The following command tests the poolability of the model:

> pooltest( riceTlTimePool, riceTlTimeFe )

F statistic

data: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) + ...
F = 3.7469, df1 = 42, df2 = 291, p-value = 1.525e-11
alternative hypothesis: unstability

335
9 Panel Data and Technological Change

The pooled model (riceCdTimePool) is clearly rejected in favor of the model with fixed individual
effects (riceCdTimeFe), i.e. the individual effects are statistically significant.
The following commands test if the fit of Translog specification is significantly better than the
fit of the Cobb-Douglas specification:

> waldtest( riceCdTimeFe, riceTlTimeFe )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + mYear


Model 2: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +
I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear
Res.Df Df Chisq Pr(>Chisq)
1 297
2 291 6 39.321 6.191e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> waldtest( riceCdTimeRan, riceTlTimeRan )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + mYear


Model 2: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +
I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear
Res.Df Df Chisq Pr(>Chisq)
1 339
2 333 6 30.077 3.8e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> waldtest( riceCdTimePool, riceTlTimePool )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + mYear


Model 2: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +
I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear
Res.Df Df Chisq Pr(>Chisq)

336
9 Panel Data and Technological Change

1 339
2 333 6 30.89 2.66e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The Cobb-Douglas functional form is rejected in favor of the Translog functional for for all three
panel-specifications that we estimated above. The Wald test for the pooled model differs from
the Wald test that we did in section 9.1.2.1, because waldtest by default uses a finite sample
F statistic for models estimated by lm but uses a large sample Chi-squared statistic for models
estimated by plm. The test statistic used by waldtest can be specified by argument test.

9.1.3 Translog production function with non-constant and non-neutral


technological change
Technological change is not always constant and is not always neutral (unbiased). Therefore,
it might be more suitable to estimate a production function that can account for increasing or
decreasing rates of technological change as well as biased (e.g. labor saving) technological change.
This can be done by including a quadratic time trend and interaction terms between time and
input quantities:
X 1 XX X 1
ln y = α0 + αi ln xi + αij ln xi ln xj + αt t + αti t ln xi + αtt t2 (9.7)
i
2 i j i
2

In this specification, the rate of technological change depends on the input quantities and the
time period:

∂ ln y X
= αt + αti ln xi + αtt t (9.8)
∂t i

and the output elasticities might change over time:

∂ ln y X
i = = αi + αij ln xj + αti t. (9.9)
∂ ln xi j

9.1.3.1 Pooled estimation of a translog production function with non-constant and


non-neutral technological change

The following command estimates a Translog production function that can account for non-
constant rates of technological change as well as biased technological change:

> riceTlTimeNn <- lm( lProd ~ lArea + lLabor + lNpk +


+ I( 0.5 * lArea^2 ) + I( 0.5 * lLabor^2 ) + I( 0.5 * lNpk^2 ) +
+ I( lArea * lLabor ) + I( lArea * lNpk ) + I( lLabor * lNpk ) +
+ mYear + I( mYear * lArea ) + I( mYear * lLabor ) + I( mYear * lNpk ) +

337
9 Panel Data and Technological Change

+ I( 0.5 * mYear^2 ), data = riceProdPhil )


> summary( riceTlTimeNn )

Call:
lm(formula = lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) +
I(0.5 * lLabor^2) + I(0.5 * lNpk^2) + I(lArea * lLabor) +
I(lArea * lNpk) + I(lLabor * lNpk) + mYear + I(mYear * lArea) +
I(mYear * lLabor) + I(mYear * lNpk) + I(0.5 * mYear^2), data = riceProdPhil)

Residuals:
Min 1Q Median 3Q Max
-1.54976 -0.17245 0.04623 0.21624 0.87075

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.001255 0.031934 0.039 0.96867
lArea 0.579682 0.085892 6.749 6.73e-11 ***
lLabor 0.187505 0.081359 2.305 0.02181 *
lNpk 0.207193 0.052130 3.975 8.67e-05 ***
I(0.5 * lArea^2) -0.468372 0.265363 -1.765 0.07849 .
I(0.5 * lLabor^2) -0.688940 0.308046 -2.236 0.02599 *
I(0.5 * lNpk^2) 0.055993 0.099848 0.561 0.57533
I(lArea * lLabor) 0.676833 0.223271 3.031 0.00263 **
I(lArea * lNpk) 0.082374 0.151312 0.544 0.58654
I(lLabor * lNpk) -0.226885 0.145568 -1.559 0.12005
mYear 0.008746 0.008513 1.027 0.30497
I(mYear * lArea) 0.003482 0.028075 0.124 0.90136
I(mYear * lLabor) 0.034661 0.029480 1.176 0.24054
I(mYear * lNpk) -0.037964 0.020355 -1.865 0.06305 .
I(0.5 * mYear^2) 0.007611 0.007954 0.957 0.33933
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3184 on 329 degrees of freedom


Multiple R-squared: 0.8734, Adjusted R-squared: 0.868
F-statistic: 162.2 on 14 and 329 DF, p-value: < 2.2e-16

We conduct a Wald test to test whether the Translog production function with non-constant
and non-neutral technological change outperforms the Cobb-Douglas production function and
the Translog production function with constant and neutral technological change:

338
9 Panel Data and Technological Change

> waldtest( riceCdTimeS, riceTlTimeNn )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + mYear


Model 2: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +
I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear + I(mYear * lArea) + I(mYear * lLabor) + I(mYear *
lNpk) + I(0.5 * mYear^2)
Res.Df Df F Pr(>F)
1 339
2 329 10 3.488 0.00022 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> waldtest( riceTlTime, riceTlTimeNn )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +


I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear
Model 2: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +
I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear + I(mYear * lArea) + I(mYear * lLabor) + I(mYear *
lNpk) + I(0.5 * mYear^2)
Res.Df Df F Pr(>F)
1 333
2 329 4 0.9976 0.4089

The fit of the Translog specification with non-constant and non-neutral technological change is
significantly better than the fit of the Cobb-Douglas specification but it is not significantly better
than the fit of the Translog specification with constant and neutral technological change.
In order to simplify the calculation of the output elasticities (with equation 9.9) and the
annual rates of technological change (with equation 9.8), we create shortcuts for the estimated
coefficients:

> a1 <- coef( riceTlTimeNn )[ "lArea" ]


> a2 <- coef( riceTlTimeNn )[ "lLabor" ]
> a3 <- coef( riceTlTimeNn )[ "lNpk" ]
> at <- coef( riceTlTimeNn )[ "mYear" ]

339
9 Panel Data and Technological Change

> a11 <- coef( riceTlTimeNn )[ "I(0.5 * lArea^2)" ]


> a22 <- coef( riceTlTimeNn )[ "I(0.5 * lLabor^2)" ]
> a33 <- coef( riceTlTimeNn )[ "I(0.5 * lNpk^2)" ]
> att <- coef( riceTlTimeNn )[ "I(0.5 * mYear^2)" ]
> a12 <- a21 <- coef( riceTlTimeNn )[ "I(lArea * lLabor)" ]
> a13 <- a31 <- coef( riceTlTimeNn )[ "I(lArea * lNpk)" ]
> a23 <- a32 <- coef( riceTlTimeNn )[ "I(lLabor * lNpk)" ]
> a1t <- at1 <- coef( riceTlTimeNn )[ "I(mYear * lArea)" ]
> a2t <- at2 <- coef( riceTlTimeNn )[ "I(mYear * lLabor)" ]
> a3t <- at3 <- coef( riceTlTimeNn )[ "I(mYear * lNpk)" ]

Now, we can use the following commands to calculate the partial output elasticities:

> riceProdPhil$eArea <- with( riceProdPhil,


+ a1 + a11 * lArea + a12 * lLabor + a13 * lNpk + a1t * mYear )
> riceProdPhil$eLabor <- with( riceProdPhil,
+ a2 + a21 * lArea + a22 * lLabor + a23 * lNpk + a2t * mYear )
> riceProdPhil$eNpk <- with( riceProdPhil,
+ a3 + a31 * lArea + a32 * lLabor + a33 * lNpk + a3t * mYear )

We can calculate the elasticity of scale by taken the sum over all partial output elasticities:

> riceProdPhil$eScale <- with( riceProdPhil, eArea + eLabor + eNpk )

We can visualize (the variation of) the output elasticities and the elasticity of scale with
histograms:

> hist( riceProdPhil$eArea, 15 )


> hist( riceProdPhil$eLabor, 15 )
> hist( riceProdPhil$eNpk, 15 )
> hist( riceProdPhil$eScale, 15 )

The resulting graphs are shown in figure 9.1. If the firms increase the land area by one percent,
the output of most firms will increase by around 0.6 percent. If the firms increase labor input by
one percent, the output of most firms will increase by around 0.2 percent. If the firms increase
fertilizer input by one percent, the output of most firms will increase by around 0.25 percent. If
the firms increase all input quantities by one percent, the output of most firms will also increase
by around 1 percent. These graphs also show that the monotonicity condition is not fulfilled for
some observations:

> table( riceProdPhil$eArea >= 0 )

FALSE TRUE
20 324

340
9 Panel Data and Technological Change

60

40
Frequency

Frequency
40

20
20
0

0
−0.5 0.0 0.5 1.0 −0.5 0.0 0.5 1.0 1.5

eArea eLabor
60
Frequency

Frequency
40
20

20
0

−0.1 0.1 0.3 0.5 0.8 1.0 1.2 1.4

eNpk eScale

Figure 9.1: Output elasticities and elasticities of scale

341
9 Panel Data and Technological Change

> table( riceProdPhil$eLabor >= 0 )

FALSE TRUE
63 281

> table( riceProdPhil$eNpk >= 0 )

FALSE TRUE
7 337

> riceProdPhil$monoTl <- with( riceProdPhil, eArea >= 0 & eLabor >= 0 & eNpk >= 0 )
> table( riceProdPhil$monoTl )

FALSE TRUE
85 259

20 firms have a negative output elasticity of the land area, 63 firms have a negative output elastic-
ity of labor, and 7 firms have a negative output elasticity of fertilizers. In total the monotonicity
condition is not fulfilled at 85 out of 344 observations. Although the monotonicity conditions
are fulfilled for a large part of firms in our data set, these frequent violations indicate a possible
model misspecification.
We can use the following command to calculate the annual rates of technological change:

> riceProdPhil$tc <- with( riceProdPhil,


+ at + at1 * lArea + at2 * lLabor + at3 * lNpk + att * mYear )

We can visualize (the variation of) the annual rates of technological change with a histogram:

> hist( riceProdPhil$tc, 15 )


Frequency

40
20
0

−0.05 0.00 0.05 0.10

tc

Figure 9.2: Annual rates of technological change

The resulting graph is shown in figure 9.2. For most observations, the annual rate of technological
change was between 0% and 3%.

342
9 Panel Data and Technological Change

9.1.3.2 Panel-data estimations of a Translog production function with non-constant and


non-neutral technological change

The panel data estimation with fixed individual effects can be done by:

> riceTlTimeNnFe <- plm( lProd ~ lArea + lLabor + lNpk +


+ I( 0.5 * lArea^2 ) + I( 0.5 * lLabor^2 ) + I( 0.5 * lNpk^2 ) +
+ I( lArea * lLabor ) + I( lArea * lNpk ) + I( lLabor * lNpk ) +
+ mYear + I( mYear * lArea ) + I( mYear * lLabor ) + I( mYear * lNpk ) +
+ I( 0.5 * mYear^2 ), data = pdat )
> summary( riceTlTimeNnFe )

Oneway (individual) effect Within Model

Call:
plm(formula = lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) +
I(0.5 * lLabor^2) + I(0.5 * lNpk^2) + I(lArea * lLabor) +
I(lArea * lNpk) + I(lLabor * lNpk) + mYear + I(mYear * lArea) +
I(mYear * lLabor) + I(mYear * lNpk) + I(0.5 * mYear^2), data = pdat)

Balanced Panel: n = 43, T = 8, N = 344

Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-1.014803 -0.143180 0.017469 0.166852 0.749361

Coefficients:
Estimate Std. Error t-value Pr(>|t|)
lArea 0.5857359 0.1191164 4.9173 1.479e-06 ***
lLabor 0.0336966 0.0869044 0.3877 0.698494
lNpk 0.1276970 0.0623919 2.0467 0.041599 *
I(0.5 * lArea^2) -0.8588620 0.2952677 -2.9088 0.003912 **
I(0.5 * lLabor^2) -0.6154568 0.2979094 -2.0659 0.039733 *
I(0.5 * lNpk^2) 0.0673038 0.1014542 0.6634 0.507613
I(lArea * lLabor) 0.6016538 0.2164953 2.7791 0.005811 **
I(lArea * lNpk) 0.1205064 0.1549834 0.7775 0.437479
I(lLabor * lNpk) -0.2660519 0.1353699 -1.9654 0.050336 .
mYear 0.0148796 0.0076143 1.9542 0.051654 .
I(mYear * lArea) 0.0105012 0.0270130 0.3887 0.697752
I(mYear * lLabor) 0.0230156 0.0286066 0.8046 0.421743
I(mYear * lNpk) -0.0279542 0.0199045 -1.4044 0.161277

343
9 Panel Data and Technological Change

I(0.5 * mYear^2) 0.0058526 0.0069948 0.8367 0.403458


---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares: 43.632


Residual Sum of Squares: 21.733
R-Squared: 0.50189
Adj. R-Squared: 0.40469
F-statistic: 20.6552 on 14 and 287 DF, p-value: < 2.22e-16

And the panel data estimation with random individual effects can be done by:

> riceTlTimeNnRan <- plm( lProd ~ lArea + lLabor + lNpk +


+ I( 0.5 * lArea^2 ) + I( 0.5 * lLabor^2 ) + I( 0.5 * lNpk^2 ) +
+ I( lArea * lLabor ) + I( lArea * lNpk ) + I( lLabor * lNpk ) +
+ mYear + I( mYear * lArea ) + I( mYear * lLabor ) + I( mYear * lNpk ) +
+ I( 0.5 * mYear^2 ), data = pdat, model = "random" )
> summary( riceTlTimeNnRan )

Oneway (individual) effect Random Effect Model


(Swamy-Arora's transformation)

Call:
plm(formula = lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) +
I(0.5 * lLabor^2) + I(0.5 * lNpk^2) + I(lArea * lLabor) +
I(lArea * lNpk) + I(lLabor * lNpk) + mYear + I(mYear * lArea) +
I(mYear * lLabor) + I(mYear * lNpk) + I(0.5 * mYear^2), data = pdat,
model = "random")

Balanced Panel: n = 43, T = 8, N = 344

Effects:
var std.dev share
idiosyncratic 0.07573 0.27518 0.796
individual 0.01941 0.13933 0.204
theta: 0.4275

Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-1.392702 -0.162022 0.045553 0.180242 0.790301

344
9 Panel Data and Technological Change

Coefficients:
Estimate Std. Error t-value Pr(>|t|)
(Intercept) 0.0101183 0.0389961 0.2595 0.795434
lArea 0.6809764 0.0930789 7.3161 1.965e-12 ***
lLabor 0.0865327 0.0813309 1.0640 0.288128
lNpk 0.1800677 0.0554226 3.2490 0.001278 **
I(0.5 * lArea^2) -0.4749163 0.2627102 -1.8078 0.071557 .
I(0.5 * lLabor^2) -0.6146891 0.2907148 -2.1144 0.035232 *
I(0.5 * lNpk^2) 0.0614961 0.0980315 0.6273 0.530891
I(lArea * lLabor) 0.5916989 0.2113078 2.8002 0.005409 **
I(lArea * lNpk) 0.1224789 0.1488815 0.8227 0.411297
I(lLabor * lNpk) -0.2531048 0.1350400 -1.8743 0.061776 .
mYear 0.0116511 0.0077140 1.5104 0.131907
I(mYear * lArea) 0.0028675 0.0265731 0.1079 0.914134
I(mYear * lLabor) 0.0355897 0.0279156 1.2749 0.203242
I(mYear * lNpk) -0.0344049 0.0195392 -1.7608 0.079198 .
I(0.5 * mYear^2) 0.0069525 0.0071510 0.9722 0.331650
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares: 115.71


Residual Sum of Squares: 26.417
R-Squared: 0.77169
Adj. R-Squared: 0.76198
F-statistic: 79.4317 on 14 and 329 DF, p-value: < 2.22e-16

The Translog production function cannot be estimated by a variable-coefficient model for panel
model with our data set, because the number of time periods in the data set is smaller than the
number of the coefficients.
A pooled estimation can be done by

> riceTlTimeNnPool <- plm( lProd ~ lArea + lLabor + lNpk +


+ I( 0.5 * lArea^2 ) + I( 0.5 * lLabor^2 ) + I( 0.5 * lNpk^2 ) +
+ I( lArea * lLabor ) + I( lArea * lNpk ) + I( lLabor * lNpk ) +
+ mYear + I( mYear * lArea ) + I( mYear * lLabor ) + I( mYear * lNpk ) +
+ I( 0.5 * mYear^2 ), data = pdat, model = "pooling" )

This gives the same estimated coefficients as the model estimated by lm:

> all.equal( coef( riceTlTimeNn ), coef( riceTlTimeNnPool ) )

[1] TRUE

345
9 Panel Data and Technological Change

A Hausman test can be used to check the consistency of the random-effects estimator:

> phtest( riceTlTimeNnRan, riceTlTimeNnFe )

Hausman Test

data: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) + ...
chisq = 21.731, df = 14, p-value = 0.08432
alternative hypothesis: one model is inconsistent

The Hausman test rejects the consistency of the random-effects estimator at the 10% significance
level but it cannot reject the consistency of the random-effects estimator at the 5% significance
level.
The following command tests the poolability of the model:

> pooltest( riceTlTimeNnPool, riceTlTimeNnFe )

F statistic

data: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) + ...
F = 3.6544, df1 = 42, df2 = 287, p-value = 4.266e-11
alternative hypothesis: unstability

The pooled model (riceCdTimePool) is clearly rejected in favor of the model with fixed individual
effects (riceCdTimeFe), i.e. the individual effects are statistically significant.
The following commands test if the fit of Translog specification is significantly better than the
fit of the Cobb-Douglas specification:

> waldtest( riceTlTimeNnFe, riceCdTimeFe )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +


I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear + I(mYear * lArea) + I(mYear * lLabor) + I(mYear *
lNpk) + I(0.5 * mYear^2)
Model 2: lProd ~ lArea + lLabor + lNpk + mYear
Res.Df Df Chisq Pr(>Chisq)
1 287
2 297 -10 41.45 9.392e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

346
9 Panel Data and Technological Change

> waldtest( riceTlTimeNnRan, riceCdTimeRan )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +


I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear + I(mYear * lArea) + I(mYear * lLabor) + I(mYear *
lNpk) + I(0.5 * mYear^2)
Model 2: lProd ~ lArea + lLabor + lNpk + mYear
Res.Df Df Chisq Pr(>Chisq)
1 329
2 339 -10 33.666 0.0002103 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> waldtest( riceTlTimeNnPool, riceCdTimePool )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +


I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear + I(mYear * lArea) + I(mYear * lLabor) + I(mYear *
lNpk) + I(0.5 * mYear^2)
Model 2: lProd ~ lArea + lLabor + lNpk + mYear
Res.Df Df Chisq Pr(>Chisq)
1 329
2 339 -10 34.88 0.0001309 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Finally, we test whether the fit of Translog specification with non-constant and non-neutral
technological change is significantly better than the fit of Translog specification with constant
and neutral technological change:

> waldtest( riceTlTimeNnFe, riceTlTimeFe )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +


I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear + I(mYear * lArea) + I(mYear * lLabor) + I(mYear *
lNpk) + I(0.5 * mYear^2)

347
9 Panel Data and Technological Change

Model 2: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +


I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear
Res.Df Df Chisq Pr(>Chisq)
1 287
2 291 -4 2.3512 0.6715

> waldtest( riceTlTimeNnRan, riceTlTimeRan )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +


I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear + I(mYear * lArea) + I(mYear * lLabor) + I(mYear *
lNpk) + I(0.5 * mYear^2)
Model 2: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +
I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear
Res.Df Df Chisq Pr(>Chisq)
1 329
2 333 -4 3.6633 0.4535

> waldtest( riceTlTimeNnPool, riceTlTimePool )

Wald test

Model 1: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +


I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear + I(mYear * lArea) + I(mYear * lLabor) + I(mYear *
lNpk) + I(0.5 * mYear^2)
Model 2: lProd ~ lArea + lLabor + lNpk + I(0.5 * lArea^2) + I(0.5 * lLabor^2) +
I(0.5 * lNpk^2) + I(lArea * lLabor) + I(lArea * lNpk) + I(lLabor *
lNpk) + mYear
Res.Df Df Chisq Pr(>Chisq)
1 329
2 333 -4 3.9905 0.4073

The tests indicate that the fit of Translog specification with constant and neutral technological
change is not significantly worse than the fit of Translog specification with non-constant and
non-neutral technological change.
The difference between the Wald tests for the pooled model and the Wald test that we did in
section 9.1.3.1 is explained at the end of section 9.1.2.2.

348
9 Panel Data and Technological Change

9.2 Frontier production functions with technological change


The frontier production technology can be estimated by many different specifications of the
stochastic frontier model. We will focus on three specifications that are all nested in the general
specification:
ln ykt = ln f (xkt , t) − ukt + vkt , (9.10)

where the subscript k = 1, . . . , K indicates the firm, t = 1, . . . , T indicates the time period, and
all other variables are defined as before. We will apply the following three model specifications:

1. time-invariant individual efficiencies, i.e. ukt = uk , which means that each firm has an
individual fixed efficiency that does not vary over time;

2. time-variant individual efficiencies, i.e. ukt = uk exp(−η (t − T )), which means that each
firm has an individual efficiency and the efficiency terms of all firms can vary over time
with the same rate (and in the same direction); and

3. observation-specific efficiencies, i.e. no restrictions on ukt , which means that the efficiency
term of each observation is estimated independently from the other efficiencies of the firm
so that basically the panel structure of the data is ignored.

9.2.1 Cobb-Douglas production frontier with technological change


We will use the specification in equation (9.2).

9.2.1.1 Time-invariant individual efficiencies

We start with estimating a Cobb-Douglas production frontier with time-invariant individual


efficiencies. The following commands estimate two Cobb-Douglas production frontiers with time-
invariant individual efficiencies, the first does not account for technological change, while the
second does:

> riceCdSfaInv <- sfa( lProd ~ lArea + lLabor + lNpk, data = pdat )
> summary( riceCdSfaInv )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 10 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)

349
9 Panel Data and Technological Change

(Intercept) 0.182630 0.035164 5.1937 2.062e-07 ***


lArea 0.453898 0.064471 7.0404 1.918e-12 ***
lLabor 0.288923 0.063856 4.5246 6.051e-06 ***
lNpk 0.227543 0.040718 5.5882 2.294e-08 ***
sigmaSq 0.155377 0.024204 6.4195 1.368e-10 ***
gamma 0.464311 0.087487 5.3072 1.113e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -86.43042

panel data
number of cross-sections = 43
number of time periods = 8
total number of observations = 344
thus there are 0 observations not in the panel

mean efficiency: 0.8187966

> riceCdTimeSfaInv <- sfa( lProd ~ lArea + lLabor + lNpk + mYear, data = pdat )
> summary( riceCdTimeSfaInv )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 11 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.1832751 0.0345895 5.2986 1.167e-07 ***
lArea 0.4625174 0.0644245 7.1792 7.011e-13 ***
lLabor 0.3029415 0.0641323 4.7237 2.316e-06 ***
lNpk 0.2098907 0.0418709 5.0128 5.364e-07 ***
mYear 0.0116003 0.0071758 1.6166 0.106
sigmaSq 0.1556806 0.0242951 6.4079 1.475e-10 ***
gamma 0.4706143 0.0869549 5.4122 6.227e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -85.0743

350
9 Panel Data and Technological Change

panel data
number of cross-sections = 43
number of time periods = 8
total number of observations = 344
thus there are 0 observations not in the panel

mean efficiency: 0.8176333

In the Cobb-Douglas production frontier that accounts for technological change, the monotonicity
conditions are globally fulfilled and the (constant) output elasticities of land, labor and fertilizer
are 0.463, 0.303, and 0.21, respectively. The estimated (constant) annual rate of technological
progress is around 1.2%. However, both the t-test for the coefficient of the time trend and a
likelihood ratio test give rise to doubts whether the production technology indeed changes over
time (P-values around 10%):

> lrtest( riceCdTimeSfaInv, riceCdSfaInv )

Likelihood ratio test

Model 1: riceCdTimeSfaInv
Model 2: riceCdSfaInv
#Df LogLik Df Chisq Pr(>Chisq)
1 7 -85.074
2 6 -86.430 -1 2.7122 0.09958 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Further likelihood ratio tests show that OLS models are clearly rejected in favor of the cor-
responding stochastic frontier models (no matter whether the production frontier accounts for
technological change or not):

> lrtest( riceCdSfaInv )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -104.91
2 6 -86.43 1 36.953 6.051e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

351
9 Panel Data and Technological Change

> lrtest( riceCdTimeSfaInv )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -104.103
2 7 -85.074 1 38.057 3.434e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

This model estimates only a single efficiency estimate for each of the 43 firms. Hence, the vector
returned by the efficiencies method only has 43 elements by default:

> length( efficiencies( riceCdSfaInv ) )

[1] 43

One can obtain the efficiency estimates for each observation by setting argument asInData equal
to TRUE:

> pdat$effCdInv <- efficiencies( riceCdSfaInv, asInData = TRUE )

Please note that the efficiency estimates for each firm still do not vary between time periods.

9.2.1.2 Time-variant individual efficiencies

Now we estimate a Cobb-Douglas production frontier with time-variant individual efficiencies.


Again, we estimate two Cobb-Douglas production frontiers, the first does not account for tech-
nological change, while the second does:

> riceCdSfaVar <- sfa( lProd ~ lArea + lLabor + lNpk,


+ timeEffect = TRUE, data = pdat )
> summary( riceCdSfaVar )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 11 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates

352
9 Panel Data and Technological Change

Estimate Std. Error z value Pr(>|z|)


(Intercept) 0.182016 0.035251 5.1635 2.424e-07 ***
lArea 0.474919 0.066213 7.1726 7.360e-13 ***
lLabor 0.300094 0.063872 4.6983 2.623e-06 ***
lNpk 0.199461 0.042740 4.6669 3.058e-06 ***
sigmaSq 0.129957 0.021098 6.1598 7.285e-10 ***
gamma 0.369639 0.104045 3.5527 0.0003813 ***
time 0.058909 0.030863 1.9087 0.0563017 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -84.55036

panel data
number of cross-sections = 43
number of time periods = 8
total number of observations = 344
thus there are 0 observations not in the panel

mean efficiency of each year


[1] 0.7848433 0.7950303 0.8048362 0.8142652 0.8233226 0.8320146 0.8403483
[8] 0.8483313

mean efficiency: 0.817874

> riceCdTimeSfaVar <- sfa( lProd ~ lArea + lLabor + lNpk + mYear,


+ timeEffect = TRUE, data = pdat )
> summary( riceCdTimeSfaVar )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 13 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.1817471 0.0360859 5.0365 4.741e-07 ***
lArea 0.4761177 0.0657003 7.2468 4.267e-13 ***
lLabor 0.2987917 0.0647805 4.6124 3.981e-06 ***

353
9 Panel Data and Technological Change

lNpk 0.1991399 0.0428877 4.6433 3.429e-06 ***


mYear -0.0031907 0.0155009 -0.2058 0.83692
sigmaSq 0.1255592 0.0295753 4.2454 2.182e-05 ***
gamma 0.3478660 0.1507342 2.3078 0.02101 *
time 0.0711165 0.0674356 1.0546 0.29162
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -84.52871

panel data
number of cross-sections = 43
number of time periods = 8
total number of observations = 344
thus there are 0 observations not in the panel

mean efficiency of each year


[1] 0.7780285 0.7905809 0.8025753 0.8140187 0.8249202 0.8352907 0.8451431
[8] 0.8544916

mean efficiency: 0.8181311

In the Cobb-Douglas production frontier that accounts for technological change, the monotonicity
conditions are globally fulfilled and the (constant) output elasticities of land, labor and fertilizer
are 0.476, 0.299, and 0.199, respectively. The estimated (constant) annual rate of technologi-
cal change is around -0.3%, which indicates technological regress. However, the t-test for the
coefficient of the time trend and a likelihood ratio test indicate that the production technology
(frontier) does not change over time, i.e. there is neither technological regress nor technological
progress:

> lrtest( riceCdTimeSfaVar, riceCdSfaVar )

Likelihood ratio test

Model 1: riceCdTimeSfaVar
Model 2: riceCdSfaVar
#Df LogLik Df Chisq Pr(>Chisq)
1 8 -84.529
2 7 -84.550 -1 0.0433 0.8352

A positive sign of the coefficient η (named time) indicates that efficiency is increasing over
time. However, in the model without technological change, the t-test for the coefficient η and

354
9 Panel Data and Technological Change

the corresponding likelihood ratio test indicate that the effect of time on the efficiencies only is
significant at the 10% level:

> lrtest( riceCdSfaInv, riceCdSfaVar )

Likelihood ratio test

Model 1: riceCdSfaInv
Model 2: riceCdSfaVar
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -86.43
2 7 -84.55 1 3.7601 0.05249 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

In the model that accounts for technological change, the t-test for the coefficient η and the
corresponding likelihood ratio test indicate that the efficiencies do not change over time:

> lrtest( riceCdTimeSfaInv, riceCdTimeSfaVar )

Likelihood ratio test

Model 1: riceCdTimeSfaInv
Model 2: riceCdTimeSfaVar
#Df LogLik Df Chisq Pr(>Chisq)
1 7 -85.074
2 8 -84.529 1 1.0912 0.2962

Finally, we can use a likelihood ratio test to simultaneously test whether the technology and the
technical efficiencies change over time:

> lrtest( riceCdSfaInv, riceCdTimeSfaVar )

Likelihood ratio test

Model 1: riceCdSfaInv
Model 2: riceCdTimeSfaVar
#Df LogLik Df Chisq Pr(>Chisq)
1 6 -86.430
2 8 -84.529 2 3.8034 0.1493

All together, these tests indicate that there is no significant technological change, while it remains
unclear whether the technical efficiencies significantly change over time.

355
9 Panel Data and Technological Change

In econometric estimations of frontier models, where one variable (e.g. time) can affect both the
frontier and the efficiency, the two effects of this variable can often be hardly separated, because
the corresponding parameters can be simultaneous adjusted with only marginally reducing the
log-likelihood value. This can be checked by taking a look at the correlation matrix of the
estimated parameters:

> round( cov2cor( vcov( riceCdTimeSfaVar ) ), 2 )

(Intercept) lArea lLabor lNpk mYear sigmaSq gamma time


(Intercept) 1.00 0.18 -0.12 0.01 0.06 0.44 0.47 -0.19
lArea 0.18 1.00 -0.68 -0.39 -0.06 0.04 0.06 0.07
lLabor -0.12 -0.68 1.00 -0.27 0.08 -0.07 -0.09 0.00
lNpk 0.01 -0.39 -0.27 1.00 0.01 0.02 0.00 -0.11
mYear 0.06 -0.06 0.08 0.01 1.00 0.71 0.70 -0.88
sigmaSq 0.44 0.04 -0.07 0.02 0.71 1.00 0.94 -0.85
gamma 0.47 0.06 -0.09 0.00 0.70 0.94 1.00 -0.85
time -0.19 0.07 0.00 -0.11 -0.88 -0.85 -0.85 1.00

The estimate of the parameter for technological change (mYear) is highly correlated with the
estimate of the parameter that indicates the change of the efficiencies (time).
Again, further likelihood ratio tests show that OLS models are clearly rejected in favor of the
corresponding stochastic frontier models:

> lrtest( riceCdSfaVar )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)
1 5 -104.91
2 7 -84.55 2 40.713 4.489e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> lrtest( riceCdTimeSfaVar )

Likelihood ratio test

Model 1: OLS (no inefficiency)


Model 2: Error Components Frontier (ECF)
#Df LogLik Df Chisq Pr(>Chisq)

356
9 Panel Data and Technological Change

1 6 -104.103
2 8 -84.529 2 39.149 9.85e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

In case of time-variant efficiencies, the efficiencies method returns a matrix, where each row
corresponds to one of the 43 firms and each column corresponds to one of the 0 time periods:

> dim( efficiencies( riceCdSfaVar ) )

[1] 43 8

One can obtain a vector of efficiency estimates for each observation by setting argument asInData
equal to TRUE:

> pdat$effCdVar <- efficiencies( riceCdSfaVar, asInData = TRUE )

9.2.1.3 Observation-specific efficiencies

Finally, we estimate a Cobb-Douglas production frontier with observation-specific efficiencies.


The following commands estimate two Cobb-Douglas production frontiers, the first does not
account for technological change, while the second does:

> riceCdSfa <- sfa( lProd ~ lArea + lLabor + lNpk, data = riceProdPhil )
> summary( riceCdSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 9 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.333747 0.024468 13.6400 < 2.2e-16 ***
lArea 0.355511 0.060125 5.9128 3.363e-09 ***
lLabor 0.333302 0.063026 5.2883 1.234e-07 ***
lNpk 0.271277 0.035364 7.6709 1.708e-14 ***
sigmaSq 0.238627 0.025941 9.1987 < 2.2e-16 ***
gamma 0.885382 0.033524 26.4103 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

357
9 Panel Data and Technological Change

log likelihood value: -86.20268

cross-sectional data
total number of observations = 344

mean efficiency: 0.7229764

> riceCdTimeSfa <- sfa( lProd ~ lArea + lLabor + lNpk + mYear,


+ data = riceProdPhil )
> summary( riceCdTimeSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 10 iterations:
cannot find a parameter vector that results in a log-likelihood value
larger than the log-likelihood value obtained in the previous step

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.3375352 0.0240787 14.0180 < 2.2e-16 ***
lArea 0.3557511 0.0596403 5.9649 2.447e-09 ***
lLabor 0.3507357 0.0631077 5.5577 2.733e-08 ***
lNpk 0.2565321 0.0351012 7.3083 2.704e-13 ***
mYear 0.0148902 0.0068853 2.1626 0.03057 *
sigmaSq 0.2418364 0.0259495 9.3195 < 2.2e-16 ***
gamma 0.8979766 0.0304374 29.5024 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -83.76704

cross-sectional data
total number of observations = 344

mean efficiency: 0.7201094

Please note that we used the data set riceProdPhil for these estimations, because the panel
structure should be ignored in these specifications and the data set riceProdPhil does not
include information on the panel structure.
In the Cobb-Douglas production frontier that accounts for technological change, the mono-
tonicity conditions are globally fulfilled and the (constant) output elasticities of land, labor and

358
9 Panel Data and Technological Change

fertilizer are 0.356, 0.351, and 0.257, respectively. The estimated (constant) annual rate of tech-
nological change is around 1.5%.
A likelihood ratio test confirms the t-test for the coefficient of the time trend, i.e. the production
technology significantly changes over time:

> lrtest( riceCdTimeSfa, riceCdSfa )

Likelihood ratio test

Model 1: riceCdTimeSfa
Model 2: riceCdSfa
#Df LogLik Df Chisq Pr(>Chisq)
1 7 -83.767
2 6 -86.203 -1 4.8713 0.02731 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

9.2.2 Translog production frontier with constant and neutral technological change
The specification of a Translog production function that accounts for constant and neutral (un-
biased) technological change is given in (9.4).1

9.2.2.1 Observation-specific efficiencies

The following commands estimate a two Translog production frontiers with observation-specific
efficiencies, the first does not account for technological change, while the second can account for
constant and neutral technical change:

> riceTlSfa <- sfa( log( prod ) ~ log( area ) + log( labor ) + log( npk ) +
+ I( 0.5 * log( area )^2 ) + I( 0.5 * log( labor )^2 ) + I( 0.5 * log( npk )^2 ) +
+ I( log( area ) * log( labor ) ) + I( log( area ) * log( npk ) ) +
+ I( log( labor ) * log( npk ) ), data = riceProdPhil )
> summary( riceTlSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 16 iterations:
log likelihood values and parameters of two successive iterations
1
We use not only mean-scaled input quantities but also the mean-scaled output quantity in order to obtain
the same estimates as Coelli et al. (2005, p. 250). Please note that the order of coefficients/regressors is
different in Coelli et al. (2005, p. 250): intercept, mYear, log(area), log(labor), log(npk), 0.5*log(area)^2,
log(area)*log(labor), log(area)*log(npk), 0.5*log(labor)^2, log(labor)*log(npk), 0.5*log(npk)^2.

359
9 Panel Data and Technological Change

are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.3719e-01 2.8747e-02 11.7298 < 2.2e-16 ***
log(area) 5.3429e-01 7.9139e-02 6.7513 1.466e-11 ***
log(labor) 2.0910e-01 7.4439e-02 2.8090 0.0049699 **
log(npk) 2.2145e-01 4.5141e-02 4.9057 9.309e-07 ***
I(0.5 * log(area)^2) -5.1502e-01 2.0692e-01 -2.4889 0.0128124 *
I(0.5 * log(labor)^2) -5.6134e-01 2.7039e-01 -2.0761 0.0378885 *
I(0.5 * log(npk)^2) -7.1029e-05 9.4128e-02 -0.0008 0.9993979
I(log(area) * log(labor)) 6.2604e-01 1.7284e-01 3.6221 0.0002922 ***
I(log(area) * log(npk)) 8.1749e-02 1.3867e-01 0.5895 0.5555218
I(log(labor) * log(npk)) -1.5750e-01 1.4027e-01 -1.1228 0.2615321
sigmaSq 2.1856e-01 2.4990e-02 8.7458 < 2.2e-16 ***
gamma 8.6930e-01 3.9456e-02 22.0319 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -76.95413

cross-sectional data
total number of observations = 344

mean efficiency: 0.7326115

> riceTlTimeSfa <- sfa( log( prod ) ~ log( area ) + log( labor ) + log( npk ) +
+ I( 0.5 * log( area )^2 ) + I( 0.5 * log( labor )^2 ) + I( 0.5 * log( npk )^2 ) +
+ I( log( area ) * log( labor ) ) + I( log( area ) * log( npk ) ) +
+ I( log( labor ) * log( npk ) ) + mYear, data = riceProdPhil )
> summary( riceTlTimeSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 17 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)

360
9 Panel Data and Technological Change

(Intercept) 0.3423626 0.0285089 12.0090 < 2.2e-16 ***


log(area) 0.5313816 0.0786313 6.7579 1.400e-11 ***
log(labor) 0.2308950 0.0744167 3.1027 0.0019174 **
log(npk) 0.2032741 0.0448189 4.5355 5.748e-06 ***
I(0.5 * log(area)^2) -0.4758612 0.2021533 -2.3540 0.0185745 *
I(0.5 * log(labor)^2) -0.5644708 0.2652593 -2.1280 0.0333374 *
I(0.5 * log(npk)^2) -0.0072200 0.0923371 -0.0782 0.9376756
I(log(area) * log(labor)) 0.6088402 0.1658019 3.6721 0.0002406 ***
I(log(area) * log(npk)) 0.0617400 0.1383298 0.4463 0.6553627
I(log(labor) * log(npk)) -0.1370538 0.1407360 -0.9738 0.3301377
mYear 0.0151111 0.0069164 2.1848 0.0289024 *
sigmaSq 0.2217092 0.0251305 8.8223 < 2.2e-16 ***
gamma 0.8835549 0.0367095 24.0688 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -74.40992

cross-sectional data
total number of observations = 344

mean efficiency: 0.7294192

In the Translog production frontier that accounts for constant and neutral technological change,
the monotonicity conditions are fulfilled at the sample mean and the estimated output elasticities
of land, labor and fertilizer are 0.531, 0.231, and 0.203, respectively, at the sample mean. The
estimated (constant) annual rate of technological progress is around 1.5%. A likelihood ratio test
confirms the t-test for the coefficient of the time trend, i.e. the production technology (frontier)
significantly changes over time:

> lrtest( riceTlTimeSfa, riceTlSfa )

Likelihood ratio test

Model 1: riceTlTimeSfa
Model 2: riceTlSfa
#Df LogLik Df Chisq Pr(>Chisq)
1 13 -74.410
2 12 -76.954 -1 5.0884 0.02409 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

361
9 Panel Data and Technological Change

Two further likelihood ratio tests indicate that the Translog specification is superior to the Cobb-
Douglas specification, no matter whether the two models allow for technological change or not.

> lrtest( riceTlSfa, riceCdSfa )

Likelihood ratio test

Model 1: riceTlSfa
Model 2: riceCdSfa
#Df LogLik Df Chisq Pr(>Chisq)
1 12 -76.954
2 6 -86.203 -6 18.497 0.005103 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> lrtest( riceTlTimeSfa, riceCdTimeSfa )

Likelihood ratio test

Model 1: riceTlTimeSfa
Model 2: riceCdTimeSfa
#Df LogLik Df Chisq Pr(>Chisq)
1 13 -74.410
2 7 -83.767 -6 18.714 0.004674 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

9.2.3 Translog production frontier with non-constant and non-neutral technological


change
The specification of a Translog production function with non-Constant and non-Neutral techno-
logical change is given in (9.7).

9.2.3.1 Observation-specific efficiencies

The following command estimates a Translog production frontier with observation-specific effi-
ciencies that can account for non-constant rates of technological change as well as biased techno-
logical change:

> riceTlTimeNnSfa <- sfa( log( prod ) ~ log( area ) + log( labor ) + log( npk ) +
+ I( 0.5 * log( area )^2 ) + I( 0.5 * log( labor )^2 ) + I( 0.5 * log( npk )^2 ) +
+ I( log( area ) * log( labor ) ) + I( log( area ) * log( npk ) ) +
+ I( log( labor ) * log( npk ) ) + mYear + I( mYear * log( area ) ) +

362
9 Panel Data and Technological Change

+ I( mYear * log( labor ) ) + I( mYear * log( npk ) ) + I( 0.5 * mYear^2 ),


+ data = riceProdPhil )
> summary( riceTlTimeNnSfa )

Error Components Frontier (see Battese & Coelli 1992)


Inefficiency decreases the endogenous variable (as in a production function)
The dependent variable is logged
Iterative ML estimation terminated after 22 iterations:
log likelihood values and parameters of two successive iterations
are within the tolerance limit

final maximum likelihood estimates


Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.3106571 0.0314407 9.8807 < 2.2e-16 ***
log(area) 0.5126731 0.0785995 6.5226 6.910e-11 ***
log(labor) 0.2380468 0.0746348 3.1895 0.0014252 **
log(npk) 0.2151255 0.0444039 4.8447 1.268e-06 ***
I(0.5 * log(area)^2) -0.5094996 0.2245219 -2.2693 0.0232523 *
I(0.5 * log(labor)^2) -0.5394595 0.2631560 -2.0500 0.0403683 *
I(0.5 * log(npk)^2) 0.0212610 0.0923160 0.2303 0.8178532
I(log(area) * log(labor)) 0.6132457 0.1688866 3.6311 0.0002822 ***
I(log(area) * log(npk)) 0.0683910 0.1438850 0.4753 0.6345609
I(log(labor) * log(npk)) -0.1590151 0.1481192 -1.0736 0.2830190
mYear 0.0090024 0.0074359 1.2107 0.2260178
I(mYear * log(area)) 0.0050523 0.0235543 0.2145 0.8301612
I(mYear * log(labor)) 0.0241182 0.0254589 0.9473 0.3434665
I(mYear * log(npk)) -0.0335254 0.0176804 -1.8962 0.0579346 .
I(0.5 * mYear^2) 0.0149770 0.0068888 2.1741 0.0296975 *
sigmaSq 0.2227265 0.0244483 9.1101 < 2.2e-16 ***
gamma 0.8957687 0.0323045 27.7289 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
log likelihood value: -70.5919

cross-sectional data
total number of observations = 344

mean efficiency: 0.7283976

At the mean values of the input quantities and the middle of the observation period, the mono-
tonicity conditions are fulfilled, the estimated output elasticities of land, labor and fertilizer are

363
9 Panel Data and Technological Change

0.513, 0.238, and 0.215, respectively, and the estimated annual rate of technological progress is
around 0.9%.
The following likelihood ratio tests compare the Translog production frontier that can account
for non-constant rates of technological change as well as biased technological change with the
Translog production frontier that does not account for technological change and with the Translog
production frontier that only accounts for constant and neutral technological change:

> lrtest( riceTlTimeNnSfa, riceTlSfa )

Likelihood ratio test

Model 1: riceTlTimeNnSfa
Model 2: riceTlSfa
#Df LogLik Df Chisq Pr(>Chisq)
1 17 -70.592
2 12 -76.954 -5 12.725 0.0261 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> lrtest( riceTlTimeNnSfa, riceTlTimeSfa )

Likelihood ratio test

Model 1: riceTlTimeNnSfa
Model 2: riceTlTimeSfa
#Df LogLik Df Chisq Pr(>Chisq)
1 17 -70.592
2 13 -74.410 -4 7.636 0.1059

These tests indicate that the Translog production frontier that can account for non-constant
rates of technological change as well as biased technological change is superior to the Translog
production frontier that does not account for any technological change but it is not significantly
better than the Translog production frontier that accounts for constant and neutral technological
change. Although it seems to be unnecessary to use the Translog production frontier that can
account for non-constant rates of technological change as well as biased technological change, we
use it in our further analysis for demonstrative purposes.
The following commands create short-cuts for some of the estimated coefficients and calculate
the rates of technological change at each observation:

> at <- coef(riceTlTimeNnSfa)["mYear"]


> atArea <- coef(riceTlTimeNnSfa)["I(mYear * log(area))"]
> atLabor <- coef(riceTlTimeNnSfa)["I(mYear * log(labor))"]

364
9 Panel Data and Technological Change

> atNpk <- coef(riceTlTimeNnSfa)["I(mYear * log(npk))"]


> att <- coef(riceTlTimeNnSfa)["I(0.5 * mYear^2)"]
> riceProdPhil$tc <- with( riceProdPhil, at + atArea * log( area ) +
+ atLabor * log( labor ) + atNpk * log( npk ) + att * mYear )

The following command visualizes the variation of the individual rates of technological change:

> hist( riceProdPhil$tc, 20 )

30
Frequency

0 10

−0.05 0.00 0.05 0.10

technological change

Figure 9.3: Annual rates of technological change

The resulting graph is shown in figure 9.3. Most individual rates of technological change are
between −4% and +7%, i.e. there is technological regress at some observations, while there
is strong technological progress at other observations. This wide variation of annual rates of
technological change is not unusual in applied agricultural production analysis because of the
stochastic nature of agricultural production.

9.2.4 Decomposition of productivity growth


In the beginning of this course, we have discussed and calculated different productivity mea-
sures, of which the total factor productivity (T F P ) is a particularly important determinant of a
firm’s competitiveness. During this course, we have—amongst other things—analyzed all three
measures that affect a firm’s total factor productivity, i.e.

ˆ the current state of the technology (T ) in the firm’s sector, which might change due to
technological change,
ˆ the firm’s technical efficiency (T E), which might change if the firm’s distance to the current
technology changes, and
ˆ the firm’s scale efficiency (SE), which might change if the firm’s size relative to the optimal
firm size changes.

Hence, changes of a firm’s (or a sector’s) total factor productivity (∆T F P ) can be decom-
posed into technological changes (∆T ), technical efficiency changes (∆T E), and scale efficiency

365
9 Panel Data and Technological Change

changes (∆SE):
∆T F P ≈ ∆T + ∆T E + ∆SE (9.11)

This decomposition often helps to understand the reasons for improved or reduced total factor
productivity and competitiveness.

9.3 Analyzing productivity growths with Data Envelopment Analysis


(DEA)
> library( "Benchmarking" )

We create a matrix of input quantities and a vector of output quantities:

> xMat <- cbind( riceProdPhil$AREA, riceProdPhil$LABOR, riceProdPhil$NPK )


> yVec <- riceProdPhil$PROD

The following commands calculate and decompose productivity changes:

> xMat0 <- xMat[ riceProdPhil$YEARDUM == 1, ]


> xMat1 <- xMat[ riceProdPhil$YEARDUM == 2, ]
> yVec0 <- yVec[ riceProdPhil$YEARDUM == 1 ]
> yVec1 <- yVec[ riceProdPhil$YEARDUM == 2 ]
> c00 <- eff( dea( xMat0, yVec0, RTS = "crs" ) )
> c01 <- eff( dea( xMat0, yVec0, XREF = xMat1, YREF = yVec1, RTS = "crs" ) )
> c11 <- eff( dea( xMat1, yVec1, RTS = "crs" ) )
> c10 <- eff( dea( xMat1, yVec1, XREF = xMat0, YREF = yVec0, RTS = "crs" ) )

Productivity changes (Malmquist):

> dProd0 <- c10 / c00


> hist( dProd0 )
> dProd1 <- c11 / c01
> plot( dProd0, dProd1 )
> dProd <- sqrt( dProd0 * dProd1 )
> hist( dProd )

Technological changes:

> dTech0 <- c00 / c01


> dTech1 <- c10 / c11
> plot( dTech0, dTech1 )
> dTech <- sqrt( dTech0 * dTech1 )
> hist( dTech )

366
9 Panel Data and Technological Change

Efficiency changes:

> dEff <- c11 / c00


> hist( dEff )

Checking Malmquist decomposition:

> all.equal( dProd, dTech * dEff )

[1] TRUE

367
Bibliography

Aigner, D., C.A.K. Lovell, and P. Schmidt. 1977. “Formulation and Estimation of Stochastic
Frontier Production Function Models.” Journal of Econometrics 6:21–37.

Battese, G.E., and T.J. Coelli. 1992. “Frontier Production Functions, Technical Efficiency and
Panel Data: With Application to Paddy Farmers in India.” Journal of Productivity Analysis
3:153–169.

—. 1995. “A Model for Technical Inefficiency Effects in a Stochastic Frontier Production Function
for Panel Data.” Empirical Economics 20:325–332.

Bogetoft, P., and L. Otto. 2011. Benchmarking with DEA, SFA, and R, vol. 157 of International
Series in Operations Research & Management Science. Springer.

Chambers, R.G. 1988. Applied Production Analysis. A Dual Approach. Cambridge University
Press, Cambridge.

Chand, R., and J.L. Kaul. 1986. “A Note on the Use of the Cobb-Douglas Profit Function.”
American Journal of Agricultural Economics 68:162–164.

Chiang, A.C. 1984. Fundamental Methods of Mathematical Economics, 3rd ed. McGraw-Hill.

Coelli, T.J. 1995. “Estimators and Hypothesis Tests for a Stochastic: A Monte Carlo Analysis.”
Journal of Productivity Analysis 6:247–268.

—. 1996. “A Guide to FRONTIER Version 4.1: A Computer Program for Stochastic Frontier
Production and Cost Function Estimation.” CEPA Working Paper 96/7, Department of Econo-
metrics, University of New England, Armidale NSW Australia.

Coelli, T.J., D.S.P. Rao, C.J. O’Donnell, and G.E. Battese. 2005. An Introduction to Efficiency
and Productivity Analysis, 2nd ed. New York: Springer.

Croissant, Y., and G. Millo. 2008. “Panel Data Econometrics in R: The plm Package.” Journal
of Statistical Software 27:1–43.

Czekaj, T., and A. Henningsen. 2012. “Comparing Parametric and Nonparametric Regression
Methods for Panel Data: the Optimal Size of Polish Crop Farms.” FOI Working Paper No.
2012/12, Institute of Food and Resource Economics, University of Copenhagen.

368
Bibliography

Färe, R., and D. Primont. 1995. Multi-Output Product and Duality: Theory and Applications.
Boston: Kluwer Academic Publishers.

Gantmacher, F.R. 1959. The Theory of Matrices. Chelsea Publishing.

Hayfield, T., and J.S. Racine. 2008. “Nonparametric Econometrics: The np Package.” Journal of
Statistical Software 27:1–32.

Henning, C.H.C.A., and A. Henningsen. 2007. “Modeling Farm Households’ Price Responses in
the Presence of Transaction Costs and Heterogeneity in Labor Markets.” American Journal of
Agricultural Economics 89:665–681.

Hurvich, C.M., J.S. Simonoff, and C.L. Tsai. 1998. “Smoothing Parameter Selection in Non-
parametric Regression Using an Improved Akaike Information Criterion.” Journal of the Royal
Statistical Society Series B 60:271–293.

Ivaldi, M., N. Ladoux, H. Ossard, and M. Simioni. 1996. “Comparing Fourier and Translog
Specifications of Multiproduct Technology: Evidence from an Incomplete Panel of French
Farmers.” Journal of Applied Econometrics 11:649–667.

Kleiber, C., and A. Zeileis. 2008. Applied Econometrics with R. New York: Springer.

Li, Q., and J.S. Racine. 2007. Nonparametric Econometrics: Theory and Practice. Princeton:
Princeton University Press.

Löthgren, M. 1997. “Generalized Stochastic Frontier Production Models.” Economics Letters


57:255–259.

—. 2000. “Specification and Estimation of Stochastic Multiple-output Production and Technical


Inefficiency.” Applied Economics 32:1533–1540.

McClelland, J.W., M.E. Wetzstein, and W.N. Musserwetz. 1986. “Returns to Scale and Size in
Agricultural Economics.” Western Journal of Agricultural Economics 11:129–133.

Meeusen, W., and J. van den Broeck. 1977. “Efficiency Estimation from Cobb-Douglas Production
Functions with Composed Error.” International Economic Review 18:435–444.

O’Donnell, C.J., and T.J. Coelli. 2005. “A Bayesian Approach to Imposing Curvature on Distance
Functions.” Journal of Econometrics 126:493–523.

Olsen, J.V., and A. Henningsen. 2011. “Investment Utilization and Farm Efficiency in Danish
Agriculture.” FOI Working Paper No. 2011/13, Institute of Food and Resource Economics,
University of Copenhagen.

Racine, J.S. 2008. “Nonparametric Econometrics: A Primer.” Foundations and Trends in Econo-
metrics 3:1–88.

369
Bibliography

Ramsey, J.B. 1969. “Tests for Specification Errors in Classical Linear Least-Squares Regression
Analysis.” Journal of the Royal Statistical Society. Series B (Methodological) 31:350–371.

Teetor, P. 2011. R Cookbook . O’Reilly Media.

Zuur, A., E.N. Ieno, and E. Meesters. 2009. A Beginner’s Guide to R. Use R!, Springer.

370

You might also like