ウソの数字を見破る方法 part2 | 統計アラカルト [実践] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 実践 | 統計アラカルト | 統計に関する話題をrpnで探求!統計的に検証してみよう。

HOME > 実践 > 統計アラカルト > ウソの数字を見破る方法 part2 hatena yahoo buzzurl livedoor del.icio.us nifty newsing twitter facebook rss ソーシャルブックマーク

ウソの数字を見破る方法 part2

前のページに戻るLinkIcon

フィボナッチ数列とベンフォードの法則

 次にフィボナッチ数列で確認してみます。フィボナッチ数列は以下のrpn式で簡単に生成できます。とりあえず、1000個生成してみます。


  >rpn @a @b + #c @c @b #a @c #b -b 0 #a 1 #b @b -r 999 >fibo.dat


先頭の1桁数字を取り出して、度数をカウントします。以下の例ではfibo.frqに結果が格納されています。

  >rpn -c benford <fibo.dat | rpn -c freq | sort >fibo.frq
  >type fibo.frq
  1 301
  2 177
  3 125
  4 96
  5 80
  6 67
  7 56
  8 53
  9 45


次に数字の1から9までの構成比を計算します。

  >rpn x _ -c rowele <fibo.frq
  0.301
  0.177
  0.125
  0.096
  0.08
  0.067
  0.056
  0.053
  0.045


驚くことに、ほぼベンフォードの法則どおりです。比較してみましょう。

  >rpn @n 1 + #n 1 @n n + j -r 9 >tmp1
  >rpn x _ -c rowele <fibo.frq >tmp2
  >paste tmp1 tmp2
  0.30103   0.301
  0.176091  0.177
  0.124939  0.125
  0.09691   0.096
  0.0791812 0.08
  0.0669468 0.067
  0.0579919 0.056
  0.0511525 0.053
  0.0457575 0.045


計算結果を取り違えたのではないかと思うくらいの近似です。グラフ化してみましょう。

  >paste tmp1 tmp2 | rpn 1 -c rownum | xyp -x,9 -y,.4 -k2 -s1,.1 -n -m
  ^y 0.4
  |
  0.3
  |   +
  |
  |
  |
  0.2
  |       +
  |
  |            +
  0.1              +
  |                    +    +   +
  |                                 +    +
  |o                                     9
  +---1---2----3---4----5---6----7---8--->


理論値の"*"と実測値の"+"をプロットしているのですが、後からプロットした"+"の位置が"*"と全く同じなので"+"しか表示されていません。誤差百分率を取ってみても、以下のように0.02%から3.5%の違いしかない一致性です。

  >paste tmp1 tmp2 | rpn -c err | rpn a 100 *
  0.00996578
  0.51621
  0.0488238
  0.939016
  1.03408
  0.0794661
  3.43479
  3.61175
  1.65547


誤差がほとんどないので、この分では分布に違いはなさそうですが、度数に換算して適合度検定してみます。なお、帰無仮説は「フィボナッチ数列に出現する先頭の1桁数字の出現度数はベンフォードの分布に等しい」とします。

  >rpn x _ <fibo.frq >his1
  >rpn 1000 * <tmp1 >his2
  >paste his1 his2 | rpn -c tstfit
  0.169464


統計検定量は0.16です。自由度8の有意水準%点は15.51なので、15.51>0.16で帰無仮説は棄却されます。統計的にはベンフォードの法則との違いが見られないわけです。

株価とベンフォードの法則

 最後に株価とベンフォードの法則について調べてみましょう。1円から理論的には無限大となる株価にも法則は適用できるのでしょうか。

まず、任意の日の日本株式3849銘柄の株価(終値)を収集しました。以下に基本統計量を計算しておきましたが、収集した株価の最安値は1円、最高値は77万8千円、全体の平均株価は15353円でした。歪度と尖度からガウス分布とは似ても似つかない分布であることが分かります(基本統計量に関してはビジネス統計(基礎編)に詳しくあります)。

  >rpn -c statinfo <nikkei.dat
  デ ー タ        3849
  最 小 値        1
  最 大 値        778000
  範    囲        777999
  合 計 値(Σ)    5.90955e+07
  平 均 値(μ)    15353.5
  分 散 値(σ2)   3.24392e+09
  標準偏差(σ)    56955.4
  分 散 値(s2)   3.24476e+09
  標準偏差(s)    56962.8
  歪度(a3≒0)    6.82761
  尖度(a4≒3)    63.043
  変動係数(ν)    3.7101


これらのデータから株価の先頭1桁の数字をピックアップして、度数をカウントします。

  >rpn -c benford <nikkei.dat | rpn -c freq | sort >nikkei.frq
  >type nikkei.frq
  1 1144
  2 683
  3 511
  4 360
  5 310
  6 268
  7 196
  8 197
  9 180


この段階で一様分布でないことは分かります。では、次に数字の1から9までの構成比を計算してみましょう。

  >rpn x _ -c rowele <nikkei.frq
  0.29722
  0.177449
  0.132762
  0.0935308
  0.0805404
  0.0696285
  0.0509223
  0.0511821
  0.0467654


今度も驚くことに、ほぼベンフォードの法則どおりです。早速、ベンフォードの理論値と比較することにしてみましょう。一気にグラフまで描きます。

  >rpn @n 1 + #n 1 @n n + j -r 9 >tmp1
  >rpn x _ -c rowele <nikkei.frq >tmp2
  >paste tmp1 tmp2
  0.30103   0.29722
  0.176091  0.177449
  0.124939  0.132762
  0.09691   0.0935308
  0.0791812 0.0805404
  0.0669468 0.0696285
  0.0579919 0.0509223
  0.0511525 0.0511821
  0.0457575 0.0467654

  >paste tmp1 tmp2 | rpn 1 -c rownum | xyp -x,9 -y,.4 -k2 -s1,.1 -n -m
  ^y 0.4
  |
  0.3
  |   +
  |
  |
  |
  0.2
  |       +
  |
  |            +
  0.1              +   +
  |                    *    +   *
  |                             +   +    +
  |o                                     9
  +---1---2----3---4----5---6----7---8--->


"*"が理論値で、"+"が実測値です。今度は微妙に違いは見られますが、それでもほとんど同じです。帰無仮説を「日経平均株価の先頭の1桁数字の出現度数はベンフォードの分布に等しい」として、度数換算後に適合度検定をしてみましょう。

  >rpn x _ <nikkei.frq >his1
  >rpn -c sum <his1
  3849
  >rpn 3849 * <tmp1 >his2
  >paste his1 his2 | rpn -c tstfit
  6.47063


統計検定量は6.5です。これまで同様、有意水準%点は15.51なので、15.51>6.5で帰無仮説は棄却です。つまり、統計的にはベンフォードの法則との違いが見られません。

ベンフォードの法則の適用範囲は広い

 検証した結果、領収書は微妙な値でしたが、フィボナッチも株価もベンフォードの法則どおりでした。ほぼ通説どおりの結果ですね。しかし、これほどまでに見事に理論と近似している例は珍しいのではないでしょうか。

数値の桁数が多く幅広く対数分布している場合にベンフォードの法則が成立します(ガウス分布は適合しない)。自然現象以外に多くの場面でベンフォードの法則が利用できるということは、対数が意外に身近なところ(日常、目にする様々な数字)に存在していることを示しています。
ベンフォードの法則には基数と尺度の不変性もあります。つまり、2進数にも8進数にも適用でき、単位が異なるドルや円、リットルやガロンでも法則が成り立つわけです。

ここまで適用範囲の広い法則なら、対象となるデータ集団の度数分布を事前に調べておいて、ベンフォードの法則に従っていることが確認できればしめたものです。

誤差百分率でもいいですし、適合度検定でも構いませんが、管理基準を超えるような異常値があれば何か問題があったと機械的に判断することができます。検出の自動化も可能でしょう。1つか2つ程度の例外を見つけることは困難でも、ある程度例外の度数が集まれば理論値との違いが見えてくるはずです。

情報例外を見つける場合は、棄却検定が適しています。ビジネス統計(検定編)に詳しくあります。あるいはpackage入門(rpnマイスター)の外れ値(異常値)を参照ください。

実際に、不正な経理・会計の検出にも利用されていると言う話も聞きますが、税務調査や監査の場合は売上の除外等の極端な例は別として、ほとんどは徴収側と納税側の見解の相違を攻めてきます。ベンフォードの法則を使った不正検知はもっと大規模で網羅的に行なうようなケースが適しているのでしょうね。

実践統計アラカルトに戻るLinkIcon

警告rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。

情報pasteは講座サポートで公開されています。rownum, roweleはカンタン分析パッケージに同梱されています。freq, statinfoはrpnマイスターパッケージに同梱されています。tstfitはビジネス統計(検定編)に同梱されています。errはビジネス統計(単回帰編)に同梱されています。xypとnpdはrpnの姉妹ソフトウェアです。詳しくはプロダクトを参照ください。

統計アラカルト

統計的に検証してみよう

※実践コーナーのTOP

紹介 rpnの利用シーンはこちら…

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

part2

統計的に検証してみよう

※実践コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

書籍紹介

記事に関連した書籍

本ウェブサイトで扱った話題に関連した書物で、スタッフが実際に読了したものを紹介。

書籍数学の書籍
数の世界は思ったよりもエキサイティング。

  • 書籍統計の書籍
  • ビジネスで統計が使えるととっても有利。

書籍投資の書籍
失敗しない投資には広範囲で実践的な知識が必要。

警告バックスラッシュはエンマークに読み替えてください( IEのみ)。
バックスラッシュとエンマーク

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn試用版と標準版(2kリビジョン)はダブルクォートで囲ってください。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS参照ください。

注意rpnの障害情報はこちら

警告rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。あくまで無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。