#182 Pythonを用いた2014年(平成26年)大阪府産業連関表作成におけるバランス調整
投稿#180及び#181において、2014年(平成26年)大阪府産業連関表の輸移出及び輸移入額の推計が完了しました。
輸移出及び輸移入の推計が妥当かどうかのチェックを行います。
チェックポイント
輸出や移出がその産業部門の生産額を超えていないか、プラス値になっているかどうか、輸入や移入が域内需要を超えていないか、マイナス値になっているかどうか、などがチェックポイントです。
土井英二・浅利一郎・中野親徳[編著]『はじめよう地域産業連関分析 Excelで初歩から実践まで[改訂版]』p.175より
輸出や移出が府内生産額を超えているかをチェック
輸出や移出が府内生産額を超えている産業部門をリストアップする関数を定義します。
コード182-1
# 比較対象部門が府内生産額を超えている産業部門をリストアップする関数を定義
def exceed_plistup(objcode):
exceed_plist = []
for idx in h26_manu_stocks_df.index:
obj = h26_fd_df.loc[idx, objcode]
pro = h26_pro_df.loc["production", idx]
if obj > pro:
exceed_plist.append(idx)
return exceed_plist
輸出(普通貿易)額が府内生産額を超えている産業部門
コード182-1の関数の引数に"801101"を指定すると、空のリストが返ってきました。
したがって、輸出(普通貿易)額が府内生産額を超えている産業部門はないと判断できます。
輸出(特殊貿易)額が府内生産額を超えている産業部門
コード182-1の関数の引数に"801102"を指定すると、以下の産業部門のコードがリスト内に入った形で返ってきました。
- 0639 その他の鉱物
- 1141 たばこ
- 3522 二輪自動車
- 3592 航空機・同修理
- 5741 外洋輸送
輸出(直接購入)額が府内生産額を超えている産業部門
コード182-1の関数の引数に"801200"を指定すると、以下の産業部門のコードがリスト内に入った形で返ってきました。
- 1141 たばこ
- 3115 光学機械・レンズ
- 3522 二輪自動車
移出額が府内生産額を超えている産業部門
コード182-1の関数の引数に"821100"を指定すると、以下の産業部門のコードがリスト内に入った形で返ってきました。
- 1512 織物
輸出や移出がマイナス値になっていないかをチェック
次に、輸出や移出がマイナス値になっていないかをチェックしていきます。
チェックする関数を定義すると、以下のようになります。
コード182-2
# 比較対象部門がマイナス値かどうかをチェックする関数を定義
def negacheck(objcode):
nega_list = []
for idx in h26_manu_stocks_df.index:
if h26_fd_df.loc[idx, objcode] < 0:
nega_list.append(idx)
return nega_list
チェック結果
上記の関数の引数に輸出や移出のコードを指定したところ、全て空のリストが返ってきました。よって、輸出や移出が全てマイナス値になっていないことが確認できました。
輸出や移出の再推計
府内生産額が0である産業部門
- 0639 その他の鉱物
- 1141 たばこ
- 3522 二輪自動車
は府内生産額が0であるので、輸出額、移出額ともに0となるはずです。
そこで以下のコードによって湯周部門と移出部門の再推計を行いました。
コード182-3
# ['0639', '1141', '3522']に対するバランス調整
list_pro0 = ['0639', '1141', '3522'] # 対象の産業部門コード
list_obj = ["801101", "801102", "801200", "821100"] # 再推計対象の輸移出部門コード
for p in list_pro0:
for o in list_obj:
h26_fd_df.loc[p, o] = 0
3592 航空機・同修理
投稿#182での(12)輸出(特殊貿易)の推計において、推計結果が生産額を超えていました。
そこで、今回は2014年(平成26年)の直近に公表されている2013年(平成25年)大阪府産業連関表の府内生産額に対する輸出(特殊貿易)額の比率を求め、平成26年大阪延長表の生産額に乗じることで、輸出(特殊貿易)額の再推計を行いました。
5741 外洋輸送
投稿#182での(12)輸出(特殊貿易)の推計において、推計結果が生産額を超えていました。また、(11)輸出(普通貿易)の推計において、平成26年全国延長表では値が0になっているにもかかわらず、輸出(普通貿易)額が0になっていませんでした。
そこで、今回は、輸出(普通貿易)額を0にした上で、2014年(平成26年)の直近に公表されている2013年(平成25年)大阪府産業連関表の府内生産額に対する輸出(特殊貿易)額の比率を求め、平成26年大阪延長表の生産額に乗じることで、輸出(普通貿易)と輸出(特殊貿易)額の両方の再推計を行いました。
3115 光学機械・レンズ
投稿#182での(13)輸出(直接)の推計において、推計結果が生産額を超えていました。
そこで、今回は、2013年(平成25年)大阪府産業連関表の府内生産額に対する輸出(直接購入)額の比率を求め、平成26年大阪延長表の生産額に乗じることで、輸出(直接購入)の再推計を行いました。
1512 「織物」
投稿#180の(14)移出の推計において、推計結果が生産額を超えていました。
そこで、今回は、2013年(平成25年)大阪府産業連関表の府内生産額に対する移出額の比率を求め、平成26年大阪延長表の生産額に乗じることで、移出額の再推計を行いました。
輸入や移入が府内需要合計額を超えているかをチェック
輸入や移入が府内需要合計額を超えている産業部門をリストアップする関数を定義します。
コード182-4
# 比較対象部門が府内需要合計を超えている産業部門をリストアップする関数を定義
def exceed_listup(objcode):
exceed_dlist = []
for idx in h26_manu_stocks_df.index:
obj = abs(h26_fd_df.loc[idx, objcode])
totaldemand = h26_fd_df.loc[idx, "790000"]
if obj > totaldemand:
exceed_dlist.append(idx)
return exceed_dlist
輸入(普通貿易)が府内需要合計額を超えている産業部門
コード182-4の引数に、851101を指定すると、以下の産業部門コードが入ったリストが返ってきました。
- 1631 パルプ
- 2612 鉄屑
- '2712 非鉄金属屑
輸入(特殊貿易)が府内需要合計額を超えている産業部門
コード182-4の引数に、851102を指定すると、以下の産業部門コードが入ったリストが返ってきました。
- 1631 パルプ
- 2612 鉄屑
- 5741 外洋輸送
- 5743 港湾輸送
輸入(直接購入)が府内需要合計額を超えている産業部門
コード182-4の引数に、851200を指定すると、以下の産業部門コードが入ったリストが返ってきました。
- 1631 パルプ
- 2612 鉄屑
関税が府内需要合計額を超えている産業部門
コード182-4の引数に、861100を指定すると、以下の産業部門コードが入ったリストが返ってきました。
- 1631 パルプ
- 2612 鉄屑
輸入品商品税が府内需要合計額を超えている産業部門
コード182-4の引数に、851101を指定すると、以下の産業部門コードが入ったリストが返ってきました。
- 1631 パルプ
- 2612 鉄屑
移入が府内需要合計額を超えている産業部門
コード182-4の引数に、891100を指定すると、以下の産業部門コードが入ったリストが返ってきました。
- 1631 パルプ
- 2612 鉄屑
- '2712 非鉄金属屑
輸入や移入がプラス値になっていないかをチェック
次に、輸出や移出がプラス値になっていないかをチェックしていきます。
チェックする関数を定義すると、以下のようになります。
コード182-5
# 比較対象部門がプラス値かどうかをチェックする関数を定義
def posicheck(objcode):
posi_list = []
for idx in h26_manu_stocks_df.index:
if h26_fd_df.loc[idx, objcode] > 0:
posi_list.append(idx)
return posi_list
上述のコードを輸入や移入の部門で実行した結果、唯一、1631 鉄屑において、輸入(普通貿易)、輸入品商品税、移入の額がプラス値を取ることが判明しました。
輸入や移入の再推計
古紙、鉄屑、非鉄金属屑の場合
1631には、「1631-021P 古紙」が含まれています。1631-021P 古紙は、製造業及び小売業の生産活動及び最終需要部門で発生する古紙の競合部門となります。
同じように、2612 鉄屑は製造業及び小売業の生産活動及び最終需要部門で発生する鉄屑の、2712 非鉄金属屑は製造業及び小売業の生産活動及び最終需要部門で発生する非鉄金属屑の競合部門となります。
つまり、これら3部門は、主生産物ではなく、屑・副産物に当たります。
そして、これら3部門においては、輸入や移入が府内需要合計額を超えるケースもあるようです。
例えば、経済産業省「「平成26年延長産業連関表」において、2712011 非鉄金属屑での輸入(普通貿易)額が、国内需要合計額を超えていました。
したがって、今回は、
- 1631 パルプ
- 2612 鉄屑
- 2712 非鉄金属屑
において、輸入関連部門や移入部門の額が府内需要額を超えていても対処する必要はないと判断しました。
5741 外洋輸送及び5743 港湾輸送の場合
投稿#181での推計で、輸入(特殊貿易)額が府内需要額合計を超えていました。
今回は、平成25年大阪延長産業連関表における府内需要額合計に対する輸入(特殊貿易)額の比率を求め、平成26年大阪延長産業連関表の府内需要額合計に掛け合わせることで再推計を行いました。
輸入や移入がプラス値になっている産業部門における再推計
1631 パルプの場合
投稿#181での推計で、輸入(普通貿易)額、輸入品商品税額、移入額がプラスの値になっていました。
今回は、平成25年大阪延長産業連関表における府内需要額合計に対する輸入(普通貿易)額、輸入品商品税額、移入額の比率を求め、平成26年大阪延長産業連関表の府内需要額合計に掛け合わせることで再推計を行いました。
バランス調整
ここまでは、個々に推計した結果を集めた段階であるので、必ずしもタテ列(投入)とヨコ行(産出)のバランスが成立していません。
投入と産出のバランスを調整していきます。
バランス調整方法の確認
1)輸移入額が0でない業種
各業種について最終需要部門を足し合わせて算出した県内生産額と、項目1で推計した各業種の県内生産額との差をとる。次に各業種について輸入額と移入額の比率を算出し、県内生産額の差を掛け合わせる。これを先に推計した輸入額と移入額に足し合わせる。
2)輸移入額が0である業種
各業種について最終需要部門を足し合わせて算出した県内生産額と、項目1で推計した各業種の県内生産額との差をとる。次に各業種について消費支出額(家計、一般政府)、固定資本形成額 (民間、公的)の比率を算出し、県内生産額の差を掛け合わせる。これを先に推計した消費支出額(家計、一般政府)、固定資本形成額(民間、公的)に足し合わせる。
田畑(2005)「循環型地域社会形成支援のためのマテリアルバランス表の開発及びその適用に関する研究」より引用。
上記の引用文において、「項目1で推計した各業種の県内生産額」とは、本研究では、「投入側(中間投入、粗付加価値部門)の各業種の府内生産額」に相当します。
今回は、田畑(2005)を修正した方法を用います。
1)輸移入額が0でない業種
各業種について最終需要部門を足し合わせて算出した県内生産額と、項目1で推計した各業種の県内生産額との差をとる。次に各業種について輸入額と移入額の比率を算出し、県内生産額の差を掛け合わせる。これを先に推計した輸入額と移入額から差し引く
2)輸移入額が0である業種
各業種について最終需要部門を足し合わせて算出した県内生産額と、項目1で推計した各業種の県内生産額との差をとる。次に各業種について消費支出額(家計、対家計民間非営利団体、一般政府)、固定資本形成額 (民間、公的)の比率を算出し、県内生産額の差を掛け合わせる。これを先に推計した消費支出額(対家計民間非営利団体、家計、一般政府)、固定資本形成額(民間、公的)から差し引く
3)1631 パルプまたは2612 鉄屑の場合
各業種について最終需要部門を足し合わせて算出した県内生産額と、項目1で推計した各業種の県内生産額との差をとる。次に各業種について消費支出額(家計、対家計民間非営利団体、一般政府)、固定資本形成額 (民間、公的)、輸出(普通貿易、特殊貿易、直接購入)、移出の比率を算出し、県内生産額の差を掛け合わせる。これを先に推計した消費支出額(家計、対家計民間非営利団体、一般政府)、固定資本形成額(民間、公的)、輸出(普通貿易、特殊貿易、直接購入)、移出から差し引く
バランス調整の実行
バランス調整を行うPythonのコードは、以下のようになります。
コード182-6
# 田畑(2005)のバランス調整
list_imp = ["851101", "851102", "851200", "861100", "871100", "891100"]
imi_code = "891100"
list_ef = ["721100", "721200", "7311", "7321", "741100", "751100"]
list_ex = ["801101", "801102", "801200", "821100"]
list_exf = ["721100", "721200", "7311", "7321", "741100", "751100", "801101", "801102", "801200", "821100"]
for idx in h26_manu_stocks_df.index:
ord_imp = h26_fd_df.loc[idx, "851101"] # 輸入(普通貿易)額
spe_imp = h26_fd_df.loc[idx, "851102"] # 輸入(特殊貿易)額
dir_imp = h26_fd_df.loc[idx, "851200"] # 輸入(直接購入)額
duties = h26_fd_df.loc[idx, "861100"] # 関税額
tax = h26_fd_df.loc[idx, "871100"] # 輸入品商品税額
imi = h26_fd_df.loc[idx, imi_code] # 移入額
total_i = ord_imp + spe_imp + dir_imp + duties + tax + imi # 輸移入額合計
total_ef = h26_fd_df.loc[idx, "721100": "751100"].sum()
total_ex = (h26_fd_df.loc[idx, "801101":"801200"].sum()
+ h26_fd_df.loc[idx, "821100"]
)
# 最終需要部門を足し合わせて算出した府内生産額
pro_row = (h26_adjusted_mid_df.loc[idx, :].sum() # 内生部門合計額
+ h26_fd_df.loc[idx, "711100":"771100"].sum() # 家計外消費支出〜調整項の合計額
+ h26_fd_df.loc[idx, "801101":"801200"].sum() # 輸出額合計
+ h26_fd_df.loc[idx, "821100"] # 移出額合計
+ total_i
)
pro_col = h26_pro_df.loc["production", idx] # 投入側(中間投入、粗付加価値部門)の各業種の府内生産額
diff = pro_row - pro_col
if idx == "1631" or idx == "2612":
for exf_ in list_exf:
tmp3 = h26_fd_df.loc[idx, exf_]
exf_ratio = tmp3 / (total_ex + total_ef)
h26_fd_df.loc[idx, exf_] = tmp3 - diff * exf_ratio
# 輸移入額が0である産業の場合
elif (ord_imp == 0 and spe_imp == 0 and dir_imp == 0 and
duties == 0 and tax == 0 and imi == 0):
for ef_ in list_ef:
tmp1 = h26_fd_df.loc[idx, ef_]
ef_ratio = tmp1 / total_ef
h26_fd_df.loc[idx, ef_] = tmp1 - diff * ef_ratio
else:
for i_ in list_imp:
tmp2 = h26_fd_df.loc[idx, i_]
i_ratio = tmp2 / total_i
h26_fd_df.loc[idx, i_] = tmp2 - diff * i_ratio
バランス調整実行後のチェック
輸出や移出が府内生産額を超えているかをチェック
輸出関連3部門及び移出が府内生産額を超えているかを、コード182-1を使って再度チェックしました。
すると、輸出関連3部門及び移出のどれにおいても、空のリストが返ってきました。つまり、輸出や移出が府内生産額を超えている産業部門はありませんでした。
輸出や移出がマイナス値になっていないかをチェック
輸出関連3部門及び移出の値がマイナスになっていないかを、コード182-2を使って再度チェックしました。
すると、1631 パルプにおいて、輸出(普通貿易)と移出額がマイナス値になっていました。
輸入や移入が府内需要合計額を超えているかをチェック
輸入関連部門や移入が府内需要合計額を超えているかを、コード182-4を使って再度チェックしました。
すると、輸入関連部門及び移入のどれにおいても、府内需要額合計を超えている産業部門はありませんでした。
輸入や移入がプラス値になっていないかをチェック
輸入関連部門や移入がプラス値になっていないかを、コード182-5を使って再度チェックしました。
輸出(直接購入)がプラス値になっている産業
以下の産業部門が該当しました。
- 5521 住宅賃貸料
- 6411 医療
移入がプラス値になっている産業
以下の産業部門が該当しました。
- 6311 学校教育
- 6411 医療
輸移出額および輸移入額の再推計
1631 パルプにおける輸出(普通貿易)及び移入の再推計
平成26年大阪府産業連関表の府内生産額と平成25年大阪府延長産業連関表のそれが等しいので、平成25年延長産業連関表の輸出(普通貿易)及び移出額をそのまま使用しました。
5521 住宅賃貸料における輸入(直接購入)の再推計
今回は、平成25年大阪延長産業連関表における府内需要額合計に対する輸入(直接購入)の比率を求め、平成26年大阪延長産業連関表の府内需要額合計に掛け合わせることで再推計を行いました。
6311 学校教育における移入の再推計
今回は、平成25年大阪延長産業連関表における府内需要額合計に対する移入の比率を求め、平成26年大阪延長産業連関表の府内需要額合計に掛け合わせることで再推計を行いました。
6411 医療における輸入(直接購入)と移入の再推計
今回は、平成25年大阪延長産業連関表における府内需要額合計に対する輸入(直接購入)及び移入の比率を求め、平成26年大阪延長産業連関表の府内需要額合計に掛け合わせることで再推計を行いました。
投入と産出とのバランスが成立しているかをチェック
バランス調整がうまくできているかをチェックしていきます。
投入と産出とのバランスがうまくいっていない産業部門のリストを得るコードは、以下のようになります。
コード182-7
# 投入と産出とのバランスが成立しているかをチェック
ng_list = []
for idx in h26_manu_stocks_df.index:
pro_col = h26_pro_df.loc["production", idx]
pro_row = (h26_adjusted_mid_df.loc[idx, :].sum() # 内生部門合計額
+ h26_fd_df.loc[idx, "711100":"771100"].sum() # 家計外消費支出〜調整項の合計額
+ h26_fd_df.loc[idx, "801101":"801200"].sum() # 輸出額合計
+ h26_fd_df.loc[idx, "821100"] # 移出額合計
+ h26_fd_df.loc[idx, "851101":"871101"].sum()
+ h26_fd_df.loc[idx, "891100"]
)
if pro_col - pro_row > 1:
ng_list.append(idx)
ng_list
上記のコードを実行したところ、以下の産業部門が入ったリストが返ってきました。
- 1631 パルプ
- 5521 住宅賃貸料
- 6311 学校教育
- 6411 医療
手作業によるバランス調整
1631 パルプ、5521 住宅賃貸料、6311 学校教育、6411 医療に対して、手作業でバランス調整を行っていきます。
1631 パルプ
最終需要部門を足し合わせて算出した府内生産額と、粗付加価値部門を足し合わせて算出した府内生産額との差を取ります。その差を家計消費支出から差し引きます。
5521 住宅賃貸料
最終需要部門を足し合わせて算出した府内生産額と、粗付加価値部門を足し合わせて算出した府内生産額との差を取ります。その差を家計消費支出から差し引きます。
6311 学校教育
最終需要部門を足し合わせて算出した府内生産額と、粗付加価値部門を足し合わせて算出した府内生産額との差を取ります。次に消費支出額(家計、対家計民間非営利団体、一般政府)、固定資本形成額 (民間、公的)の比率を算出し、県内生産額の差を掛け合わせる。これを先に推計した消費支出額(家計、対家計民間非営利団体、一般政府)、固定資本形成額(民間、公的)から差し引きます。
6411 医療
最終需要部門を足し合わせて算出した府内生産額と、粗付加価値部門を足し合わせて算出した府内生産額との差を取ります。次に消費支出額(家計、対家計民間非営利団体、一般政府)、固定資本形成額 (民間、公的)の比率を算出し、県内生産額の差を掛け合わせる。これを先に推計した消費支出額(家計、対家計民間非営利団体、一般政府)、固定資本形成額(民間、公的)から差し引きます。
投入と産出とのバランスが成立しているかを再度チェック
バランス調整がうまくできているかを再度チェックしていきます。
コード182−7を再度実行すると、空のリストが返ってきました。
よって、すべての産業部門において、投入と産出のバランスが成立していることが確認できました。