Twitter で行った4択アンケートの結果を本気で分析する(打ち切りと丸めによって生成されたヒストグラムのモデリング)
経緯
実家のお風呂の温度が一人暮らしと比べて3℃も高いので長湯できない
— しょラー (@shora_kujira16) 2021年12月28日
お風呂の温度
— しょラー (@shora_kujira16) 2021年12月28日
事前の想像では最頻値は 40 or 41 になるのではないかと考えていたため Twitter のアンケート機能で利用可能な4択を上記のように設定したのですが、予想が外れて「42℃以上」が最頻値となってしまいました。これでは結局何℃にしている人が一番多いのかよくわかりません。
アンケートの回答の総数が 28 だったため、割合から逆算して以下のようなデータが得られました。
温度 | 回答数 |
---|---|
39℃以下 | 2 |
40℃ | 5 |
41℃ | 10 |
42℃以上 | 11 |
分析で知りたいこと
- 一般のご家庭の平均的なお風呂の設定温度を知りたい
- お風呂の温度を43℃に設定しているご家庭がどれくらいあるのか知りたい
愚直な分析で困ること
打ち切り
39℃以下を39、42℃以上を42と扱っても、それっぽい平均は計算できます。しかし「42℃以上」と回答した人は11人もいるので43℃や44℃に設定している人も何人かいそうです。よって真の平均はそれより少し高くなりそうです。
丸め
各家庭が本当に好むお風呂の温度は本来実数でなければ表現できないはずですが、アンケートの都合により回答を整数で入力させました。これにより、たとえば41.6℃が最適な人でも「42℃以上」と回答することになります。この丸めによって平均値がずれることがありそうです。
仮定
各家庭が本当に好むお風呂の温度が実数で回答できて打ち切りがない場合にアンケートの結果が正規分布に従うと仮定します。
関連するモデリング
Stan で打ち切りを含むデータをモデリングしたい場合は以下の方法を使うことができます。
4.3 Censored data | Stan User’s Guide
整数に丸めたデータを扱う場合は以下の方法を使うことができます。打ち切りとほとんど同じです。
6.1 Bayesian measurement error model | Stan User’s Guide
上記2つをまとめると以下のスライドと同じような考え方になります。
モデル
お風呂の温度の好みが平均 、分散 の正規分布から生成され、打ち切りと丸めによって 39.5, 40.5, 41.5 を区切りとして「39℃以下」「40℃」「41℃」「42℃以上」に振り分けられるとします。このときそれぞれの項目に割り振られる確率 は累積分布関数 (normal_cdf) を使って表すことができます。
が分かっていて回答の総数が のとき、所望のアンケート結果 が得られる確率は多項分布 として表すことができます。今回はこの考え方に従って Stan の multinomial 関数を使いましたが、多項係数の部分は尤度の計算においては推定したい未知パラメータの MCMC に対して不変のため、(私の理解が間違っていなければ)必ずしも使う必要はないはずです。
Stan のモデルコードは以下のとおりです。
data { int<lower=0> Y[4]; } parameters { real mu; real<lower=0> sigma; } transformed parameters { vector<lower=0>[4] theta; theta[1] = normal_cdf(39.5 | mu, sigma); theta[2] = normal_cdf(40.5 | mu, sigma) - normal_cdf(39.5 | mu, sigma); theta[3] = normal_cdf(41.5 | mu, sigma) - normal_cdf(40.5 | mu, sigma); theta[4] = 1 - normal_cdf(41.5 | mu, sigma); } model { Y ~ multinomial(theta); } generated quantities { int<lower=0> Y_pred[4]; Y_pred = multinomial_rng(theta, sum(Y)); }
結果
詳細を見たい人は以下の Jupyter Notebook を見てください。
https://gist.github.com/arosh/69331f37ae160b71917d53ddcd3c279c
平均 の事後分布は以下のようになりました。95% 信用区間は 40.7 〜 41.9 となり、40℃に設定している人(私だ)は平均よりぬるい温度を好んでいると言えそうです。また43℃に設定している人は平均より熱いお風呂を好んでいると言えそうです。
と を MAP 推定すると , となりました。「愚直な分析で困ること」で書いたように39℃以下を39、42℃以上を42と扱って平均を計算すると 41.1 だったため、思ったよりは差が出なかったなという印象です。
MAP 推定から得られた , を使って正規分布をつくり 39.5, 40.5, 41.5 を区切りとして「39℃以下」「40℃」「41℃」「42℃以上」の項目に割り振られる確率を計算すると以下のようになりました。
もとのアンケートの結果を再掲します。おおむね再現できていると言えそうです。
お風呂の温度
— しょラー (@shora_kujira16) 2021年12月28日
最後に、私の実家のように43℃に設定している家庭がどれくらいあるのか推定してみたいと思います。上記の正規分布について累積分布関数を用いて 42.5 〜 43.5 の範囲の割合を計算すると 11% でした。10件に1件くらいは43℃に設定している家庭がありそうです。
まとめ
Twitter の4択アンケートのように回答の種類が限られている場合でも統計モデリングを使えば「△△以上」「▽▽以下」のように打ち切られた部分の外側をある程度予想したり整数に丸められた細かい部分が分析したりすることができました。
皆さんはこんな大掛かりな分析をしなくても良いようにアンケートをとるときは回答項目を正しく設定しましょう!
3級ファイナンシャル・プランニング技能検定(FP3級)受験記
2021年9月実施の3級ファイナンシャル・プランニング技能検定に合格し、三級ファイナンシャル・プランニング技能士を名乗れることになりました。
3級ファイナンシャル・プランニング技能士 pic.twitter.com/iuHMiQC5Lf
— しょラー (@shora_kujira16) 2021年10月27日
どういう検定なのか
日本FP協会と金財が実施している検定で、社会保険・年金、生命保険、資産運用、税制、不動産、相続などについて扱います。
合格することで名乗れる「ファイナンシャル・プランニング技能士」は名称独占資格であり資格を持っていない人が名乗ることができないものです。
受験のモチベーション
そろそろ30代が近づいてきたので、自分の収入だとどれくらいの世帯でどれくらいの生活レベルを目指すことできるのか知りたくなってきました。マネーフォワードを使っていると右のほうに もっとおトクなお金のコラム としてオウンドメディアの記事が紹介されているかと思いますが、FPによる家計診断の中には「うらやましいなー」と思うほどの収入を得ていても「その生活を続けているようだと老後の生活が成り立ちません」という残酷な評価が下されているものもあります。こういう記事ばかり読んでいると必要以上に将来への漠然とした不安が募るばかりなので自分の経済状況を正しく認識するための知識を付けたかったというのが受験の理由です。
また副業の収入や寄付によって確定申告を毎年行っていたことや、投資信託の購入によって受験範囲の三分の一程度は概ね知っている内容になっていたため、これまで断片的に身に着けた知識を体系的に復習する機会としても使えそうだということも考えていました。
勉強方法
Amazon で一番売れているらしい以下の本を買って勉強しました。
ただし、この本をほかの人にもお勧めするかどうかは微妙なところもあります。この本は検定に合格することに特化したシケプリのようなものであり、系統立てて学ぶことを目的とした教科書とは少し趣が違うように感じました。特に税制の章では説明が不十分だと感じる箇所がかなりあり、不明点が見つかるごとに freee のヘルプサイトを見るなどして調べていました。
問題集も書店でたくさん売っていますが、3級では買わなくても十分対応できると思います。私は前日に FP3級ドットコム をポチポチやっていました。
受験におけるエピソード
試験では電卓の利用が許可されているのですが レギュレーションが決まっており、いわゆる普通の電卓しか持ち込むことができません。私は工学部出身なので関数電卓を今でも持っているのですがレギュレーションに違反していたため、わざわざ機能的に劣る電卓を買いなおしました。実際のところ、少なくとも3級では計算が必要な問題の数は少なく、計算の内容もほとんどは暗算で対応できる程度のものであるため、十分に勉強していれば電卓が無くても合格できると思います。
東京都においては受験者がかなり多いらしく、受験当日の朝の地下鉄は隣に座っている人は iPad でFP3級ドットコムで過去問を解いているし、向かいに座っている人は表紙に大きく「FP」と書かれた本を開いているしで、全人類がFPを受けているような錯覚に陥りました。
感想
今のところ本業とは全く関連のない資格のため、仕事で活かせることは残念ながら当面はなさそうです。仕事に活かすつもりでファイナンスの勉強をするなら簿記を受けたほうが役に立つ可能性が高いのではないでしょうか。私もこのままだと電卓を買ったお金が無駄になりそうなので勉強をしようと思っています。
雑談でお金の話になったときに話のネタに使いやすいという意味では日常生活で役に立つとはいえるかもしれません。たとえば「国税庁のホームページ を見てたら年収が700万円になるあたりで税率が20%から23%に上がるって書いてあったんだけど本当なの?」といった心配をしている人を見かけても「とりあえず落ち着いて社会保険料控除と給与所得控除と基礎控除を除こうか」という説明はすぐにできるようになるでしょう。
自分の経済状況を正しく認識するのに必要な知識があることを客観的に確認したいという意味ではよい勉強になったといえるでしょう。正しく経済状況を認識した結果として将来への不安が募ることのほうが多いかもしれませんが…
mysqlserverteam.com と mysqlhighavailability.com の跡地からアーカイブに遷移するブックマークレット
MySQL の深い話題に関する情報が得られる情報源として mysqlserverteam.com と mysqlhighavailability.com というサイトがありました。これらのドメインではそれぞれ MySQL Server Team と MySQL High Availability Team が情報発信を行っており、InnoDB のロックの仕組みを詳細に解説するシリーズが投稿されたり MySQL のレプリケーションの進化について紹介する記事が投稿されたりと非常に有益なものでした。
ところが10月初めごろにこれらのドメインでの情報の公開は終了され、新しい記事は https://blogs.oracle.com/mysql/ で公開、過去の記事は https://dev.mysql.com/blog-archive/ で公開されることになりました。
新しい記事とアーカイブにはどちらも dev.mysql.com から遷移できるようです。
これは私の感想ですが、これまで使っていたドメインは「知る人ぞ知る」というような状況で、MySQL の深い話題を欲している層以外には存在が知られていなかったように思います。とても有益な情報が公開されていることもあるので移転を機に参照される頻度が増えるといいなと思います。
ただ、残念なことに古い URL にアクセスしてもアーカイブに自動的にリダイレクトしてくれるように設定されてはいないようです。たとえば https://mysqlhighavailability.com/replicate-from-gtid-disabled-source-to-gtid-enabled-replica-directly/ にアクセスすると blogs.oracle.com にリダイレクトされますが、アーカイブの記事が表示されるわけではありません。
いずれはアーカイブの記事にリダイレクトされるようになると信じていますが、不便極まりないので私は暫定的にブックマークレットを用意してアーカイブの URL に飛べるようにしています。
やり方は以下のコードをコピーして、
javascript:window.location.href='https://dev.mysql.com/blog-archive/'+window.location.pathname.split('/')[3]+'/'
適当な場所(ブックマークバーの中に入れておくと押しやすい)にブックマークとして保存するだけです。
これで mysqlserverteam.com or mysqlhighavailability.com にアクセスして https://blogs.oracle.com/mysql/post/replicate-from-gtid-disabled-source-to-gtid-enabled-replica-directly のような URL に飛ばされて何も表示されなかったとしても、このブックマークをクリックすればアーカイブにジャンプすることができます。
本当はブラウザの拡張機能として実装して、blogs.oracle.com にアクセスして特定の条件を満たしていたら自動的にアーカイブに飛ぶようにしたいところです。いや… 理想なのは閲覧者側でこんなことをしなくても自動でアーカイブにリダイレクトしてくれることですね…