import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy as sp
import statsmodels.api as sm
import pandas_datareader as pdr
import datetime as dt
import seaborn as sns
From here on, we will practice on real data via pandas-datareader
which is library for retrieving data from various databases, such as FRED, World Bank, Stooq, and etc.
Let's take a quick look how to use it.
Federal Reserve Economic Data (FRED) is a database maintained by the Research division of the Federal Reserve Bank of St. Louis that has more than 765,000 economic time series from 96 sources. For macroeconomic researches, this is the database you need almost every day.
class Data:
def __init__(self, **kwargs):
"""Input start, end, database"""
self.__dict__.update(kwargs)
# self.start = start
# self.end = end
# self.database = database
def retrieve(self, data_id):
if self.database == "fred":
self.df = pdr.data.DataReader(data_id, self.database, start, end)
elif self.database == "oecd":
self.df = pdr.data.DataReader(data_id, self.database)
elif self.database == "eurostat":
self.df = pdr.data.DataReader(data_id, self.database)
def normalise(self):
self.df_normalised = self.df / self.df.iloc[1]
def plot(self, labels, grid_on, norm):
if norm == False:
self.labels = labels
self.grid_on = grid_on
fig, ax = plt.subplots(figsize=(14, 8))
for col, label in zip(
self.df, self.labels
): # for drawing multiple labels/legends
ax.plot(self.df_normalised[col], label=label)
ax.grid(grid_on)
ax.legend()
plt.show()
else:
self.label = labels
self.grid_on = grid_on
fig, ax = plt.subplots(figsize=(14, 8))
for col, label in zip(self.df_normalised, self.label):
ax.plot(self.df_normalised[col], label=label)
ax.legend()
ax.grid(grid_on)
plt.show()
def twin_plot(
self, lhs, rhs, labels, grid_on, ax_rhs_inverse, lhs_color, rhs_color
):
self.lhs = lhs
self.rhs = rhs
self.labels = labels
self.grid_on = grid_on
self.ax_rhs_inverse = ax_rhs_inverse
self.lhs_color = lhs_color
self.rhs_color = rhs_color
fig, ax = plt.subplots(figsize=(14, 8))
ax.plot(self.df[self.lhs].dropna(), label=labels[0], color=self.lhs_color)
ax.legend(loc=3)
ax_RHS = ax.twinx() # share the same x-axis
ax_RHS.plot(self.df[self.rhs].dropna(), label=labels[1], color=self.rhs_color)
ax_RHS.legend(loc=0)
if ax_rhs_inverse == True:
ax_RHS.invert_yaxis()
ax.grid(grid_on)
plt.show()
start = dt.datetime(2015, 1, 1)
end = dt.datetime(2021, 7, 1)
fred_stock = Data(start=start, end=end, database="fred")
fred_stock.retrieve(["NASDAQCOM", "SP500", "DJIA"])
fred_stock.df.head(5)
NASDAQCOM | SP500 | DJIA | |
---|---|---|---|
DATE | |||
2015-01-01 | NaN | NaN | NaN |
2015-01-02 | 4726.81 | 2058.20 | 17832.99 |
2015-01-05 | 4652.57 | 2020.58 | 17501.65 |
2015-01-06 | 4592.74 | 2002.61 | 17371.64 |
2015-01-07 | 4650.47 | 2025.90 | 17584.52 |
fred_stock.normalise()
fred_stock.df_normalised.head(5)
NASDAQCOM | SP500 | DJIA | |
---|---|---|---|
DATE | |||
2015-01-01 | NaN | NaN | NaN |
2015-01-02 | 1.000000 | 1.000000 | 1.000000 |
2015-01-05 | 0.984294 | 0.981722 | 0.981420 |
2015-01-06 | 0.971636 | 0.972991 | 0.974129 |
2015-01-07 | 0.983850 | 0.984307 | 0.986067 |
fred_stock.plot(labels=["NASDAQ", "S&P500", "Dow Jones"], grid_on=True, norm=True)
start = dt.datetime(2015, 1, 1)
end = dt.datetime(2021, 7, 1)
fx = Data(start=start, end=end, database="fred")
fx.retrieve(["DEXCHUS", "DEXJPUS", "DEXUSEU"]) # 'USD/CNY','USD/JPY','EUR/USD'
fx.normalise()
fx.plot(labels=["USD/CNY", "USD/JPY", "EUR/USD"], grid_on=True, norm=True)
start = dt.datetime(1952, 1, 1)
end = dt.datetime.today()
debt = Data(start=start, end=end, database="fred")
debt.retrieve(["FYFSGDA188S", "NCBCMDPMVCE"])
debt.twin_plot(
lhs="FYFSGDA188S",
rhs="NCBCMDPMVCE",
labels=["Federal Surplus or Deficit to GDP", "Corp Debt to Equity (RHS)"],
grid_on=True,
ax_rhs_inverse=True,
lhs_color="r",
rhs_color="g",
)
from pandas_datareader import wb
govt_debt = (
wb.download(
indicator="GC.DOD.TOTL.GD.ZS", country=["US", "AU"], start=2005, end=2016
)
.stack()
.unstack(0)
)
ind = govt_debt.index.droplevel(-1)
govt_debt.index = ind
ax = govt_debt.plot(lw=2)
ax.set_xlabel("year", fontsize=12)
plt.title("Government Debt to GDP (%)")
plt.show()
/tmp/ipykernel_237616/629911982.py:4: FutureWarning: errors='ignore' is deprecated and will raise in a future version. Use to_numeric without passing `errors` and catch exceptions explicitly instead wb.download(
eurostat = Data(database="eurostat")
eurostat.retrieve("tran_sf_railac")
--------------------------------------------------------------------------- RemoteDataError Traceback (most recent call last) Cell In[11], line 2 1 eurostat = Data(database="eurostat") ----> 2 eurostat.retrieve("tran_sf_railac") Cell In[2], line 16, in Data.retrieve(self, data_id) 14 self.df = pdr.data.DataReader(data_id, self.database) 15 elif self.database == "eurostat": ---> 16 self.df = pdr.data.DataReader(data_id, self.database) File ~/.cache/pypoetry/virtualenvs/weijie-chen-n8m5GJNI-py3.10/lib/python3.10/site-packages/pandas/util/_decorators.py:213, in deprecate_kwarg.<locals>._deprecate_kwarg.<locals>.wrapper(*args, **kwargs) 211 raise TypeError(msg) 212 kwargs[new_arg_name] = new_arg_value --> 213 return func(*args, **kwargs) File ~/.cache/pypoetry/virtualenvs/weijie-chen-n8m5GJNI-py3.10/lib/python3.10/site-packages/pandas_datareader/data.py:485, in DataReader(name, data_source, start, end, retry_count, pause, session, api_key) 469 return OECDReader( 470 symbols=name, 471 start=start, (...) 475 session=session, 476 ).read() 477 elif data_source == "eurostat": 478 return EurostatReader( 479 symbols=name, 480 start=start, 481 end=end, 482 retry_count=retry_count, 483 pause=pause, 484 session=session, --> 485 ).read() 486 elif data_source == "nasdaq": 487 if name != "symbols": File ~/.cache/pypoetry/virtualenvs/weijie-chen-n8m5GJNI-py3.10/lib/python3.10/site-packages/pandas_datareader/base.py:101, in _BaseReader.read(self) 99 """Read data from connector""" 100 try: --> 101 return self._read_one_data(self.url, self.params) 102 finally: 103 self.close() File ~/.cache/pypoetry/virtualenvs/weijie-chen-n8m5GJNI-py3.10/lib/python3.10/site-packages/pandas_datareader/eurostat.py:33, in EurostatReader._read_one_data(self, url, params) 32 def _read_one_data(self, url, params): ---> 33 resp_dsd = self._get_response(self.dsd_url) 34 dsd = _read_sdmx_dsd(resp_dsd.content) 36 resp = self._get_response(url) File ~/.cache/pypoetry/virtualenvs/weijie-chen-n8m5GJNI-py3.10/lib/python3.10/site-packages/pandas_datareader/base.py:181, in _BaseReader._get_response(self, url, params, headers) 178 if last_response_text: 179 msg += "\nResponse Text:\n{0}".format(last_response_text) --> 181 raise RemoteDataError(msg) RemoteDataError: Unable to read URL: http://ec.europa.eu/eurostat/SDMX/diss-web/rest/datastructure/ESTAT/DSD_tran_sf_railac Response Text: b'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\t\n\t\t\t<!DOCTYPE html>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<html dir="ltr" lang="en-GB">\n\n<head>\n <title>Status 404 - Eurostat</title>\n <meta content="initial-scale=1.0, width=device-width" name="viewport" />\n <link rel="stylesheet" href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/css/ecl-eu.css?browserId=other&themeId=estatthemeecl_WAR_estatthemeecl&minifierType=none&languageId=en_GB&t=1717484464000">\n <link rel="stylesheet" href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/css/optional/ecl-eu-utilities.css?browserId=other&themeId=estatthemeecl_WAR_estatthemeecl&minifierType=none&languageId=en_GB&t=1717484464000">\n <link rel="stylesheet" media="print" href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/css/ecl-eu-print.css?browserId=other&themeId=estatthemeecl_WAR_estatthemeecl&minifierType=none&languageId=en_GB&t=1717484464000">\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<meta content="text/html; charset=UTF-8" http-equiv="content-type" />\n\n\n\n\n\n\n\n\n\n\n\n<meta name="google-site-verification" content="6XK2M_NqFEhF79UhdF43-Zv2t58zbBUp_CYAAKDHjgo" />\n<meta name="google-site-verification" content="in2pBF1QfAtURduPbpP5i-jI0MycWywIlnAImhgFALc" />\n<script type="text/javascript" src="/eurostat/ruxitagentjs_ICANVfgqrux_10281231207105659.js" data-dtconfig="app=e63eebabdf39f376|cuc=m097nmfl|agentId=48648e3271f255b9|mel=100000|featureHash=ICANVfgqrux|dpvc=1|ssv=4|lastModification=1717755444432|tp=500,50,0|rdnt=1|uxrgce=1|bp=3|agentUri=/eurostat/ruxitagentjs_ICANVfgqrux_10281231207105659.js|reportUrl=/eurostat/rb_39a3e95b-5423-482c-879b-99ef235dffeb|rid=RID_-366161469|rpid=-1993326717|domain=europa.eu/eurostat"></script><script type="application/ld+json">\n {\n\t\t"@context": "https://schema.org",\n\t\t"@type": "GovernmentOrganization",\n\t\t"@id": "https://ec.europa.eu/eurostat/",\n\t\t"name": "Eurostat",\n\t\t"description": "Eurostat is the statistical office of the European Union. Its mission is to provide high quality statistics and data on Europe.",\n\t\t"url": "https://ec.europa.eu/eurostat/",\n\t\t"logo": "https://ec.europa.eu/eurostat/o/estat-theme/images/logo/4x3.png",\n\t\t"image": [\n\t\t\t"https://ec.europa.eu/eurostat/o/estat-theme/images/logo/1x1.png",\n\t\t\t"https://ec.europa.eu/eurostat/o/estat-theme/images/logo/4x3.png",\n\t\t\t"https://ec.europa.eu/eurostat/o/estat-theme/images/logo/16x9.png"\n\t\t],\n\t\t"address": {\n\t\t\t"@type": "PostalAddress",\n\t\t\t"addressLocality": "Luxembourg",\n\t\t\t"postalCode": "L-2721",\n\t\t\t"streetAddress": "5 Rue Alphonse Weicker"\n\t\t},\n\t\t"geo": {\n\t\t\t"@type": "GeoCoordinates",\n\t\t\t"latitude": 49.633182,\n\t\t\t"longitude": 6.169437\n\t\t},\n\t\t"telephone": "+35243011",\n\t\t"foundingDate": "1953",\n\t\t"memberOf": [{\n\t\t\t"@type": "GovernmentOrganization",\n\t\t\t"name": "European Commission",\n\t\t\t"url": "https://ec.europa.eu/"\n\t\t}],\n\t\t"sameAs": [\n\t\t\t"https://en.wikipedia.org/wiki/Eurostat",\n\t\t\t"https://twitter.com/EU_Eurostat",\n\t\t\t"https://www.facebook.com/EurostatStatistics",\n\t\t\t"https://www.instagram.com/eu_eurostat",\n\t\t\t"https://www.linkedin.com/company/eurostat/",\n\t\t\t"https://youtube.com/c/Eurostat-EC"\n\t\t]\n }\n</script>\n\n<script data-senna-track="permanent" src="/eurostat/combo?browserId=other&minifierType=js&languageId=en_GB&t=1717817375506&/eurostat/o/frontend-js-jquery-web/jquery/jquery.min.js&/eurostat/o/frontend-js-jquery-web/jquery/bootstrap.bundle.min.js&/eurostat/o/frontend-js-jquery-web/jquery/collapsible_search.js&/eurostat/o/frontend-js-jquery-web/jquery/fm.js&/eurostat/o/frontend-js-jquery-web/jquery/form.js&/eurostat/o/frontend-js-jquery-web/jquery/popper.min.js&/eurostat/o/frontend-js-jquery-web/jquery/side_navigation.js" type="text/javascript"></script>\n<link data-senna-track="permanent" href="/eurostat/o/frontend-theme-font-awesome-web/css/main.css" rel="stylesheet" type="text/css" />\n\n\n<link href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/favicon.ico" rel="icon" />\n\n\n\n\n\n\t\n\n\t\t\n\t\t\t\n\t\t\t\t<link data-senna-track="temporary" href="https://ec.europa.eu/eurostat" rel="canonical" />\n\t\t\t\n\t\t\n\n\t\n\n\t\t\n\t\t\t\n\t\t\t\t<link data-senna-track="temporary" href="https://ec.europa.eu/eurostat/fr/" hreflang="fr-FR" rel="alternate" />\n\t\t\t\n\t\t\t\n\n\t\n\n\t\t\n\t\t\t\n\t\t\t\t<link data-senna-track="temporary" href="https://ec.europa.eu/eurostat" hreflang="en-GB" rel="alternate" />\n\t\t\t\n\t\t\t\n\n\t\n\n\t\t\n\t\t\t\n\t\t\t\t<link data-senna-track="temporary" href="https://ec.europa.eu/eurostat/de/" hreflang="de-DE" rel="alternate" />\n\t\t\t\n\t\t\t\n\n\t\n\n\t\t\n\t\t\t\n\t\t\t\t<link data-senna-track="temporary" href="https://ec.europa.eu/eurostat" hreflang="x-default" rel="alternate" />\n\t\t\t\n\t\t\t\n\n\t\n\n\n\n\n\n<link class="lfr-css-file" data-senna-track="temporary" href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/css/clay.css?browserId=other&themeId=estatthemeecl_WAR_estatthemeecl&minifierType=css&languageId=en_GB&t=1717484464000" id="liferayAUICSS" rel="stylesheet" type="text/css" />\n\n\n\n<link data-senna-track="temporary" href="/eurostat/o/frontend-css-web/main.css?browserId=other&themeId=estatthemeecl_WAR_estatthemeecl&minifierType=css&languageId=en_GB&t=1695016482360" id="liferayPortalCSS" rel="stylesheet" type="text/css" />\n\n\n\n\n\n\n\n\n\n\t\n\n\t\n\n\n\n\n\n\t\n\n\n\n\t\n\n\t\t<link data-senna-track="temporary" href="/eurostat/combo?browserId=other&minifierType=&themeId=estatthemeecl_WAR_estatthemeecl&languageId=en_GB&com_liferay_portal_search_web_search_bar_portlet_SearchBarPortlet_INSTANCE_templateSearch:%2Fcss%2Fmain.css&com_liferay_product_navigation_product_menu_web_portlet_ProductMenuPortlet:%2Fcss%2Fmain.css&com_liferay_product_navigation_user_personal_bar_web_portlet_ProductNavigationUserPersonalBarPortlet:%2Fcss%2Fmain.css&com_liferay_segments_experiment_web_internal_portlet_SegmentsExperimentPortlet:%2Fcss%2Fmain.css&com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet:%2Fcss%2Fmain.css&t=1717484464000" id="5c20de21" rel="stylesheet" type="text/css" />\n\n\t\n\n\n\n\n\n\n\n<script data-senna-track="temporary" type="text/javascript">\n\t// <![CDATA[\n\t\tvar Liferay = Liferay || {};\n\n\t\tLiferay.Browser = {\n\t\t\tacceptsGzip: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t\n\n\t\t\tgetMajorVersion: function() {\n\t\t\t\treturn 0;\n\t\t\t},\n\n\t\t\tgetRevision: function() {\n\t\t\t\treturn \'\';\n\t\t\t},\n\t\t\tgetVersion: function() {\n\t\t\t\treturn \'\';\n\t\t\t},\n\n\t\t\t\n\n\t\t\tisAir: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisChrome: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisEdge: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisFirefox: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisGecko: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisIe: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisIphone: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisLinux: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisMac: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisMobile: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisMozilla: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisOpera: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisRtf: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisSafari: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisSun: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisWebKit: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisWindows: function() {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\tLiferay.Data = Liferay.Data || {};\n\n\t\tLiferay.Data.ICONS_INLINE_SVG = true;\n\n\t\tLiferay.Data.NAV_SELECTOR = \'#navigation\';\n\n\t\tLiferay.Data.NAV_SELECTOR_MOBILE = \'#navigationCollapse\';\n\n\t\tLiferay.Data.isCustomizationView = function() {\n\t\t\treturn false;\n\t\t};\n\n\t\tLiferay.Data.notices = [\n\t\t\tnull\n\n\t\t\t\n\n\t\t\t\n\t\t];\n\n\t\tLiferay.PortletKeys = {\n\t\t\tDOCUMENT_LIBRARY: \'com_liferay_document_library_web_portlet_DLPortlet\',\n\t\t\tDYNAMIC_DATA_MAPPING: \'com_liferay_dynamic_data_mapping_web_portlet_DDMPortlet\',\n\t\t\tITEM_SELECTOR: \'com_liferay_item_selector_web_portlet_ItemSelectorPortlet\'\n\t\t};\n\n\t\tLiferay.PropsValues = {\n\t\t\tJAVASCRIPT_SINGLE_PAGE_APPLICATION_TIMEOUT: 0,\n\t\t\tNTLM_AUTH_ENABLED: false,\n\t\t\tUPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE: 1648576000\n\t\t};\n\n\t\tLiferay.ThemeDisplay = {\n\n\t\t\t\n\n\t\t\t\n\t\t\t\tgetLayoutId: function() {\n\t\t\t\t\treturn \'532\';\n\t\t\t\t},\n\n\t\t\t\t\n\n\t\t\t\tgetLayoutRelativeControlPanelURL: function() {\n\t\t\t\t\treturn \'/eurostat/group/main/~/control_panel/manage\';\n\t\t\t\t},\n\n\t\t\t\tgetLayoutRelativeURL: function() {\n\t\t\t\t\treturn \'/eurostat/web/main/home\';\n\t\t\t\t},\n\t\t\t\tgetLayoutURL: function() {\n\t\t\t\t\treturn \'https://ec.europa.eu/eurostat/web/main/home\';\n\t\t\t\t},\n\t\t\t\tgetParentLayoutId: function() {\n\t\t\t\t\treturn \'0\';\n\t\t\t\t},\n\t\t\t\tisControlPanel: function() {\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tisPrivateLayout: function() {\n\t\t\t\t\treturn \'false\';\n\t\t\t\t},\n\t\t\t\tisVirtualLayout: function() {\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\n\n\t\t\tgetBCP47LanguageId: function() {\n\t\t\t\treturn \'en-GB\';\n\t\t\t},\n\t\t\tgetCanonicalURL: function() {\n\n\t\t\t\t\n\n\t\t\t\treturn \'https\\x3a\\x2f\\x2fec\\x2eeuropa\\x2eeu\\x2feurostat\';\n\t\t\t},\n\t\t\tgetCDNBaseURL: function() {\n\t\t\t\treturn \'https://ec.europa.eu\';\n\t\t\t},\n\t\t\tgetCDNDynamicResourcesHost: function() {\n\t\t\t\treturn \'\';\n\t\t\t},\n\t\t\tgetCDNHost: function() {\n\t\t\t\treturn \'\';\n\t\t\t},\n\t\t\tgetCompanyGroupId: function() {\n\t\t\t\treturn \'10199\';\n\t\t\t},\n\t\t\tgetCompanyId: function() {\n\t\t\t\treturn \'10159\';\n\t\t\t},\n\t\t\tgetDefaultLanguageId: function() {\n\t\t\t\treturn \'en_GB\';\n\t\t\t},\n\t\t\tgetDoAsUserIdEncoded: function() {\n\t\t\t\treturn \'\';\n\t\t\t},\n\t\t\tgetLanguageId: function() {\n\t\t\t\treturn \'en_GB\';\n\t\t\t},\n\t\t\tgetParentGroupId: function() {\n\t\t\t\treturn \'10186\';\n\t\t\t},\n\t\t\tgetPathContext: function() {\n\t\t\t\treturn \'/eurostat\';\n\t\t\t},\n\t\t\tgetPathImage: function() {\n\t\t\t\treturn \'/eurostat/image\';\n\t\t\t},\n\t\t\tgetPathJavaScript: function() {\n\t\t\t\treturn \'/eurostat/o/frontend-js-web\';\n\t\t\t},\n\t\t\tgetPathMain: function() {\n\t\t\t\treturn \'/eurostat/c\';\n\t\t\t},\n\t\t\tgetPathThemeImages: function() {\n\t\t\t\treturn \'https://ec.europa.eu/eurostat/o/estat-theme-ecl/images\';\n\t\t\t},\n\t\t\tgetPathThemeRoot: function() {\n\t\t\t\treturn \'/eurostat/o/estat-theme-ecl\';\n\t\t\t},\n\t\t\tgetPlid: function() {\n\t\t\t\treturn \'11616291\';\n\t\t\t},\n\t\t\tgetPortalURL: function() {\n\t\t\t\treturn \'https://ec.europa.eu\';\n\t\t\t},\n\t\t\tgetRealUserId: function() {\n\t\t\t\treturn \'10163\';\n\t\t\t},\n\t\t\tgetScopeGroupId: function() {\n\t\t\t\treturn \'10186\';\n\t\t\t},\n\t\t\tgetScopeGroupIdOrLiveGroupId: function() {\n\t\t\t\treturn \'10186\';\n\t\t\t},\n\t\t\tgetSessionId: function() {\n\t\t\t\treturn \'\';\n\t\t\t},\n\t\t\tgetSiteAdminURL: function() {\n\t\t\t\treturn \'https://ec.europa.eu/eurostat/group/main/~/control_panel/manage?p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view\';\n\t\t\t},\n\t\t\tgetSiteGroupId: function() {\n\t\t\t\treturn \'10186\';\n\t\t\t},\n\t\t\tgetURLControlPanel: function() {\n\t\t\t\treturn \'/eurostat/group/control_panel?refererPlid=11616291\';\n\t\t\t},\n\t\t\tgetURLHome: function() {\n\t\t\t\treturn \'https\\x3a\\x2f\\x2fec\\x2eeuropa\\x2eeu\\x2feurostat\\x2fweb\\x2fmain\\x2fhome\';\n\t\t\t},\n\t\t\tgetUserEmailAddress: function() {\n\t\t\t\treturn \'\';\n\t\t\t},\n\t\t\tgetUserId: function() {\n\t\t\t\treturn \'10163\';\n\t\t\t},\n\t\t\tgetUserName: function() {\n\t\t\t\treturn \'\';\n\t\t\t},\n\t\t\tisAddSessionIdToURL: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisImpersonated: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisSignedIn: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\tisStagedPortlet: function() {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t},\n\n\t\t\tisStateExclusive: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisStateMaximized: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisStatePopUp: function() {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\tvar themeDisplay = Liferay.ThemeDisplay;\n\n\t\tLiferay.AUI = {\n\n\t\t\t\n\n\t\t\tgetAvailableLangPath: function() {\n\t\t\t\treturn \'available_languages.jsp?browserId=other&themeId=estatthemeecl_WAR_estatthemeecl&colorSchemeId=01&minifierType=js&languageId=en_GB&t=1717817358371\';\n\t\t\t},\n\t\t\tgetCombine: function() {\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tgetComboPath: function() {\n\t\t\t\treturn \'/eurostat/combo/?browserId=other&minifierType=&languageId=en_GB&t=1695016483126&\';\n\t\t\t},\n\t\t\tgetDateFormat: function() {\n\t\t\t\treturn \'%d/%m/%Y\';\n\t\t\t},\n\t\t\tgetEditorCKEditorPath: function() {\n\t\t\t\treturn \'/eurostat/o/frontend-editor-ckeditor-web\';\n\t\t\t},\n\t\t\tgetFilter: function() {\n\t\t\t\tvar filter = \'raw\';\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tfilter = \'min\';\n\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\treturn filter;\n\t\t\t},\n\t\t\tgetFilterConfig: function() {\n\t\t\t\tvar instance = this;\n\n\t\t\t\tvar filterConfig = null;\n\n\t\t\t\tif (!instance.getCombine()) {\n\t\t\t\t\tfilterConfig = {\n\t\t\t\t\t\treplaceStr: \'.js\' + instance.getStaticResourceURLParams(),\n\t\t\t\t\t\tsearchExp: \'\\\\.js$\'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn filterConfig;\n\t\t\t},\n\t\t\tgetJavaScriptRootPath: function() {\n\t\t\t\treturn \'/eurostat/o/frontend-js-web\';\n\t\t\t},\n\t\t\tgetLangPath: function() {\n\t\t\t\treturn \'aui_lang.jsp?browserId=other&themeId=estatthemeecl_WAR_estatthemeecl&colorSchemeId=01&minifierType=js&languageId=en_GB&t=1695016483126\';\n\t\t\t},\n\t\t\tgetPortletRootPath: function() {\n\t\t\t\treturn \'/eurostat/html/portlet\';\n\t\t\t},\n\t\t\tgetStaticResourceURLParams: function() {\n\t\t\t\treturn \'?browserId=other&minifierType=&languageId=en_GB&t=1695016483126\';\n\t\t\t}\n\t\t};\n\n\t\tLiferay.authToken = \'xFSE1KOk\';\n\n\t\t\n\n\t\tLiferay.currentURL = \'\\x2feurostat\\x2fSDMX\\x2fdiss-web\\x2frest\\x2fdatastructure\\x2fESTAT\\x2fDSD_tran_sf_railac\';\n\t\tLiferay.currentURLEncoded = \'\\x252Feurostat\\x252FSDMX\\x252Fdiss-web\\x252Frest\\x252Fdatastructure\\x252FESTAT\\x252FDSD_tran_sf_railac\';\n\t// ]]>\n</script>\n\n<script src="/eurostat/o/js_loader_config?t=1717817375526" type="text/javascript"></script>\n<script data-senna-track="permanent" src="/eurostat/combo?browserId=other&minifierType=js&languageId=en_GB&t=1695016483126&/o/frontend-js-web/loader/config.js&/o/frontend-js-web/loader/loader.js&/o/frontend-js-web/aui/aui/aui.js&/o/frontend-js-web/aui/aui-base-html5-shiv/aui-base-html5-shiv.js&/o/frontend-js-web/liferay/browser_selectors.js&/o/frontend-js-web/liferay/modules.js&/o/frontend-js-web/liferay/aui_sandbox.js&/o/frontend-js-web/misc/svg4everybody.js&/o/frontend-js-web/aui/arraylist-add/arraylist-add.js&/o/frontend-js-web/aui/arraylist-filter/arraylist-filter.js&/o/frontend-js-web/aui/arraylist/arraylist.js&/o/frontend-js-web/aui/array-extras/array-extras.js&/o/frontend-js-web/aui/array-invoke/array-invoke.js&/o/frontend-js-web/aui/attribute-base/attribute-base.js&/o/frontend-js-web/aui/attribute-complex/attribute-complex.js&/o/frontend-js-web/aui/attribute-core/attribute-core.js&/o/frontend-js-web/aui/attribute-observable/attribute-observable.js&/o/frontend-js-web/aui/attribute-extras/attribute-extras.js&/o/frontend-js-web/aui/base-base/base-base.js&/o/frontend-js-web/aui/base-pluginhost/base-pluginhost.js&/o/frontend-js-web/aui/classnamemanager/classnamemanager.js&/o/frontend-js-web/aui/datatype-xml-format/datatype-xml-format.js&/o/frontend-js-web/aui/datatype-xml-parse/datatype-xml-parse.js&/o/frontend-js-web/aui/dom-base/dom-base.js&/o/frontend-js-web/aui/dom-core/dom-core.js&/o/frontend-js-web/aui/dom-screen/dom-screen.js&/o/frontend-js-web/aui/dom-style/dom-style.js&/o/frontend-js-web/aui/event-base/event-base.js&/o/frontend-js-web/aui/event-custom-base/event-custom-base.js&/o/frontend-js-web/aui/event-custom-complex/event-custom-complex.js&/o/frontend-js-web/aui/event-delegate/event-delegate.js&/o/frontend-js-web/aui/event-focus/event-focus.js&/o/frontend-js-web/aui/event-hover/event-hover.js&/o/frontend-js-web/aui/event-key/event-key.js&/o/frontend-js-web/aui/event-mouseenter/event-mouseenter.js&/o/frontend-js-web/aui/event-mousewheel/event-mousewheel.js" type="text/javascript"></script>\n<script data-senna-track="permanent" src="/eurostat/combo?browserId=other&minifierType=js&languageId=en_GB&t=1695016483126&/o/frontend-js-web/aui/event-outside/event-outside.js&/o/frontend-js-web/aui/event-resize/event-resize.js&/o/frontend-js-web/aui/event-simulate/event-simulate.js&/o/frontend-js-web/aui/event-synthetic/event-synthetic.js&/o/frontend-js-web/aui/intl/intl.js&/o/frontend-js-web/aui/io-base/io-base.js&/o/frontend-js-web/aui/io-form/io-form.js&/o/frontend-js-web/aui/io-queue/io-queue.js&/o/frontend-js-web/aui/io-upload-iframe/io-upload-iframe.js&/o/frontend-js-web/aui/io-xdr/io-xdr.js&/o/frontend-js-web/aui/json-parse/json-parse.js&/o/frontend-js-web/aui/json-stringify/json-stringify.js&/o/frontend-js-web/aui/node-base/node-base.js&/o/frontend-js-web/aui/node-core/node-core.js&/o/frontend-js-web/aui/node-event-delegate/node-event-delegate.js&/o/frontend-js-web/aui/node-event-simulate/node-event-simulate.js&/o/frontend-js-web/aui/node-focusmanager/node-focusmanager.js&/o/frontend-js-web/aui/node-pluginhost/node-pluginhost.js&/o/frontend-js-web/aui/node-screen/node-screen.js&/o/frontend-js-web/aui/node-style/node-style.js&/o/frontend-js-web/aui/oop/oop.js&/o/frontend-js-web/aui/plugin/plugin.js&/o/frontend-js-web/aui/pluginhost-base/pluginhost-base.js&/o/frontend-js-web/aui/pluginhost-config/pluginhost-config.js&/o/frontend-js-web/aui/querystring-stringify-simple/querystring-stringify-simple.js&/o/frontend-js-web/aui/queue-promote/queue-promote.js&/o/frontend-js-web/aui/selector-css2/selector-css2.js&/o/frontend-js-web/aui/selector-css3/selector-css3.js&/o/frontend-js-web/aui/selector-native/selector-native.js&/o/frontend-js-web/aui/selector/selector.js&/o/frontend-js-web/aui/widget-base/widget-base.js&/o/frontend-js-web/aui/widget-htmlparser/widget-htmlparser.js&/o/frontend-js-web/aui/widget-skin/widget-skin.js&/o/frontend-js-web/aui/widget-uievents/widget-uievents.js&/o/frontend-js-web/aui/yui-throttle/yui-throttle.js&/o/frontend-js-web/aui/aui-base-core/aui-base-core.js" type="text/javascript"></script>\n<script data-senna-track="permanent" src="/eurostat/combo?browserId=other&minifierType=js&languageId=en_GB&t=1695016483126&/o/frontend-js-web/aui/aui-base-lang/aui-base-lang.js&/o/frontend-js-web/aui/aui-classnamemanager/aui-classnamemanager.js&/o/frontend-js-web/aui/aui-component/aui-component.js&/o/frontend-js-web/aui/aui-debounce/aui-debounce.js&/o/frontend-js-web/aui/aui-delayed-task-deprecated/aui-delayed-task-deprecated.js&/o/frontend-js-web/aui/aui-event-base/aui-event-base.js&/o/frontend-js-web/aui/aui-event-input/aui-event-input.js&/o/frontend-js-web/aui/aui-form-validator/aui-form-validator.js&/o/frontend-js-web/aui/aui-node-base/aui-node-base.js&/o/frontend-js-web/aui/aui-node-html5/aui-node-html5.js&/o/frontend-js-web/aui/aui-selector/aui-selector.js&/o/frontend-js-web/aui/aui-timer/aui-timer.js&/o/frontend-js-web/liferay/dependency.js&/o/frontend-js-web/liferay/dom_task_runner.js&/o/frontend-js-web/liferay/events.js&/o/frontend-js-web/liferay/language.js&/o/frontend-js-web/liferay/lazy_load.js&/o/frontend-js-web/liferay/liferay.js&/o/frontend-js-web/liferay/util.js&/o/frontend-js-web/liferay/global.bundle.js&/o/frontend-js-web/liferay/portal.js&/o/frontend-js-web/liferay/portlet.js&/o/frontend-js-web/liferay/workflow.js&/o/frontend-js-web/liferay/form.js&/o/frontend-js-web/liferay/form_placeholders.js&/o/frontend-js-web/liferay/icon.js&/o/frontend-js-web/liferay/menu.js&/o/frontend-js-web/liferay/notice.js&/o/frontend-js-web/liferay/poller.js" type="text/javascript"></script>\n\n\n\n\n\t\n\n\t<script data-senna-track="temporary" src="/eurostat/o/js_bundle_config?t=1717817392074" type="text/javascript"></script>\n\n\n<script data-senna-track="temporary" type="text/javascript">\n\t// <![CDATA[\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\n\n\t\t\n\n\t\t\n\t// ]]>\n</script>\n\n\n\n\n\n\t\n\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\n\t\t\n\n\n\n\t\n\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<script type="application/json">\n{\n "utility" : "cck"\n}\n</script>\n\n<script defer src="https://webtools.europa.eu/load.js" type="text/javascript"></script>\n\n<script type="text/javascript">\n\twindow._paq = window._paq || [];\n\thref = window.location.href\n\t\t.toLowerCase()\n\t\t.split(\'?\')[0]\n\t\t.replace(\'/eurostat/en/\', \'/eurostat/\')\n\t\t.replace(\'/eurostat/fr/\', \'/eurostat/\')\n\t\t.replace(\'/eurostat/de/\', \'/eurostat/\');\n\t_paq.push([\'setCustomUrl\', href]);\n\t\n\t_paq.push([\'setCustomVariable\', 1, \'liferay-site\', \'Guest\', \'page\']);\n\t\n</script>\n<script type="application/json">\n{\n "utility" : "analytics",\n "siteID" : 59,\n "sitePath" : ["ec.europa.eu\\/eurostat"],\n "siteSection" : "liferay",\n\t"lang" : "en-GB",\n\t"is404" : true\n\t\n}\n</script>\n<!-- End Piwik Code -->\n\n\n\n\n\n\n\n\n\t\n\n\t\n\n\n\n\n\n\t\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<link class="lfr-css-file" data-senna-track="temporary" href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/css/main.css?browserId=other&themeId=estatthemeecl_WAR_estatthemeecl&minifierType=css&languageId=en_GB&t=1717484464000" id="liferayThemeCSS" rel="stylesheet" type="text/css" />\n\n\n\n\n\n\n\n\n\t<style data-senna-track="temporary" type="text/css">\n\n\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t\t\n\n#p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_eurostat_navigation_menu_instance_ .portlet-content {\n\n}\n\n\n\n\n\t\t\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t\t\n\n#p_p_id_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_ .portlet-content {\n\n}\n\n\n\n\n\t\t\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\t\t\n\n\t</style>\n\n\n<link data-senna-track="permanent" href="https://ec.europa.eu/eurostat/combo?browserId=other&minifierType=css&languageId=en_GB&t=1695016486615&/o/change-tracking-change-lists-indicator-theme-contributor/change_tracking_change_lists_indicator.css" rel="stylesheet" type = "text/css" />\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<script data-senna-track="temporary" type="text/javascript">\n\tif (window.Analytics) {\n\t\twindow._com_liferay_document_library_analytics_isViewFileEntry = false;\n\t}\n</script>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<script type="text/javascript">\n// <![CDATA[\nLiferay.on(\n\t\'ddmFieldBlur\', function(event) {\n\t\tif (window.Analytics) {\n\t\t\tAnalytics.send(\n\t\t\t\t\'fieldBlurred\',\n\t\t\t\t\'Form\',\n\t\t\t\t{\n\t\t\t\t\tfieldName: event.fieldName,\n\t\t\t\t\tfocusDuration: event.focusDuration,\n\t\t\t\t\tformId: event.formId,\n\t\t\t\t\tpage: event.page\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n);\n\nLiferay.on(\n\t\'ddmFieldFocus\', function(event) {\n\t\tif (window.Analytics) {\n\t\t\tAnalytics.send(\n\t\t\t\t\'fieldFocused\',\n\t\t\t\t\'Form\',\n\t\t\t\t{\n\t\t\t\t\tfieldName: event.fieldName,\n\t\t\t\t\tformId: event.formId,\n\t\t\t\t\tpage: event.page\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n);\n\nLiferay.on(\n\t\'ddmFormPageShow\', function(event) {\n\t\tif (window.Analytics) {\n\t\t\tAnalytics.send(\n\t\t\t\t\'pageViewed\',\n\t\t\t\t\'Form\',\n\t\t\t\t{\n\t\t\t\t\tformId: event.formId,\n\t\t\t\t\tpage: event.page,\n\t\t\t\t\ttitle: event.title\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n);\n\nLiferay.on(\n\t\'ddmFormSubmit\', function(event) {\n\t\tif (window.Analytics) {\n\t\t\tAnalytics.send(\n\t\t\t\t\'formSubmitted\',\n\t\t\t\t\'Form\',\n\t\t\t\t{\n\t\t\t\t\tformId: event.formId\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n);\n\nLiferay.on(\n\t\'ddmFormView\', function(event) {\n\t\tif (window.Analytics) {\n\t\t\tAnalytics.send(\n\t\t\t\t\'formViewed\',\n\t\t\t\t\'Form\',\n\t\t\t\t{\n\t\t\t\t\tformId: event.formId,\n\t\t\t\t\ttitle: event.title\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n);\n// ]]>\n</script>\n\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/regular.min.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/solid.min.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/fontawesome.min.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/feedback_form.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/tools.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/moment.min.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/ecl-eu.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/ecl-compatibility.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/ecl-external-link-icon.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript" defer src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/ecl-autoexpand-expandable.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <script type="text/javascript">\n document.addEventListener(\'DOMContentLoaded\', function () {\n ECL.autoInit();\n $("input, a[id]").on("focus", function () {\n //When a link with an id gets focus, store that information in a cookie variable\n writeCookieWithMaxAgeValueAndPath(\'lastFocus\', $(this).attr(\'id\'), 60, \'/eurostat\');\n });\n $("a:not([id])a:not([href$=\'#\'])a:not([href^=\'javascript\'])").on("focus", function () {\n //When a (not fake) link without an id gets focus, delete the cookie\n deleteCookie(\'lastFocus\');\n });\n var lastLink = readCookie(\'lastFocus\');\n if (lastLink != "") {\n $("input, a[id]").each(function () {\n if ($(this).attr(\'id\') == lastLink) $(this).focus();\n });\n }\n });\n </script>\n</head>\n\n<body class=" controls-visible default yui3-skin-sam guest-site signed-out public-page site">\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t<nav aria-label="Quick Links" class="quick-access-nav" id="taiu_quickAccessNav">\n\t\t<h1 class="hide-accessible">Navigation</h1>\n\n\t\t<ul>\n\t\t\t\n\t\t\t\t<li><a href="#main-content">Skip to Content</a></li>\n\t\t\t\n\n\t\t\t\n\t\t</ul>\n\t</nav>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n <div class="pt-0" id="wrapper">\n\t\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\n\n\n\n\t\t\t\t\t\n\n\n\n\t\n\n\n<header class="ecl-site-header ecl-site-header--has-menu" data-ecl-auto-init="SiteHeader">\n <script type="application/json">\n { \n "utility": "globan",\n "theme": "dark", \n "logo": true,\n "link": true,\n "lang": "en",\n "mode": false,\n "zindex" : 40\n }\n </script>\n <div class="ecl-site-header__background">\n <div class="ecl-site-header__header">\n <div class="ecl-site-header__container ecl-container">\n <div class="ecl-site-header__top" data-ecl-site-header-top>\n <a href="https://ec.europa.eu/eurostat/web/main/home" class="ecl-link ecl-link--standalone ecl-site-header__logo-link " aria-label="Home (Eurostat)">\n <picture class="ecl-picture ecl-site-header__picture" title="Home (Eurostat)">\n <source srcset="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/header/estat-logo-horizontal.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000" media="(min-width: 996px)">\n <img class="ecl-site-header__logo-image" src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/header/estat-logo-horizontal.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000" alt="Home (Eurostat)" />\n </picture>\n </a>\n <div class="ecl-site-header__action">\n <div class="ecl-site-header__login-container">\n <a class="ecl-button ecl-button--tertiary ecl-site-header__login-toggle" href="https://ec.europa.eu/eurostat/c/portal/login?p_l_id=11616291" data-ecl-login-toggle>\n <svg class="ecl-icon ecl-icon--s ecl-site-header__icon" focusable="false" aria-hidden="false" role="img"><title>Log in</title><use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#log-in"></use>\n </svg>Log in</a>\n </div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\t<script type="application/json">\n {\n "service": "etrans",\n "languages": {\n "exclude": [\n "fr","de","en"\n ]\n },\n "renderAs": {\n "icon": false,\n "button": false,\n "link": false\n },\n "exclude": ".ecl-site-header__language-link-code, .ecl-site-header__language-link-label",\n "dynamic": true\n }\n</script>\n<div class="ecl-site-header__language">\n <a class="ecl-button ecl-button--tertiary ecl-site-header__language-selector" href="#" data-ecl-language-selector role="button" aria-label="Select your language" aria-controls="language-list-overlay">\n <span class="ecl-site-header__language-icon">\n <svg class="ecl-icon ecl-icon--s ecl-site-header__icon" focusable="false" aria-hidden="false" role="img">\n <title>English</title>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#global"></use>\n </svg>\n </span>English</a>\n <div class="ecl-site-header__language-container" id="language-list-overlay" hidden data-ecl-language-list-overlay aria-labelledby="ecl-site-header__language-title" role="dialog">\n <div class="ecl-site-header__language-header">\n <div class="ecl-site-header__language-title" id="ecl-site-header__language-title">\nSelect your language </div>\n <button class="ecl-button ecl-button--tertiary ecl-site-header__language-close ecl-button--icon-only" type="submit" data-ecl-language-list-close>\n <span class="ecl-button__container">\n <span class="ecl-button__label" data-ecl-label="true">\nClose </span>\n <svg class="ecl-icon ecl-icon--s ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#close-filled"></use>\n </svg>\n </span>\n </button>\n </div>\n <div class="ecl-site-header__language-content">\n <div class="ecl-site-header__language-category ecl-site-header__language-category--3-col" data-ecl-language-list-eu>\n <div class="ecl-site-header__language-category-title">\nHuman translation </div>\n <ul class="ecl-site-header__language-list">\n <li class="ecl-site-header__language-item">\n<a href="/eurostat/c/portal/update_language?p_l_id=11616291&redirect=%2Feurostat%2FSDMX%2Fdiss-web%2Frest%2Fdatastructure%2FESTAT%2FDSD_tran_sf_railac&languageId=de_DE" class="ecl-link ecl-link--standalone ecl-site-header__language-link " lang="de-DE" hreflang="de-DE" > <span class="ecl-site-header__language-link-code">de</span>\n <span class="ecl-site-header__language-link-label">Deutsch</span>\n</a> </li>\n <li class="ecl-site-header__language-item">\n<a href="/eurostat/SDMX/diss-web/rest/datastructure/ESTAT/DSD_tran_sf_railac" class="ecl-link ecl-link--standalone ecl-site-header__language-link ecl-site-header__language-link--active " lang="en-GB" hreflang="en-GB" > <span class="ecl-site-header__language-link-code">en</span>\n <span class="ecl-site-header__language-link-label">English</span>\n</a> </li>\n <li class="ecl-site-header__language-item">\n<a href="/eurostat/c/portal/update_language?p_l_id=11616291&redirect=%2Feurostat%2FSDMX%2Fdiss-web%2Frest%2Fdatastructure%2FESTAT%2FDSD_tran_sf_railac&languageId=fr_FR" class="ecl-link ecl-link--standalone ecl-site-header__language-link " lang="fr-FR" hreflang="fr-FR" > <span class="ecl-site-header__language-link-code">fr</span>\n <span class="ecl-site-header__language-link-label">fran\xc3\xa7ais</span>\n</a> </li>\n </ul>\n </div>\n <div class="ecl-site-header__language-category ecl-site-header__language-category--4-col" data-ecl-language-list-non-eu>\n <div class="ecl-site-header__language-category-title">\nMachine translation </div>\n <ul class="ecl-site-header__language-list">\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="bg" hreflang="bg" data-wt-etrans-lang="bg" rel="alternate">\n <span class="ecl-site-header__language-link-code">bg</span>\n <span class="ecl-site-header__language-link-label">\xd0\xb1\xd1\x8a\xd0\xbb\xd0\xb3\xd0\xb0\xd1\x80\xd1\x81\xd0\xba\xd0\xb8</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="es" hreflang="es" data-wt-etrans-lang="es" rel="alternate">\n <span class="ecl-site-header__language-link-code">es</span>\n <span class="ecl-site-header__language-link-label">espa\xc3\xb1ol</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="cs" hreflang="cs" data-wt-etrans-lang="cs" rel="alternate">\n <span class="ecl-site-header__language-link-code">cs</span>\n <span class="ecl-site-header__language-link-label">\xc4\x8de\xc5\xa1tina</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="da" hreflang="da" data-wt-etrans-lang="da" rel="alternate">\n <span class="ecl-site-header__language-link-code">da</span>\n <span class="ecl-site-header__language-link-label">dansk</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="et" hreflang="et" data-wt-etrans-lang="et" rel="alternate">\n <span class="ecl-site-header__language-link-code">et</span>\n <span class="ecl-site-header__language-link-label">eesti</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="el" hreflang="el" data-wt-etrans-lang="el" rel="alternate">\n <span class="ecl-site-header__language-link-code">el</span>\n <span class="ecl-site-header__language-link-label">\xce\xb5\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xac</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="ga" hreflang="ga" data-wt-etrans-lang="ga" rel="alternate">\n <span class="ecl-site-header__language-link-code">ga</span>\n <span class="ecl-site-header__language-link-label">Gaeilge</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="hr" hreflang="hr" data-wt-etrans-lang="hr" rel="alternate">\n <span class="ecl-site-header__language-link-code">hr</span>\n <span class="ecl-site-header__language-link-label">hrvatski</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="it" hreflang="it" data-wt-etrans-lang="it" rel="alternate">\n <span class="ecl-site-header__language-link-code">it</span>\n <span class="ecl-site-header__language-link-label">italiano</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="lv" hreflang="lv" data-wt-etrans-lang="lv" rel="alternate">\n <span class="ecl-site-header__language-link-code">lv</span>\n <span class="ecl-site-header__language-link-label">latvie\xc5\xa1u</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="lt" hreflang="lt" data-wt-etrans-lang="lt" rel="alternate">\n <span class="ecl-site-header__language-link-code">lt</span>\n <span class="ecl-site-header__language-link-label">lietuvi\xc5\xb3</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="hu" hreflang="hu" data-wt-etrans-lang="hu" rel="alternate">\n <span class="ecl-site-header__language-link-code">hu</span>\n <span class="ecl-site-header__language-link-label">magyar</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="mt" hreflang="mt" data-wt-etrans-lang="mt" rel="alternate">\n <span class="ecl-site-header__language-link-code">mt</span>\n <span class="ecl-site-header__language-link-label">Malti</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="nl" hreflang="nl" data-wt-etrans-lang="nl" rel="alternate">\n <span class="ecl-site-header__language-link-code">nl</span>\n <span class="ecl-site-header__language-link-label">Nederlands</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="pl" hreflang="pl" data-wt-etrans-lang="pl" rel="alternate">\n <span class="ecl-site-header__language-link-code">pl</span>\n <span class="ecl-site-header__language-link-label">polski</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="pt" hreflang="pt" data-wt-etrans-lang="pt" rel="alternate">\n <span class="ecl-site-header__language-link-code">pt</span>\n <span class="ecl-site-header__language-link-label">portugu\xc3\xaas</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="ru" hreflang="ru" data-wt-etrans-lang="ru" rel="alternate">\n <span class="ecl-site-header__language-link-code">ru</span>\n <span class="ecl-site-header__language-link-label">p\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="ro" hreflang="ro" data-wt-etrans-lang="ro" rel="alternate">\n <span class="ecl-site-header__language-link-code">ro</span>\n <span class="ecl-site-header__language-link-label">rom\xc3\xa2n\xc4\x83</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="sk" hreflang="sk" data-wt-etrans-lang="sk" rel="alternate">\n <span class="ecl-site-header__language-link-code">sk</span>\n <span class="ecl-site-header__language-link-label">sloven\xc4\x8dina</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="sl" hreflang="sl" data-wt-etrans-lang="sl" rel="alternate">\n <span class="ecl-site-header__language-link-code">sl</span>\n <span class="ecl-site-header__language-link-label">sloven\xc5\xa1\xc4\x8dina</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="fi" hreflang="fi" data-wt-etrans-lang="fi" rel="alternate">\n <span class="ecl-site-header__language-link-code">fi</span>\n <span class="ecl-site-header__language-link-label">suomi</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="sv" hreflang="sv" data-wt-etrans-lang="sv" rel="alternate">\n <span class="ecl-site-header__language-link-code">sv</span>\n <span class="ecl-site-header__language-link-label">svenska</span>\n </a>\n </li>\n <li class="ecl-site-header__language-item">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--no-visited ecl-site-header__language-link" lang="uk" hreflang="uk" data-wt-etrans-lang="uk" rel="alternate">\n <span class="ecl-site-header__language-link-code">uk</span>\n <span class="ecl-site-header__language-link-label">\xd0\xa3\xd0\xba\xd1\x80\xd0\xb0\xd1\x97\xd0\xbd\xd1\x81\xd1\x8c\xd0\xba\xd0\xb0</span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</div>\n <div class="ecl-site-header__search-container" role="search">\n <a class="ecl-button ecl-button--tertiary ecl-site-header__search-toggle" href="#" data-ecl-search-toggle="true" aria-controls="search-form-id" aria-expanded="false">\n <svg class="ecl-icon ecl-icon--s ecl-site-header__icon" focusable="false" aria-hidden="false" role="img">\n <title>Search</title>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#search"></use>\n </svg>\nSearch </a>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\t<div class="portlet-boundary portlet-boundary_estatsearchportlet_WAR_estatsearchportlet_ portlet-static portlet-static-end portlet-barebone " id="p_p_id_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_">\n\t\t<span id="p_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J"></span>\n\n\n\n\n\t\n\n\t\n\t\t\n\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\t\n<section class="portlet" id="portlet_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J">\n\n <div class="portlet-content">\n\n <div class="autofit-float autofit-row portlet-header">\n\n <div class="autofit-col autofit-col-end">\n <div class="autofit-section">\n </div>\n </div>\n </div>\n\n \n\t\t\t<div class=" portlet-content-container">\n\t\t\t\t\n\n\n\t<div class="portlet-body">\n\n\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\n\t\n\n\t\t\r\n<link rel="stylesheet" href="/eurostat/o/estat-search-portlet/resources/js/jquery-ui.min.css?browserId=other&themeId=estatthemeecl_WAR_estatthemeecl&minifierType=css&languageId=en_GB&t=1716541036000" />\r\n<script type="text/javascript" src="/eurostat/o/estat-search-portlet/resources/js/jquery-ui.min.js?browserId=other&minifierType=js&languageId=en_GB&t=1716541036000"></script>\r\n<script type="text/javascript" src="/eurostat/o/estat-search-portlet/resources/js/bootstrap-dropdown.js?browserId=other&minifierType=js&languageId=en_GB&t=1716541036000"></script>\r\n\r\n \t<form method="get" action="https://ec.europa.eu/eurostat/web/main/search/-/search/estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J?p_auth=xFSE1KOk" class="form-search-portlet _estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_ ecl-search-form ecl-site-header__search" name="search-form-id-_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_" role="search" data-ecl-search-form id="search-form-id-_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_">\r\n\t\t\r\n\t\t\t<script type="text/javascript">\r\n\t\t\twindow.addEventListener("DOMContentLoaded", function(){\r\n\t\t\t\tif(screen.width < 576){\r\n\t\t\t\t\t$(".portlet-boundary_estatsearchportlet_WAR_estatsearchportlet_ .form-label-group > label, .ecl-site-header__search .form-label-group > label").text("Enter search term");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t</script>\r\n\t\t\t\r\n\t\t<h2 class="sr-only">Search by keyword</h2>\r\n \t\r\n\t\t\t\t<div class="form-label-group ecl-form-group">\r\n\t\t\t\t\t<input id="input-search-_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_" class="main-search-field search-query _estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_ ecl-text-input ecl-text-input--m ecl-search-form__text-input" name="text" type="text" placeholder="Enter search term" value="">\r\n\t\t\t\t\t<label for="input-search-_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_">Enter search term</label>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button class="ecl-button ecl-button--primary ecl-search-form__button _estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_" type="submit" aria-label="Search">\r\n\t\t\t\t\t<span class="ecl-button__container">\r\n\t\t\t\t\t\t<svg class="ecl-icon ecl-icon--xs ecl-button__icon ecl-button__icon--after" focusable="false" aria-hidden="true" data-ecl-icon><use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#search"></use></svg>\r\n\t\t\t\t\t\t<span class="ecl-button__label" data-ecl-label="true">Search</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</button>\r\n\t\t\r\n\t\t\t<script type="text/javascript">\r\n\t\t\t\t\tjQuery.extend(jQuery.expr[\':\'], {\r\n\t\t\t\t\t\tfocusable: function(el, index, selector){\r\n\t\t\t\t\t\treturn $(el).is(\'a, button, :input, [tabindex]\');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tshowFilters = \'Expand filters\';\r\n\t\t\t\t\thideFilters = \'Collapse filters\';\r\n\t\t\t\t\tnavStatusOpen = screen.width >= 768 ? true : false;\r\n\t\t\t\t\t/* Set the width of the sidebar to 250px and the left margin of the page content to 250px */\r\n\t\t\t\t\tfunction openNav() {\r\n\t\t\t\t\t if(screen.width >= 768){\r\n\t\t\t\t\t\t$("#facets").css("width", "30%");\r\n\t\t\t\t\t\t$("#search-results-container").css("width", "69.9%");\r\n\t\t\t\t\t\t$("#search-results-container").css("padding-left", "3%");\r\n\t\t\t\t\t } else {\r\n\t\t\t\t\t\t$("#facets").css("width", "100%");\r\n\t\t\t\t\t\t$("#search-results-container").css("width", "0%");\r\n\t\t\t\t\t\t$("#search-results-container .search-results .result").css("box-shadow", "none");\r\n\t\t\t\t\t\t$(\'#closebtn-xs\').css("display", "inline-block");\r\n\t\t\t\t\t\t$(\'#icon-filter-xs\').css("display", "inline-block");\r\n\t\t\t\t\t \t$("#search-results-container").css("max-height", "0");\r\n\t\t\t\t\t }\r\n\t\t\t\t\t $("#facets").css("max-height", "inherit");\r\n\t\t\t\t\t navStatusOpen = true;\r\n\t\t\t\t\t $(\'#openbtn\').css("display", "none");\r\n\t\t\t\t\t $(\'#closebtn\').css("display", "inline-block");\r\n\t\t\t\t\t $(".fa.fa-filter").prop(\'title\', "Collapse filters");\r\n\t\t\t\t\t $(\'#facets\').find(\':focusable\').removeAttr(\'tabindex\');\r\n\t\t\t\t\t}\r\n\t\t\r\n\t\t\t\t\t/* Set the width of the sidebar to 0 and the left margin of the page content to 0 */\r\n\t\t\t\t\tfunction closeNav() {\r\n\t\t\t\t\t if(screen.width >= 768){\r\n\t\t\t\t\t\t$("#search-results-container").css("padding-left", "0");\r\n\t\t\t\t\t } \r\n\t\t\t\t\t $("#search-results-container .search-results .result").css("box-shadow", "0 0 3px #999"); \t\t\t\t\t\t \r\n\t\t\t\t\t $("#search-results-container").css("max-height", "inherit");\r\n\t\t\t\t\t $("#search-results-container").css("width", "99.8%");\r\n\t\t\t\t\t $("#facets").css("width", "0%"); \r\n\t\t\t\t\t navStatusOpen = false;\r\n\t\t\t\t\t $(\'#openbtn\').css("display", "inline-block");\r\n\t\t\t\t\t $(\'#closebtn\').css("display", "none");\r\n\t\t\t\t\t $("#facets").css("max-height", "0px");\r\n\t\t\t\t\t $(".fa.fa-filter").prop(\'title\', "Expand filters");\r\n\t\t\t\t\t $(\'#facets\').find(\':focusable\').attr(\'tabindex\', -1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t/* open or close depending on the status of the sidebar */\r\n\t\t\t\t\tfunction manageNav() {\r\n\t\t\t\t\t\tif(navStatusOpen){\r\n\t\t\t\t\t\t\tcloseNav();\r\n\t\t\t\t\t\t\t$(".icon-filter").prop(\'title\', showFilters);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\topenNav();\r\n\t\t\t\t\t\t\t$(".icon-filter").prop(\'title\', hideFilters);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar collections = new Map();\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'dataset\', \'Datasets\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_CATALO\', \'Leaflets and other brochures\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_DATFOC\', \'Data in focus\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_EURNEW\', \'News articles\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_MAN\', \'Manuals and guidelines\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_PREREL\', \'Euro indicators\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_STATBK\', \'Statistical books/Pocketbooks\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_METWP\', \'Statistical working papers\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_STAFOC\', \'Statistics in Focus\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_DEDSEC\', \'Thematic sections\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_STATRP\', \'Statistical reports\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_DIGPUB\', \'Interactive publications\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_FLAGPUB\', \'Flagship publications\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_KEYFIG\', \'Key Figures\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_STATEXP\', \'Statistics Explained articles\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_GLOSSARY\', \'Glossary\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_STAT4BEG\', \'Statistics 4 beginners\');\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tcollections.set(\'CAT_PODCAST\', \'Podcasts\');\r\n\t\t\t\t\t\r\n\t\t\t\t\tcollections.set(\'tree folder\', \'Data tree folder\');\r\n\t\t\t\t\tcollections.set(\'collection\', \'Products\');\r\n\t\t\t\t\tcollections.set(\'theme\', \'Statistical themes\');\r\n\t\t\t\t\t$[ "ui" ][ "autocomplete" ].prototype["_renderItem"] = function( ul, item) {\r\n\t\t\t\t\t\treturn $("<li></li>")\r\n\t\t\t\t\t\t\t.css("display", "flex")\r\n\t\t\t\t\t\t\t.css("flex", "auto")\r\n\t\t\t\t\t\t\t//.css("background-color", liColor)\r\n\t\t\t\t\t\t\t.data("item.autocomplete", item )\r\n\t\t\t\t\t\t\t.append( $( "<div></div>" )\r\n\t\t\t\t\t\t\t\t.css("display", "flex")\r\n\t\t\t\t\t\t\t\t.css("flex", "auto")\r\n\t\t\t\t\t\t\t\t.append( $( "<div></div>" )\r\n\t\t\t\t\t\t\t\t\t//.css("display", "flex")\r\n\t\t\t\t\t\t\t\t\t.css("flex", "auto")\r\n\t\t\t\t\t\t\t\t\t.css("flex-direction", "column")\r\n\t\t\t\t\t\t\t\t\t.css("display", "block")\r\n\t\t\t\t\t\t\t\t\t.css("width", "1px")\r\n\t\t\t\t\t\t\t\t\t.css("padding-right", "20px")\r\n\t\t\t\t\t\t\t\t\t.css("max-height", "none")\r\n\t\t\t\t\t\t\t\t\t.append( $( "<a></a>" )\r\n\t\t\t\t\t\t\t\t\t\t.html(item.suggest != null ? item.suggest.highlightPhrase : item.label ) \r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t.append( $( "<div></div>" )\r\n\t\t\t\t\t\t\t\t\t.css("display", "flex")\r\n\t\t\t\t\t\t\t\t\t.css("flex", "0 1 auto")\r\n\t\t\t\t\t\t\t\t\t.css("align-self", "center")\r\n\t\t\t\t\t\t\t\t\t.append( $( "<span></span>" )\r\n\t\t\t\t\t\t\t\t\t\t//.css("font-size", "1.3rem")\r\n\t\t\t\t\t\t\t\t\t\t.css("font-family", "arial, sans-serif")\r\n\t\t\t\t\t\t\t\t\t\t.css("font-weight", "normal")\r\n\t\t\t\t\t\t\t\t\t\t.css("color", "#0e47cb")\r\n\t\t\t\t\t\t\t\t\t\t//.css("font-style", "italic")\r\n\t\t\t\t\t\t\t\t\t\t.css("text-transform", "uppercase")\r\n\t\t\t\t\t\t\t\t\t\t.html(collections.get(item.type) != null ? collections.get(item.type) : item.type) \r\n\t\t\t\t\t\t\t\t\t) \r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t.appendTo( ul );\r\n\t\t\t\t\t};\r\n\t\t\t\t\t$(".main-search-field._estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_").autocomplete({\r\n\t\t\t\t\t\tminLength: 3,\r\n\t\t\t\t\t\tsource: function(request, response) {\r\n\t\t\t\t\t\t\t$.getJSON("https://ec.europa.eu/eurostat/web/main/home?p_p_id=estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_action=autocomplete", { text: request.term }, response);\r\n\t\t\t\t\t\t},\t\r\n\t\t\t\t\t\topen: function() {\r\n\t\t\t\t\t\t\t$(this).autocomplete("widget").css("width", $(".main-search-field._estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_").outerWidth(true) + $(".ecl-search-form__button._estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_").outerWidth(true));\r\n\t\t\t\t\t\t}, \r\n\t\t\t\t\t\tfocus: function(event, ui) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tselect: function( event, ui ) {\r\n\t\t\t\t\t\t\tvar url = new URL(document.getElementById(\'search-form-id-_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_\').action);\r\n\t\t\t\t\t\t\tif(ui.item.type==\'collection\'){\r\n\t\t\t\t\t\t\t\turl.searchParams.set(\'_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_collection\', ui.item.code);\r\n\t\t\t\t\t\t\t\t$(".main-search-field._estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_").val("");\r\n\t\t\t\t\t\t\t} else if(ui.item.type==\'theme\'){\r\n\t\t\t\t\t\t\t\turl.searchParams.set(\'_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_theme\', ui.item.code);\r\n\t\t\t\t\t\t\t\t$(".main-search-field._estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_").val("");\r\n\t\t\t\t\t\t\t} else if(ui.item.type==\'tree folder\'){\r\n\t\t\t\t\t\t\t\turl.searchParams.set(\'_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_folderTitle\', ui.item.suggest.highlightPhrase.replace(/(<([^>]+)>)/ig,""));\r\n\t\t\t\t\t\t\t\turl.searchParams.set(\'_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_collection\', \'dataset\');\r\n\t\t\t\t\t\t\t\t$(".main-search-field._estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_").val("");\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\turl.searchParams.set(\'_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_text\', ui.item.suggest.highlightPhrase.replace(/(<([^>]+)>)/ig,""));\r\n\t\t\t\t\t\t\t\t$(".main-search-field._estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_").val(ui.item.suggest.highlightPhrase.replace(/(<([^>]+)>)/ig,""));\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t//$("input[name*=\'collection\']").val(ui.item.type);\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\twindow.location.href=url.href;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tchange: function( event, ui ) {\r\n\t\t\t\t\t\t\t if(ui.item != null){\r\n\t\t\t\t\t\t\t \t$(".main-search-field._estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_").val(ui.item.suggest.highlightPhrase.replace(/(<([^>]+)>)/ig,""));\r\n\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t event.preventDefault();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t/*response: function(event, ui) {\r\n\t\t\t\t\t if (!ui.content.length) {\r\n\t\t\t\t\t var noResult = { value:"",label:"no_results_found" };\r\n\t\t\t\t\t ui.content.push(noResult);\r\n\t\t\t\t\t }\r\n\t\t\t\t\t }*/\r\n\t\t\t\t\t});\r\n\t\t\t</script>\r\n\t\t</form>\r\n \n\n\t\n\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\t\n\n\n\t</div>\n\n\t\t\t</div>\n\t\t\n </div>\n</section>\n\t\n\n\t\t\n\t\t\n\n\n\n\n\n\n\n\t</div>\n\n\n\n\n\n\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\t<div class="portlet-boundary portlet-boundary_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_ portlet-static portlet-static-end portlet-barebone portlet-navigation " id="p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_ecl_navigation_menu_instance_">\n\t\t<span id="p_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_ecl_navigation_menu_instance"></span>\n\n\n\n\n\t\n\n\t\n\t\t\n\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\t\n<section class="portlet" id="portlet_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_ecl_navigation_menu_instance">\n\n <div class="portlet-content">\n\n <div class="autofit-float autofit-row portlet-header">\n\n <div class="autofit-col autofit-col-end">\n <div class="autofit-section">\n </div>\n </div>\n </div>\n\n \n\t\t\t<div class=" portlet-content-container">\n\t\t\t\t\n\n\n\t<div class="portlet-body">\n\n\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\n\t\n\n\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\t\t<div class="ecl-site-header__banner">\n <div class="ecl-container"></div>\n</div>\n<nav class="ecl-menu" data-ecl-menu data-ecl-menu-max-lines="2" data-ecl-auto-init="Menu" data-ecl-menu-label-open="Menu" data-ecl-menu-label-close="Close" aria-expanded="false" role="navigation">\n <div class="ecl-menu__overlay"></div>\n <div class="ecl-container ecl-menu__container">\n <a href="#" class="ecl-link ecl-link--standalone ecl-link--icon ecl-button ecl-button--tertiary ecl-menu__open ecl-link--icon-only" data-ecl-menu-open>\n <svg class="ecl-icon ecl-icon--m ecl-link__icon" focusable="false" aria-hidden="true">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#hamburger"></use>\n </svg>\n <svg class="ecl-icon ecl-icon--s ecl-link__icon" focusable="false" aria-hidden="true">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#close-filled"></use>\n </svg>\n <span class="ecl-link__label">Menu</span>\n </a>\n <section class="ecl-menu__inner" data-ecl-menu-inner role="application" aria-label="Menu">\n <header class="ecl-menu__inner-header">\n <button class="ecl-button ecl-button--ghost ecl-menu__close" type="submit" data-ecl-menu-close>\n <span class="ecl-button__container">\n <span class="ecl-button__label" data-ecl-label="true">Close</span>\n <svg class="ecl-icon ecl-icon--s ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#close-filled"></use>\n </svg>\n </span>\n </button>\n <div class="ecl-menu__title">Menu</div>\n <button class="ecl-button ecl-button--ghost ecl-menu__back" type="submit" data-ecl-menu-back>\n <span class="ecl-button__container">\n <svg class="ecl-icon ecl-icon--xs ecl-icon--rotate-270 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n <span class="ecl-button__label" data-ecl-label="true">Back</span>\n </span>\n </button>\n </header>\n <button class="ecl-button ecl-button--ghost ecl-menu__item ecl-menu__items-previous ecl-button--icon-only" type="button" data-ecl-menu-items-previous tabindex="-1">\n <span class="ecl-button__container">\n <svg class="ecl-icon ecl-icon--s ecl-icon--rotate-270 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n <span class="ecl-button__label" data-ecl-label="true">Previous items</span>\n </span>\n </button>\n <button class="ecl-button ecl-button--ghost ecl-menu__item ecl-menu__items-next ecl-button--icon-only" type="button" data-ecl-menu-items-next tabindex="-1">\n <span class="ecl-button__container">\n <svg class="ecl-icon ecl-icon--s ecl-icon--rotate-90 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n <span class="ecl-button__label" data-ecl-label="true">Next items</span>\n </span>\n </button>\n <ul class="ecl-menu__list" data-ecl-menu-list>\n <li class="ecl-menu__item menu-indent1" data-ecl-menu-item>\n <a href="/eurostat/web/main/home" class="ecl-link ecl-link--standalone ecl-menu__link " data-ecl-menu-link>\n Home\n </a>\n </li>\n <li class="ecl-menu__item ecl-menu__item--has-children menu-indent1 ecl-menu__item--col3" data-ecl-menu-item data-ecl-has-children aria-haspopup aria-expanded="false">\n <a href="/eurostat/web/main/data" class="ecl-link ecl-link--standalone ecl-menu__link " data-ecl-menu-link>Data</a>\n <button class="ecl-button ecl-button--ghost ecl-menu__button-caret ecl-button--icon-only" type="button" data-ecl-menu-caret aria-label="Access item\'s children" aria-expanded="false">\n <span class="ecl-button__container">\n <svg class="ecl-icon ecl-icon--xs ecl-icon--rotate-180 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n </span>\n </button>\n <div class="ecl-menu__mega" data-ecl-menu-mega>\n <ul class="ecl-menu__sublist">\n <li class="menu-border">\n <ul class="submenu-list">\n <li class="ecl-menu__subitem menu-indent1" data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1\n indent--2 icol--1>\n <span class="column-title">Explore data</span>\n </li>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--2>\n <a href="/eurostat/web/main/data/database" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Database\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--3>\n <a href="/eurostat/web/main/data/statistical-themes" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Statistical themes\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--4>\n <a href="/eurostat/web/main/data/stats-finder-a-z" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Stats finder A-Z\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--5>\n <a href="/eurostat/web/experimental-statistics" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Experimental statistics\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--6>\n <a href="/eurostat/web/main/data/data-visualisations" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Data visualisations\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--7>\n <a href="/eurostat/web/education-corner/overview" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Education corner\n </a>\n </li>\n </ul>\n </ul>\n </li>\n <li class="menu-border">\n <ul class="submenu-list">\n <li class="ecl-menu__subitem menu-indent1" data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2\n indent--2 icol--1>\n <span class="column-title">Advanced tools and services</span>\n </li>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--2>\n <a href="/eurostat/web/main/data/web-services" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Web services\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--3>\n <a href="/eurostat/web/main/data/bulkdownload" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Bulk download\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--4>\n <a href="/eurostat/web/gisco/overview" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n GISCO:Geographical Information and maps\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--5>\n <a href="/eurostat/web/microdata/overview" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Microdata\n </a>\n </li>\n </ul>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col2\n iCol--6\n start--6\n end--7>\n </li>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col2\n iCol--7\n start--6\n end--7>\n </li>\n </ul>\n </li>\n <li class="menu-border">\n <ul class="submenu-list">\n <li class="ecl-menu__subitem menu-indent1" data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3\n indent--2 icol--1>\n <span class="column-title">Quality and European statistics</span>\n </li>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3 indent--3 icol--2>\n <a href="/eurostat/web/quality/overview" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Quality\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3 indent--3 icol--3>\n <a href="/eurostat/web/metadata/overview" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Metadata\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3 indent--3 icol--4>\n <a href="/eurostat/web/main/data/data-validation" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Data validation\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3 indent--3 icol--5>\n <a href="/eurostat/web/main/data/data-revision-policy" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Data revision policy\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3 indent--3 icol--6>\n <a href="/eurostat/web/sdmx-infospace/welcome" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n SDMX InfoSpace\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3 indent--3 icol--7>\n <a href="/eurostat/cros/" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Research and methodology (CROS)\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3 indent--3 icol--8>\n <a href="/eurostat/web/main/data/link-to-evaluation" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Evaluation\n </a>\n </li>\n </ul>\n </ul>\n </li>\n </ul>\n </div>\n </li>\n <li class="ecl-menu__item ecl-menu__item--has-children menu-indent1 ecl-menu__item--col0" data-ecl-menu-item data-ecl-has-children aria-haspopup aria-expanded="false">\n <a href="/eurostat/web/main/news" class="ecl-link ecl-link--standalone ecl-menu__link " data-ecl-menu-link>News</a>\n <button class="ecl-button ecl-button--ghost ecl-menu__button-caret ecl-button--icon-only" type="button" data-ecl-menu-caret aria-label="Access item\'s children" aria-expanded="false">\n <span class="ecl-button__container">\n <svg class="ecl-icon ecl-icon--xs ecl-icon--rotate-180 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n </span>\n </button>\n <div class="ecl-menu__mega" data-ecl-menu-mega>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--1>\n <a href="/eurostat/web/main/news/news-articles" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n News articles\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--2>\n <a href="/eurostat/web/main/news/euro-indicators" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Euro indicators\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--3>\n <a href="/eurostat/web/main/news/podcasts" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Podcasts\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--4>\n <a href="/eurostat/web/main/news/events" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Events\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--5>\n <a href="/eurostat/web/main/news/release-calendar" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Release calendar\n </a>\n </li>\n </ul>\n </div>\n </li>\n <li class="ecl-menu__item ecl-menu__item--has-children menu-indent1 ecl-menu__item--col2" data-ecl-menu-item data-ecl-has-children aria-haspopup aria-expanded="false">\n <a href="/eurostat/web/main/publications" class="ecl-link ecl-link--standalone ecl-menu__link " data-ecl-menu-link>Publications</a>\n <button class="ecl-button ecl-button--ghost ecl-menu__button-caret ecl-button--icon-only" type="button" data-ecl-menu-caret aria-label="Access item\'s children" aria-expanded="false">\n <span class="ecl-button__container">\n <svg class="ecl-icon ecl-icon--xs ecl-icon--rotate-180 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n </span>\n </button>\n <div class="ecl-menu__mega" data-ecl-menu-mega>\n <ul class="ecl-menu__sublist">\n <li class="menu-border">\n <ul class="submenu-list">\n <li class="ecl-menu__subitem menu-indent1" data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1\n indent--2 icol--1>\n <span class="column-title">Collections</span>\n </li>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--2>\n <a href="/eurostat/web/main/publications/flagship-publications" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Flagship publications\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--3>\n <a href="/eurostat/web/main/publications/interactive-publications" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Interactive publications\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--4>\n <a href="/eurostat/web/main/publications/key-figures" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Key figures\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--5>\n <a href="/eurostat/statistics-explained/index.php?title=Online_publications" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Online reads\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--6>\n <a href="/eurostat/web/main/publications/manuals-and-guidelines" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Manuals and guidelines\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--7>\n <a href="/eurostat/web/main/publications/statistical-working-papers" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Statistical working papers\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--8>\n <a href="/eurostat/web/main/publications/statistical-reports" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Statistical reports\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--9>\n <a href="/eurostat/web/main/publications/leaflets" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Leaflets\n </a>\n </li>\n </ul>\n </ul>\n </li>\n <li class="menu-border">\n <ul class="submenu-list">\n <li class="ecl-menu__subitem menu-indent1" data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2\n indent--2 icol--1>\n <span class="column-title"></span>\n </li>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--2>\n <a href="/eurostat/statistics-explained/index.php?title=Main_Page" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Statistics Explained\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--3>\n <a href="/eurostat/web/main/publications/link-to-release-calendar" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Release calendar\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--4>\n <a href="/eurostat/web/main/publications/style-guides" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Style guides\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--5>\n <a href="/eurostat/web/main/publications/order-publication" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Order a publication\n </a>\n </li>\n </ul>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col2\n iCol--6\n start--6\n end--9>\n </li>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col2\n iCol--7\n start--6\n end--9>\n </li>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col2\n iCol--8\n start--6\n end--9>\n </li>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col2\n iCol--9\n start--6\n end--9>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </li>\n <li class="ecl-menu__item ecl-menu__item--has-children menu-indent1 ecl-menu__item--full" data-ecl-menu-item data-ecl-has-children aria-haspopup aria-expanded="false">\n <a href="/eurostat/web/main/about-us" class="ecl-link ecl-link--standalone ecl-menu__link " data-ecl-menu-link>About us</a>\n <button class="ecl-button ecl-button--ghost ecl-menu__button-caret ecl-button--icon-only" type="button" data-ecl-menu-caret aria-label="Access item\'s children" aria-expanded="false">\n <span class="ecl-button__container">\n <svg class="ecl-icon ecl-icon--xs ecl-icon--rotate-180 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n </span>\n </button>\n <div class="ecl-menu__mega" data-ecl-menu-mega>\n <ul class="ecl-menu__sublist">\n <li class="menu-border">\n <ul class="submenu-list">\n <li class="ecl-menu__subitem menu-indent1" data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1\n indent--2 icol--1>\n <span class="column-title">Our organisation</span>\n </li>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--2>\n <a href="/eurostat/web/main/about-us/who-we-are" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Who we are\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--3>\n <a href="/eurostat/web/main/about-us/who-does-what" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Who does what\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--4>\n <a href="/eurostat/web/main/about-us/how-to-find-us" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n How to find us\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col1 indent--3 icol--5>\n <a href="/eurostat/web/main/about-us/history" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n History\n </a>\n </li>\n </ul>\n </ul>\n </li>\n <li class="menu-border">\n <ul class="submenu-list">\n <li class="ecl-menu__subitem menu-indent1" data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2\n indent--2 icol--1>\n <span class="column-title">Our policies</span>\n </li>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--2>\n <a href="/eurostat/web/main/about-us/policies/co-ordination-role" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Co-ordination role\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--3>\n <a href="/eurostat/web/main/about-us/policies/communication-dissemination" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Communication and dissemination\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--4>\n <a href="/eurostat/web/main/about-us/policies/link-to-quality" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Quality\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--5>\n <a href="/eurostat/web/main/data-revision-policy" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Data revision policy\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--6>\n <a href="/eurostat/cros/" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Research and methodology (CROS)\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--7>\n <a href="/eurostat/web/main/about-us/policies/copyright" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Copyright notice and free re-use of data\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col2 indent--3 icol--8>\n <a href="/eurostat/web/main/about-us/policies/evaluation" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Evaluation\n </a>\n </li>\n </ul>\n </ul>\n </li>\n <li class="menu-border">\n <ul class="submenu-list">\n <li class="ecl-menu__subitem menu-indent1" data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3\n indent--2 icol--1>\n <span class="column-title">Our partners</span>\n </li>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3 indent--3 icol--2>\n <a href="/eurostat/web/european-statistical-system/overview" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n European Statistical System (ESS)\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col3 indent--3 icol--3>\n <a href="/eurostat/web/international-cooperation/overview" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n International cooperation\n </a>\n </li>\n </ul>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col3\n iCol--4\n start--4\n end--8>\n </li>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col3\n iCol--5\n start--4\n end--8>\n </li>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col3\n iCol--6\n start--4\n end--8>\n </li>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col3\n iCol--7\n start--4\n end--8>\n </li>\n <li class="ecl-menu__subitem menu-indent2 menu-hidden"\n data-ecl-menu-subitem-rvp\n data-ecl-menu-subitem--col3\n iCol--8\n start--4\n end--8>\n </li>\n </ul>\n </li>\n <li class="menu-border">\n <ul class="submenu-list">\n <li class="ecl-menu__subitem menu-indent1" data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col4\n indent--2 icol--1>\n <span class="column-title">Working with us</span>\n </li>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col4 indent--3 icol--2>\n <a href="/eurostat/web/main/about-us/job-opportunities" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Job opportunities\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col4 indent--3 icol--3>\n <a href="/eurostat/web/calls-for-tenders/overview" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Calls for tenders\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col4 indent--3 icol--4>\n <a href="/eurostat/web/main/about-us/grants" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Grants\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col4 indent--3 icol--5>\n <a href="/eurostat/web/main/about-us/public-consultations" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Public consultations\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent2"\n data-ecl-menu-subitem-rvp data-ecl-menu-subitem--col4 indent--3 icol--6>\n <a href="/eurostat/web/main/about-us/link-to-events" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Events\n </a>\n </li>\n </ul>\n </ul>\n </li>\n </ul>\n </div>\n </li>\n <li class="ecl-menu__item ecl-menu__item--has-children menu-indent1 ecl-menu__item--col0" data-ecl-menu-item data-ecl-has-children aria-haspopup aria-expanded="false">\n <a href="/eurostat/web/main/contact-us" class="ecl-link ecl-link--standalone ecl-menu__link " data-ecl-menu-link>Contact us</a>\n <button class="ecl-button ecl-button--ghost ecl-menu__button-caret ecl-button--icon-only" type="button" data-ecl-menu-caret aria-label="Access item\'s children" aria-expanded="false">\n <span class="ecl-button__container">\n <svg class="ecl-icon ecl-icon--xs ecl-icon--rotate-180 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n </span>\n </button>\n <div class="ecl-menu__mega" data-ecl-menu-mega>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--1>\n <a href="/eurostat/web/main/contact-us/user-support" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n User support\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--2>\n <a href="/eurostat/web/main/contact-us/fact-checking-services" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Fact-checking services\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--3>\n <a href="/eurostat/web/main/contact-us/press-services" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Press services\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--4>\n <a href="/eurostat/web/main/contact-us/institutional-services" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Institutional services\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--5>\n <a href="/eurostat/web/main/contact-us/visit-us" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Visit us\n </a>\n </li>\n </ul>\n </div>\n </li>\n <li class="ecl-menu__item ecl-menu__item--has-children menu-indent1 ecl-menu__item--col0" data-ecl-menu-item data-ecl-has-children aria-haspopup aria-expanded="false">\n <a href="/eurostat/web/main/help" class="ecl-link ecl-link--standalone ecl-menu__link " data-ecl-menu-link>Help</a>\n <button class="ecl-button ecl-button--ghost ecl-menu__button-caret ecl-button--icon-only" type="button" data-ecl-menu-caret aria-label="Access item\'s children" aria-expanded="false">\n <span class="ecl-button__container">\n <svg class="ecl-icon ecl-icon--xs ecl-icon--rotate-180 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n </span>\n </button>\n <div class="ecl-menu__mega" data-ecl-menu-mega>\n <ul class="ecl-menu__sublist">\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--1>\n <a href="/eurostat/web/main/help/website-guide" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Website guide\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--2>\n <a href="/eurostat/web/main/help/products-and-tools" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Products and tools\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--3>\n <a href="/eurostat/web/main/help/services" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Services\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--4>\n <a href="/eurostat/web/main/alert" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Alert\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--5>\n <a href="/eurostat/web/main/help/faq" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Frequently asked questions\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--6>\n <a href="/eurostat/web/main/help/accessibility" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Accessibility\n </a>\n </li>\n <li class="ecl-menu__subitem menu-indent1"\n data-ecl-menu-subitem-rvp indent--2 icol--7>\n <a href="/eurostat/web/main/help/maintenance-information" class="ecl-link ecl-link--standalone ecl-menu__sublink ">\n Maintenance information\n </a>\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </section>\n </div>\n</nav>\n\n\n\t\n\t\n\t\n\n\n\t\n\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\t\n\n\n\t</div>\n\n\t\t\t</div>\n\t\t\n </div>\n</section>\n\t\n\n\t\t\n\t\t\n\n\n\n\n\n\n\n\t</div>\n\n\n\n\n\n\n</header>\n <section id="content" class="ecl-u-pb-xl">\n\n\n \n <div class="container">\n \n \n \n\n\n<section class="portlet" id="portlet_status">\n\n <div class="portlet-content">\n\n <div class="autofit-float autofit-row portlet-header">\n <div class="autofit-col autofit-col-expand">\n <h2 class="portlet-title-text">Status 404</h2>\n </div>\n\n <div class="autofit-col autofit-col-end">\n <div class="autofit-section">\n </div>\n </div>\n </div>\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\t<h3 class="alert alert-danger">\n\t\t\tNot Found\n\t\t</h3>\n\n\t\tThe requested resource could not be found.\n\n\t\t<br /><br />\n\n\t\t<code class="lfr-url-error">https://ec.europa.eu/eurostat/SDMX/diss-web/rest/datastructure/ESTAT/DSD_tran_sf_railac</code>\n\t\n\t\n\n<div class="separator"><!-- --></div>\n\n<a href="javascript:history.go(-1);">« Back</a>\n\n\n </div>\n</section> \n </div>\n </section>\n <script type="text/javascript">\n function textNodesUnder(e) { for (var t, n = [], r = document.createTreeWalker(e, NodeFilter.SHOW_TEXT, null, !1); t = r.nextNode();)if(t.parentElement && t.parentElement.tagName != "STYLE" && t.parentElement.tagName != "SCRIPT") n.push(t); return n } textNodesUnder(document.querySelector("#content")).forEach(e => e.textContent = e.textContent.replace(/(\\d+)(\\s+)(\\d+)/g, "$1\xc2\xa0$3"));\n </script>\n<aside id="estat-feedback-form" class="ecl-u-pv-m">\n <div class="ecl-container">\n <!-- alerts -->\n <div id="ff-alerts" hidden>\n <div class="ecl-notification ecl-notification--success" data-ecl-notification role="alert" data-ecl-auto-init="Notification">\n <svg class="ecl-icon ecl-icon--s ecl-notification__icon" focusable="false" aria-hidden="true">\n <use\n xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#success">\n </use>\n </svg>\n <div class="ecl-notification__content">\n <button id="ff-close" class="ecl-button ecl-button--ghost ecl-notification__close" type="button"\n data-ecl-notification-close>\n <span class="ecl-button__container">\n <span class="ecl-button__label" data-ecl-label="true">\nClose </span>\n <svg class="ecl-icon ecl-icon--s ecl-button__icon" focusable="false"\n aria-hidden="true" data-ecl-icon>\n <use\n xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#close-filled">\n </use>\n </svg>\n </span>\n </button>\n <div class="ecl-notification__title">\nYour feedback was sent </div>\n <div class="ecl-notification__description ff-useful-yes" hidden>\nThank you for your feedback. </div>\n <div class="ecl-notification__description ff-useful-no" hidden>\nThank you for the information. We will investigate the issue. </div>\n </div>\n </div>\n </div>\n <!-- feedback form header -->\n <section id="feedback-form-wrapper">\n <div class="ecl-u-mv-none ecl-expandable" data-ecl-expandable="true"\n data-ecl-auto-init="Expandable">\n <p class="ecl-u-type-paragraph-m ecl-u-d-inline-block ecl-u-ma-xs ecl-u-ml-none">\nWas this page useful? </p>\n <span class="text-nowrap">\n <button id="ff-useful-yes" class="ecl-button ecl-button--secondary ecl-u-mh-2xs" type="button">\nYes <span aria-hidden="true" class="hide">\xe2\x9c\x93</span>\n </button>\n <button id="ff-useful-no" class="ecl-button ecl-button--secondary ecl-expandable__toggle" type="button"\n aria-controls="estat-feedback-form-body" data-ecl-expandable-toggle\n data-ecl-label-expanded="No"\n data-ecl-label-collapsed="No" aria-expanded="false">\n <span class="ecl-button__container">\n <span class="ecl-button__label" data-ecl-label="true">\nNo </span>\n <svg class="ecl-icon ecl-icon--fluid ecl-icon--rotate-180 ecl-button__icon"\n focusable="false" aria-hidden="true" data-ecl-icon>\n <use\n xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow">\n </use>\n </svg>\n </span>\n </button>\n </span>\n <!-- feedback form body -->\n <div id="estat-feedback-form-body" class="ecl-expandable__content ecl-u-pv-m" hidden>\n <p class="ecl-u-type-paragraph-m">If you do not wish to provide more detailed feedback, please just click on the \xe2\x80\x9cSubmit\xe2\x80\x9d button to send your response. </p>\n <div class="ecl-form-group">\n <input type="hidden" name="useful" value="no" autocomplete="off" />\n <input type="hidden" name="token" value="jJpAZtmzgT6og1pA8JyDCcbLcWFICPw17CSbxAhJrVObVzI00/ALHj5OmiWEOTXv0cXG3nW4LJIMli+AlEyFRkBwu1GNCCOgq6c9S1gKkX3iZCXwW+YDosGFbiNqop0iTF/oE0tfBl4q2pwt0+w=" />\n <input type="hidden" name="language" value="en_GB">\n <label aria-hidden="true" hidden><input aria-hidden="true" type="radio" name="ff-radio" value="spam">Click this radio box.</label>\n\n <!-- issue type (select) -->\n <label for="ff-issue-type" class="ecl-form-label">What type of issue would you like to report?<span class="ecl-form-label__optional ecl-u-type-lowercase">(Optional)</span></label>\n <div class="ecl-select__container ecl-select__container--l">\n <select class="ecl-select" id="ff-issue-type" required>\n <option value="" selected="selected">\nSelect type </option>\n <option value="technical_problem">\nThere is a technical problem with this page </option>\n <option value="no_information">\nI cannot find the information I am looking for </option>\n <option value="other">\nOther </option>\n </select>\n <div class="ecl-select__icon">\n <button class="ecl-button ecl-button--ghost ecl-button--icon-only" type="button" tabindex="-1">\n <span class="ecl-button__container">\n <span class="ecl-button__label" data-ecl-label="true">Show / hide list</span>\n <svg class="ecl-icon ecl-icon--s ecl-icon--rotate-180 ecl-button__icon" focusable="false" aria-hidden="true" data-ecl-icon>\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n </span>\n </button>\n </div>\n </div>\n \n <label aria-hidden="true" for="ff-name" class="ecl-form-label ecl-u-sr-only">Enter your name</label>\n <input aria-hidden="true" name="ff-name" class="ecl-text-input ecl-text-input--s ecl-u-sr-only" type="text" placeholder="Enter your name" tabindex="-1" />\n\n <!-- issue description (textarea) -->\n <label class="ecl-form-label ecl-u-mt-l" for="ff-issue-desc">Please describe the issue<span class="ecl-form-label__optional ecl-u-type-lowercase">(Optional)</span></label>\n <div class="ecl-help-block">\nPlease do not include any personal information </div>\n <textarea id="ff-issue-desc" class="ecl-text-area ecl-text-area--l" rows="4" maxlength="300" \n required></textarea>\n <div class="ecl-u-type-paragraph-s" aria-live="polite">\n <span id="ff-issue-desc-counter">300</span>/300 characters remaining\n </div>\n \n <div aria-hidden="true" class="ecl-checkbox ecl-u-sr-only">\n <input name="ff-terms" class="ecl-checkbox__input" type="checkbox" id="ff-terms"\n tabindex="-1" />\n <label for="ff-terms" class="ecl-checkbox__label">\n <span class="ecl-checkbox__box">\n <svg class="ecl-icon ecl-icon--s ecl-checkbox__icon" focusable="false"\n aria-hidden="true">\n <use\n xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#check">\n </use>\n </svg>\n </span>\n <span class="ecl-checkbox__text">I accept the terms & conditions.</span>\n </label>\n </div>\n \n <!-- submit -->\n <button id="ff-submit" class="ecl-button ecl-button--primary ecl-u-mv-m" type="submit"\n aria-disabled="true">\nSubmit </button>\n \n </div>\n </div>\n </div>\n </section>\n </div>\n</aside>\n<footer class="ecl-site-footer">\n <div class="ecl-container ecl-site-footer__container">\n <div class="ecl-site-footer__row">\n <div class="ecl-site-footer__column">\n <div class="ecl-site-footer__section ecl-site-footer__section--site-info">\n <div class="ecl-site-footer__title">\n <a href="https://ec.europa.eu/eurostat/web/main/home" class="ecl-link ecl-link--standalone ecl-site-footer__title-link">\n <picture class="ecl-picture ecl-site-footer__picture" title="Eurostat">\n <source srcset="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/header/estat-logo-horizontal.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000" media="(min-width: 996px)">\n <img class="ecl-site-footer__logo-image" src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/header/estat-logo-horizontal.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000" alt="Eurostat logo" />\n </picture>\n </a>\n </div>\n <div class="ecl-site-footer__description">\nThis site is managed by <a href=\'https://ec.europa.eu/eurostat/web/main/home\' class=\'ecl-link\'>Eurostat</a> and is an official website of the European Union </div>\n </div>\n </div>\n <div class="ecl-site-footer__column">\n <div class="ecl-site-footer__section">\n <h2 class="ecl-site-footer__title ecl-site-footer__title--separator">\nNeed help? </h2>\n <ul class="ecl-site-footer__list">\n <li class="ecl-site-footer__list-item">\n <a href="/eurostat/web/main/sitemap" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nSitemap </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="/eurostat/web/main/contact-us" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nContact us </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="/eurostat/web/main/help/accessibility" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nAccessibility </a>\n </li>\n </ul>\n </div>\n </div>\n <div class="ecl-site-footer__column">\n <div class="ecl-site-footer__section">\n <h2 class="ecl-site-footer__title ecl-site-footer__title--separator">\nFollow us </h2>\n <ul class="ecl-site-footer__list follow-us">\n <li class="ecl-site-footer__list-item">\n <a href="https://twitter.com/EU_Eurostat" class="ecl-link ecl-link--standalone ecl-link--icon ecl-site-footer__link ecl-link--icon-only ecl-link--no-visited">\n <svg role="img" class="ecl-icon ecl-icon--xl ecl-link__icon" focusable="false" aria-hidden="true">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/brands.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#square-x-twitter"></use>\n </svg>\n <span class="ecl-link__label">Twitter</span>\n </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.facebook.com/EurostatStatistics/" class="ecl-link ecl-link--standalone ecl-link--icon ecl-site-footer__link ecl-link--icon-only ecl-link--no-visited">\n <svg class="ecl-icon ecl-icon--xl ecl-link__icon" focusable="false" aria-hidden="true">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/brands.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#square-facebook"></use>\n </svg>\n <span class="ecl-link__label">Facebook</span>\n </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.instagram.com/eu_eurostat/" class="ecl-link ecl-link--standalone ecl-link--icon ecl-site-footer__link ecl-link--icon-only ecl-link--no-visited">\n <svg role="img" class="ecl-icon ecl-icon--xl ecl-link__icon" focusable="false" aria-hidden="true">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/brands.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#square-instagram"></use>\n </svg>\n <span class="ecl-link__label">Instagram</span>\n </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.linkedin.com/company/eurostat/" class="ecl-link ecl-link--standalone ecl-link--icon ecl-site-footer__link ecl-link--icon-only ecl-link--no-visited">\n <svg role="img" class="ecl-icon ecl-icon--xl ecl-link__icon" focusable="false" aria-hidden="true">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/brands.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#linkedin"></use>\n </svg>\n <span class="ecl-link__label">LinkedIn</span>\n </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://youtube.com/c/Eurostat-EC" class="ecl-link ecl-link--standalone ecl-link--icon ecl-site-footer__link ecl-link--icon-only ecl-link--no-visited">\n <svg role="img" class="ecl-icon ecl-icon--xl ecl-link__icon" focusable="false" aria-hidden="true">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/brands.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#square-youtube"></use>\n </svg>\n <span class="ecl-link__label">Youtube</span>\n </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="/eurostat/web/rss/about-rss" class="ecl-link ecl-link--standalone ecl-link--icon ecl-site-footer__link ecl-link--icon-only ecl-link--no-visited">\n <svg role="img" class="ecl-icon ecl-icon--xl ecl-link__icon" focusable="false" aria-hidden="true">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/solid.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#square-rss"></use>\n </svg>\n <span class="ecl-link__label">RSS</span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class="ecl-site-footer__row">\n <div class="ecl-site-footer__column">\n <div class="ecl-site-footer__section">\n <a href="https://european-union.europa.eu/index_en" class="ecl-link ecl-link--standalone ecl-site-footer__logo-link" aria-label="European Union">\n <picture class="ecl-picture ecl-site-footer__picture" title="European Union">\n <source srcset="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/logo/standard-version/positive/logo-eu--en.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000" media="(min-width: 996px)">\n <img class="ecl-site-footer__logo-image" src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/logo/condensed-version/positive/logo-eu--en.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000" alt="European Union logo" />\n </picture>\n </a>\n <div class="ecl-site-footer__description">\nDiscover more on <a href=\'https://european-union.europa.eu/index_en\' class=\'ecl-link\'> europa.eu </a> </div>\n </div>\n </div>\n <div class="ecl-site-footer__column">\n <div class="ecl-site-footer__section">\n <h2 class="ecl-site-footer__title ecl-site-footer__title--separator">\nContact the EU </h2>\n <ul class="ecl-site-footer__list">\n <li class="ecl-site-footer__list-item">\n<a href=\'tel:0080067891011\' class=\'ecl-link ecl-link--standalone ecl-site-footer__link\'> Call us 00 800 6 7 8 9 10 11 </a> </li>\n <li class="ecl-site-footer__list-item">\n<a href=\'https://european-union.europa.eu/contact-eu/call-us_en\' class=\'ecl-link ecl-link--standalone ecl-site-footer__link\'> Use other telephone options </a> </li>\n <li class="ecl-site-footer__list-item">\n<a href=\'https://european-union.europa.eu/contact-eu/write-us_en\' class=\'ecl-link ecl-link--standalone ecl-site-footer__link\'> Write us via our contact form </a> </li>\n <li class="ecl-site-footer__list-item">\n<a href=\'https://european-union.europa.eu/contact-eu/meet-us_en\' class=\'ecl-link ecl-link--standalone ecl-site-footer__link\'> Meet us at one of the EU centres </a> </li>\n </ul>\n </div>\n <div class="ecl-site-footer__section">\n <h2 class="ecl-site-footer__title ecl-site-footer__title--separator">\nSocial media </h2>\n <ul class="ecl-site-footer__list">\n <li class="ecl-site-footer__list-item">\n<a href=\'https://european-union.europa.eu/contact-eu/social-media-channels_en\' class=\'ecl-link ecl-link--standalone ecl-site-footer__link\'> Search for EU social media channels </a> </li>\n </ul>\n </div>\n <div class="ecl-site-footer__section">\n <h2 class="ecl-site-footer__title ecl-site-footer__title--separator">\nLegal </h2>\n <ul class="ecl-site-footer__list">\n <li class="ecl-site-footer__list-item">\n <a href="https://commission.europa.eu/languages-our-websites_en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nLanguages on our websites </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://commission.europa.eu/privacy-policy-websites-managed-european-commission_en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nPrivacy policy </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://commission.europa.eu/legal-notice_en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nLegal notice </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://commission.europa.eu/cookies-policy_en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nCookies </a>\n </li>\n </ul>\n </div>\n </div>\n <div class="ecl-site-footer__column">\n <div class="ecl-site-footer__section ecl-site-footer__section--desktop">\n <h2 class="ecl-site-footer__title ecl-site-footer__title--separator">\nEU institutions </h2>\n <ul class="ecl-site-footer__list">\n <li class="ecl-site-footer__list-item">\n <a href="https://www.europarl.europa.eu/portal/en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Parliament </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.consilium.europa.eu/en/european-council/" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Council </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.consilium.europa.eu/en/home/" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nCouncil of the European Union </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://commission.europa.eu/index_en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Commission </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://curia.europa.eu/jcms/jcms/j_6/en/" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nCourt of Justice of the European Union (CJEU) </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.ecb.europa.eu/home/html/index.en.html" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Central Bank (ECB) </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.eca.europa.eu/en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Court of Auditors (ECA) </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://eeas.europa.eu/headquarters/headquarters-homepage_en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean External Action Service (EEAS) </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.eesc.europa.eu/?i=portal.en.home" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Economic and Social Committee (EESC) </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://cor.europa.eu/en/" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Committee of the Regions (CoR) </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.eib.org/en/index.htm" class="ecl-link ecl-link--standalone ecl-site-footer__link ecl-link--icon">\n <span clas="ecl-link__label">European Investment Bank (EIB)</span>\n <svg class="ecl-icon ecl-icon--2xs ecl-link__icon" focusable="false" aria-hidden="true">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#external"></use>\n </svg>\n </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://www.ombudsman.europa.eu/en/home" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Ombudsman </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://secure.edps.europa.eu/EDPSWEB/edps/EDPS?lang=en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Data Protection Supervisor (EDPS) </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://edpb.europa.eu/edpb_en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nThe European Data Protection Board </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://epso.europa.eu/en" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nEuropean Personnel Selection Office </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://op.europa.eu/en/home" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nPublications Office of the European Union </a>\n </li>\n <li class="ecl-site-footer__list-item">\n <a href="https://european-union.europa.eu/institutions-law-budget/institutions-and-bodies/institutions-and-bodies-profiles_en?f%5B0%5D=oe_organisation_eu_type%3Ahttp%3A//publications.europa.eu/resource/authority/corporate-body-classification/AGENCY_DEC&f%5B1%5D=oe_organisation_eu_type%3Ahttp%3A//publications.europa.eu/resource/authority/corporate-body-classification/AGENCY_EXEC&f%5B2%5D=oe_organisation_eu_type%3Ahttp%3A//publications.europa.eu/resource/authority/corporate-body-classification/EU_JU" class="ecl-link ecl-link--standalone ecl-site-footer__link">\nAgencies </a>\n </li>\n </ul>\n </div>\n <div class="ecl-site-footer__section ecl-site-footer__section--mobile">\n <h2 class="ecl-site-footer__title ecl-site-footer__title--separator">\n EU institutions\n </h2>\n <ul class="ecl-site-footer__list">\n <li class="ecl-site-footer__list-item"> Search for \n <a href="https://european-union.europa.eu/institutions-law-budget/institutions-and-bodies/institutions-and-bodies-profiles_en?f%5B0%5D=oe_organisation_eu_type%3Ahttp%3A//publications.europa.eu/resource/authority/corporate-body-classification/AGENCY_DEC&f%5B1%5D=oe_organisation_eu_type%3Ahttp%3A//publications.europa.eu/resource/authority/corporate-body-classification/AGENCY_EXEC&f%5B2%5D=oe_organisation_eu_type%3Ahttp%3A//publications.europa.eu/resource/authority/corporate-body-classification/EU_JU" class="ecl-link ecl-link--standalone ecl-site-footer__link">\n EU institutions\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</footer><!-- there should not be exception, the attempt is there just for safety purpose -->\n <!-- relative URL -->\n <div id="popupSurvey"> <script>\n const cookieSFExpiredate = new Date("2024-06-11")\n const cookieSFName = "Eurostat-SearchFeedback-19290148"\n const sessionCookieSFName = "Eurostat-SearchFeedback-Session-19290148"\n </script>\n <script type="text/javascript" defer\n src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/survey.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000"></script>\n <div aria-hidden="true" aria-labelledby="popupSurveyLabel" class="modal fade" data-backdrop="static"\n id="popupSurveyInner" role="dialog" style="display:none" tabindex="-1">\n <div class="modal-dialog modal-dialog-centered" role="document">\n <div class="modal-content">\n <div class="modal-header ecl-u-bg-primary-120">\n <h2 class="ecl-u-type-heading-4 ecl-u-type-color-white ecl-u-ma-none" id="popupSurveyLabel">\n 2024 user satisfaction survey</h2>\n </div>\n\n <div class="modal-body ecl-u-type-paragraph"><p>Please take a few minutes and reply to our anonymous survey. </p>\n\n<p>This survey helps us to better understand why and how you use European statistics and how you rate our data and products.<br />\n </p>\n <div class="modal-footer">\n <div class="ecl-checkbox">\n <input class="ecl-checkbox__input" id="inputDeclineSurvey" name="inputDeclineSurveyName" type="checkbox" value="stopped" />\n <label class="ecl-checkbox__label" for="inputDeclineSurvey">\n <span class="ecl-checkbox__box">\n <svg aria-hidden="true" class="ecl-icon ecl-icon--m ecl-link__icon ecl-checkbox__icon" focusable="false">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#check"></use>\n </svg>\n </span>\n <span class="ecl-checkbox__text">Don\'t show this message again</span>\n </label>\n </div>\n\n <div class="footer-actions">\n <button class="ecl-button ecl-button--secondary" onclick="stopSurvey()" type="button">\nNo thanks </button>\n <button class="ecl-button ecl-button--primary ecl-u-ml-xs" onclick="gotoSurvey(\'https://ec.europa.eu/eusurvey/runner/EStatUSS2024\')" type="button">\n <span class="ecl-button__container">\n <span class="ecl-button__label" data-ecl-label="true">\nParticipate </span>\n <svg aria-hidden="true" class="ecl-icon ecl-icon--s ecl-icon--rotate-90 ecl-link__icon" focusable="false">\n <use xlink:href="https://ec.europa.eu/eurostat/o/estat-theme-ecl/images/icons/sprites/icons.svg?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000#corner-arrow"></use>\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\t\n\n\n\n\n\n\t\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\t\n\n\t\n\n\n\n\n\n\t\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n<script type="text/javascript">\n// <![CDATA[\n\n\t\n\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\n\t\n\n\tLiferay.BrowserSelectors.run();\n\n// ]]>\n</script>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<script type="text/javascript">\n\t// <![CDATA[\n\n\t\t\n\n\t\tLiferay.currentURL = \'\\x2feurostat\\x2fSDMX\\x2fdiss-web\\x2frest\\x2fdatastructure\\x2fESTAT\\x2fDSD_tran_sf_railac\';\n\t\tLiferay.currentURLEncoded = \'\\x252Feurostat\\x252FSDMX\\x252Fdiss-web\\x252Frest\\x252Fdatastructure\\x252FESTAT\\x252FDSD_tran_sf_railac\';\n\n\t// ]]>\n</script>\n\n\n\n\t\n\n\t\n\n\t<script type="text/javascript">\n\t\t// <![CDATA[\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t// ]]>\n\t</script>\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\t\n\n\t\t\n\n\t\t\n\t\n\n\n<script type="text/javascript">\n// <![CDATA[\n(function() {var $ = AUI.$;var _ = AUI._;\n\tvar onDestroyPortlet = function() {\n\t\tLiferay.detach(\'messagePosted\', onMessagePosted);\n\t\tLiferay.detach(\'destroyPortlet\', onDestroyPortlet);\n\t};\n\n\tLiferay.on(\'destroyPortlet\', onDestroyPortlet);\n\n\tvar onMessagePosted = function(event) {\n\t\tif (window.Analytics) {\n\t\t\tAnalytics.send(\'posted\', \'Comment\', {\n\t\t\t\tclassName: event.className,\n\t\t\t\tclassPK: event.classPK,\n\t\t\t\tcommentId: event.commentId,\n\t\t\t\ttext: event.text\n\t\t\t});\n\t\t}\n\t};\n\n\tLiferay.on(\'messagePosted\', onMessagePosted);\n})();(function() {var $ = AUI.$;var _ = AUI._;\n\tvar pathnameRegexp = /\\/documents\\/(\\d+)\\/(\\d+)\\/(.+?)\\/([^&]+)/;\n\n\tfunction handleDownloadClick(event) {\n\t\tif (event.target.nodeName.toLowerCase() === \'a\' && window.Analytics) {\n\t\t\tvar anchor = event.target;\n\t\t\tvar match = pathnameRegexp.exec(anchor.pathname);\n\n\t\t\tvar fileEntryId =\n\t\t\t\tanchor.dataset.analyticsFileEntryId ||\n\t\t\t\t(anchor.parentElement &&\n\t\t\t\t\tanchor.parentElement.dataset.analyticsFileEntryId);\n\n\t\t\tif (fileEntryId && match) {\n\t\t\t\tvar getParameterValue = function(parameterName) {\n\t\t\t\t\tvar result = null;\n\n\t\t\t\t\tanchor.search\n\t\t\t\t\t\t.substr(1)\n\t\t\t\t\t\t.split(\'&\')\n\t\t\t\t\t\t.forEach(function(item) {\n\t\t\t\t\t\t\tvar tmp = item.split(\'=\');\n\n\t\t\t\t\t\t\tif (tmp[0] === parameterName) {\n\t\t\t\t\t\t\t\tresult = decodeURIComponent(tmp[1]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\tAnalytics.send(\'documentDownloaded\', \'Document\', {\n\t\t\t\t\tgroupId: match[1],\n\t\t\t\t\tfileEntryId: fileEntryId,\n\t\t\t\t\tpreview: !!window._com_liferay_document_library_analytics_isViewFileEntry,\n\t\t\t\t\ttitle: decodeURIComponent(match[3].replace(/\\+/gi, \' \')),\n\t\t\t\t\tversion: getParameterValue(\'version\')\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tvar onDestroyPortlet = function() {\n\t\tdocument.body.removeEventListener(\'click\', handleDownloadClick);\n\t};\n\n\tLiferay.once(\'destroyPortlet\', onDestroyPortlet);\n\n\tvar onPortletReady = function() {\n\t\tdocument.body.addEventListener(\'click\', handleDownloadClick);\n\t};\n\n\tLiferay.once(\'portletReady\', onPortletReady);\n})();(function() {var $ = AUI.$;var _ = AUI._;\n\tvar onVote = function(event) {\n\t\tif (window.Analytics) {\n\t\t\tAnalytics.send(\'VOTE\', \'Ratings\', {\n\t\t\t\tclassName: event.className,\n\t\t\t\tclassPK: event.classPK,\n\t\t\t\tratingType: event.ratingType,\n\t\t\t\tscore: event.score\n\t\t\t});\n\t\t}\n\t};\n\n\tvar onDestroyPortlet = function() {\n\t\tLiferay.detach(\'ratings:vote\', onVote);\n\t\tLiferay.detach(\'destroyPortlet\', onDestroyPortlet);\n\t};\n\n\tLiferay.on(\'ratings:vote\', onVote);\n\tLiferay.on(\'destroyPortlet\', onDestroyPortlet);\n})();(function() {var $ = AUI.$;var _ = AUI._;\n\tvar onShare = function(data) {\n\t\tif (window.Analytics) {\n\t\t\tAnalytics.send(\'shared\', \'SocialBookmarks\', {\n\t\t\t\tclassName: data.className,\n\t\t\t\tclassPK: data.classPK,\n\t\t\t\ttype: data.type,\n\t\t\t\turl: data.url\n\t\t\t});\n\t\t}\n\t};\n\n\tvar onDestroyPortlet = function() {\n\t\tLiferay.detach(\'socialBookmarks:share\', onShare);\n\t\tLiferay.detach(\'destroyPortlet\', onDestroyPortlet);\n\t};\n\n\tLiferay.on(\'socialBookmarks:share\', onShare);\n\tLiferay.on(\'destroyPortlet\', onDestroyPortlet);\n})();\n\tif (Liferay.Data.ICONS_INLINE_SVG) {\n\t\tsvg4everybody(\n\t\t\t{\n\t\t\t\tattributeName: \'data-href\',\n\t\t\t\tpolyfill: true,\n\t\t\t\tvalidate: function (src, svg, use) {\n\t\t\t\t\treturn !src || !src.startsWith(\'#\');\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\t\n\t\tLiferay.Portlet.register(\'com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_ecl_navigation_menu_instance\');\n\t\n\n\tLiferay.Portlet.onLoad(\n\t\t{\n\t\t\tcanEditTitle: false,\n\t\t\tcolumnPos: 0,\n\t\t\tisStatic: \'end\',\n\t\t\tnamespacedId: \'p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_ecl_navigation_menu_instance_\',\n\t\t\tportletId: \'com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_ecl_navigation_menu_instance\',\n\t\t\trefreshURL: \'\\x2feurostat\\x2fc\\x2fportal\\x2frender_portlet\\x3fp_l_id\\x3d11616291\\x26p_p_id\\x3dcom_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_ecl_navigation_menu_instance\\x26p_p_lifecycle\\x3d0\\x26p_t_lifecycle\\x3d0\\x26p_p_state\\x3dnormal\\x26p_p_mode\\x3dview\\x26p_p_col_id\\x3dnull\\x26p_p_col_pos\\x3dnull\\x26p_p_col_count\\x3dnull\\x26p_p_static\\x3d1\\x26p_p_isolated\\x3d1\\x26currentURL\\x3d\\x252Feurostat\\x252FSDMX\\x252Fdiss-web\\x252Frest\\x252Fdatastructure\\x252FESTAT\\x252FDSD_tran_sf_railac\',\n\t\t\trefreshURLData: {}\n\t\t}\n\t);\n\n\t\n\t\tLiferay.Portlet.register(\'estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J\');\n\t\n\n\tLiferay.Portlet.onLoad(\n\t\t{\n\t\t\tcanEditTitle: false,\n\t\t\tcolumnPos: 0,\n\t\t\tisStatic: \'end\',\n\t\t\tnamespacedId: \'p_p_id_estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J_\',\n\t\t\tportletId: \'estatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J\',\n\t\t\trefreshURL: \'\\x2feurostat\\x2fc\\x2fportal\\x2frender_portlet\\x3fp_l_id\\x3d11616291\\x26p_p_id\\x3destatsearchportlet_WAR_estatsearchportlet_INSTANCE_bHVzuvn1SZ8J\\x26p_p_lifecycle\\x3d0\\x26p_t_lifecycle\\x3d0\\x26p_p_state\\x3dnormal\\x26p_p_mode\\x3dview\\x26p_p_col_id\\x3dnull\\x26p_p_col_pos\\x3dnull\\x26p_p_col_count\\x3dnull\\x26p_p_static\\x3d1\\x26p_p_isolated\\x3d1\\x26currentURL\\x3d\\x252Feurostat\\x252FSDMX\\x252Fdiss-web\\x252Frest\\x252Fdatastructure\\x252FESTAT\\x252FDSD_tran_sf_railac\',\n\t\t\trefreshURLData: {}\n\t\t}\n\t);\nLiferay.Loader.require(\'metal-dom/src/all/dom\', function(metalDomSrcAllDom) {\n(function(){\nvar dom = metalDomSrcAllDom;\n(function() {var $ = AUI.$;var _ = AUI._;\n\tvar focusInPortletHandler = dom.delegate(\n\t\tdocument,\n\t\t\'focusin\',\n\t\t\'.portlet\',\n\t\tfunction(event) {\n\t\t\tdom.addClasses(dom.closest(event.delegateTarget, \'.portlet\'), \'open\');\n\t\t}\n\t);\n\n\tvar focusOutPortletHandler = dom.delegate(\n\t\tdocument,\n\t\t\'focusout\',\n\t\t\'.portlet\',\n\t\tfunction(event) {\n\t\t\tdom.removeClasses(dom.closest(event.delegateTarget, \'.portlet\'), \'open\');\n\t\t}\n\t);\n})();})();\n});AUI().use(\'liferay-menu\', \'liferay-notice\', \'aui-base\', \'liferay-session\', \'liferay-poller\', function(A) {(function() {var $ = AUI.$;var _ = AUI._;\n\tif (A.UA.mobile) {\n\t\tLiferay.Util.addInputCancel();\n\t}\n})();(function() {var $ = AUI.$;var _ = AUI._;\n\tnew Liferay.Menu();\n\n\tvar liferayNotices = Liferay.Data.notices;\n\n\tfor (var i = 1; i < liferayNotices.length; i++) {\n\t\tnew Liferay.Notice(liferayNotices[i]);\n\t}\n\n\t\n})();(function() {var $ = AUI.$;var _ = AUI._;\n\t\t\tLiferay.Session = new Liferay.SessionBase(\n\t\t\t\t{\n\t\t\t\t\tautoExtend: true,\n\t\t\t\t\tredirectOnExpire: false,\n\t\t\t\t\tredirectUrl: \'https\\x3a\\x2f\\x2fec\\x2eeuropa\\x2eeu\\x2feurostat\\x2fweb\\x2fmain\\x2fhome\',\n\t\t\t\t\tsessionLength: 900,\n\t\t\t\t\tsessionTimeoutOffset: 70,\n\t\t\t\t\twarningLength: 0\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t\n\t\t})();});\n// ]]>\n</script>\n\n\n\n\n\n\n\n\n\n<script src="https://ec.europa.eu/eurostat/o/estat-theme-ecl/js/main.js?browserId=other&minifierType=js&languageId=en_GB&t=1717484464000" type="text/javascript"></script>\n\n<!-- Piwik: force Piwik to consider links to document library as downloads and add results count in case of search -->\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<script type="text/javascript">\n\tvar links = document.getElementsByTagName("a"); \n\tfor (var i = 0; i < links.length; i++) { \n \tvar href = links[i].href;\n \tif (href != null && href.includes("/eurostat/documents/")) {\n\t\t\t//ec.europa.eu/eurostat/documents/3217494/13389103/KS-HA-21-001-EN-N.pdf/1358b0d3-a9fe-2869-53a0-37b59b413ddd?t=1631630029904\n\t\t\t//ec.europa.eu/eurostat/documents/3217494/13389103/KS-HA-21-001-EN-N.pdf/1358b0d3-a9fe-2869-53a0-37b59b413ddd\n\t\t\t//remove all parameters from URL if any\n\t\t\thref = href.toLowerCase().split(\'?\')[0];\n\t\t\t//remove UUID from URL if any\n\t\t\thref = href.replace(/\\/\\b[a-f\\d]{8}\\b-[a-f\\d]{4}\\b-[a-f\\d]{4}\\b-[a-f\\d]{4}\\b-[a-f\\d]{12}\\b/,\'\');\n\t\t\tlinks[i].setAttribute("onClick", "if(typeof _paq !== \'undefined\') { _paq.push([\'trackLink\', \'"+href+"\', \'download\']); }");\n\t\t}\n\t}\n\t\n\tif (document.querySelectorAll) {\n\t\tvar applicationJsonScripts = document.querySelectorAll("script[type=\'application/json\']");\n\t\tfor (var i = 0; i < applicationJsonScripts.length; i++) {\n\t\t\tvar json = {};\n\t\t\ttry {\n\t\t\t\tjson = JSON.parse(applicationJsonScripts[i].innerHTML);\n\t\t\t} catch (e) {\n\t\t\t}\n\t\t\tif (json["search"]) {\n\t\t\t\tvar search = json["search"];\n\t\t\t\t//var countText = document.querySelector("#search-results-container > div.result-top > ul > li > a > h2");\n\t\t\t\tvar countText = document.getElementById(\'result-count\');\n\t\t\t\tif (countText) {\n\t\t\t\t\t//var count = parseInt(countText.textContent);\n\t\t\t\t\tvar count = countText.textContent.trim().replace(\' results\', \'\');\n\t\t\t\t\tif (count) {\n\t\t\t\t\t\tsearch["count"] = parseInt(count);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t//var noResultsText = document.querySelector("#search-results-container > div > h2");\n\t\t\t\t\t//if (noResultsText) {\n\t\t\t\t\tsearch["count"] = 0;\n\t\t\t\t\t//}\n\t\t\t\t}\n\t\t\t\tif (search["count"] != null) {\n\t\t\t\t\tapplicationJsonScripts[i].innerHTML = JSON.stringify(json);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n</script>\n<!-- End Piwik Code -->\n\n\n<script type="text/javascript">\n\t// <![CDATA[\n\t\tAUI().use(\n\t\t\t\'aui-base\',\n\t\t\tfunction(A) {\n\t\t\t\tvar frameElement = window.frameElement;\n\n\t\t\t\tif (frameElement && frameElement.getAttribute(\'id\') === \'simulationDeviceIframe\') {\n\t\t\t\t\tA.getBody().addClass(\'lfr-has-simulation-panel\');\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t// ]]>\n</script><script type="text/javascript">\n// <![CDATA[\nLiferay.Loader.require(\'frontend-js-tooltip-support-web@2.0.5/index\', function(frontendJsTooltipSupportWeb205Index) {\n(function(){\nvar TooltipSupport = frontendJsTooltipSupportWeb205Index;\n(function() {\ntry {\nTooltipSupport.default()\n}\ncatch (err) {\nconsole.error(err);\n}\n})();})();\n});\n// ]]>\n</script>\n <!-- inject:js -->\n <!-- endinject -->\n\n</body>\n\n</html>\n\t\t\n\t\n\n'
The regression model with two independent variables are often the representative pedagogic tool of multiple linear regression. We start from here too, here is the model: $$ Y_{i}=\beta_{1}+\beta_{2} X_{2 i}+\beta_{3} X_{3 i}+u_{i} $$ $X_{2 i}$ and $X_{3 i}$ are the indexed independent variables.
Without disturbance term, the model is merely a function of a plane in $\mathbb{R}^3$, such as $$ Y = 1 + 2X_2 + 3X_3 $$ We can visualise the plane and data points.
x2, x3 = np.arange(-3, 4, 1), np.arange(-3, 4, 1)
X2, X3 = np.meshgrid(x2, x3) # this is coordinates on X2-X3 plane
u = np.random.randn(7, 7) * 3
Y = 1 + 2 * X2 + 3 * X3 # plane without disturbance term
Yu = 1 + 2 * X2 + 3 * X3 + u # with disturbance term
fig = plt.figure(figsize=(9, 9))
ax = fig.add_subplot(111, projection="3d")
ax.set_title("$Y=1+2X_2+3X_3$", size=18)
ax.view_init(elev=30, azim=20)
ax.plot_surface(X2, X3, Y, cmap="viridis", alpha=0.5) # MATLAB default color map
ax.scatter(X2, X3, Yu, s=100)
for i in range(len(X2.flatten())):
ax.plot(
[X2.flatten()[i], X2.flatten()[i]],
[X3.flatten()[i], X3.flatten()[i]],
[Y.flatten()[i], Yu.flatten()[i]],
)
plt.show()
mayavi
and plotly
are the better choices.
The formulae of $b_1$, $b_2$ and $b_3$ are presented here without proofs \begin{align} b_{1}&=\bar{Y}-b_{2} \bar{X}_{2}-b_{3} \bar{X}_{3}\\ b_{2}&=\frac{\operatorname{Cov}\left(X_{2}, Y\right) \operatorname{Var}\left(X_{3}\right)-\operatorname{Cov}\left(X_{3}, Y\right) \operatorname{Cov}\left(X_{2}, X_{3}\right)}{\operatorname{Var}\left(X_{2}\right) \operatorname{Var}\left(X_{3}\right)-\left[\operatorname{Cov}\left(X_{2}, X_{3}\right)\right]^{2}}\\ b_{3}&=\frac{\operatorname{Cov}\left(X_{3}, Y\right) \operatorname{Var}\left(X_{2}\right)-\operatorname{Cov}\left(X_{2}, Y\right) \operatorname{Cov}\left(X_{3}, X_{2}\right)}{\operatorname{Var}\left(X_{3}\right) \operatorname{Var}\left(X_{2}\right)-\left[\operatorname{Cov}\left(X_{3}, X_{2}\right)\right]^{2}} \end{align} The algebraic expressions are becoming exponentially burdensome as number of variables rises, therefore we won't even try to reproduce the derivation. But the general idea is always the same despite of number of independent variables—taking partial derivatives towards all $b$'s $$ \begin{gathered} \frac{\partial R S S}{\partial b_{1}}=-2 \sum_{i=1}^{n}\left(Y_{i}-b_{1}-b_{2} X_{2 i}-b_{3} X_{3 i}\right)=0 \\ \frac{\partial R S S}{\partial b_{2}}=-2 \sum_{i=1}^{n} X_{2 i}\left(Y_{i}-b_{1}-b_{2} X_{2 i}-b_{3} X_{3 i}\right)=0 \\ \frac{\partial R S S}{\partial b_{3}}=-2 \sum_{i=1}^{n} X_{3 i}\left(Y_{i}-b_{1}-b_{2} X_{2 i}-b_{3} X_{3 i}\right)=0 \end{gathered} $$
The multiple regression coefficients represent each $X$'s influence on $Y$ while controlling all other $X$ variables. We will use the celebrated Cobb–Douglas (C-D) production function to demonstrate how this holds. The stochastic C-D function form is $$ Y_i = A L_i^\beta K_i^\alpha e^{u_i} $$ where $Y$ stands for output, $A$ for technology, $L$ for labor input, $K$ for capital input. And from lecture 2, we have known that $\alpha$ and $\beta$ are output elasticities of labor input and capital input. Take natural log, $$ \ln{Y_i} = \ln{A} + \beta \ln{L_i}+\alpha\ln{K_i} + u_i $$ Estimation of $\alpha$ and $\beta$ gives information about returns to scale, i.e. $$ \alpha+\beta = 1 \qquad \text{Constant returns to scale}\\ \alpha+\beta < 1 \qquad \text{Decreasing returns to scale}\\ \alpha+\beta > 1 \qquad \text{Increasing returns to scale} $$
Import the data, which is from Annual Survey of Manufacturers 2005.
df = pd.read_excel("Basic_Econometrics_practice_data.xlsx", sheet_name="US_CobbDauglas")
df.head()
Area | Output Value Added (thousands of $) | Labour Input Worker Hours (thousands) | Capital Input (thousands) | |
---|---|---|---|---|
0 | Alabama | 38372840 | 424471 | 2689076 |
1 | Alaska | 1805427 | 19895 | 57997 |
2 | Arizona | 23736129 | 206893 | 2308272 |
3 | Arkansas | 26981983 | 304055 | 1376235 |
4 | California | 217546032 | 1809756 | 13554116 |
The data record output, labor input and capital input from each states in 2005, enough for demonstration purpose. Let's take natural log of the data and change the columns' names.
df = df[df.columns[1:4]] # pick the data columns
df = np.log(df) # take log on the data
df.head()
Output Value Added (thousands of $) | Labour Input Worker Hours (thousands) | Capital Input (thousands) | |
---|---|---|---|
0 | 17.462860 | 12.958599 | 14.804708 |
1 | 14.406308 | 9.898224 | 10.968147 |
2 | 16.982509 | 12.239957 | 14.652010 |
3 | 17.110680 | 12.624964 | 14.134862 |
4 | 19.197921 | 14.408703 | 16.422201 |
df.columns = ["ln_Y", "ln_L", "ln_K"] # change the names
df.head()
ln_Y | ln_L | ln_K | |
---|---|---|---|
0 | 17.462860 | 12.958599 | 14.804708 |
1 | 14.406308 | 9.898224 | 10.968147 |
2 | 16.982509 | 12.239957 | 14.652010 |
3 | 17.110680 | 12.624964 | 14.134862 |
4 | 19.197921 | 14.408703 | 16.422201 |
Now perform the OLS estimation.
X = df[["ln_L", "ln_K"]]
Y = df["ln_Y"]
X = sm.add_constant(X) # adding a constant
model = sm.OLS(Y, X).fit()
print_model = model.summary()
print(print_model)
OLS Regression Results ============================================================================== Dep. Variable: ln_Y R-squared: 0.964 Model: OLS Adj. R-squared: 0.963 Method: Least Squares F-statistic: 645.9 Date: Tue, 03 Aug 2021 Prob (F-statistic): 2.00e-35 Time: 16:19:00 Log-Likelihood: -3.4267 No. Observations: 51 AIC: 12.85 Df Residuals: 48 BIC: 18.65 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 3.8876 0.396 9.812 0.000 3.091 4.684 ln_L 0.4683 0.099 4.734 0.000 0.269 0.667 ln_K 0.5213 0.097 5.380 0.000 0.326 0.716 ============================================================================== Omnibus: 45.645 Durbin-Watson: 1.946 Prob(Omnibus): 0.000 Jarque-Bera (JB): 196.024 Skew: 2.336 Prob(JB): 2.72e-43 Kurtosis: 11.392 Cond. No. 201. ============================================================================== Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
Here are the estimated elasticities
print("alpha: {:.4f} beta: {:.4f}".format(model.params[2], model.params[1]))
alpha: 0.5213 beta: 0.4683
It means, ceteris paribus, $1\%$ raise of capital input led on $.52\%$ increase in output, $1\%$ raise of labor input led on $.47%$ increase in output.
Adding up the elasticities gives the parameter of returns to scale $.99$, given possible statistical errors, we could conclude a constant return to scale.
np.sum(model.params[2] + model.params[1])
0.9896113184066175
Probably you have heard that $R^2$ is monotonic increasing function of number of independent variables, i.e. $R^2$ will always increase as you add more independent variables in the model. This might give an illusion that the model has better explanatory power, on the contrary, adding many independent variables would cause inefficiency of estimators, which is the reason we usually have adjusted $R^2$, denote as $\bar{R}^2$, reported too.
$$ \bar{R}^{2}=1-\frac{\operatorname{RSS} /(n-k)}{\mathrm{TSS} /(n-1)}=1-\left(1-R^{2}\right) \frac{n-1}{n-k} $$As you can see the $\bar{R}^2$ is always smaller than $R^2$, therefore always use $\bar{R}^2$ in multivariable regression.
What we want to demonstrate is that the multiple regression coefficients represent only the influence of their own variable, even though we purge the influence of other variables, the estimates are expected to be the same in multiple regression.
To purge the influence of $\ln{L}$ on $\ln{Y}$ and $\ln{K}$, we evaluate two regression models as below
Perform the OLS estimation with statsmodels
.
ln_K = df["ln_K"]
ln_L = df["ln_L"]
ln_Y = df["ln_Y"]
ln_L = sm.add_constant(ln_L) # adding a constant
model1 = sm.OLS(ln_Y, ln_L).fit()
model2 = sm.OLS(ln_K, ln_L).fit()
Next we retrieve the residual of both estimation, i.e. $\ln{Y_i}^{resid}$ and $\ln{K_i}^{resid}$, which are free of $\ln{L}$'s influence, the exact reason we call them 'purged'. $$ \ln{Y_i}^{resid}=\ln{Y_i}-\widehat{\ln{Y_i}} \\ \ln{K_i}^{resid}=\ln{K_i}-\widehat{\ln{K_i}} $$ Then regress $e^Y$ on $e^K$
ln_Y_resid = model1.resid
ln_K_resid = model2.resid
model3 = sm.OLS(ln_Y_resid, ln_K_resid).fit()
model3.params
x1 0.521279 dtype: float64
The estimate is exactly the same as in multiple regression.
It is common that variables are correlated with each other to some extent, for instance in Cobb-Douglas model, higher labor input might induce higher capital investment, because each labor requires some level of capital to produce. On the other hand, higher capital investment also requires more labor input, e.g. if office buildings are constructed, there will be more recruitment.
This phenomenon of correlated independent variables is termed multicollinearity.
But is multicollinearity desirable? Hardly.
In two variable regression case, the standard error of $b_2$ is $$ \text { s.e. }\left(b_{2}\right)=\sqrt{\frac{s_{u}^{2}}{n \operatorname{Var}\left(X_{2}\right)} \times \frac{1}{1-r_{X_{2}, X_{3}}^{2}}} $$
If you can recall the formula of single regression model, the difference is the part $$\sqrt{\frac{1}{1-r^2_{X_2, X_3}}}$$ where $r^2_{X_2, X_3}$ is the correlation coefficient.
If hold other things constant, the larger the correlation, the smaller the denominator, then standard error is larger. This the exactly the reason we see multicollinearity as an undesirable feature.
Not only two variable cases, in the multiple regression, an independent variable might be a linear combination of some other variables. It's would be arduous work to detect where correlations originate, because pairwise correlation might seem totally normal.
Let's load the Cobb-Dauglas data again without log transformation. And compute correlation coefficient
df = pd.read_excel("Basic_Econometrics_practice_data.xlsx", sheet_name="US_CobbDauglas")
df = df[df.columns[1:4]] # pick the data columns
df.columns = ["Y", "L", "K"]
np.corrcoef(df["L"], df["K"])
It's not a surprise to see high correlation $.94$ between capital and labor, but the high correlation does not necessarily lead to poor estimates, as long as other factors are well-controlled, such as large variance of independent variables, small variance of disturbance term and large sample size.
We only talk about multicollinearity explicitly when independent variables are highly correlated and one or more of conditions above are also obstructive.
Once you suspect multicollinearity presents, you should expect the following consequences.
The first and the second are intuitive and they are the effects of larger standard errors.
The third consequence can be seen as an alert, especially when the estimation reports very few significant $t$-statistics, but $R^2$ are exceedingly high, this is a signal of severe multicollinearity.
To understand why this is the case, we can perform Monte Carlo experiment of joint confidence region. Here is the simulated joint distribution of $\beta_2$ and $\beta_3$. We deliberately created $X_2$ and $X_3$ with linear relationship, i.e. $X_3 = 10 X_2+v$, so we are expecting the issue of multicollinearity in the estimation.
beta1, beta2, beta3 = 3, 2, 1 # pre-set the parameters
beta1_array, beta2_array, beta3_array = [], [], []
np.random.seed(100) # reproducible results
for i in range(1000):
u = 100 * np.random.randn(30)
v = 100 * np.random.randn(30)
X2 = np.linspace(10, 100, 30)
X3 = 10 * X2 + v
Y = beta1 + beta2 * X2 + beta3 * X3 + u
df = pd.DataFrame([Y, X2, X3]).transpose()
df.columns = ["Y", "X2", "X3"]
X_inde = df[["X2", "X3"]]
Y = df["Y"]
X_inde = sm.add_constant(X_inde)
model = sm.OLS(Y, X_inde).fit()
beta1_array.append(model.params[0])
beta2_array.append(model.params[1])
beta3_array.append(model.params[2])
fig, ax = plt.subplots(figsize=(10, 10))
ax.grid()
for i in range(1000):
ax.scatter(
beta2_array[i], beta3_array[i]
) # no need for a loop, i just want different colors
ax.set_xlabel(r"$b_2$")
ax.set_ylabel(r"$b_3$")
ax.set_title(r"Simulated Joint Confidence Region of $\beta_2$ and $\beta_3$")
plt.show()
From the plot, we can see that the distribution of $b_2$ include $0$, i.e. roughly in $[-6, 10]$, so in practice $b_2$ could have high chances to be insignificant, however $b_3$ is above $0$, we would expect $b_3$ to be highly significant. And also we can see the whole elliptic distribution is far away from origin $(0, 0)$, there even if $b_2$ is insignificant, the $F$-statistic will be exceedingly significant.
Here is the report of last regression in the loop, we notice that $b_2$ is insignificant and $b_2$ and $F$-test is highly significant as we expected.
This geometric view perfectly explains the $3$rd consequence of multicollinearity.
print_model = model.summary()
print(print_model)
OLS Regression Results ============================================================================== Dep. Variable: Y R-squared: 0.940 Model: OLS Adj. R-squared: 0.935 Method: Least Squares F-statistic: 210.8 Date: Tue, 03 Aug 2021 Prob (F-statistic): 3.33e-17 Time: 21:21:36 Log-Likelihood: -176.49 No. Observations: 30 AIC: 359.0 Df Residuals: 27 BIC: 363.2 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 2.1650 38.089 0.057 0.955 -75.986 80.316 X2 2.7867 1.714 1.625 0.116 -0.731 6.305 X3 0.9291 0.157 5.915 0.000 0.607 1.251 ============================================================================== Omnibus: 0.515 Durbin-Watson: 2.025 Prob(Omnibus): 0.773 Jarque-Bera (JB): 0.635 Skew: -0.175 Prob(JB): 0.728 Kurtosis: 2.379 Cond. No. 1.44e+03 ============================================================================== Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified. [2] The condition number is large, 1.44e+03. This might indicate that there are strong multicollinearity or other numerical problems.
The forth consequences suggests that the estimated results are highly sensitive to data, even a minor change of single data point can cause erratic results. Just take it as a fact, we'll not demonstrate for now.
Like we mentioned before, multicollinearity is a question of degree rather than presence, we only address the issue when it is so severe that interferes all the estimation results. Here are some rules help you to detect multicollinearity.
We have seen why this is the case above, you should consider this possibility when very few $t$-test are significant.
If there are more than $2$ independent variables, check their pairwise correlation. You can compute correlation coefficient matrix with pandas
and visualize with seaborn
. Here's an example.
n = 1000
x1 = np.random.randn(n)
x2 = np.random.rand(n)
x3 = sp.stats.t.rvs(100, loc=0, scale=1, size=n)
x4 = x2 * x1 - x3
x5 = x2 / x3
x6 = np.log(x2)
df = pd.DataFrame([x1, x2, x3, x4, x5, x6]).T
df.columns = ["x1", "x2", "x3", "x4", "x5", "x6"]
df.corr()
x1 | x2 | x3 | x4 | x5 | x6 | |
---|---|---|---|---|---|---|
x1 | 1.000000 | -0.000078 | -0.027519 | 0.466904 | 0.003358 | 0.001061 |
x2 | -0.000078 | 1.000000 | 0.045128 | -0.047107 | 0.054698 | 0.868007 |
x3 | -0.027519 | 0.045128 | 1.000000 | -0.862179 | 0.034624 | 0.043339 |
x4 | 0.466904 | -0.047107 | -0.862179 | 1.000000 | -0.020987 | -0.043987 |
x5 | 0.003358 | 0.054698 | 0.034624 | -0.020987 | 1.000000 | 0.030701 |
x6 | 0.001061 | 0.868007 | 0.043339 | -0.043987 | 0.030701 | 1.000000 |
Or color the correlation matrix.
sns.heatmap(df.corr(), annot=True, cmap=sns.diverging_palette(20, 220, n=200))
plt.show()
Scatter plot is also a good choice for eyeballing the correlation. If you are not sure what it means to have high correlation, review Lecture 1's notes, we have demonstrated the difference between correlation and regression.
g = sns.PairGrid(df)
g.map_diag(sns.histplot)
g.map_offdiag(sns.scatterplot)
g.add_legend()
plt.show()
If you are using statsmodel
library for estimation, you probably have notices there is note at the bottom of reports.
[2] The condition number is large, 1.44e+03. This might indicate that there are
strong multicollinearity or other numerical problems.
Once you see this note popped up, your sample is probably suffering from multicollinearity issue. But what is condition number?
This is concept from linear algebra, essentially any dataset is a matrix if no missing values, naturally it could have an inverse matrix. If two columns are numerically similar but not exactly the same, it's still possible to calculate an inverse but we call it ill-conditioned, the inverse matrix will be immensely sensitive to any perturbation of the elements, this is exactly the $4$th consequence we mentioned.
To to specific, condition number is $$ \kappa(X)=\frac{\left|\lambda_{\max }(X)\right|}{\left|\lambda_{\min }(X)\right|} $$ where $\lambda_{\max }$ and $\lambda_{\min }$ are maximal and minimal eigenvalues of $X$, and $X$ is our dataset.
Then we have this rule of thumb: If $100 <k< 1000$ there is moderate to strong multicollinearity and if $k>1000$ there is severe multicollinearity.
There are two types methods when comes to handling the multicollinearity. If you ever have a chance, choose the first type.
The first type of method focusing on the solution provided by formula of standard error, for convenient demonstration, we will reproduce the standard error of two variable regression, but the ideas apply to all general cases.
The common method in time series model is first order difference which will be extensively used in time series chapter. If our time series model is $$ Y_{t}=\beta_{1}+\beta_{2} X_{2 t}+\beta_{3} X_{3 t}+u_{t} $$ The first order difference is $$ Y_{t}-Y_{t-1}=\beta_{2}\left(X_{2 t}-X_{2, t-1}\right)+\beta_{3}\left(X_{3 t}-X_{3, t-1}\right)+v_{t} $$ where $v_t = u_t-u_{t-1}$.
First-order difference only makes sense on time series data and $v_t$ will be probably autocorrelated that cause more problems than multicollinearity.
Another is ratio transformation, if it makes sense to divide all variable by one of them, it could also lessen the issue. E.g. your model is $$ Y_{t}=\beta_{1}+\beta_{2} X_{GDP, t}+\beta_{3} X_{Pop, t}+u_{t} $$ where $Y$ is house price, $X_{GDP, t}$ is the cities' GDP and $X_{Pop, t}$ is the population of cities. Apparently $X_{GDP, t}$ and $X_{Pop, t}$ are correlated, but they can be converted into GDP per capita, i.e. $$ \frac{Y_{t}}{X_{Pop, t}}=\beta_{1}\left(\frac{1}{X_{Pop, t}}\right)+\beta_{2}\left(\frac{X_{2, t}}{X_{Pop, t}}\right)+\beta_{3}+\left(\frac{u_{t}}{X_{Pop, t}}\right) $$ The downside resides on $\left(\frac{u_{t}}{X_{Pop, t}}\right)$, this term could be heteroscedastic, i.e. not constant disturbance term.
In chapter $1$, we specified Gauss-Markov Conditions for classical linear regression model (CLRM), one of them is $E(u_i^2)= \sigma^2$ for all $i$. Once this condition is violated, the heteroscedasticity issue presents.
It could arise from assortment of reasons, but heteroscedasticity mostly arises in cross-sectional data and rarely in time series data. As a matter of fact, we should expect to see this issue whenever the sample contains heterogeneous units such as individuals, families or firms.
For instance, we would like to know the ratio of consumption to family income, though in theory the higher the income the lower the consumption rate (higher saving rate), but there will always be some wealthier families consume more then average, simply because they can. So this can cause the heteroscedasticity among observations.
Here is a simulation of heteroscedasticity, variance of disturbance term increases as $X$ increases.
u = np.random.randn(1000)
X = np.arange(1, 1001)
Y = 4 + 3 * X + X * u
fig, ax = plt.subplots(figsize=(12, 8))
ax.scatter(X, Y, s=10)
reg_results = sp.stats.linregress(X, Y)
Y_fitted = reg_results[1] + X * reg_results[0]
ax.plot(X, Y_fitted, color="tomato", lw=3, zorder=0)
ax.set_title("Heteroscedasticity Illustration")
plt.show()
You might think it's blatantly obvious to detect heteroscedasticity just like the graph above. Social science data or economic data are much sparse than data from other sciences, it wouldn't be so easy to determine whether a dataset is heteroscedastic by eyeballing. In economic studies, we usually have only one observation of $Y$ corresponding to a particular value of $X$, therefore detecting heteroscedasticity also requires guesswork and prior empirical experiences.
Also similar to multicollinearity, heteroscedasticity is more a matter of degree rather than presence or not.
Because most of time we are unable to access the information of population disturbance term, so the methods of detection are based on the residuals $e$ since they are the ones we observe.
Most straightforward method is to plot $e$ against one of $X$. For instance, we can use the same simulated data and plot residual $e$ against independent variable $X$. Though residuals are not the same as disturbance term, they can be used as proxies given the sample size is large enough.
resid = Y - Y_fitted
fig, ax = plt.subplots(figsize=(12, 8))
ax.grid()
ax.scatter(X, resid)
plt.show()
Some statistical tests will help determine if the data has heteroscedastic issue.
Goldfeld-Quandt test is the most popular test for heteroscedasticity, the test assumes the $\sigma_{u_i}$ is proportional (or inversely) to $X$. The test sorts the sample by the magnitude of $X$, then run two separate regressions with first $n'$ and last $n'$ observations, and denote the residual sums of squares $RSS_1$ and $RSS_2$ respectively, the rest of $n-2n'$ observations are dropped. The rule of thumb is $$ n' = \frac{3n}{8} $$ Hypotheses are $$ H_0: \text{$RSS_2$ is not significantly larger (smaller) than $RSS_1$}\\ H_1: \text{$RSS_2$ is significantly larger (smaller) than $RSS_1$} $$ The test statistic $\frac{RSS_2}{RSS_1}$ has $F$-distribution with $(n'-k)$ and $(n'-k)$ degree of freedom. Here's a demonstration of G-Q test, dots with different colors are different groups, two subregressions are done with its regression line accordingly. Though it might not be obvious to notice, two regression lines have different slopes, that means heteroskedascity might lead on unreliable estimations.
fig, ax = plt.subplots(figsize=(12, 8))
n_apos = round(3 / 8 * len(Y))
ax.scatter(X[0:n_apos], Y[0:n_apos], s=8)
reg_result_1 = sp.stats.linregress(X[0:n_apos], Y[0:n_apos])
Y_fitted = reg_result_1[1] + X[0:n_apos] * reg_result_1[0]
ax.plot(X[0:n_apos], Y_fitted, color="tomato", lw=3, zorder=4)
ax.scatter(X[-n_apos:], Y[-n_apos:], s=8)
reg_result_2 = sp.stats.linregress(X[-n_apos:], Y[-n_apos:])
Y_fitted = reg_result_2[1] + X[-n_apos:] * reg_result_2[0]
ax.plot(X[-n_apos:], Y_fitted, color="purple", lw=3, zorder=4)
ax.set_title("Demonstration of Goldfeld-Quandt Test")
ax.scatter(
X[round(3 / 8 * len(Y)) : -round(3 / 8 * len(Y))],
Y[round(3 / 8 * len(Y)) : -round(3 / 8 * len(Y)) :],
alpha=0.3,
s=8,
)
plt.show()
The problem of G-Q test is that depends on correctly identification of $X$, i.e. you need to know which know which $X$ disturbance term is proportional to. It's straightforward in simple linear regression, but you will have to try with every independent variable in multiple regression. But Breusch-Pagan-Godfrey test is more general, here is how we perform B-P-G test, consider the $k$-variable model $$ Y_{i}=\beta_{1}+\beta_{2} X_{2 i}+\cdots+\beta_{k} X_{k i}+u_{i} $$
We reject the null hypothesis of homoskedasticity if computed $\frac{ESS}{2}$ is larger than critical $\chi^2$ value at the chosen level of significance. B-P-G test replies on normality assumption of disturbance term, so you can test if residuals has approximately normal distribution or not.
The most general test is White's Test, consider a two independent variables regression $$ Y_{i}=\beta_{1}+\beta_{2} X_{2 i}+\beta_{3} X_{3 i}+u_{i} $$
If $\sigma_i^2$ is known, weighted least square (WLS) is the best choice, i.e. divide $\sigma_i$ on both sides of the model, which can correct the heteroscedasticity and estimator will be BLUE. However $\sigma_i^2$ is rarely known, we won't even bother to discuss this situation.
If we don't know the $\sigma_i^2$ and suspect heteroscedasticity, you can invoke a White Robust Standard Errors. If the difference is large comparing with OLS standard errors, we should routinely prefer to results with robust standard errors. If you estimate with statsmodel library, the OLS object has a property for robust standard error model.HC0_se
However, there are also possibilities of mending heteroscedasticity with model specification, which is based on your assumption of variable relations.
To be added....
If we assume the disturbance term has a function relationship with variables, i.e. $$ E(u_i^2) = \sigma^2 f(X_i) \qquad\text{ or } \qquad E(u_i^2) = \sigma^2 f(Y_i) $$ Suppose we are dealing with simple linear regression model $$ Y_i = \beta_1 +\beta_2 X_i + u_i $$ To eliminate the heteroscedasiticity given the known function form, we divide both sides by $g(f(x))$ $$ \frac{Y_i}{g(f(X_i))}=\frac{\beta_1}{g(f(X_i))}+\frac{\beta_2 X_i}{g(f(X_i))}+\frac{u_i}{g(f(X_i))} $$
What we want is to achieve $$ E\bigg(\frac{u_i}{g(f(X_i))}\bigg)^2=\sigma^2 $$
Thus if $f(X_i)=X_i^2$, then $g(\cdot)$ is the inverse of $f(\cdot)$
Log transformation can largely contain the heteroscedasticity, because it compresses the scales. In the chart below we have plotted both $Y_i= \beta_1+\beta_2X_i+u_i$ and $ln{Y_i}= \beta_1+\beta_2\ln{X_i}+u_i$, the scales of latter are heavily compressed, for instance, $6000$ is $6$ times of $1000$, but $\ln{6000}\approx 8.7$ is only $.26$ times higher than $\ln{1000}\approx 6.9$. This is the exact mathematical reason why log transformation can treat heteroscedasticity.
However, the log operation will be invalid with negative numbers, that's why the chart below might have error messages 'invalid value encountered in log'.
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(12, 15))
ax[0].scatter(X, Y)
ax[0].grid()
ax[0].set_title(r"$Y_i= \beta_1+\beta_2X_i+u_i$")
ax[0].set_xlabel("$X$")
ax[0].set_ylabel("$Y$")
ax[1].scatter(np.log(X), np.log(Y), color="tomato")
ax[1].grid()
ax[1].set_title(r"$ln{Y_i}= \beta_1+\beta_2\ln{X_i}+u_i$")
ax[1].set_xlabel("$\ln{X}$")
ax[1].set_ylabel("$\ln{Y}$")
plt.show()
<ipython-input-62-a14a11757e74>:8: RuntimeWarning: invalid value encountered in log ax[1].scatter(np.log(X), np.log(Y), color = 'tomato')