仕訳を行列で表現する

2018年4月14日 | By 縄田 直治 | Filed in: データの利活用.

仕訳を分析したいときにボトルネックになるのはその特異な形であることは仕訳を扱ったことのある人なら誰でも経験している。
おそらく、色々な取引を経理的枠組みで無理やりに貸借対照表と損益計算書に当てはまるように分類しているところから、あの定型的でありながら扱いにくいデータの形ができてしまうことは想像に難くない。

例えば、

(借方)売掛金 108 (貸方)売上 100
              消費税 8

という仕訳は、右側の項目の符号を負にして、

売掛金 100
売上  −100
消費税 −8

というデータにすることが出来る。ただし、この3つのデータは科目集計するには便利なのだが組み合わせて一つの取引を表現しているので、例えば仕訳番号などでまとめてやらなければならない。また、いざ同一パターンの仕訳を探して件数を計算してみるとか、そのパターンの仕訳が決算にどの程度影響しているかを知るために足し算するなど考えると、簡単とは言えプログラムを書かねばならないのが厄介である。

仕訳には最低限の属性として、仕訳の計上者(組織や人)と取引日付が各仕訳一つ一つについているし、通常はさらに摘要欄などでどのような取引なのかを説明し判別できるようにしている。また、仕訳(取引)が財務諸表とどのようにつながるかを表現する形として、上記のような貸借に勘定科目を上げてそれぞれに金額属性を加えるのだが、これも売掛金の増加が左で、売上の増加が右側というのは、借方が左、貸方が右という経理の世界の並びの慣習とそれぞれの科目が借方科目なのか貸方科目なのかというルールとが混ざったものだということがわかっている人でなければ、言葉で表現された取引説明から仕訳を起こすことは容易ではなく、ある程度の訓練をしてそのスタイルに慣れることが必要である。ゆえに誰にでもできるわけではないから職業としての経理があり簿記の学習をする意味があるとされてきた。

しかし、今時、簿記の仕組みを使って仕訳伝票を起こして決算する会社などよほどの零細な個人事業会社を除いてはあり得ない。いやむしろ、小さな会社ほど人手不足などの事情で、何らかの会計パッケージで取引を処理しているだろう。そこには売上取引を入力すれば上記のような仕訳は自動的に生成され、決算書の体裁が出力出来るようになっているはずだ。つまり簿記は知らなくても(意味はわからずとも)決算は機械が作ってくれるのである。

仕訳の役割は、企業活動を取引という概念で捉えて、利益計算構造である「収益ー費用=利益」という形と財政状態計算構造である「資産(の増減)ー負債(の増減)=純資産(の増減)」という形に翻訳するところにある。勘定科目は計算構造の構成要素として付されたもので、本質的には財政状態と経営成績とを計算するロジックと、取引の構成要素とを結びつけるものだ。
つまり、仕訳という形での表現は取引の要素と計算構造を表現した決算書とを繋ぐという意味をもった記号化であり、言葉や事象が入力されれば決算書につながる形でのデータが生成される関数と考えれば、昨今はやりの機械学習などを使えばほぼ全ての取引を自動処理することも不可能ではないと考えられる。

監査する立場からは、人が処理しようが機械が処理しようがそれが正しくされている限り仕訳としては同じものだが、正しいかどうかを判断するにあたり仕訳を一つ一つ見るより他に方法がなかろうかと考えてしまう。そこでボトルネックとして出てくるのが冒頭に書いたように扱いにくいデータの形なのだ。

そこで仕訳の一つ一つを数学的に表現できれば、取り扱いが容易になると考え、ベクトルや行列を使って表現する方法を考えた。
勘定科目表の各科目の並びを行にとり列には借方金額、貸方金額を記入する方法で、勘定科目の属性は別に定義する。

仕訳番号
       借方   貸方
現金
預金
売掛金   108
未収金
固定資産
買掛金
未払金
消費税          8
借入金
退職給付引当金
資本金
剰余金
売上          100
売上原価
販売費
・・・
・・・

という形である。
勘定科目は、別に勘定科目属性表を用意して、科目の貸借区分や資産・負債、流動・固定などの区分を加えることが出来る。つまり計算構造は仕訳とは別に勘定科目属性表として定義することで、データと計算とを区別することが出来る。
この行列は加法定理に従い足し算すれば、そのまま合計試算表にもなる。合計試算表は、簿記の教科書では仕訳帳から総勘定元帳への転記が正しくされている(漏れなく重複なく誤りなく)ことを確かめるためにあるとされているので、コンピュータを使う時代に不要だという説もあるが、通常はありえない収益のマイナス発生高が借方に表現されるとか、売掛金の減少が現金の回収を表すなど、厳密な使い方をすれば、いろいろな齟齬や矛盾点が表現されるツールである。
行列仕訳は勘定科目の属性表と併せて用いれば、例えば、資産・負債・純資産という3要素で表現することも可能だ。また借方ベクトル、貸方ベクトルという形で科目の組み合わせをパターン化出来るし、そのパターンを貸借で組み合わせで、売上取引であるとか資金取引という区分が出来る。それを用いれば、取引の頻度計算が可能なので頻度が低い取引を例外的な取引として抽出できるし、他の取引条件と合わせることで監査リスクの高い非通例取引として抽出が可能だ。

なお上記のように一つの仕訳は使われる科目数がそれほど多くなく、上記のような表現方法を取ると、ゼロになる項目ばかりになる。これを数学の世界では「疎行列」(sparse matrix)と呼ぶらしいが、行列表現ができれば、機械学習のSVMなども使えるようなので、単なる足し算やフィルタリングだけではなく、分類や異常検知などに応用ができそうなので、監査技術の向上につながるものと確信する。

参考
疎な行列をRで扱う -R tips-:Data Science by R and Python

Print Friendly, PDF & Email

Tags:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

超難解計算問題 *