Extending the Muth-Mills Model to Different Income Groups? I am exploring the generalized treatment of the Muth-Mills monocentric city model covered in Brueckner's article. The model is based on an assumption of homogenous income levels across the city. However, a more realistic assumption would be to assume the presence of different income groups, which theoretically results in different bid-rent curves. How might I modify the model given in the article to reflect this?
One way to expand the model is to allow for different income classes as stated in assumption (1) below. Let the model be completely standard with all the usual assumption of the monocentric city model as laid out in Brueckner (1987) the paper you cite.
I will only present the basic idea of the expanded model. Hence I do not give proof of existence of equilibria, proof of uniqueness, nor a comparative static analysis or numerical procedures to solve for equilibrium given values of exogenous variables.
I will allow myself to assume Cobb-Douglas preferences with residents utility given as
$$U(c,h) = A\left(\frac{c}{1-\alpha}\right)^{1-\alpha}\left(\frac{h}{\alpha}\right)^\alpha,$$
where $c$ is composite good and $h$ is square meters of housing.
It is well known that the Marshall demands are $c^\star=(1-\alpha)I/p_c$ and $h^\star=\alpha I/p_h$ with $I$ being income. Plugged into utility function results in the value function
$$V(p_c,p_h,I) = \frac{AI}{p_h^\alpha p_c^{1-\alpha}} = \frac{I}{p_h^\alpha},$$
having assumed that $p_c=1$ and $A=1$. The value function tells us that the max price a consumer can pay for a unit of housing $h$ if she is to attain the utility level $u$ is
$$\frac{I}{p_h^\alpha} = u \Leftrightarrow p(I,u) = \left(\frac{I}{u}\right)^\frac{1}{\alpha},$$
found by inverting the value function to express price as a function of income and utility (which offcourse is the well known bid-function).
The next step is to find the bid-lot size which is the amount of housing consumed by a resident attaining the utility level $u$ having income $I$. To derive this I will simply use that the Marshall demand $h^\star_M(p,I)$ with bid-function $p(I,u)$ substituted for price is the bid-lot size $h_b(u,I)$ [same holds offcourse for the Hicks demand]. Hence the bid lot size is given as
$$h^\star_M(p(I,u),I) = h_b(I,u) = \frac{\alpha I}{p(I,u)} = \alpha I^{1-1/\alpha}u^{1/\alpha},$$
which is decreasing in income because when consumer gets higher income and utility attained is held constant the price offered for housing is increase and hence less housing consumed. Importantly this is not a description of equilibrium behavior, what is being said is that if the consumer has higher income she can offer a higher price for a unit of housing while retaining utility level $u$ but that will require her to substitute away from housing over to consumption of $c$.
I now add the linear geometry and linear transport costs of standard monocentric city expositions. Hence the city expands from center at $d=0$ to potentially infinity $d \in [0,\infty)$ and transport costs are $t(d) = t d$ such that income net transport is $I(d) = w-td$.
I now introduce the extending assumption that
Assumption (1): There are two income classes $j=\{1,2\}$ with incomes exogenously given $w_2&gt;w_1$ and size of population income segments exogenously given as $N_1$ and $N_2$.
and for ease of exposition I will let housing be exogenously
Assumption (2): At location $d$ the housing is given as $H(d)$,
the second assumption is not so restrictive as it may appear (but that is easier to illustrate later).
Given the wages I have income net transport for the two classes $I_1(d) = w_1 - td$ and $I_2(d)=w_2 - td$ which are plugged into bid function $p(u,I)$ and bid lot size $h_m(u,I)$ to get the main result that
$$(3)\ \ \ p_j(u_j,d) = \left(\frac{w_j - td}{u_j}\right)^{1/\alpha} \ \ \ \ h_j^m(u_j,d) =\alpha (w_j - td)^{1-1/\alpha}u_j^{1/\alpha},$$
which is really not new in the sense that it is completely like the model with homogenous residents as in the Brueckner (1987) model just adding Cobb-Douglas preferences.
To illustrate the use of these functions select parameter values for $(w_1,w_2,\alpha,t)$. Assume existence of equilibrium with equilibrum utilities $u^\star_1$ and $u_2^\star$ and select values for these ($u_2^\star &gt; u_1^\star$ rich get higher utlity in equilibrium). Also select a value for the alternative use of land $r_a$ referred to as the land rent (not to be confused by the rent paid for land by producers of housing if that sector was endogenized in the model).
In the figure below the bid function $p_j(u_j,d)$ of the high and low income are illustrated. Residents will live where they bid the highest value for housing. The city expands to where the bid-rents of either income class is higher than the land rent.





Two observations are made:
Observation (1): The low income resident will live in the center of the city (this requires housing to be normal good)
Observation (2): There are perfect income stratification with low income in one area and high income in another area
To close the model the housing market must be in equilibrium. Let $[0,\hat d]$ be the locations where the low income reside. Then for $d \in [0,\hat d]$ housing demand is given as $h_{j}^m(u_{j},d)$ per person and units of housing is $H(d)$ so population density at $d$ must be $H(d)/h_{j}^m(u_{j},d)$ and integrating over $[0,\hat d]$ this must be equal to $N_1$ the number of low income residents I have exogenously stipulated to live in the city. So equilibrium conditions includes that
$$N_1 = \int_0^{\hat d} \frac{H(t)}{h_{1}^m(u_{1},t)} dt$$
and
$$N_2 = \int_{\hat d}^{\bar d} \frac{H(t)}{h_{2}^m(u_{2},t)} dt.$$
As is hopefully apparent from the figure above it is the case that: Given two utilities $(u_1,u_2)$ the bid functions determine $\hat d$ and $\bar d$ - where $\bar d$ is the value of $d$ where $p_2(u_2,d) = r_a$ - and given these values the integrals can be calculated to get $N_1(u_1,u_2)$ and $N_2(u_1,u_2)$. When the equilibrium is unique these equations
$$N_1 = N_1(u_1,u_2) \ \ \ N_2=N_2(u_1,u_2),$$
will be invertible such that equilibrium utilities can be found from the exogenously given $N_1$ and $N_2$.
Proof of existence and uniqueness of equilibrium for a model with $K$ income classes and standard restrictions on the utility functions (not assuming Cobb Douglas) are given in
John Hartwick (1976) Comparative Statics of a Residential Economy with
Several Classes Journal of Economic Theory 13, 396-413.
which also include comparative statics of the model.
Proof of existence and uniqueness of equilibrium for a model is also given in
Fujita (1989) Urban economic theory: Land use and city size
which also offers an algorithm for solving for the equilibrium.
See also
Puga and Duranton (2015) Urban Land Use
for discussion of main results of this and other extensions and empirical relevance of the models (but not detailed exposition).
Note on housing supply: Instead of assuming housing to be exogenously given I could have followed Brueckner (1989) and assumed land to exogenously given $L(d)$ and then housing be produced by constant returns to scale production under perfect competition using capital and land with the capital supply being infinitely price elastic and having price $r_K$ in which case housing supplied is a function of $d$ through $p(d)$. So housing supply is a function of the price $H(p)$ but at any distance $d$ the price residents are willing to give is set by the bid function which is a function of $d$ hence either way we get $H(d)$.
Here is some really fast written R-code implementing the solution algorithm in Fujita (1989):
library(rootSolve)

a &lt;- 0.35
t &lt;- 200
w &lt;- c(6000,12000)
N &lt;- c(500,500)
J &lt;- 2
x &lt;- rep(1,J+1)

u &lt;- rep(170,J)


# Function to make bid-max lot size for agent of type j
# with income and utility (w_j,u_j). 
# Bid-max lot size is a function of distance to center d
# given type specifics (w_j,u_j).

make_g &lt;- function(u_j,w_j,t,a)
    {
        g &lt;- function(d)
            {
                nominator &lt;- a*u_j^(1/a)
                denominator &lt;- (w_j-t*d)^((1-a)/a)*.6*pi*d
                bid_lot &lt;- nominator/denominator
                # return should be 1/bid_lot
                # but denominator can be 0 so do not calculate it
                # and use it as denominator instead 
                denominator &lt;- ifelse((w_j-t*d)&gt;0,denominator,0)
                return(denominator/nominator)
            }
        return(g)
    }


# Solve the integral of g with respect to r from x_L = x_j to x_U = x_j+1
# such that the integral equals N_j 

# Initiate with j=1 so x_l is set to 0 and u_j is some guess
j &lt;- 1
x_L &lt;- x[j]
u_j &lt;- u[j]
    
    # Get exogenous income and population size for relevant segment
    # of population.
    w_j &lt;- w[j]
    N_j &lt;- N[j]

    g &lt;- make_g(u_j,w_j,t,a)
    v &lt;- function(x_U) {return(N_j-integrate(g,x_L,x_U)$value)} 
    x[j+1] &lt;- uniroot(v,c(x_L+0.0001,500))$root

# Initiate j=2
j &lt;- 2
    
    # Find u_2 given I_1,I_2 at x and u_1
    u[j] &lt;- u[j-1]*(w[j] - t*x[j])/(w[j-1]-t*x[j])

x_L &lt;- x[j]
u_j &lt;- u[j]

    # Get exogenous income and population size for relevant segment
    # of population.
    w_j &lt;- w[j]
    N_j &lt;- N[j]

    g &lt;- make_g(u_j,w_j,t,a)
    v &lt;- function(x_U) {return(N_j-integrate(g,x_L,x_U)$value)} 
    x[j+1] &lt;- uniroot(v,c(x_L+0.0001,500))$root



# Calculate price at x[j+1]
j &lt;- 3  
p_edge &lt;- ((w[j-1] - t*x[j])/u[j-1])^(1/a)
x
u
p_edge

p_max &lt;- (w[1]/u[1])^(1/a)+10
plot(x[1]:(x[J+1]+1),type=&quot;n&quot;,ylim=c(0,p_max),ylab=&quot;housing price&quot;,xlab=&quot;distance to city center&quot;)
colors &lt;- c(&quot;blue&quot;,&quot;red&quot;)
for (j in 1:J)
    {
        x_L &lt;- x[j]
        x_U &lt;- x[j+1]

        d &lt;- seq(0,x[J+1],length.out=100)
        u_j &lt;- u[j] 
        p &lt;- ((w[j] - t*d)/u_j)^(1/a)
        points(d,p,type=&quot;l&quot;,col=colors[j])
    }

abline(v=x[2],col=&quot;grey&quot;)
abline(h=p_edge,col=&quot;black&quot;)
legend(12,20000,c(&quot;bid function (low income)&quot;,&quot;bid function (high income)&quot;,&quot;sorting threshold&quot;,
&quot;land rent&quot;),
col=c(&quot;blue&quot;,&quot;red&quot;,&quot;grey&quot;,&quot;black&quot;),cex=0.7,bty=&quot;n&quot;,pch=24)
#savePlot(&quot;monocentric.jpg&quot;,type=&quot;jpg&quot;)