2019年11月17日日曜日

公認会計士試験の受験番号の仕組み(関東財務局の場合)

公認会計士試験の受験番号には規則性があるため、受験番号を見ればある程度の情報がわかります。
受験番号は6桁ありますが、少なくとも平成29年以降の3年間は次のような意味があるようです。

  • 1桁目 願書提出期(12月短答→1、5月短答および過年度→2)
  • 2桁目 選択科目(経営学→1、経済学→2、民法→3、統計学→4、過年度?→それ以外)
  • 3桁目 出願方法(書面出願→0~4、インターネット出願→5~9)
  • 4桁目以降 個別番号
2桁目は選択科目を指しているようなのですが、5~9までの数字の使い方は不明です。5月願書の方に振られていることが多いので過年度生の番号のような気もしますが、12月願書にも若干含まれているので、一概にはなんとも言えません。
いずれにしても何らかの免除科目があることを示しているのではないかと思います。

たとえば、12月で経営学のネット出願は115xxx~119xxxになります。5月で統計学の書面出願は240xxx~244xxxになります。

合格率の解析(プログラミング的な話)

関東財務局の受験番号には上記のような特徴があるため12月と5月の短答合格者の受験番号と論文合格者の受験番号を突合させることで、いろいろなデータを取ることができます。

12月生と5月生の受験番号は短答でも論文でもその年度に受ける限りは同じ受験番号になります。なので、短答の合格発表に記載された受験番号が論文の合格発表にあるかどうかをチェックすることで、それぞれの受験者数と合格者数を把握することができて、合格率を求めることができます。
過年度生については、事務局から各財務局ごとの論文受験者数が出ているので、ここから12月と5月の短答合格者数を差し引くことで、過年度の受験者数を推定することができます。実際には欠席者がいるため短答に合格した全員が論文試験を受験しているわけではないと思うので、過年度生の数字は少なめに計上されることになると思われます。
短答合格者の論文欠席者を把握することは困難であり、実際は極めて少ないと思われるので、集計では無視することにします。

このロジックを理解したら、次の手順でデータを加工していきます。
  1. 事務局発表の12月短答、5月短答、論文のそれぞれの合格者受験番号(PDF)を入手
  2. PDFから受験番号をクリップボードにコピーして短答合格者(12月、5月合算)および論文合格者ごとにファイルを分けてメモ帳に貼り付け
  3. メモ帳上で不要な文字を削除(手作業と置換<Ctrl+H>を使う)
  4. 受験番号だけになったテキストを保存してLinuxへコピー
  5. Linux上でsedを使い、さらにテキストを整形
  6. 短答合格者の受験番号と論文受験者の受験番号をプログラムを使って突合させて次の出力を得る
    1. 12月短答に合格した人数と、その中から論文に合格した人の数
    2. 5月短答に合格した人の数と、その中から論文に合格した人の数
    3. 1および2以外で論文に合格した人の数
  7. プログラムが出力した数値をExcelに手入力して見た目を整える
データの前準備に手間がかかっています。すべてをプログラムにやらせることもできると思いますが、プログラムが得意なことと人間が得意なこと、またはExcelの方が得意なこともあるので、適材適所でツールを使い分けるのがコツです。

PDFからコピペしてくると受験番号が「第11xxxx号」と表記されるので、「第」と「号」を消してやる必要があります。日本語の置換機能はメモ帳が一番得意なのでメモ帳にやらせました。メモ帳で開けないくらい大きなデータになるとプログラム等にやらせるとおもいます。
変換しただけでは受験番号が1行に複数書かれている状態だったりPDFからコピペしたことで改行がおかしい時もあります。最終的には1行に1つの受験番号が書かれたデータがあるとプログラムでやることを減らせるのですが、メモ帳はこの作業が苦手です。
得意なのは正規表現が使えるsedやawkといったツール。プログラミングでもできますが、プログラムに書くとデバッグの範囲が増えるため、先にsedでデータを加工しておきます。
1行ごとに受験番号を配置して、改行コードを修正し、不要なスペースやタブを削除して、空の行を削除するsedは以下の通りです。
# sed -e 's/ /\n/g' 【入力ファイル】 | sed -e 's/\r//g' | sed -e 's/[<space><tab>]//g' | sed -e '/^[<space><tab>]*$/d' > 【出力ファイル】
こうして、1行に1つの受験番号の書かれたファイルを作成することができました。

あとはプログラムです。
やり方はいろいろあると思いますが、私はruby使いなので、
  • ハッシュクラスを作り、「受験番号」と「短答合格フラグと論文合格フラグの配列」のハッシュを入れる
  • ハッシュを再展開して12月、5月、それ以外に分けて短答合格者数と論文合格者数をカウントする
  • 集計結果を出力する
といった感じの3ステップで作りました。
pythonユーザはdictクラスが使えるからもっと楽でしょう。

こんな感じであらかじめメモ帳や正規表現を使ったデータ加工をしておけば後のプログラミングが楽になります。
特に正規表現は強力なツールです。絶対覚えましょう。

Excelの処理については割愛します。

0 件のコメント:

コメントを投稿

2021年実務補習規定の改訂

2021年7月に実務補習の規定が改訂されたのでポイントの紹介です。 主な変更点は講義や単位の取り方の変更なので、課題研究や考査への影響はなさそうです。 2021年入所から適用されるので、 2020年期までに入所している人には適用されません 。 ライブ講義・eラーニングの区別がなく...