Entmystifizierung der ICP-Kaufkraftparitätsberechnungen mit Python: Globale Ergebnisse
HeimHeim > Blog > Entmystifizierung der ICP-Kaufkraftparitätsberechnungen mit Python: Globale Ergebnisse

Entmystifizierung der ICP-Kaufkraftparitätsberechnungen mit Python: Globale Ergebnisse

Dec 23, 2023

Ergebnisse des ICP sind unter icp.worldbank.org verfügbar. Diese von Edie Purdie herausgegebene Blogreihe deckt alle Aspekte des ICP ab und untersucht die Verwendung dieser Daten durch Forscher, politische Entscheidungsträger, Ökonomen, Datenwissenschaftler und andere. Wir ermutigen Benutzer, ihre Datenanwendungen und Erkenntnisse in dieser Blogserie über [email protected] zu teilen.

Wie viele Leser wissen, erstellt das Internationale Vergleichsprogramm (ICP) Kaufkraftparitäten (KKP) und vergleichbare Preisniveauindizes für jede seiner über 170 teilnehmenden Volkswirtschaften sowie KKP-basierte Volumina und Pro-Kopf-Maßeinheiten für das Bruttoinlandsprodukt und seine Ausgabenkomponenten. PPPs wandeln verschiedene Währungen in eine gemeinsame Währung um und gleichen im Zuge der Umrechnung ihre Kaufkraft aus, indem sie Unterschiede im Preisniveau zwischen Volkswirtschaften berücksichtigen und ein Maß dafür liefern, was die lokale Währung einer Volkswirtschaft in einer anderen Volkswirtschaft kaufen kann.

Der PPP-Produktionsprozess des ICP umfasst viele Phasen, einschließlich mehrstufiger Berechnungen auf nationaler, regionaler und globaler Ebene. Dieser Blog ist Teil unserer laufenden Öffentlichkeitsarbeit, die sich auf die Transparenz des Prozesses und der Methoden konzentriert, die bei der Erstellung der Programmergebnisse eingesetzt werden. Es ist der zweite Blog in der Reihe „Demystifying ICP Purchase Power Parity calces using Python“. Zusammen bieten diese Blogs eine vollständig transparente Aufzeichnung des Berechnungsprozesses

Im ersten Blog wurden die Schritte zur Schätzung der KKP für Länder innerhalb einer einzelnen Region beschrieben, wie sie von den ICP Regional Implementing Agencies berechnet wurden. Dieser zweite Blog konzentriert sich auf das Verfahren zur Verknüpfung regionaler PPPs mit einem globalen Satz von PPPs. Wir verwenden wiederum simulierte Durchschnittspreis- und Ausgabendaten und führen die Berechnung mit Python durch, einer kostenlosen Open-Source-Programmiersprache.

Eine detaillierte Übersicht über die methodischen Schritte zur Berechnung und Aggregation von KKPs zwischen Regionen finden Sie im Abschnitt „Methodik“ der ICP-Website und in Kapitel 26 „Verknüpfung und Berechnung globaler Ergebnisse“ der ICP-Betriebsrichtlinien und -Verfahren zur Messung der Tatsächliche Größe der Weltwirtschaft.

Was folgt, sind Codeauszüge unter Verwendung eines Jupyter-Notizbuchs, die sequentiell organisiert sind, um zu verstehen, wie globale ICP-PPPs geschätzt werden. Klicken Sie auf jede Registerkarte, um den bei jedem Schritt angewendeten Python-Code anzuzeigen. Das vollständige Notebook mit dem gesamten Codesatz in einer ausführbaren Online-Umgebung ist hier verfügbar (es sind keine Installationen erforderlich, aber das Laden kann bei den ersten paar Malen einige Zeit dauern).

Wir beginnen mit dem Laden der für die Berechnungen notwendigen Eingabedatensätze. Dazu gehören jährliche nationale Durchschnittspreisdaten, Ausgabendaten und regionale KKP. Eine Übersicht über die Preis- und Ausgabendaten, die zur Schätzung von KKPs erforderlich sind, finden Sie im World Bank Data Blog. Wie misst der ICP das Preisniveau weltweit?

## Bibliotheken laden, Pandas als PD importieren, Numpy als Npimport, Statsmodels.api als SM importieren

#Preisdaten laden

#Laden Sie regionale PPP-Daten

Häufige Benutzer von ICP-Daten werden sich daran erinnern, dass die ICP-Ausgabenklassifizierung die Ausgaben für Endprodukte und -dienstleistungen in verschiedene Ebenen unterteilt und 155 Grundrubriken als die niedrigste Ebene definiert, auf der die teilnehmenden Volkswirtschaften explizite Ausgaben schätzen können. Jede Basisposition besteht aus einer Gruppe ähnlicher, genau definierter Waren oder Dienstleistungen und stellt die unterste Ebene dar, für die KKPs berechnet werden. Wie in unserem vorherigen Blog konzentrieren wir uns als Beispiele für unsere Berechnung auf drei Grundüberschriften („bh“): Bekleidung, Reis und Schweinefleisch.

Darüber hinaus verwenden wir in unserem Beispiel 11 Länder, die jeweils zu einer von drei verschiedenen Regionen gehören. Im ICP-Rahmen stellen Regionen den ersten Baustein im Prozess länderübergreifender Vergleiche dar. Die regionalen Durchführungsstellen sind für die Berechnung der regionalen KKP auf der Grundlage der von den teilnehmenden Volkswirtschaften bereitgestellten Preise und volkswirtschaftlichen Gesamtrechnungsausgaben verantwortlich. Jede Region benennt ein Land innerhalb ihrer Region als Numeraire und regionale KKPs werden in Bezug auf diesen regionalen Numeraire berechnet. In unserem unten dargestellten Beispiel ist Land 2 der Numeraire für Region A, Land 6 für Region B und Land 11 für Region C.

Um die KKP zwischen Regionen zu schätzen, identifizieren wir ein globales Numeraire-Land. Im ICP fungieren die Vereinigten Staaten von Amerika als globales Referenzland. In unserem Beispiel fungiert Land 11 als globaler Numerär und Region C als Referenzregion. Es ist erwähnenswert, dass die Wahl des Basislandes keinen Einfluss auf die Ergebnisse hat, da die aktuelle KKP-Methodik sicherstellt, dass die Schätzungen unabhängig vom Basisland sind, wie unten erläutert.

Zahl = 'C'

numeraire_c = 'country11'

Regionale KKPs werden dann über sogenannte „Linking Factors“ mit dem globalen Numeraire verknüpft. Hierbei handelt es sich um Skalare, die für jede Region mithilfe einer Regressionsmethode geschätzt werden, die als „Weighted Region Product Dummy“ (RPD-W) bekannt ist.

Die RPD-W-Methode wird innerhalb jeder Grundrubrik durchgeführt, indem der Logarithmus der beobachteten Artikelpreise des Landes, der unter Verwendung der regionalen Grundrubrik-KKPs des Landes in einen gemeinsamen regionalen Numéraire umgewandelt wird, auf Artikeldummies (einer für jeden Artikel) und Regionsdummies ( eine für jede Region außer der Region des globalen Numeraires).

Die RPD-W-Methode bezieht auch die vom Land gemeldeten Wichtigkeitsindikatoren auf Elementebene mit der Idee ein, weniger repräsentative Elemente während der Berechnung „herunterzugewichten“ (eine detaillierte Übersicht über die Ableitung von Wichtigkeitsindikatoren finden Sie in Kapitel 20 der operativen Leitlinien). und Verfahren zur Messung der tatsächlichen Größe des Weltwirtschaftsberichts).

für bh inprices.bh.unique():

tempdf=Preise[Preise.bh == bh]

X=tempdf.loc[:, [x for '])

wts=tempdf['imp']

wts_cpd=sm.WLS(y, X,weights=wts)

res=wts_cpd.fit()

res_eparams=np.exp(res.params)

l_coef.append(res_eparams) l_bh.append(bh)

coef = np.array(l_coef, dtype=float)

cols = list(X) #Spaltenköpfe von X als Liste speichern

coef[coef == 1] = np.nan #%% Ersetze PPPs, die exp(0)=1 waren, durch 'np.nan'

print("\n","Verknüpfungsfaktoren:", "\n") print(df_bhppp ,"\n")

bh

Region

lf

ppp_regLF=pd.merge(ppp_reg, df_bhppp, how=:'inner', on=( 'bh','region'))

ppp_regLF['ppp_linked']=ppp_regLF[ 'ppp_reg']*ppp_regLF['lf']

ppp_regLF = ppp_regLF.drop(['ppp_reg'], axis= 1)

ppp_regLF=ppp_regLF.pivot(index="bh",

ppp_regLF=ppp_regLF.pivot(index="bh",

columns="Land",

Werte="ppp_linked").reset_index()

#Spalten mit Numeraire als Spalte1 sortieren und drucken

print("\n","Global Basic Heading PPPs:", "\n") print(ppp_regLF ,"\n")

bh

Land11

Land1

Land10

Land2

Land3

Land4

bh

Land5

Land6

Land7

Land8

Land9

Sobald global verknüpfte KKP der Basisrubrik durch Multiplikation regionaler KKP der Basisrubrik mit Verknüpfungsfaktoren ermittelt werden, werden sie anschließend unter Verwendung der Ausgabenwerte der Volkswirtschaftlichen Gesamtrechnungen in lokalen Währungseinheiten für jedes Land als Gewichte oder Volumina aggregiert.

#Grundlegende Ausgabenwerte für Rubriken laden

#Sollte bh und Länder mit dem Präfix c enthalten

code="bhdata_exp.csv" df_bh=pd.read_csv(code,index_col="icp_bh")

Die globale Aggregationsmethode folgt den gleichen Schritten für die Aggregation von KKPs auf regionaler Ebene, wie im vorherigen Blog beschrieben. Zunächst erstellen wir bilaterale KKPs für jedes Länderpaar, wobei wir nacheinander die grundlegenden Ausgabenwerte der Volkswirtschaftlichen Gesamtrechnungen auf Rubrikenebene als Gewichte für jedes Land verwenden. Zwischen jedem Länderpaar wird ein bilateraler KKP vom Typ Laspeyres berechnet, gefolgt von einem bilateralen KKP vom Typ Paasche. Das geometrische Mittel der bilateralen KKP vom Laspeyres- und Paasche-Typ ergibt den bilateralen KKP vom Fisher-Typ zwischen jedem Länderpaar im Datensatz.

##Berechnen Sie die bilateralen KKPs von Laspeyres

Form = (len(df_bh.columns),len(df_bh.columns))

lp = np.zeros(shape)#quadratische Matrix: Land x Landnrow=len(lp) # ruft die Anzahl der Zeilen ab ncol=len(lp[0])

für Zeile im Bereich (nrow):

für Spalte im Bereich (ncol):

#gewichtet bedeutet, dass df-Zeilen durchlaufen werden

lp[row][col]= np.average((ppp_regLF.iloc[:,row]/ppp_regLF.iloc[:,col]),weights= df_bh.iloc[:,col])

lp_ppp = lp

lp_ppp = pd.DataFrame(data = lp_ppp, index = df_bh.columns, columns =df_bh.columns

#Berechnen Sie bilaterale KKPs nach Paasche

pa = np.transpose(np.reciprocal(lp))

pa_ppp = pd.DataFrame(data = pa, index = df_bh.columns, columns =df_bh.columns)

Form = (len(df_bh.columns),len(df_bh.columns))

fi = np.zeros(shape)#quadratische Matrix: Land x Landnrow=len(fi) # ruft die Anzahl der Zeilen ab ncol=len(fi[0])

für Zeile im Bereich (nrow):

für Spalte im Bereich (ncol):

fi[row][col]= nangmean([lp[row][col],pa[row][col]])

fi_ppp = pd.DataFrame(data = fi, index = df_bh.columns, columns =df_bh.columns)

Als nächstes wird die Gini-Éltető-Köves-Szulc (GEKS)-Methode auf die Matrix bilateraler PPPs vom Fisher-Typ angewendet. GEKS-KKPs werden zwischen den einzelnen Ländern relativ zum Numeraire oder Basisland berechnet. GEKS-ÖPPs gelten als „multilateral“, da das GEKS-Verfahren sowohl direkte als auch indirekte PPPs verwendet und somit die relativen Preise zwischen allen Ländern als Gruppe berücksichtigt.

#Berechnung der multilateralen GEKS-ppps##erfordert die frühere Nangmean-Funktion

geks = np.zeros(shape) # null 'Land x Land'-Matrix nrow=len(geks) # ruft die Anzahl der Zeilen ab ncol=len(geks[0])

für Zeile im Bereich (nrow):

für Spalte im Bereich (ncol):

geks[row][col]= nangmean(fi[row]/fi[col])

geks_vec = np.zeros(shape=(1,len(df_bhexp.columns)))#, da wir einen Vektor von ppps benötigen, keine Matrix

j=len(geks_vec[0])

für Spalte in Bereich(j):#..ein PPP pro Land oder Spalte von bhexp df

crazy_vec[:,col]=nangmean(crazy[col,0]/crazy[0,0]) #ge-

omean über jede Zeile, wobei jede Spalte in Spalte 1 auf das Land umgestellt wird

Crazy_ppp = np.array(crazy_vec)

Crazy_ppp = pd.DataFrame(crazy_ppp)

geks_ppp.columns = df_bh.columns

#Umgestaltung des globalen GEKS-Datenrahmens

Crazy_ppp = Crazy_ppp.melt(var_name="country",value_name="crazy"

print("\n","GEKS Multilaterale PPPs:", "\n") print(geks_ppp ,"\n")

Land

verrückt

Die GEKS-Methode ist erforderlich, um die bilateralen PPPs vom Fisher-Typ transitiv und basislandinvariant zu machen. Transitivität bedeutet, dass die KKP zwischen zwei beliebigen Ländern gleich sein sollte, unabhängig davon, ob sie direkt oder indirekt über ein Drittland berechnet wird. Basislandinvariant bedeutet, dass die KKP zwischen zwei beliebigen Ländern gleich sein sollten, unabhängig von der Wahl des Basis- oder Numeraire-Landes.

Der letzte Schritt im Prozess der globalen KKP-Schätzung besteht in der Anwendung des Country Aggregation with Redistribution (CAR)-Verfahrens. Dieser Schritt wird durchgeführt, um das Prinzip der Fixität zu gewährleisten. Fixity impliziert, dass die relativen Volumina in den globalen Vergleichen zwischen jedem Paar von Ländern, die zu einer bestimmten Region gehören, mit den relativen Volumina der beiden Länder identisch sein sollten, die in den regionalen Vergleichen ermittelt wurden, zu denen sie gehören.

Um diesem Grundsatz gerecht zu werden, werden die regionalen Mengensummen im globalen Vergleich durch Summierung der GEKS-bereinigten Mengen für einzelne Länder in jeder Region ermittelt. Anschließend werden diese Mengensummen anhand der Ausgabenanteile der Länder im regionalen Vergleich dividiert. Schließlich werden die Kaufkraftparitäten in Weltzahlen für jedes Land indirekt abgeleitet, indem die nominalen Ausgaben der Länder durch die volumenanteilbereinigten Ausgaben dividiert werden.

#Zusammenführung des Ausgaben- und globalen Geks-Datenrahmens

car_df = pd.merge(volshare_df, geks_ppp, how = 'inner', on= ('country'))

#Konvertieren der gesamten Erfahrung mithilfe der globalen Geks

car_df['inner'] =car_df['total_exp']/car_df['geks']

##Berechnung der regionalen Gesamtausgaben in geks-bereinigten Einheiten

car_df['exp_gek_reg'] =car_df['exp_gek'].groupby(volshare_df['region']).transform('sum')

Anwendung des regionalen Volumenanteils auf die Gesamtausgaben und Neuorientierung auf die Kennzahl KKP

car_df['exp_adj']=car_df['exp_gek_reg']*car_df['volshare']

car_df['PPPglobal']=car_df['total_exp']/car_df['exp_adj']

car_df.set_index(car_df['country'], drop=True, append=False, inplace=True)

car_df['PPPglobal_num']=car_df['PPPglobal']/car_df.at['country11','PPPglobal']

print("\n","Global verknüpfte PPPs:", "\n") print(car_df.PPPglobal_num ,"\n")

Land

PPPs

Im obigen Beispiel haben wir die wichtigsten Schritte zur Berechnung globaler Kaufkraftparitäten dargestellt. Informationen zur gesamten ICP-Methodik finden Sie auf der ICP-Website. Bitte kontaktieren Sie uns unter [email protected] für weitere Diskussionen.

Forschungsanalyst, Development Data Group (DECDG), Weltbank