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

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

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

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

HOME > 実践 > 統計アラカルト > ウソの数字を見破る方法

hatena twitter facebook rss ソーシャルブックマーク

ウソの数字を見破る方法

 数字とは不思議なもので、1881年に天文学者のサイモン・ニューカムは対数表の最初の部分(1で始まる)が他の部分よりも手垢で汚れていることに気が付きました。そこで、世の中にある数値の最初の数字の出現には偏りがあるのではという疑問を感じ、探求し始めたのです。

結果は驚くべきものでした。単純に考えれば1から9の数字が均等に出現しているような気がします。しかし、その出現には明白な偏りがあり、1が約30%の出現率、2で約18%でした。これは世の中の数字の半分は、先頭が1か2だということを意味します。

そんなバカなと思うのが素直な感覚でしょう。しかし、この数字の偏りは領収書の金額から川の長さ、物理や数学の定数、人口…様々な数値で確認されているから驚きです。この法則は1938年に物理学者のベンフォードに再発見され、今ではベンフォードの法則と言われています。

ベンフォードの法則の定義

 先にベンフォードの法則を定義しておきます。この法則は基底がb(b≧2)の時に先頭の桁の数字が出現する確率は、P(d)=logb(d+1)-logb(d)に従うというものです。

底が10の場合(10進数のこと)、ベンフォードの法則のとおりだとすると先頭の桁の数字の分布は以下のようになります。なお、dは最初の数字、pは出現確率とします。

                                           1
  p(d) = log (d + 1) - log (d) = log (1 + ---)
            10           10        10      n


この式をrpnで1から9まで繰り返して計算してみます。

  >rpn @n 1 + #n 1 @n n + j -r 9
  0.30103
  0.176091
  0.124939
  0.09691
  0.0791812
  0.0669468
  0.0579919
  0.0511525
  0.0457575


9行の計算結果が表示されましたが、1行目から順に最初の数字が1から9の時の出現確率です。結果を見ると、1の出現確率は30.1%、2は17.6%、3は12.5%、9は4.6%であることが分かります。グラフで確認してみましょう。

  >rpn @n 1 + #n 1 @n n + j -r 9 >tmp
  >rpn 1 -c rownum <tmp | xyp -x,9 -y,.5 -s1,.1 -n -m
  ^y 0.5
  |
  0.4
  |
  |
  0.3 *
  |
  |
  0.2
  |       *
  |
  0.1          *
  |                *   *    *
  |                             *   *    *
  |o                                     9
  +---1---2----3---4----5---6----7---8--->


1と2で50%弱の出現率です。そのあと急速に出現率が減っていく様子が分かります。

ベンフォードの法則の一般化

 このベンフォードの法則ですが、一般化するとより面白くなります。上記の例は最初の数字1桁でしたが、最初から3桁の数字が"123"である確率を求めることもできます。その数式は以下のとおりです。nに123を当てはめるだけです。

            1
  log (1 + ---)
           123


rpn式にすると以下になります。

  >rpn 1 123 n + j
  0.00351657


数字が"123"で始まる確率は0.35%ということです。では、数字が"987"で始まる確率はいくらでしょうか。

  >rpn 1 987 n + j
  0.000439792


ベンフォードの法則から考えれば当然の結果ですが、確率はとても小さく0.04%になります。

ベンフォードの法則を検証する

 冒頭に記したように、ベンフォードの法則は領収書の数字、川の長さ、人口に加えて番地、株価に至るまで適用できるそうです。そして、フィボナッチの数列や最近では素数でさえも、ベンフォードの法則に従っているという話があります。

実用面では、会計の不正検知にも利用できるようで、幅広い活用の可能性があります。是非、本当かどうか試したいものです。

そこで、データの先頭数字がベンフォードの法則に従っているかどうかを検証してみます。検証する対象は、領収書の金額、フィボナッチ数列、株価の3つです。それぞれ、適合度検定を使って統計的に調べることで、曖昧のない判定を目指します。

領収書とベンフォードの法則

 まず、領収書です。手元にあった領収書660件の金額を入力してみました。果たして、この金額の先頭の数字はベンフォードの法則にしたがっているのでしょうか。

領収書の金額を縦一列にしたデータがファイルのreceipt.datに格納されているものとします。

  >type receipt.dat
  1392
  3765
  8370
  1430
  3480
  2159
    :
  (中略)
    :
  540
  890
  4408
  2140
  2358


このファイルに格納された金額の先頭1桁数字をピックアップします。先頭の数字をピックアップするためにbenfordというrpnプログラムを用意します。以下の例では、ランダムに生成した数字の先頭1数字をピックアップしています(同じ乱数を発生させるために-1で初期化)。

  >rpn 100 ? -b -1 ? -r 20 | rpn 5 -c fold
  39 80 47 16
  71 34 7 5
  4 49 41 20
  80 86 54 81
  7 68 99 27

  >rpn 100 ? -b -1 ? -r 20 | rpn 5 -c fold | rpn -c benford
  3 8 4 1
  7 3 7 5
  4 4 4 2
  8 8 5 8
  7 6 9 2


このようにbenfordプログラムは、n行m列のマトリクス型のデータ形式にも対応しています。それでは、以下のrpn式でそれぞれの数字ごとに、一気に度数カウントしましょう。

  >rpn -c benford <receipt.dat | rpn -c freq | sort >reciept.frq


これでreceipt.frqに数字の度数分布が格納されているはずです。ファイル内容を確認してみます。

  >type receipt.frq
  1 216
  2 184
  3 95
  4 57
  5 31
  6 25
  7 12
  8 21
  9 19


結果を見ると1から9へ向かって、急激に度数が減っていることが分かります。一目で一様分布でないことが見てとれます。では、次にそれぞれの数字の構成比を調べます。以下のrpn式ですぐに計算できます。

  >rpn x _ -c rowele <receipt.frq
  0.327273
  0.278788
  0.143939
  0.0863636
  0.0469697
  0.0378788
  0.0181818
  0.0318182
  0.0287879


数字の1の構成比が約33%、数字の2が約28%です。9の構成比は3%に過ぎません。全体の雰囲気はベンフォードの法則に近いものがあります。実際にベンフォードの数式から理論値を計算して見比べてみましょう。

  >rpn @n 1 + #n 1 @n n + j -r 9 >tmp1
  >rpn x _ -c rowele <receipt.frq >tmp2


これでtmp1に理論値が、tmp2に実測値の構成比が格納されました。内容を確認します。

  >paste tmp1 tmp2
  0.30103   0.327273
  0.176091  0.278788
  0.124939  0.143939
  0.09691   0.0863636
  0.0791812 0.0469697
  0.0669468 0.0378788
  0.0579919 0.0181818
  0.0511525 0.0318182
  0.0457575 0.0287879


数字の2の構成比に違いがあるようですが、かなり似ているように思います。グラフ化して確認してみましょう。

  >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から9です。そして、"*"が理論値で"+"が実測時になります。数字の2の部分にはズレがありますが、見た目にはかなりの一致です。ベンフォードの法則など全く意識すべくもない領収書の先頭数字が、こんなにも法則と似ているのかと驚きます。

では、見た目の判断だけではなく統計的に検定してみましょう。検定はχ2乗分布を使った適合度検定です。なお、帰無仮説は「領収書金額の先頭の1桁数字の出現度数はベンフォードの法則に従って割り振った度数と等しい」とします。

  >rpn x _ <receipt.frq >his1
  >rpn -c sum <his1
  660
  >rpn 660 * <tmp1 >his2
  >paste his1 his2 | rpn -c tstfit
  87.6964


計算の結果、統計検定量は87.7でした。自由度を8として上側確率0.05のχ2値である15.51を使います。検定量と比較すると、87.7>15.51で帰無仮説が棄却されます。つまり、領収書の分布はベンフォードの法則と一致しているとは認められません。

ただ、χ2乗検定はデータ量が多ければそれだけ棄却されやすくなります。ちなみにscaleプログラムを使って、それぞれの度数を1/10にして再検定してみましょう。結果は以下のようになります。

  >paste his1 his2 | rpn 0.1 -c scale | rpn -c tstfit
  8.76964


χ2乗検定の場合、データ数が多いと帰無仮説が棄却されやすくなります(有意差が出やすい)。検出力が上がったとも考えられるのですが、データ数の多少によって仮説の棄却・保留を調節できることは、人為的な操作の可能性も意味します。適合度検定の解釈には注意が必要です。

今度は無難な値が出てきます。データ数も60以上ありますし、この値なら統計的にはベンフォードの法則との違いは見られないと考えていいでしょう。

情報χ2乗の分布表はビジネス統計(推定編)分布表の見方にあります。

次は…

 グラフを見る限り、領収書の事例ではベンフォードの法則が利いているようですが、統計的には微妙な結果になりました。1/10にしてもデータ数は十分なので、法則への近似度は高いだろうと考えられます。

ところで、領収書は市場にある様々な品物やサービスを購入したものです。もしかしたら、1000円よりも980円が多いように価格帯によっては、何らかの傾向が発生しているかもしれません。

それでは、フィボナッチ数列のような自然科学的なものはどうでしょう。そして、株価のように際限なく人間の欲望が絡むようなものに対してはどうでしょう。ベンフォードの法則は成り立つのでしょうか。

続き(part2)はこちらLinkIcon

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

情報pasteは講座サポートで公開されています。rownum, roweleはカンタン分析パッケージに同梱されています。foldはユーティリティーパッケージに同梱されています。freq, scaleはrpnマイスターパッケージに同梱されています。tstfitはビジネス統計(検定編)に同梱されています。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標準版は、すべてのプログラムが動作します。