Revised 1995
Thomas Rutherford
Department of Economics
University of Colorado
This file presents different equilibrium concepts for public goods with a number of simple numerical models.
Two private goods (X
, Y
)
Two primary factors (K
,L
)
One public good (G
)
Two households (R
,P
)
Primary factors are used in the production of both private goods,
X
and Y
, with Cobb-Douglas technologies.
Public goods are produced using fixed fractions of the private
inputs.
Consumers have Cobb-Douglas utility functions over private goods and public goods.
G
is a pure (non-rivalrous and non-excludable) public
good. This characteristic is represented simply distinguishing the
consumption for the two consumers through "individual prices".
In any equilibrium, both consumers enjoy the same quantity of public good, so
G = CG("R") = CG("P")
where G
without an argument denotes the level of
production of the public good, and CG(H)
denotes the
level of consumption.
Four different types of equilibria are illustrated here:
G
sector produces joint products in fixed proportion. A zero
profit condition applies to this sector and this ensures coverage of
the cost of the public good. the market structure ensures optimality
of the level of provision. Moreover the cost of the public good is
distributed according to marginal benefit. This results in a Lindahl
equilibrium.
G
is in some way fixed and the
resulting equilibrium is suboptimal. Here, we fix G
indirectly by fixing tax rates on factor inputs to production. A
fixed supply of public goods produces shadow prices for the consumers
which are different from "market" prices.
Model | Description |
data | Lindahl model -- sets and input data defined |
LINDAHL | Lindahl model -- MPSGE formulation |
ALGEBRAIC | Lindahl model -- MCP formulation using GAMS algebra |
SJM_DUAL | Lindahl model -- SJM formulation in dual (price) space |
SJM_PRIMAL | Lindahl model -- SJM formulation in primal (quantity) space |
SAMUELSON | Samuelson model -- MPSGE formulation |
FIXED | Fixed provision model -- MPSGE formulation |
SUBSCRIBE | Subscription model -- MPSGE formulation |
SET H HOUSEHOLDS / R, P/ F PRIMARY FACTORS /K, L/, I PRIVATE GOODS /X, Y/; ALIAS (I,J); TABLE ENDOW(F,H) PRIMARY FACTOR ENDOWMENTS R P L 0.4 0.6 K 0.6 0.4 TABLE DEMAND(*,H) PRIMARY AND PUBLIC GOODS DEMAND R P X 0.5 0.3 Y 0.5 0.7 G 0.1 0.3 TABLE INPUT(*,*) FACTOR AND GOODS INPUT REQUIREMENTS X Y G K 0.3 0.8 L 0.7 0.2 X 0.5 Y 0.5;
$ONTEXT $MODEL:LINDAHL $SECTORS: Z(I) ! PRIVATE PRODUCTION G ! PUBLIC PRODUCTION $COMMODITIES: P(I) ! PRIVATE GOODS PRICES W(F) ! FACTOR PRICES PGC(H) ! PRIVATE VALUATIONS $CONSUMERS: RA(H) ! REPRESENTATIVE AGENT $PROD:G t:0 O:PGC(H) Q:1 I:P(I) Q:INPUT(I,"G") $PROD:Z(I) s:1 O:P(I) Q:1 I:W(F) Q:INPUT(F,I) $DEMAND:RA(H) s:1 D:P(I) Q:DEMAND(I,H) D:PGC(H) Q:DEMAND("G",H) E:W(F) Q:ENDOW(F,H) $OFFTEXT $SYSINCLUDE mpsgeset LINDAHL $INCLUDE LINDAHL.GEN SOLVE LINDAHL USING MCP;
EQUATIONS PROFIT_G ZERO PROFIT CONDITION FOR G PROFIT_Z(I) ZERO PROFIT CONDITION FOR Z MKT_PGC(H) MARKET CLEARANCE FOR PGC MKT_P(I) MARKET CLEARANCE FOR P MKT_W(F) MARKET CLEARANCE FOR W INCOME(H) INCOME BALANCE FOR H; PARAMETER PBAR(I) REFERENCE COST INDEX FOR SECTOR I BETA(*,*) COBB-DOUGLAS SHARE PARAMETERS; PBAR(I) = SUM(F, INPUT(F,I)); BETA(F,I) = INPUT(F,I) / PBAR(I); BETA("G",H) = DEMAND("G",H) / (DEMAND("G",H) + SUM(I, DEMAND(I,H))); BETA(I,H) = DEMAND(I,H) / (DEMAND("G",H) + SUM(J, DEMAND(J,H))); INCOME(H).. RA(H) =E= SUM(F, W(F) * ENDOW(F,H)); MKT_P(I).. P(I) * (Z(I) - G * INPUT(I,"G")) =G= SUM(H, BETA(I,H) * RA(H)); MKT_PGC(H).. PGC(H) * G =G= BETA("G",H) * RA(H); MKT_W(F).. SUM(H, ENDOW(F,H)) =G= SUM(I,Z(I)*INPUT(F,I)*P(I)/(PBAR(I)*W(F))); PROFIT_G.. SUM(I, P(I) * INPUT(I,"G")) =G= SUM(H, PGC(H)); PROFIT_Z(I).. PBAR(I) * PROD(F, W(F)**BETA(F,I)) =G= P(I); MODEL ALGEBRAIC /INCOME.RA, MKT_P.P, MKT_PGC.PGC, MKT_W.W, PROFIT_G.G, PROFIT_Z.Z/; RA.FX("R") = RA.L("R"); ALGEBRAIC.ITERLIM = 0; SOLVE ALGEBRAIC USING MCP;
PARAMETER NW(H) NEGISHI WEIGHT FOR HOUSEHOLD H; VARIABLE OBJVAL OBJECTIVE VALUE EQUATIONS OBJDUAL OBJECTIVE FUNCTION; OBJDUAL.. OBJVAL =E= SUM(H, NW(H) * (BETA("G",H) * LOG(PGC(H)) + SUM(I, BETA(I,H) * LOG(P(I)))) - SUM(F, W(F) * ENDOW(F,H))); * To replicate the previous model, take the Negishi weight * as the equilibrium income level: NW(H) = RA.L(H); MODEL SJM_DUAL / OBJDUAL, PROFIT_G, PROFIT_Z/; SOLVE SJM_DUAL USING NLP MAXIMIZING OBJVAL;
VARIABLES C(I,H) CONSUMPTION BY HOUSEHOLD X(F,I) FACTOR INPUTS; EQUATIONS OBJPRIMAL NEGISHI MAXIMAND FOR PRIMAL-FORM NEGISHI GMKT(I) GOODS MARKET FMKT(F) FACTOR MARKET OUTPUT(I) PRODUCTION FUNCTION; OBJPRIMAL.. OBJVAL =E= SUM(H, NW(H) * (BETA("G",H) * LOG(G) + SUM(I, BETA(I,H) * LOG(C(I,H))))); GMKT(I).. Z(I) =G= SUM(H, C(I,H)) + G * INPUT(I,"G"); FMKT(F).. SUM(H, ENDOW(F,H)) =G= SUM(I,X(F,I)); OUTPUT(I).. Z(I) =E= PROD(F, (X(F,I)/INPUT(F,I))**BETA(F,I)); C.LO(I,H) = 0.01; X.LO(F,I) = 0.01; MODEL SJM_PRIMAL /OBJPRIMAL, GMKT, FMKT, OUTPUT/ SOLVE SJM_PRIMAL USING NLP MAXIMIZING OBJVAL;
PARAMETER THETA(H) HOUSEHOLD SHARE OF COST OF PUBLIC GOODS /R 0.9, P 0.1/; $ONTEXT $MODEL:SAMUELSON $SECTORS: Z(I) ! PRIVATE PRODUCTION G ! PUBLIC PRODUCTION $COMMODITIES: P(I) ! PRIVATE GOODS PRICES W(F) ! FACTOR PRICES PGC(H) ! PRIVATE VALUATIONS $CONSUMERS: RA(H) ! REPRESENTATIVE AGENT $AUXILIARY: NETTAX(H) ! NET TAX PAYMENT OF HOUSEHOLD H $PROD:G t:0 O:PGC(H) Q:1 I:P(I) Q:INPUT(I,"G") $PROD:Z(I) s:1 O:P(I) I:W(F) Q:INPUT(F,I) $DEMAND:RA(H) s:1 D:P(I) Q:DEMAND(I,H) D:PGC(H) Q:DEMAND("G",H) E:W(F) Q:ENDOW(F,H) E:P(I) Q:INPUT(I,"G") R:NETTAX(H) * The net tax contribution of household H equals the cost $CONSTRAINT:NETTAX(H) NETTAX(H) =E= G * (THETA(H) - PGC(H) / SUM(I, P(I) * INPUT(I,"G"))); $OFFTEXT $SYSINCLUDE mpsgeset SAMUELSON * Auxiliary variables are non-negative by default. In this * model, we need to accomodate negative net tax contribution rates: NETTAX.LO(H) = -INF; $INCLUDE SAMUELSON.GEN SOLVE SAMUELSON USING MCP;
TABLE T(F,I) AD VALOREM TAX RATES ON FACTOR INPUTS TO PRODUCTION X Y K 0.1 0 L 0.3 0.3; $ONTEXT $MODEL:FIXED $SECTORS: Z(I) ! PRIVATE PRODUCTION G ! PUBLIC PRODUCTION $COMMODITIES: P(I) ! PRIVATE GOODS PRICES W(F) ! FACTOR PRICES PG ! COST INDEX FOR PUBLIC OUTPUT PGC(H) ! PRIVATE VALUATIONS $CONSUMERS: RA(H) ! REPRESENTATIVE AGENT GOVT ! GOVERNMENT (COLLECTS TAXES AND PURCHASES PUBLIC GOODS) $AUXILIARY: GP ! INDEX OF GOVERNMENT PRODUCTION $PROD:G O:PG Q:1 I:P(I) Q:INPUT(I,"G") $PROD:Z(I) s:1 O:P(I) I:W(F) Q:INPUT(F,I) A:GOVT T:T(F,I) $DEMAND:RA(H) s:1 D:P(I) Q:DEMAND(I,H) D:PGC(H) Q:DEMAND("G",H) E:W(F) Q:ENDOW(F,H) E:PGC(H) Q:1 R:GP $DEMAND:GOVT D:PG $CONSTRAINT:GP GP =E= G; $OFFTEXT $SYSINCLUDE mpsgeset FIXED $INCLUDE FIXED.GEN SOLVE FIXED USING MCP;
PARAMETER OMEGA(H) HOUSEHOLD SHARES OF GOVERNMENT SURPLUS /R 0.5, P 0.5/; $ONTEXT $MODEL:SUBSCRIBE $SECTORS: Z(I) ! PRIVATE PRODUCTION G ! PUBLIC PRODUCTION $COMMODITIES: P(I) ! PRIVATE GOODS PRICES W(F) ! FACTOR PRICES PGC(H) ! PRIVATE VALUATIONS PT ! TRANSFER PRICE INDEX $CONSUMERS: RA(H) ! REPRESENTATIVE AGENT GOVT ! GOVERNMENT (COLLECTS TAXES AND PURCHASES PUBLIC GOODS) $AUXILIARY: TG(H) ! TAX RATE ON PUBLIC PROVISION TO HOUSEHOLD H $PROD:G t:0 O:PGC(H) Q:1 A:GOVT N:TG(H) I:P(I) Q:INPUT(I,"G") $PROD:Z(I) s:1 O:P(I) I:W(F) Q:INPUT(F,I) $DEMAND:RA(H) s:1 D:P(I) Q:DEMAND(I,H) D:PGC(H) Q:DEMAND("G",H) E:W(F) Q:ENDOW(F,H) E:PT Q:OMEGA(H) $DEMAND:GOVT D:PT $CONSTRAINT:TG(H) PGC(H) =G= SUM(I, INPUT(I,"G") * P(I)); $OFFTEXT $SYSINCLUDE mpsgeset SUBSCRIBE $INCLUDE SUBSCRIBE.GEN SOLVE SUBSCRIBE USING MCP;