米国経済の不確実性に関する独自の研究を行っている素晴らしいサイトを見つけたので記事にしてみました。
この記事では下記のサイトからデータを取得するpythonコードを記載します。
http://www.policyuncertainty.com/index.html
サイトでは米国経済の不確実性を下記のような観点で指数化し分析しています。
a. ニュース報道による政策関連経済不確実性の指数
10の大手新聞(USA Today、マイアミ・ヘラルド、シカゴ・トリビューン、ワシントン・ポスト、ロサンゼルス・タイムズ、ボストン・グローブ、サンフランシスコ・クロニクル、ダラス・モーニング・ニュース、ヒューストン・クロニクル、ウォール・ストリート・ジャーナル)の記事を基にして作成されます。
毎月、各新聞に対して「不確実性」や「不確定」、「経済」、「議会」、「立法」、「ホワイトハウス」、「規制」、「連邦準備制度」、「赤字」といった用語を含む記事を検索します。
記事の総数に対して政策関連の不確実性記事の比率を計算し、それを1985年1月から2009年12月までの期間で標準偏差1に正規化します。
b. 税制改正の不確実性データ
この要素は、議会予算局(CBO)の報告書に基づいており、連邦税法の一時的な規定をリスト化しています。
一時的な税制措置は、企業や家庭に不確実性をもたらすため、これらの延長が遅れると税制の安定性が損なわれます。
c. 経済予測者の意見の不一致
フィラデルフィア連邦準備銀行の「プロフェッショナルフォーキャスターズ調査」に基づいています。
政府政策に直接影響を受ける変数(消費者物価指数(CPI)、州および地方政府の財とサービスの購入、連邦政府の財とサービスの購入)の予測に対する意見の分散を測定します。
データを取得
例えば下記のようにcsvで各指数がまとめられているのでこれを取得します。
http://www.policyuncertainty.com/media/All_Daily_Policy_Data.csv
まずはCSVファイルのデータを読み込み、どのような配列になっているか確認するためのコードを以下に示します。これにより、CSVの内容を把握し、その後グラフ化する際の準備ができます。
import pandas as pd
# CSVファイルのURL
url = "http://www.policyuncertainty.com/media/All_Daily_Policy_Data.csv"
# データの読み込み
data = pd.read_csv(url)
# データの最初の数行を表示して配列を確認
print(data.head())
# データの概要を確認
print(data.info())
コードを実行するとこのデータには、以下の列が含まれていることがわかります。
day month year daily_policy_index
1 1 1985 103.83
matplotlibでグラフ
データが取得できたので最後にグラフを作成します。
import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルのURL
url = "http://www.policyuncertainty.com/media/All_Daily_Policy_Data.csv"
# データの読み込み
data = pd.read_csv(url)
# 日付を一つの列にまとめる
data['date'] = pd.to_datetime(data[['year', 'month', 'day']])
# グラフの作成
plt.figure(figsize=(12, 6))
plt.plot(data['date'], data['daily_policy_index'], label='Daily Policy Uncertainty Index')
plt.xlabel('Date')
plt.ylabel('Daily Policy Index')
plt.title('US Daily Policy Uncertainty Index Over Time')
plt.legend()
plt.grid(True)
plt.show()
エクセルデータも取得した
import pandas as pd
import matplotlib.pyplot as plt
# ExcelファイルのURL
url = "http://www.policyuncertainty.com/media/Categorical_EPU_Data.xlsx"
# データの読み込み
data = pd.read_excel(url, sheet_name='Indices')
# 欠損値を含む行を削除
data = data.dropna(subset=['Year', 'Month'])
# 日付を作成
data['date'] = pd.to_datetime(data['Year'].astype(str) + '-' + data['Month'].astype(int).astype(str))
# プロットする列のリスト('Year', 'Month', 'date' 以外)
columns_to_plot = data.columns[2:-1]
# グラフの作成
plt.figure(figsize=(14, 8))
for column in columns_to_plot:
plt.plot(data['date'], data[column], label=column)
plt.xlabel('Date')
plt.ylabel('Policy Uncertainty Index')
plt.title('Various Categories of Economic Policy Uncertainty Over Time')
plt.legend(loc='upper right', bbox_to_anchor=(1.15, 1))
plt.grid(True)
plt.show()