Git Product home page Git Product logo

geqfarm's Introduction

Modeling Farm-Size Distributions

This is a repository of python files and documentation for a project to build general equilibrium models of agricultural economies with and without factor market power and other distortions.

by Jonathan Conning (with Aleks Michuda)

Python code for variants of general equilibrium models of the farm size distribution. Basic stuff ported from earlier Mathcad and Matlab files (some of it work with Aleks Michuda).

Variations on a neo-classical model to explore how factor endowments, the initial distribution of property rights and skills in the population interact with production technologies to shape equilibrium patterns of agrarian production organization and the size distribution of farms. To understand the main arguments, consider the simplest case of a single landlord (or a cartel of landlords) surrounded by a fringe of small landowning or landless agricultural households. If the lanlord owns a large fraction of the land endowment a standard partial-equilibrium analysis of non-price discriminating monopoly suggests the landlord would drive up the rental price of land by withholding land from the lease market. In a general equilibrium setting however there is another effect: by restricting other farmers' access to land landlords also lower the marginal product of labor on those farms. This increases the supply of labor to landlord estates at any given wage increasing landlords' potential income from monopsony rents. This can lead to equilibria where landlords increase the size of their production estates scale well above efficient scale in a competitive economy. A Latifundia-Minifundia type economy can emerge in which landlords operate large estates employing overly land-intensive production techniques while a large mass of farmers operate inefficiently and labor-intensive small parcels of land and sell labor to the landlord estate(s).

The model in python builds off similar earlier efforts in Mathcad and MATLAB. Details in the appendix at the end of this notebook.

I use object oriented programming ideas, first defining a "class" of Economy. An instance of an economy is an object with atributes including an associated endowment and technology as well as an initial distribution of property rights and non-traded skills. The economy class includes methods for finding a vector of market-clearing factor prices and associated equilibrium net factor demands and outputs.

I will later define a subclass PowerEconomy which inherits all the attributes of the Economy class but adds a few methods to compute market-power distorted equilibria.

geqfarm's People

Contributors

jhconning avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

geqfarm's Issues

Change code to use S^(1-gamma)

In the early days of the model we used the formulation:

S G(T,L) = s [ T^a L^(1-a)] ^g

but in the analytics it's more convenient to use

F(T,L,S) = S^(1-g) [ T^a L^(1-a)] ^g

This is preferred since then F is homogenous of degree 1 which makes a lot of math easy, and might as well have code match the math.

In principle straightforward since it's just a scaling (s = S^(1-g)) but we need to change things like factor demands., so need to test new code.

excess demands !=0 in Lucas = True scenarios

In all the early versions of the model an individual could be both a worker and a farm manager. This allowed for the possibility that an individual both runs a small farm and works for others (common around the world).

As of 1e3007d we can now instead run the model in a variant similar to the original Lucas(78) paper where households have to choose between being workers or managers. Management is a full-time activity, so higher s-skill farmers who find Profits(s) >w will become full time managers. This works

E.s = np.array([0.5,0.75,1,1.25,1.5])
E.Lucas = False
rwc, (Tc,Lc) = E.smallhold_eq([E.TBAR,E.LBAR],E.s)
rwc
array([ 0.2614,  0.2614])

Now the Lucas version of the model:

E.Lucas = True
rwc, (Tc,Lc) = E.smallhold_eq([E.TBAR,E.LBAR],E.s)
rwc 
array([ 0.1803,  0.4509])
Tc
array([  0.    ,   0.    ,   3.4346,  10.4815,  26.0813])

(Xrc,Xr,wc,wr) = scene_print(E, numS=10, detail=True)

Assumed Parameters
==================
N = 5, GAMMA = 0.8, ALPHA = 0.5, LAMBDA = 0.2, TBAR = 100, LBAR = 100, H = 0.0, 
s (tail)= [ 0.5   0.75  1.    1.25  1.5 ], 
Lucas = True, analytic = False, 

Effcient:[ Trc, Lrc]      [rc, wc]      w/r    F( )    [r*Tr]  [w*Lr] 
==============================================================================
        [ 65.21, 26.08]  [0.18,0.45]   2.50  | 29.40   11.76    11.76 

Theta  [ Tr, Lr ]      [rM,wM]        w/r  | F()   [T_hire]  [T_sale] [L_hire]
==============================================================================
 0.00  [ 45.91, 43.37] [ 0.21, 0.29]  1.35 | 31.31     9.80     0.00    12.53  
 0.10  [ 50.51, 49.05] [ 0.23, 0.28]  1.24 | 34.17    11.38     2.25    13.67  
 0.20  [ 55.98, 56.80] [ 0.24, 0.27]  1.10 | 37.76    13.53     4.83    15.10  
 0.30  [ 61.58, 66.28] [ 0.26, 0.25]  0.96 | 41.73    16.15     7.87    16.69  
 0.40  [ 68.83, 82.07] [  0.3, 0.23]  0.78 | 47.52    20.46    11.89    19.01  
 0.50  [ 76.65,106.90] [ 0.35, 0.21]  0.58 | 55.14    27.10    17.68    22.06  
 0.60  [ 85.34,156.62] [ 0.47, 0.17]  0.37 | 67.06    39.90    28.05    26.82  
 0.70  [ 93.41,283.50] [ 0.76, 0.12]  0.16 | 88.16    70.56    52.87    35.26  
 0.80  [ 98.21,698.68] [  1.7, 0.07]  0.04 | 129.02   162.10   132.05    51.61  
 0.90  [ 99.81,2657.39] [  5.4, 0.03]  0.01 | 221.59   542.85   489.48    88.64  
 0.97  [100.19,4007.69] [  7.9, 0.03]  0.00 | 261.57   787.13   762.04   104.63  
==============================================================================

As theta>0.50 we see landlords using more than available labor supply, which obviously cannot be..

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.