見出し画像

#31 Wx、Eyの再計算、推計値と統計値の再比較

#30で、移輸入や移輸出、消費や固定資本、在庫を考慮に入れていないことが判明しました。

今回は、上記の項目を考慮に入れて、最適化する前の段階、つまり、重量単価初期値における推計値と統計値の比較を再度行います。

x産業の廃棄物発生量Wxを推計(ver2.0)

産業連関表の金額フローを物質フローに変換し、廃棄物発生量Wxを推計しました。

投稿#30にて、産業を1つに固定して算出した例を紹介しましたが、今回は全187産業において廃棄物発生量Wxを算出しました。

for x in range(len(df_price_per_ton.index)):
   # 投入量を計算
   input = 0 # 投入分
   output = 0 # 産出分
   fuel = 0 # 燃料使用分
   waste = 0 # 廃棄物発生量
   from_other_industry = 0 # 他産業からの投入
   same_industry = 0 # 同産業
   to_other_industry = 0 # 他産業への産出
   iyunyu = 0 # 移輸入
   iyushutsu = 0 # 移輸出
   consume = 0 # 消費
   fixed_capital = 0 # 固定資本
   stock = 0 # 在庫
   Ux = df_price_per_ton.iat[x, 0]
   xcode = df_price_per_ton.index[x]
   for i in range(187):
       for k in range(len(df_price_per_ton.index)):
           Ui = df_price_per_ton.iat[k, 0]
           if df_price_per_ton.index[k] == '0131': # 0131(農業サービス)からの投入は考慮しない
               continue
           if df_price_per_ton.index[k] == df_iotable.index[i]:
               from_other_industry += df_iotable.iat[i, x] * 1000000 // Ui
               # 燃料使用分を計算
               if df_price_per_ton.index[k] == '2121': # 石炭製品の燃料使用分
                   fuel += df_iotable.iat[i, x] * 1000000 // Ui
               # 石油化学系基礎製品への石油製品の投入ではない場合
               if df_price_per_ton.index[k] == '2111':
                   if df_iotable.columns[x] != '2031':
                       fuel += df_iotable.iat[i, x] * 1000000 // Ui # 石油製品の燃料使用分
    # 産出量を計算
   if df_price_per_ton.index[x] == '0131': # 0131(農業サービス)の産出は考慮しない
       output = 0
       same_industry = 0
       to_other_industry = 0
       consume = 0
       fixed_capital = 0
       stock = 0
       iyushutsu = 0
       iyunyu = 0
   else:
       for i in range(187):
           if i == x:
               same_industry = df_iotable.iat[x, i] * 1000000 // Ux
           else:
               to_other_industry += df_iotable.iat[x, i] * 1000000 // Ux

       ctuple = ('7111', '7211','7212', '7311', '7321')
       for c in ctuple:
           consume += df_iotable.loc[xcode, c] * 1000000 // Ux

       ftuple = ('7411', '7511')
       for f in ftuple:
           fixed_capital += df_iotable.loc[xcode, f] * 1000000 // Ux

       stock = df_iotable.loc[xcode, '7611'] * 1000000 // Ux

       iyushutsu = df_iotable.loc[xcode, '8100'] * 1000000 // Ux

       iyunyu = -(df_iotable.loc[xcode, '8700']) * 1000000 // Ux

   
   input = from_other_industry + iyunyu
   output = same_industry + to_other_industry + iyushutsu + consume + fixed_capital + stock
   waste = input - output - fuel
   
   # 計算結果をdf_estimateに格納
   df_estimate.iat[x, 0] = int(waste)
   df_estimate.iat[x, 1] = int(input)
   df_estimate.iat[x, 2] = int(output)
   df_estimate.iat[x, 3] = int(fuel)
df_estimate.head(n=10)

画像1

重量単価初期値における推計値と統計値の比較表作成

続いて、産業連関表の187分類の廃棄物発生量Wxを、廃棄物実態調査の28分類Eyに対応させて、統計値Syと比較する表を作成しました。

df_before_compare = df_statistics.copy()
df_before_compare['input'] = 0
df_before_compare['output'] = 0
df_before_compare['fuel'] = 0
df_before_compare['Ey'] = 0
df_before_compare = df_before_compare[['input', 'output', 'fuel', 'Ey', 'Sy']]
for i in range(len(df_before_compare)):
   for sector, group in df_estimate.groupby('sector'):
       if sector == df_before_compare.index[i]:
           df_before_compare.iat[i, 0] = group['input'].sum()
           df_before_compare.iat[i, 1] = group['output'].sum()
           df_before_compare.iat[i, 2] = group['fuel'].sum()
           df_before_compare.iat[i, 3] = group['Wx'].sum()
           
df_before_compare

df_before_compareをcsv形式で書き出して、列名を加工して一覧表にしてみました。

画像2

12業種で、推計値が負の値となっています。その中でも、化学、飲料・飼料、はん用機器が大きくずれています。

重量単価初期値における推計値と統計値の相関

重量単価初期値における推計値と統計値の相関を示すと、以下のようになります。以下のグラフは0以下の値は考慮していません。相関係数は、0.461となりました。

画像3


サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪