Production & Factor Prices

Cobb–Douglas production

\[Y = A\,K^{\alpha} L^{1-\alpha}\]

  • \(A\) = total factor productivity, \(K\) = capital, \(L\) = labor, \(\alpha\) = capital’s share.
  • Marginal products: \(MPL = (1-\alpha)\dfrac{Y}{L}\),   \(MPK = \alpha\dfrac{Y}{K}\).
  • Factor prices (competitive firms): real wage \(W/P = MPL\); real rental \(R/P = MPK\).
  • Income shares are constant: labor gets \((1-\alpha)Y\), capital gets \(\alpha Y\) — and they add up to Y (Euler’s theorem).

Try it. Add capital and watch the wage rise but the rental rate fall (each machine earns less). Change \(\alpha\) to re-slice the pie between labor and capital.

#| standalone: true
#| viewerHeight: 540

library(shiny)
ui <- fluidPage(
  tags$head(tags$style(HTML("body{font-family:'Inter',system-ui,sans-serif;}
    .sb{background:#f0f4f8;border-radius:6px;padding:12px 14px;margin-top:10px;font-size:14px;line-height:1.85;} .sb b{color:#1f3b73;}"))),
  sidebarLayout(
    sidebarPanel(width=4,
      sliderInput("A","Productivity  A:",min=0.5,max=3,value=1,step=0.1),
      sliderInput("alpha","Capital share  α:",min=0.1,max=0.9,value=0.3,step=0.05),
      sliderInput("K","Capital  K:",min=10,max=500,value=125,step=5),
      sliderInput("L","Labor  L:",min=10,max=500,value=100,step=5),
      uiOutput("sb")),
    mainPanel(width=8, plotOutput("plot",height="460px"))))
server <- function(input,output,session){
  Yf <- function(K,L,A,a) A*K^a*L^(1-a)
  output$plot <- renderPlot({
    a<-input$alpha; A<-input$A; K<-input$K
    Lg <- seq(10,500,length.out=200); Yg <- Yf(K,Lg,A,a)
    Ystar <- Yf(K,input$L,A,a); mpl <- (1-a)*Ystar/input$L
    par(mar=c(4.2,4.6,1,1))
    plot(Lg,Yg,type="l",col="#1f3b73",lwd=3,xlab="Labor  L",ylab="Output  Y",las=1,bty="l",cex.lab=1.15)
    points(input$L,Ystar,pch=19,col="#1c6b4a",cex=1.7)
    # tangent (slope = MPL)
    abline(a=Ystar-mpl*input$L,b=mpl,col="#b5462a",lwd=1.5,lty=2)
    legend("topleft",c("Production function Y(L)","Current point","Slope = MPL (real wage)"),
           col=c("#1f3b73","#1c6b4a","#b5462a"),lwd=c(3,NA,1.5),pch=c(NA,19,NA),lty=c(1,NA,2),bty="n")
  })
  output$sb <- renderUI({ a<-input$alpha; Y<-input$A*input$K^a*input$L^(1-a)
    mpl<-(1-a)*Y/input$L; mpk<-a*Y/input$K
    HTML(sprintf("<div class='sb'>Output <b>Y = %.0f</b><br>Real wage W/P = MPL = <b>%.2f</b><br>Real rental R/P = MPK = <b>%.2f</b><br>Labor income = <b>%.0f</b> (%.0f%%)<br>Capital income = <b>%.0f</b> (%.0f%%)</div>",
      Y,mpl,mpk,(1-a)*Y,100*(1-a),a*Y,100*a)) })
}
shinyApp(ui,server)

What to notice

  • More capital → wage up, rental down (diminishing returns to capital).
  • More labor → wage down, rental up.
  • The shares (labor \(1-\alpha\), capital \(\alpha\)) never change with K or L — only moving \(\alpha\) re-slices the pie.