#81 「経済センサス―活動調査」から民営以外の事業所の従業者数を推計
#79から、三好(2020)を紐解きながら、経済センサスを用いた従業者数のデータの整備に着手しています。
三好ゆう(2020)『ノン・サーベイ法による市町村産業連関表の作成と課題―京都府内全26市町村の「市内生産額」の推計から―』福知山公立大学研究紀要2020,4巻 1号 ,pp.185 - 208
前回の投稿(#80)では、「経済センサス」の産業分類を「産業連関表」の対応する部門に振り分ける作業における留意点(その1)を紹介し、実際に作業を開始しました。
今回は、上記作業における留意点(その2)について紐解き、実際に作業を行っていきます。
作業上の留意点(その2)
全国における平成23年の産業別公的部門の従業者数を推計
「経済センサス―基礎調査」の公的部門のデータから、大分類及び「数字2桁」+「アルファベット」の行を削除
まず、「経済センサス―基礎調査」がどのような統計資料なのか、見てみることにします。
平成21年経済センサス-基礎調査 事業所に関する集計 表番号00403 表題産業(小分類),経営組織(2区分)国・地方公共団体,従業上の地位(6区分),男女別従業者数-全国には、国と地方の公共団体(公的部門)の事業所の従業者数のデータが記載されているようです。
上記のデータをダウンロードして、一部を抜粋すると、以下のようになります。
赤枠で囲った行は大分類での従業者数のデータなので、削除しても良いと考えられます。
また、青枠で囲った行は、産業分類名が「数字2桁」+「アルファベット」で始まり、「経済センサス―活動調査」の民営事業所のデータには見られなかったパターンです。
上記の例では、「58A料理品小売業」と「58B他に分類されない飲食料品小売業」は、直近の行にある「589その他の飲食料品小売業」の内訳と考えられ、合計すると確かに、「589その他の飲食料品小売業」に一致します。
よって、これらの産業分類名が「数字2桁」+「アルファベット」で始まる行も削除しても良いと考えられます。
赤枠(大分類)及び青枠(産業分類名が「数字2桁」+「アルファベット」で始まる)の行を削除するVBAのコードは、以下のようになります。
Sub 大分類及び数字2桁とアルファベット1文字で始まる行を削除()
Dim ws As Worksheet
Set ws = Workbooks("H21経済センサス_国地方公共団体_従業者数_全国_小分類.ods").Worksheets("sheet1")
For i = 300 To 2 Step -1
If ws.Cells(i, 2).Value Like "[A-Z]*" Or ws.Cells(i, 2).Value Like "@*" Or ws.Cells(i, 2).Value Like "##[A-Z]*" Then
ws.Cells(i, 2).EntireRow.Delete
EndIf
Next
End Sub
「管理、補助的経済活動を行う事業所」の従業者数をそれ以外の産業に割り振る
作業中のワークシートには、「管理、補助的経済活動を行う事業所」の行が含まれています。なので、作業上の留意点(その1)と同様に、「管理、補助的経済活動を行う事業所」の従業者数をそれ以外の産業に割り振ります。
VBAのコードは、以下のようになります。
Sub 管理補助的経済活動を行う事業所への対処()
Dim ws As Worksheet
Dim num As Long
Dim S_num As String
Dim k_String As String
Dim k_employee As Long
Dim m_employee As Double
Dim s_employee As Double
Dim ratio As Double
Dim i As Integer
Dim j As Integer
Dim k As Integer
Set ws = Workbooks("H21経済センサス_国地方公共団体_従業者数_全国_小分類.ods").Worksheets("sheet1")
For i = 2 To 205
If ws.Cells(i, 2).Value Like "##" & "[!0-9]*" Then
num = Val(ws.Cells(i, 2).Value)
If num < 10 Then
S_num = "0" & CStr(num)
Else
S_num = CStr(num)
End If
m_employee = ws.Cells(i, 3).Value
For j = 2 To 205
If ws.Cells(j, 2).Value Like S_num & "0*" Then
k_employee = ws.Cells(j, 3).Value
For k = 2 To 205
If ws.Cells(k, 2).Value Like S_num & "[1-9]*" Then
s_employee = ws.Cells(k, 3).Value
ratio = s_employee / m_employee
ws.Cells(k, 3).Value = s_employee + k_employee * ratio
End If
Next
End If
Next
End If
Next
' 「管理、補助的経済活動を行う事業所」を含む行をすべて削除
For i = 205 To 2 Step -1
If ws.Cells(i, 2).Value Like "##" & "0*" Then
ws.Cells(i, 2).EntireRow.Delete
EndIf
Next
' 中分類をすべて削除
For i = 205 To 2 Step -1
If Not(ws.Cells(i, 2).Value Like "###*") Then
ws.Cells(i, 2).EntireRow.Delete
EndIf
Next
End Sub
これまで、「平成21年 経済センサス―基礎調査」において、公的部門の従業者数を算出してきました。
同じ作業を、「平成26年 経済センサス―基礎調査」でも実行します。
ダウンロードするデータは、平成26年経済センサス‐基礎調査 事業所に関する集計 表番号 03103 表題 産業(小分類)、経営組織(2区分)別従業上の地位(3区分)、男女別従業者数-全国(国、地方公共団体)です。
産業分類名を「分類符号」と「部門名」に分割する
今の段階で、平成21年、平成26年のデータともに、産業分類名に「分類符号(数字3桁)」と「部門名」が同じセル内に収まっています。この段階で、産業分類名の「分類符号」と「部門名」とに分割し、それぞれを違う列に格納します。
VBAのコードは、以下のようになります。
Sub 最初の数字3桁と部門名を分割して別々の列に格納()
Dim wsOrg As Worksheet
Dim wsDes As Worksheet
Dim i As Integer
Dim num As Long
Dim code As String
Dim iname As String
Set wsOrg = Workbooks("H21経済センサス_国地方公共団体_従業者数_全国_小分類.ods").Worksheets("sheet1")
Set wsDes = Workbooks("H21経済センサス_国地方公共団体_従業者数_全国_小分類.ods").Worksheets("sheet2")
For i = 2 To 133
num = Val(wsOrg.Cells(i, 2).Value)
If num < 100 Then
code = "0" & CStr(num)
Else
code = CStr(num)
End If
iname = Replace(wsOrg.Cells(i, 2).Value, code, "")
wsDes.Cells(i, 1).NumberFormatLocal = "@" ' セルの書式を「文字」に設定
wsDes.Cells(i, 1).Value = code
wsDes.Cells(i, 2).Value = iname
wsDes.Cells(i, 3).Value = wsOrg.Cells(i, 3).Value
Next
End Sub
実行結果は、以下のようになります。
平成26年のデータにも、同様の作業を行っていきます。
小分類の分類符号を全て作成
次に、平成23年の公的部門の事業所の従業者数を計算するためのワークシートを用意します。
「管理、補助的経済活動を行う事業所」(分類符号の3桁目が「0」)を除いた小分類がすべて格納できるように、分類符号(code;数字3桁)を作成していきます。
VBAのコードは、以下のようになります。
Sub 小分類全てのcode作成()
Dim ws As Worksheet
Dim i As Integer
Dim row As Integer
Set ws = Workbooks("H23_公的部門_従業者数_全国_小分類.ods").Worksheets("sheet1")
row = 2
' 011〜999のcodeを作成
For i = 11 To 999
If i < 100 Then
ws.Cells(row, 1).Value = "0" & CStr(i)
Else
ws.Cells(row, 1).Value = CStr(i)
End If
row = row + 1
Next
' 3桁目が「0」のcodeの行を削除
For i = 990 To 2 Step -1
If ws.Cells(i, 1).Value Like "##0*" Then
ws.Cells(i, 1).EntireRow.Delete
End If
Next
End Sub
直線補完法により平成23年の公的部門の産業別従業者を推計
続いて、平成21年の公的部門の従業者数、平成26年の従業者数のデータを格納し、直線補完法により平成23年の公的部門の産業別従業者を推計していきます。
推計式を再掲します。
$$
\begin{array}{}平成23年 従業者数 = 平成21年 従業者数 +{(平成26年 従業者数) - (平成21年 従業者数)}× \frac{平成23年から平成21年までの3年}{平成26年から平成21年までの5年}\end{array}
$$
Sub 直線補完法により平成23年の産業別従業者数を推計()
Dim wsOrg1 As Worksheet
Dim wsOrg2 As Worksheet
Dim wsDes As Worksheet
Dim i As Integer
Dim j As Integer
Set wsOrg1 = Workbooks("H21経済センサス_国地方公共団体_従業者数_全国_小分類.ods").Worksheets("sheet2")
Set wsOrg2 = Workbooks("H26経済センサス_国地方公共団体_従業者数_全国_小分類.ods").Worksheets("sheet2")
Set wsDes = Workbooks("H23_公的部門_従業者数_全国_小分類.ods").Worksheets("sheet1")
' 平成21年の公的部門の従業者数を格納
For i = 2 To 892
For j = 2 To 133
If wsDes.Cells(i, 1).Value = wsOrg1.Cells(j, 1).Value Then
wsDes.Cells(i, 3).Value = wsOrg1.Cells(j, 3).Value
End If
Next
Next
' 平成26年の公的部門の従業者を格納
For i = 2 To 892
For j = 2 To 142
If wsDes.Cells(i, 1).Value = wsOrg2.Cells(j, 1).Value Then
wsDes.Cells(i, 4).Value = wsOrg2.Cells(j, 3).Value
End If
Next
Next
' 直線補完法により平成23年の産業別従業者数を推計
For i = 2 To 892
wsDes.Cells(i, 5).Value = wsDes.Cells(i, 3).Value + (wsDes.Cells(i, 4).Value - wsDes.Cells(i, 3).Value) * 3 / 5
Next
End Sub
これで、全国における平成23年の産業別従業者数を推計することができました。
岩手県における平成23年の産業別公的部門の従業者数を推計
同様の方法で、岩手県における平成23年の産業別従業者数を推計していきます。
平成21年経済センサス-基礎調査 事業所に関する集計 表番号11001 表題産業(小分類),従業者規模(6区分),経営組織(4区分)別民営以外の事業所数及び男女別従業者数-都道府県より、岩手県における平成21年の公的部門の産業別従業者のデータをダウンロードします。
また、岩手県における平成26年の公的部門の産業別従業者数のデータは、平成26年経済センサス‐基礎調査 事業所に関する集計 表番号09100 表題産業(小分類)、経営組織(4区分)別事業所数、男女別従業者数及び常用雇用者数(国及び地方公共団体)-都道府県からダウンロードします。
「経済センサス―基礎調査」の公的部門のデータから、大分類及び「数字2桁」+「アルファベット」の行を削除
大分類及び産業分類名が「数字2桁」+「アルファベット」で始まる行を削除します。VBAのコードは割愛します。
「管理、補助的経済活動を行う事業所」の従業者数をそれ以外の産業に割り振る
作業中のワークシートには、「管理、補助的経済活動を行う事業所」の行が含まれています。なので、作業上の留意点(その1)と同様に、「管理、補助的経済活動を行う事業所」の従業者数をそれ以外の産業に割り振ります。
VBAのコードは以下のようになります。
Sub 管理補助的経済活動を行う事業所への対処()
Dim ws As Worksheet
Dim num As Long
Dim S_num As String
Dim k_String As String
Dim k_employee As Long
Dim m_employee As Double
Dim s_employee As Double
Dim ratio As Double
Dim i As Integer
Dim j As Integer
Dim k As Integer
Set ws = Workbooks("H21経済センサス_国地方公共団体_従業者数_岩手県_小分類.ods").Worksheets("sheet1")
For i = 2 To 221
If ws.Cells(i, 2).Value Like "##" & "[!0-9]*" Then
num = Val(ws.Cells(i, 2).Value)
If num < 10 Then
S_num = "0" & CStr(num)
Else
S_num = CStr(num)
End If
m_employee = ws.Cells(i, 3).Value
If m_employee = 0 Then
Goto Continue
Else
For j = 2 To 221
If ws.Cells(j, 2).Value Like S_num & "0*" Then
k_employee = ws.Cells(j, 3).Value
For k = 2 To 221
If ws.Cells(k, 2).Value Like S_num & "[1-9]*" Then
s_employee = ws.Cells(k, 3).Value
ratio = s_employee / m_employee
ws.Cells(k, 3).Value = s_employee + k_employee * ratio
End If
Next
End If
Next
End If
End If
Continue:
Next
' 「管理、補助的経済活動を行う事業所」を含む行をすべて削除
For i = 221 To 2 Step -1
If ws.Cells(i, 2).Value Like "##" & "0*" Then
ws.Cells(i, 2).EntireRow.Delete
EndIf
Next
' 中分類をすべて削除
For i = 221 To 2 Step -1
If Not(ws.Cells(i, 2).Value Like "###*") Then
ws.Cells(i, 2).EntireRow.Delete
EndIf
Next
End Sub
Continueを使用して、中分類の従業者数が0の場合は、ループをスキップするようにしました。
産業分類名を「分類符号」と「部門名」に分割する
今の段階で、産業分類名に「分類符号(数字3桁)」と「部門名」が同じセル内に収まっています。この段階で、産業分類名の「分類符号」と「部門名」とに分割し、それぞれを違う列に格納します。
VBAのコードは、全国の推計時に使用したものと変わらないので、割愛します。
小分類の分類符号を全て作成
次に、平成23年の公的部門の事業所の従業者数を計算するためのワークシートを用意します。
「管理、補助的経済活動を行う事業所」(分類符号の3桁目が「0」)を除いた小分類がすべて格納できるように、分類符号(code;数字3桁)を作成していきます。
VBAのコードは、割愛します。
直線補完法により平成23年の公的部門の産業別従業者を推計
続いて、平成21年の公的部門の従業者数、平成26年の従業者数のデータを格納し、直線補完法により平成23年の公的部門の産業別従業者を推計していきます。
推計式を再掲します。
$$
\begin{array}{}平成23年 従業者数 = 平成21年 従業者数 +{(平成26年 従業者数) - (平成21年 従業者数)}× \frac{平成23年から平成21年までの3年}{平成26年から平成21年までの5年}\end{array}
$$
サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪