LoginSignup
2
3

More than 1 year has passed since last update.

ワンライナーで作るウソ発見器で「新型コロナウイルス新規陽性者数」を調べてみる

Last updated at Posted at 2021-08-03

ワンライナーで作るウソ発見器

最初、pythonで書きはじめたら、自宅のpython環境が壊れていて実行できなかったので、Excelでやり直しました。これはこれで、追試したり、応用したりする人の層が広がりそうなので、結果オーライかな、と思います。でも、ワンライナーじゃなくなっちゃうね。

アニメDVDの売上とか、誰かが自慢しているアクセス数推移とか、新規陽性者数とか、そういう数字って、自分の側からは統計の裏側を見通すことなんてできないですよね。でも、「ウソ発見器」があれば大丈夫。たちどころにウソが暴けるのです、というのはもちろん誇大広告極まりないのですが、でもまあ、やりたいことはそういうことです。この手法は、企業の不正会計を探すためのスクリーニングにも応用する研究があるくらいで、ぶっちゃけバカみたいに見えるのですが、案外パワフルなのです。

さて、上記は大きく出すぎましたが、何のことはない、「ベンフォードの法則」です。桁をまたがって散らばっている数値の一番上の桁の数字が、自然なデータでは一定の割合になる、という面白い法則です。

「数値の一番上の数字」というのは、値が5000兆だったら5、値が3257だったら3、値が0.015なら1です。値が0の時は考えず、除外して集計します。川の長さ、石の重さ、企業の売上高など、何かしら単位を揃えてデータを集めると、多くの場合、上の桁が一定の割合になるのです。ただ、上限があるような数字、例えばcmで表した身長なんかは、ほぼ1ばっかりになりますし、人為的に桁を意識した数字、例えば商品の単価なんかは、逆に9が異常に多くなることになります。特価98円、とかそういうやつですね。しかし、そういう本質的に偏っている場合以外は、概ね一定の割合になってしまうのです。

では、この「一定の割合」とはどんな風になるのでしょうか。

最上位桁の数字 自然な率
1 30.10%
2 17.61%
3 12.49%
4 9.69%
5 7.92%
6 6.69%
7 5.80%
8 5.12%
9 4.58%

特徴としてはなにより、1が一番上の位に来るのが30%もある分布が自然である、という点です。均等だったら11%ですから、かなり盛り盛りです。でも、0.3010と来たら、ぴちぴちの高校生の人たちは、ピンと来るんじゃないでしょうか? そう、対数と関係がありそうですね。細かい話は、追記するかもしれないけど、今は結論を急ぎましょう。

このベンフォードの法則は、下記のような応用の仕方もできます。

  • 人為的にでたらめに作った数字は、上記とかけ離れたでたらめな分布になる
  • 人為的に調整した数字は、上記と微妙に逸れた分布になる

という結果になります。このベンフォードの法則だけで何かの結論を出すことはできませんが、疑惑を定量的に示すことができるのです。上記の率に対して、集計対象から得られた率を比較して、「最上位桁1の率」から「最上位桁9の率」まで、それぞれの差の絶対値を求めると、簡便な評価関数になります。不正会計のスクリーニングでは、0.6ポイントの乖離でちょっと変、1.5ポイントの乖離で結構変、という目安が提唱されているようです。

詳しい人は、ここまでの説明で言いたいことが色々出てくると思いますが、しずまりたまえ。

では、データを処理しよう

厚生労働省のオープンデータから、「新規陽性者数の推移(日別)」を持ってきました。前処理として、値が0の行を母集団から削除します。ここはExcelワークで。

数値だけをA列に並べ、B列に =INT(LEFT(TRIM(A参照行),1)) という感じの数式を入れます。コピペドン。Ctrl+Shift+@ で数式表示をすると、下記のような画面になります。同じキーで元に戻ります。

数式1.png

もう簡単ですね。自動選択範囲からピボットテーブルを新規作成します。
行に「最上位桁」、値に「人数」を入れますが、「人数」については設定が必要です。「値フィールドの設定」から、「集計方法」タブで「個数」を選択、「計算の種類」タブで「総計に対する比率」を選択します。これで、欲しかった最上位桁の数字のシェアが分かります。せっかくなので、その集計値の隣に、 =LOG10(1+1/A参照行) という上に挙げた「望ましい分布」の率を入力しましょう。

そしてその隣には評価関数です。 =ABS(B4-C4) 簡単ですね。これを入れて、また Ctrl+Shift+@ で数式表示にすると、こんな画面になります。

数式2.png

同じ操作で元に戻します。

数式3.png

暫定的な結論

さて、もう色を付けてしまいましたが、ちゃんと分析できた感じの結果になったと思います。

でたらめではない

理屈上対数的な分布が想定されるデータ群に対して、全体的に概ね対数的な分布をしており、でたらめではなさそうです。でたらめに作ったら、なかなかこうはなりません。

でも無視できないズレがある

1と2は明らかに多く、4~9は小さめです。とくに、6~9が一律0.9ポイント前後の乖離を見せているのが気になります。これが何を意味するのかは、もうちょっと色んな切り口で(例えば上2桁で分析するとか、期間ごとのサブセットで分析するとか、直値のヒストグラムを取るとか、そういう)追加の分析が必要です。

1が多いというのは、水増しの傾向があるときによく見られるのですが、この場合、過小報告をするインセンティブならば働く可能性もありますが、水増しをしたい人は考えづらいので、ちょっと謎です。もしかしたら、切り上げで丸めて報告した数字が混じっているとか、そういう何かがあるのかも知れません。

いずれにせよ、このゆがみの正体は、あなたの追試にかかっています。なんてね。面白いでしょ? というわけで、久々にAWS資格の話のアクセスが集まっているので、ついでにちょっと面白げな話を書いてみました。セルフ小判鮫上等です。

ベンフォードの法則×コロナ統計というネタが既出だったらごめんなさい。なお、今期はAWS三昧で初動乗り遅れまして、アニメはメイドラゴンSと転スラ2期だけしか観ていません。おすすめがあれば教えて欲しいと思います。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3