International økonomi
  • Software
    • Download R
    • Download RStudio
Penge og valuta

Købekraft og valutakurser

Dataøvelse
Købekraft og valutakurser
Udgivet

30. april 2026

Kodelinks
R kode

I denne øvelse skal vi undersøge købekraftsparitetsteorien (PPP: purchasing power parity) ved hjælp af rigtige data fra Verdensbanken. Her ser vi på både absolut og relativ PPP.

Jeg har valgt Australien og New Zealand som cases, da de er to økonomier, der er tæt forbundne med hinanden: blandt andet med forholdsvis høj samhandel og lignende forbrugerpræferencer. Derudover er begge lande relativt stabile økonomier.

Data og udfordringer

Man kan nemt downloade data ‘manuelt’ fra Verdensbankens hjemmeside. Men for at gøre det nemmere at arbejde med dataene i R, findes der forskellige pakker, der kan hente data direkte fra Verdensbanken. Her bruger jeg WDI-pakken, som gør det nemt at hente både prisindeks (CPI) og valutakurser (FX).

#install.packages("WDI")
library(WDI)
library(tidyverse)

# Hent data fra Verdensbanken
fx <- WDI(indicator='PA.NUS.FCRF', country=c('AU','NZ'), start=2000, end=2025)
cpi <- WDI(indicator='FP.CPI.TOTL', country=c('AU','NZ'), start=2000, end=2025)

En central udfordring ved at teste PPP empirisk er, at der ikke findes direkte tilgængelige, internationalt sammenlignelige prisniveaudata. Forbrugerprisindekset (CPI) måler prisudviklingen inden for hvert land over tid. Men det fortæller os ikke, hvor højt eller lavt prisniveauet er i et land sammenlignet med et andet land.

For at overkomme dette problem ‘snyder’ vi lidt: Vi bruger Verdensbankens PPP-omregningsfaktor (PPP conversion factor), som angiver, hvor mange lokale valutaenheder der svarer til én international dollar (en hypotetisk valuta med samme købekraft som den amerikanske dollar). Ved at gange CPI-værdien med PPP-faktoren får vi et mål for det samlede prisniveau, der er sammenligneligt på tværs af lande.

Selvom det ikke er perfekt, giver det et i hvert fald et approksimativt mål for prisniveauer, som vi kan bruge til at undersøge absolut PPP.

ForsigtigEr det her en ‘rigtig’ test af PPP?

Nej, det er det ikke. Det er en meget forenklet test, der bygger på flere antagelser og datakonstruktioner. For det første bruger vi CPI gange PPP-faktor som en proxy for det samlede prisniveau, hvilket ikke fanger alle aspekter af prisniveauet i et land. For det andet ser vi kun på to lande, hvilket begrænser generaliserbarheden af resultaterne. (Man får helt sikkert andre resultater med andre lande!) For det tredje ignorerer vi mange andre faktorer, der kan påvirke valutakurser og prisniveauer, såsom handelsbarrierer og transportomkostninger.

adjust_factor <- WDI(indicator='PA.NUS.PRVT.PP', country=c('AU','NZ'), start=2000, end=2025)

# Konstruer sammenlignelige prisniveauer
prices <- cpi %>%
  left_join(adjust_factor %>% select("iso2c", "year", "PA.NUS.PRVT.PP"), by=c("iso2c", "year")) %>%
  mutate(
    price_level = FP.CPI.TOTL * PA.NUS.PRVT.PP
  ) %>%
  filter(!is.na(price_level))

Absolut PPP

Absolut PPP bygger på idéen om loven om én pris. Identiske varer bør koste det samme i forskellige lande, når priserne omregnes til samme valuta. Hvis dette gælder for hver vare, må det også gælde for alle varer, og dermed det samlede prisniveau.

Formelt kan absolut PPP udtrykkes som:

\[E_\frac{i}{j} = \frac{P_i}{P_j}\]

Hvor:

  • \(E_\frac{i}{j}\) er den nominelle valutakurs (lokale valutaenheder per fremmed valuta)
  • \(P_i\) er prisniveauet i land \(i\)
  • \(P_j\) er prisniveauet i land \(j\)

Hvis absolut PPP holder, skal valutakursen mellem to lande afspejle forholdet mellem deres prisniveauer.

Datakonstruktion

Vi konstruerer et mål for prisniveauet ved at gange CPI med PPP-omregningsfaktoren. Dette giver os et estimat for, hvad det samlede prisniveau ville være.

Derefter beregnes forholdet mellem Australiens og New Zealands prisniveau (ratio_AU_NZ), som så kan sammenlignes med den faktiske valutakurs (fx_AU_NZ).

# Beregn valutakursforholdet
compare_fx <- fx %>%
  filter(!is.na(PA.NUS.FCRF)) %>%
  select(iso2c, year, PA.NUS.FCRF) %>%
  pivot_wider(names_from = iso2c, values_from = PA.NUS.FCRF) %>%
  mutate(
      fx_AU_NZ = `AU` / `NZ`
    ) %>%
  select(year, fx_AU_NZ)

# Sammenlign prisniveauer og valutakurs
compare <- prices %>%
  filter(!is.na(price_level)) %>%
  select(iso2c, year, price_level) %>%
  pivot_wider(names_from = iso2c, values_from = price_level) %>%
  mutate(
    ratio_AU_NZ = `AU` / `NZ`
  ) %>%
  select(year, ratio_AU_NZ) %>%
  left_join(compare_fx, by="year")
Tabel 1: Data om det relative prisniveau og valutakursen
# Plot både ratio_AU_NZ og fx_AU_NZ
p1 <- compare %>%
  pivot_longer(cols = c(ratio_AU_NZ, fx_AU_NZ), names_to = "variable", values_to = "value") %>%
  ggplot(aes(x = year, y = value, color = variable)) +
  geom_line(linewidth = 1) +
  labs(
    x = "År",
    y = "Ratio (AU/NZ)",
    color = "Variabel"
  ) +
  theme_minimal() +
  scale_color_manual(
    values = c(ratio_AU_NZ = blue, fx_AU_NZ = red),
    labels = c(ratio_AU_NZ = "Relativt prisniveau", fx_AU_NZ = "Valutakurs")
  )
Figur 1: Sammenligning af det relative prisniveau og valutakursen

Hvis absolut PPP holder, bør de to linjer følge hinanden.

Fortolkning

Figur 1 viser udviklingen i det relative prisniveau (blå) og den faktiske valutakurs (rød) over tid. Hvis absolut PPP holder perfekt, bør de to linjer falde sammen.

Vi kan også se nærmere på afvigelsen fra PPP:

# Beregn og vis afvigelsen fra absolut PPP
p2 <- compare %>%
  mutate(
    ppp_deviation = (fx_AU_NZ - ratio_AU_NZ) / ratio_AU_NZ * 100
  ) %>%
  ggplot(aes(x = year, y = ppp_deviation)) +
  geom_line(linewidth = 1, color = violet) +
  geom_hline(yintercept = 0, linetype = "dashed", color = grey) +
  labs(
    x = "År",
    y = "Afvigelse (%)"
  ) +
  theme_minimal()
Figur 2: Afvigelse fra absolut PPP
  • En positiv afvigelse betyder, at den australske dollar er stærkere (dyrere) end PPP foreskriver.
  • En negativ afvigelse betyder, at den australske dollar er svagere (billigere) end PPP foreskriver.

Relativ PPP

Relativ købekraftsparitet er en svagere version af PPP-teorien, der fokuserer på ændringer snarere end niveauer. Ifølge relativ PPP kan forskellen i inflationsrater mellem to lande forklarer ændringer i valutakursen på lang sigt.

NoteBeregning af inflationsrater

Til relativ PPP behøver vi ikke PPP-omregningsfaktoren, da vi kun ser på ændringer i CPI over tid. Inflationsraten beregnes direkte som den procentvise ændring i CPI fra år til år.

Formelt kan relativ PPP udtrykkes som:

\[\%\Delta E_\frac{i}{j} \approx \pi_i - \pi_j\]

Hvor:

  • \(\%\Delta E_\frac{i}{j} = \frac{E_t - E_{t-1}}{E_{t-1}}\) er den procentvise ændring i valutakursen
  • \(\pi_i\) er inflationsraten i hjemlandet
  • \(\pi_j\) er inflationsraten i udlandet

Hvis Australien har højere inflation end New Zealand, bør den australske dollar depreciere i forhold til den newzealandske dollar med cirka samme procent.

# Beregn inflationsrater og valutakursændringer (relativ PPP)
inflation_fx_compare <- cpi %>%
  filter(!is.na(FP.CPI.TOTL)) %>%
  select(iso2c, year, FP.CPI.TOTL) %>%
  pivot_wider(names_from = iso2c, values_from = FP.CPI.TOTL, names_prefix = "price_") %>%
  mutate(
    inflation_AU = (price_AU - lead(price_AU)) / lead(price_AU) * 100,
    inflation_NZ = (price_NZ - lead(price_NZ)) / lead(price_NZ) * 100,
    inflation_diff = inflation_AU - inflation_NZ
  ) %>%
  left_join(
    compare_fx %>%
      mutate(
        fx_change = (fx_AU_NZ - lead(fx_AU_NZ)) / lead(fx_AU_NZ) * 100
      ) %>%
      select(year, fx_change),
    by = "year"
  ) %>%
  select(year, inflation_diff, fx_change)
Tabel 2: Data om inflation og valutakursen
# Vis sammenhæng mellem inflationsdifferential og valutakursændring (relativ PPP)
p3 <- inflation_fx_compare %>%
  ggplot(aes(x = inflation_diff, y = fx_change)) +
  geom_point(size = 3, color = darkblue, alpha = 0.6) +
  geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = grey) +
  labs(
    x = "Inflationsdifferential (AU − NZ, %)",
    y = "Valutakursændring (AU/NZ, %)"
  ) +
  theme_minimal() +
  geom_smooth(method = "lm", se = FALSE, color = red, linewidth = 1)

# Estimer sammenhængen mellem inflationsdifferential og valutakursændring (OLS)
rel_ppp_model <- lm(fx_change ~ inflation_diff, data = inflation_fx_compare)
Figur 3: Sammenhæng mellem inflationsdifferential og valutakursændring
Tabel 3: Valutakursændring som funktion af inflationsdifferential
Koefficient (standard­fejl)
(Intercept) 0.04 (0.695)
Inflationsdifferential 2.8** (0.920)
No. Obs. 24
R² 0.291

* \(p<0.05\); ** \(p<0.01\); *** \(p<0.001\).

Fortolkning

Figur 3 viser sammenhængen mellem inflationsdifferentiallet (x-aksen) og ændringen i valutakursen (y-aksen).

  • Den stiplede 45-graders linje viser den teoretiske sammenhæng ifølge relativ PPP: Hvis Australien har 2% højere inflation end New Zealand, bør den australske dollar depreciere med cirka 2% i forhold til den newzealandske dollar.
  • Regressionslinjen viser den faktiske sammenhæng i dataene. Hvis relativ PPP holder godt, bør regressionslinjen ligge tæt på 45-graders linjen.

Ifølge tabel 3 er hældningskoefficienten for inflationsdifferentialet 2.77. Dette indikerer en positiv sammenhæng, der egentlig er større end hvad relativ PPP forudsiger. R² er 0.291, hvilket betyder, at 29.1% af variationen i valutakursændringer kan forklares af forskelle i inflationsrater mellem de to lande.

Diskussion

Holder PPP-teorien? Ikke særlig meget, baseret på de data vist her. Der er tydelige afvigelser fra både absolut og relativ PPP.

En af forklaringer for den store afvigelse fra absolut PPP kan være, at der er mange andre faktorer end prisniveauer, der påvirker valutakurserne. I Australiens tilfælde var perioden mellem ca. 2005 og 2015 præget af en kraftig udvikling i minedrift, hvilket styrkede den australske dollar betydeligt, selvom prisniveauet i Australien ikke nødvendigvis steg tilsvarende i forhold til New Zealand.

Derudover ser vi på forbrugerpriserne, som inkluderer både handelbare og ikke-handelbare varer. Handelbare varer bør i teorien følge loven om én pris tættere, mens ikke-handelbare varer kan have meget forskellige priser på tværs af lande uden at skabe arbitragemuligheder.

TipHvad skal jeg lære af det her?

Når man fx skriver sin bacheloropgave, er én af udfordringerne ofte at finde data, der passer til den teori, man gerne vil teste. I det her eksempel er det svært at finde direkte mål for prisniveauer, så vi må bruge en ‘proxy’ (CPI gange PPP-faktor) for at få et sammenligneligt mål. Man skal altid være opmærksom på, hvilke antagelser og begrænsninger der ligger i den slags datakonstruktioner.

NF SDU

Nick Ford
Syddansk Universitet
Økonomisk Institut

© 2026 Nick Ford.