library(tidyverse)
# Fælles parametre
b <- 1/1000
F <- 500000
c <- 30
# Markedsstørrelse (årligt antal solgte sneakers)
S_dasadi <- 50000
S_jardonike <- 84500
S_trade <- S_dasadi + S_jardonikeDenne øvelse tager udgangspunkt i kapitel 8, og teorien om stordriftsfordele og nyere handelsteori. Målet er at opbygge en færdig model til at analysere, hvordan handel mellem to lande påvirker produktionen og priserne, når der er stigende skalaafkast og monopolistisk konkurrence. Hvad er ligevægten i forhold til antallet af firmaer, priser og produktion pr. firma, når der ikke er handel? Og hvordan ændrer det sig, når de to lande åbner for handel?
Scenariet
Antag, at der er to lande, Dasadi og Jardonike, som begge producerer sneakers. Indtil nu, har der ikke været nogen handel mellem de to lande, og begge lande har produceret sneakers til deres eget forbrug.
Produktionen af sneakers karakteriseres ved både stordriftsfordele på firmaniveauet og monopolistisk konkurrence. Det vil sige, at der er flere firmaer i de to lande, som producerer hver deres egne unikke sneakers.
Parametre
Vi antager, at de to lande har samme efterspørgselsforhold og samme omkostningsstruktur. Den eneste forskel er markedsstørrelsen \(S\). Tolk \(S\) som det samlede årlige marked for sneakers i hvert land.
I modellen antager vi derfor:
- samme faste omkostning: \(F\)
- samme marginalomkostning: \(c\)
- samme elasticitetsparameter: \(b\)
- forskellig markedsstørrelse: \(S_{\text{Dasadi}} < S_{\text{Jardonike}}\)
Tallene nedenfor er valgt, så de giver (nogenlunde) plausible ligevægtspriser og et overskueligt antal firmaer i hvert marked.
Funktioner
Vi skal tegne to figurer for hvert land:
- Det enkelte firmas ligevægt i forhold til pris/omkostninger og produktionen.
- Markedsligevægten i forhold til pris/omkostninger og antallet af firmaer.
For at gøre det nemmere, definerer vi først en række funktioner, som vi kan bruge til at beregne priser, marginalomkostninger, gennemsnitsomkostninger og så videre. p og mr er henholdsvis de inverse efterspørgsels- og marginalrevenue-funktioner for det enkelte firma (dvs. \(P(Q)\) og \(\text{MR}(Q)\)), men som tager skæringspunktet og hældningen fra den oprindelige efterspørgselsfunktion \(Q(P)\). AC og mc er hhv. gennemsnitsomkostninger og marginalomkostninger. Vi definerer en konstant marginalomkostning, ved at sætte den samme værdi for c for hver q. Til sidst har vi funktioner for både CC- og PP-kurverne, som vi bruger til at finde markedsligevægten.
p <- function(q, yintercept, dx) yintercept/dx - (q/dx)
mr <- function(q, yintercept, dx) yintercept/dx - ((q/dx) * 2)
AC <- function(q, F=F, c=c) F/q + c
mc <- function(q, c=c) rep(c, length(q))
cc <- function(n, S=S, F=F, c=c) n * F / S + c
pp <- function(n, b=b, c=c) c + 1/(b * n)Vi kan desuden definere hjælpefunktioner til at beregne ligevægten og tegne figurerne for det enkelte firma og markedet i hvert land. equilibrium_values beregner ligevægtsværdierne for antallet af firmaer, prisen, produktionen pr. firma og gennemsnitsomkostningerne i ligevægt, givet markedsstørrelsen \(S\), hvor resultaterne gemmes i et tibble (dataframe). firm tegner det enkelte firmas ligevægt, og mkt_eq tegner markedsligevægten mellem CC- og PP-kurverne.
equilibrium_values <- function(S, F = F, c = c, b = b) {
ne <- sqrt(S / (b * F))
Pe <- c + sqrt(F / (S * b))
qe <- S / ne
tibble(
S = S,
n = ne,
P = Pe,
q = qe,
AC = c + (F / qe)
)
}
firm <- function(S, F = F, c = c, title = NULL) {
ne <- sqrt(S / (b * F))
Pe <- c + sqrt(F / (S * b))
qe <- S / ne
intercept <- (S / ne + b * S * Pe)
slope <- b * S
pmax <- round(2 * Pe)
q <- seq(1, S)
df <- tibble(
q = q,
demand = p(q, yintercept=intercept, dx=slope),
mr = mr(q, yintercept=intercept, dx=slope),
mc = mc(q, c = c),
AC = AC(q, F = F, c = c)
) |>
filter(demand >= 0) |>
mutate(AC = ifelse(is.infinite(AC), NA_real_, AC))
ggplot(df, aes(x = q)) +
geom_line(aes(y = demand, colour = "D"), linewidth = 1) +
geom_line(aes(y = mr, colour = "MR"), linewidth = 1) +
geom_line(aes(y = mc, colour = "MC"), linewidth = 1) +
geom_line(aes(y = AC, colour = "AC"), linewidth = 1) +
geom_vline(xintercept = qe, linetype = "dashed") +
geom_hline(yintercept = Pe, linetype = "dashed") +
geom_point(
data = tibble(q = qe, y = AC(qe, F = F, c = c)),
aes(x = q, y = y),
inherit.aes = FALSE
) +
scale_colour_manual(
values = c(
"D" = darkblue,
"MR" = violet,
"MC" = grey,
"AC" = orange
)
) +
coord_cartesian(xlim = c(0, max(df$q)), ylim = c(0, pmax), expand = FALSE) +
labs(title = title, x = "q", y = "P, AC", colour = NULL) +
theme_minimal()
}
mkt_eq <- function(S, F = F, c = c, title = NULL) {
ne <- sqrt(S / (b * F))
Pe <- c + sqrt(F / (S * b))
nmax <- round(2 * ne)
pmax <- round(2 * Pe)
n <- seq(1, nmax)
df <- tibble(
n = n,
cc = cc(n, S = S, F = F, c = c),
pp = pp(n, b = b, c = c)
)
ggplot(df, aes(x = n)) +
geom_line(aes(y = cc, colour = "cc"), linewidth = 1) +
geom_line(aes(y = pp, colour = "pp"), linewidth = 1) +
geom_vline(xintercept = ne, linetype = "dashed") +
geom_hline(yintercept = Pe, linetype = "dashed") +
geom_point(
data = tibble(n = ne, y = Pe),
aes(x = n, y = y),
inherit.aes = FALSE
) +
scale_colour_manual(values = c("cc" = blue, "pp" = cyan)) +
coord_cartesian(xlim = c(0, nmax), ylim = c(0, pmax), expand = FALSE) +
labs(title = title, x = "n", y = "P, AC", colour = NULL) +
theme_minimal()
}Husk at definere eller erstatte farverne, hvis du kopierer funktionerne (scale_colour_manual i både firm og mkt_eq).
Efterspørgselskurven for det enkelte firma er nedadgående, fordi det producerer et unikt produkt (monopolistisk konkurrence). Vi har et udtryk for hvad firmaet producerer, nemlig:
\[ \begin{aligned} Q &= S \left[ \frac{1}{n} - b (P - \bar{P}) \right] \\ &= \left[\frac{S}{n} + Sb\bar{P}\right] - SbP \end{aligned} \]
Hældningen på efterspørgselskurven er derfor \(-Sb\), og skæringen med y-aksen er \(\frac{S}{n} + Sb\bar{P}\). Det er det, som vi bruger i funktionen firm til at tegne efterspørgselskurven for det enkelte firma.
Samme logik gælder for marginal revenue-kurven, som har samme skæringspunkt med y-aksen, men dobbelt så stejl hældning — altså, \(-2Sb\).
Autarki
Antag først, at der ikke er handel mellem de to lande. Hvert land udgør derfor sit eget marked, og ligevægten bestemmes separat af henholdsvis \(S_{\text{Dasadi}}\) og \(S_{\text{Jardonike}}\).
Beregn og sammenlign for hvert land:
- antallet af firmaer i ligevægt, \(n\)
- prisen, \(P\)
- produktionen pr. firma, \(q\)
- gennemsnitlige omkostninger, \(AC\)
# Beregn ligevægtsværdier for hvert land
equilibrium_values(S = S_dasadi, F = F, c = c, b = b)
equilibrium_values(S = S_jardonike, F = F, c = c, b = b)| Land | S | n | P | q | AC |
|---|---|---|---|---|---|
| Dasadi | 50000 | 10 | 130.00 | 5000 | 130.00 |
| Jardonike | 84500 | 13 | 106.92 | 6500 | 106.92 |
Resultaterne viser, at Jardonike har en større markedsstørrelse, og derfor er der flere firmaer i ligevægt, en lavere pris og en højere produktion pr. firma sammenlignet med Dasadi. Vi kan også se, at \(AC=P\), som er et karakteristisk træk ved monopolistisk konkurrence hvor der er fri adgang til markedet (dvs. ingen hindringer til nye firmaer).
Figurerne nedenfor viser autarkiligevægten i hvert land. Venstre panel viser det enkelte firmas ligevægt, mens højre panel viser markedsligevægten mellem CC- og PP-kurverne.
Vis R-kode
# Brug funktionerne til at tegne figurer for hvert land
plot_firm_D <- firm(S_dasadi, F = F, c = c)
plot_mkt_D <- mkt_eq(S_dasadi, F = F, c = c)
plot_firm_J <- firm(S_jardonike, F = F, c = c)
plot_mkt_J <- mkt_eq(S_jardonike, F = F, c = c)ggplot-figurer i én?
Man kan bruge pakker som patchwork eller cowplot til at kombinere figurerne. Især patchwork er ret intuitiv, fordi man nemt kan lægge to ggplot-objekter sammen med + for at få dem til at stå ved siden af hinanden.
library(patchwork)
plot_firm_D + plot_mkt_DMan kan læse mere om patchwork i pakkens dokumentationen. Ligeledes kan man læse om cowplot i dens dokumentationen.
Handel
Antag nu, at de to lande åbner for handel med hinanden. Når markederne integreres, bliver den samlede markedsstørrelse:
\[ S = S_{\text{Dasadi}} + S_{\text{Jardonike}} \]
Da alle øvrige parametre er ens på tværs af landene, er det alene det større samlede marked (\(S= 1.345\times 10^{5}\)), som flytter ligevægten i forhold til:
- antallet af firmaer i det samlede marked
- prisen på sneakers
- produktionen pr. firma.
Tabel 2 sammenligner ligevægtsværdierne for hvert land under autarki med ligevægtsværdierne under handel, mens figur 1 viser den nye ligevægt, når firmaerne konkurrerer i et fælles marked med størrelse \(S_{\text{Dasadi}} + S_{\text{Jardonike}}\).
| Scenarie | S | n | P | q | AC |
|---|---|---|---|---|---|
| Autarki: Dasadi | 50000 | 10.0 | 130.00 | 5000.00 | 130.00 |
| Autarki: Jardonike | 84500 | 13.0 | 106.92 | 6500.00 | 106.92 |
| Handel: integreret marked | 134500 | 16.4 | 90.97 | 8200.61 | 90.97 |
En naturlig opfølgning på denne øvelse er at undersøge, hvordan ændringer i de øvrige parametre (f.eks. \(F\), \(c\) eller \(b\)) påvirker ligevægten under både autarki og handel. For eksempel, hvordan ville en stigning i de faste omkostninger \(F\) påvirke antallet af firmaer og priserne i ligevægt? Eller hvordan ville en ændring i elasticitetsparameteren \(b\) påvirke markedsligevægten?
Når man nu har defineret funktionerne og opbygget modellen, er det nemt at eksperimentere med forskellige værdier for parametrene og se, hvordan det påvirker resultaterne. Det kan give en dybere forståelse af mekanismerne i modellen og de økonomiske principper, der ligger til grund for stordriftsfordele og monopolistisk konkurrence.
Læs mere
Denne øvelse er inspireret af Jonathan Connings undervisningsmateriale. Den store forskel er programmeringssproget: hvor vi bruger R, bruger han Python.