予測には誤差範囲が必要
(andrewpwheeler.com)- 国家レベルの犯罪率のように変動性が大きい指標を点予測だけで示すと、小さなトレンド差が過剰に解釈されやすく、判断には予測区間もあわせて見る必要がある
- Pythonの
statsmodelsの**ARIMA(1,1,2)**モデルで1960〜2015年の暴力犯罪率を学習し、2016〜2025年を予測しており、コードとデータはGitHubで公開されている - 2016〜2020年の1年先予測の標準誤差は20未満だが、複数年を連続して予測すると誤差が蓄積し、2025年の95%予測区間は260.36〜575.07まで広がる
- 2021年と2022年の実測値はRichard Rosenfeldの上昇トレンド予測と食い違ったが、ARIMAの予測区間内には依然として収まっており、モデルとは両立可能である
- 長期の国家犯罪率予測は地方の政策対応に直接使いにくく、実際の人員・資源配分には、都市成長に伴うサービス要請増加のようなより具体的な予測のほうが有用である
点予測だけでは犯罪率トレンドを判断しにくい
- Richard Rosenfeldは
Criminologistで国家レベルの犯罪率予測を扱い、2023年末に公開された記事で2021〜2025年の予測を提示した - FBIの犯罪統計が1年遅れで出ることへの不満はあるものの、この予測は公開時点ですでに過ぎた年まで含む事後的な予測という性格を持っている
- 点予測はほぼ常に外れるため、予測値の周辺にある予測区間もあわせて示すべきである
- 誤差範囲を見ると、小さなトレンド差に基づく解釈がどれほど簡単に揺らぐかがわかる
ARIMAで再現した予測実験
- 分析にはPythonの
pandas、statsmodels.tsa.arima.model.ARIMA、matplotlibが使われている - データは1960〜2019年の
UCR_1960_2019.csvと、2020〜2022年の追加値を結合して構成している- 暴力犯罪率
VRateはViolent / Population * 100000で計算される - 財産犯罪率
PRateも同じ方式で計算される
- 暴力犯罪率
- コードとデータはGitHubにある
- Rosenfeldの論文と比較できるよう、1960〜2015年を学習区間として**ARIMA(1,1,2)**モデルを当てはめている
- Rosenfeldは暴力犯罪率にARIMA(1,0,2)を当てはめたと書いているが、データを差分化したとも述べているため、ARIMA(1,1,2)に相当する
- Rosenfeldのモデルにはインフレのような外生要因が入るが、ここでは含めていない
- 別途grid searchで最適モデルを探してはいない
モデル診断と誤差が大きくなる仕組み
- 当てはめたモデルのAR(1)係数は負で、過差分の可能性がある
violent.test_serial_correlation('ljungbox')を基準にすると、残差に有意な自己相関はない- 自動ARIMA方式でより良いモデルを選べる可能性はあるが、この事例では大半のARIMAモデルが非常に似た予測と誤差区間を作る可能性が高い
- 2016〜2020年は新しいデータを順次追加しながら1年先予測として比較できる
- この区間の標準誤差は19.813228で、20未満である
- Rosenfeldが有用性の基準として見積もった10%の絶対誤差範囲に入っている
- 数年先を予測すると誤差は蓄積する
- 2022年を予測するには、まず2021年の予測が必要になる
- 2023年は2021年、2022年、2023年を連鎖的に予測しなければならない
- 標準誤差はおおむね
sqrt(steps*se^2)のように増加し、分散が加算される構造になっている
2016〜2025年の予測区間と観測値
- ARIMAモデルの2016〜2025年の予測平均はおおむね379〜420の間だが、時間がたつほど予測区間は広がる
- 2021年の平均は412.99、95%区間は374.16〜451.82
- 2022年の平均は420.17、95%区間は342.16〜498.18
- 2023年の平均は416.91、95%区間は303.53〜530.28
- 2025年の平均は417.72、95%区間は260.36〜575.07
- Rosenfeldの点予測は一部の年ではARIMA平均より実測値に近い
- 2020年の観測値398.5に対して、Rosenfeldは394.9、ARIMA平均は379.21である
- 2021年の観測値387.0に対して、Rosenfeldは404.1、ARIMA平均は412.99である
- 2022年の観測値380.7に対して、Rosenfeldは409.3、ARIMA平均は420.17である
- ARIMAのpoint estimate MAPEはheld-out sampleでRosenfeldより悪い区間もあるが、観測値はARIMAの予測区間内に入っている
- 2021年と2022年の観測値は、Rosenfeldの上昇トレンド予測がすでに外れていたことを示している
- ARIMA予測は本質的に平均回帰的であり、数ステップ以内に平均項へ収束する傾向がある
最新データ反映後に低下した2023〜2025年予測
- 2021〜2022年のデータを追加した後、2023〜2025年を再予測した
- 更新後の予測は従来の長期予測より低くなった
- 2023年の平均は371.98、95%区間は333.14〜410.81
- 2024年の平均は380.09、95%区間は302.08〜458.11
- 2025年の平均は376.40、95%区間は263.03〜489.78
- グラフを見ると誤差範囲の大きさをより把握しやすい
- 外生要因を含める場合、数年先予測ではその外生要因自体も予測する必要があり、その誤差もあわせて反映しなければならない
マクロな犯罪率予測の政策的限界
- 国家レベルの暴力犯罪率予測は、実際の政策対応にすぐ使うのが難しい
- Pittsburghのような都市が国家レベルの犯罪率予測を政策判断に直接使う理由はない
- 予測精度が5%や1%の水準まで改善しても、連邦レベルの実務担当者が「2年後に暴力犯罪率が10上がるので警察官を1342人増員しよう」といった対応を取るのは難しい
- マクロな犯罪率予測には、外れたときに負うべきskin in the gameがないという批判がつきまとう
- 実際の犯罪予測の応用では、都市で住宅やアパート1戸が追加されると年間のサービス要請が約1件増えるという推定のほうが実用的である
- 成長している都市では、このような方法で長期の人員配分計画を立てるほうが適している
あわせて言及された参考文献
- Ashby, M. (2023). Forecasting crime trends to support police strategic decision making: 都市レベル予測の一般的な誤りを比較しており、数年先予測はRosenfeldの10%有用性基準よりはるかに大きな誤差を出す傾向がある
- McDowall, D. (2023). Empirical Properties of Crime Rate Trends: マクロな犯罪率トレンドと犯罪学理論の関係をより慎重に扱っている
- Rosenfeld, R. (2018). Studying crime trends: Normal science and exogenous shocks: Rosenfeldのマクロな犯罪率トレンド研究に関連する先行研究
- Yim, H. N., Riddell, J. R., & Wheeler, A. P. (2020). Is the recent increase in national homicide abnormal?: 全国殺人率トレンドのモニタリングにおけるfan chartの適用を検討している
1件のコメント
Hacker News の意見
ここで興味深い点が2つあります。1つは筆者が扱っていることで、もう1つは扱っていないことです。第一に、記事の末尾にあるように、予測は通常、意思決定につながるべきであり、両者が切り離されると価値が不明確になり得ます。
Rosenfield は過去データに関する統計的結論に、予測としてさらに重みを持たせようとしているようですが、それは疑わしく聞こえます。第二に、エラーバーが何を意味すべきかも不明確です。1つは信頼区間[1]で、もう1つは標準偏差です。つまり、自分の点予測と実際の結果との差の二乗を、事実上予測していることになります。
[1] 用語が正確でないことは認めます
統計全体を包含する説明ではありませんが、予測を考える際には有用な見方です。
たとえば95%信頼区間なら、真の値が区間外にあるという19:1のオッズも、真の値が区間内にあるという1:19のオッズも、同じように受け入れられなければなりません。この方法は一般的にも正しく、不確実性の議論における意味をはるかに実感しやすくし、すぐ実行できる基準になります。適切に行えば、過度に保守的でも過度に楽観的でもない不確実性を与えるようになります。
読者に賭けのどちら側でも選ばせるという考えに少し胃が痛くなるなら、それは正しい方向です。エラーバーを適切に設定し、推論が文書化されていて防御可能だとかなり確信できるようになると、その感覚は薄れます。
元の質問への追加の答え: 1標準偏差のエラーバーは68%信頼区間で、2標準偏差は95%信頼区間です。もちろん頻度主義者だと仮定した場合です。
[1] https://www.nobelprize.org/prizes/physics/1997/phillips/fact...
ぜひそうすべきです。数年間で何千ものオンライン実験を回した組織にいたのですが、新しい処置の効果を比較するとき、エラーバーがあるとずっと理解しやすくなりました。
それは判断を曇らせると考える人もいました。たとえば新しい処置が1%の「改善」を生んだものの、信頼区間が -10% から 10% なら、その実験はその指標がどう影響を受けたのかを教えてくれていないということです。こうなると決定が恣意的に感じられますが、まさにそこが要点です。その場合、決定は実際に恣意的であり、信頼区間はその事実を知らせ、別のトレードオフを見るようにしてくれます。信頼区間が 0.9% から 1.1% なら、効果にずっと強い確信を持てます。
大きな問題は、場合によっては意味のあるエラーバーを得るのが極めて難しいことです。たとえば機械学習モデルのすべての予測にそうした値を付ける状況を想像するとよさそうですが、ほとんどのモデルタイプでそれを合理的に達成する方法はよく分かりません。十分に独立した集団が得られるようにランダム割り当てできず、複雑な実験設計が必要になるオンライン実験も同様です。
同じように、重要なすべての指標についてヒストグラム、つまり統計的分布を定期的に見るべきです。あるとき、大規模なWebサービス呼び出しで速度問題があり、多くの呼び出しは50ms未満で終わっていた一方、あまりにも多くの呼び出しが500msのタイムアウトに達していました。同時に速度ヒストグラムに2つの明確なピークが生じているのを見て、さらに掘り下げたところ、その2つのピークがログアウトユーザーとログインユーザーを表していることが分かりました。そのおかげで広範なコードを無視し、そうでなければ疑わなかったであろう最近デプロイされたパーソナライズコードの中に速度問題を見つけられました。
恣意的な決定に正当性を付け加えようとして、驚くほど努力します。ときにはノイズを信号のように見せる統計モデルの形を取り、しばしば偽の専門家から出てきます。彼らには自分が何をしているのかを知る方法論やフィードバックループはありませんが、社会的に育まれた専門性の雰囲気を持っているため、決定に正当性を貸すことができます。昔は呪術師、司祭、占星術師と呼ばれ、今では経営コンサルタントやマクロ経済学者と呼ばれています。
私は何が起きているのかを明示し、文字どおりコインを投げる方を好みます。ただし、それは輝く石の山を大きく得るための戦略ではありません。
ときには、値をおおむね似た分布で生成する単一の過程があります。これは計画や推論などに複数の統計ツールを使えるので、良い状況です。
しかし実際には、2つ以上の過程が混ざっているのに1つであるかのように扱うことがよくあります。各過程の中ではおおむね似た分布の値を作りますが、合算された全体に対して行う分析は混乱します。見ている偽の単一過程の主要な構成要素を知っていれば、常に競合相手より先んじることができます。
[1]: https://two-wrongs.com/statistical-process-control-a-practit...
この考えに完全に同意する。付け加えるなら、日付の見積もり、つまり締め切りにも誤差棒があるべきだ。結局、日付も予測なのだから
ステークホルダーが日付を求めるなら、どんな誤差棒を望むのかも指定すべきだ。不確実性の見積もりを伴わない生の日付には意味がない。同様に、エンジニアが他のステークホルダーに日付を示すなら、何らかの形で不確実性の見積もりも一緒に含めるべきだ。X日前に終わる確率が90%だと言うのと、99.9%だと言うのとでは、途方もない差がある
ほとんど片側に偏ったべき乗則分布だ。締め切りはほとんど早く終わらず、早く終わったとしてもたいてい大幅ではない。逆に遅れるときは、ばかげたほど大きく遅れることがある
そういう対象に信頼区間を作るのは本当に難しい
誤差棒のない日付見積もりは、間違っていると証明できない。だが「この日付までに終わる確率は50%」と言えば、直近20件のそうした見積もりを振り返ったとき、およそ10件は期日通りに終わっているはずだ。そうでなければ見積もりが較正されていないということだ。それでも、少なくともその事実を知ることはできる。誤差棒がなければ分からなかったはずだ
不確実性の定量化は、データサイエンス、特に機械学習で放置されがちな側面だ。実務者が必ずしも統計の背景を持っているわけではなく、機械学習の側はおおむね「まず予測し、質問は後で」という態度なので、こうした細やかさは後回しにされる
私は常に誤差棒を求める
一般的な非線形モデルで、常識的な不確実性の概念を実際に説明する誤差棒、より一般には誤差分布を作ることは、理想的な場合でも理論的にも計算的にもかなり負担になり得る。Monte Carlo Dropoutのように理論的裏付けのある優れた実用的方法もあるが、そこで生成される誤差棒が常に望む誤差であるとは限らない。MC DOはモデル重みによる不確実性は推定するが、たとえば悪い学習データによる不確実性は推定しない
不確実性を自然に含む方法は強く支持するが、経験的には非常に有用な結果を出しながら、有用な不確実性推定を効率よく作ったり解釈したりする方法が明確でないモデル種別は多い
さらに別の、しばしば放置される問題として較正されたモデル出力という概念があり、これはまた別の深い沼だ
それなのに、こうした前提条件なしにモデルへ何百万も投じられ、人々に解決策として売られ、「人々が買うなら価値があるからだ」というふうに済まされる。人々は詐欺師にも金を払う
Walter Lewinの8.01講義で、測定について似たことを言っていたのを思い出す。「不確実性を知らない測定は無意味だ」
https://youtu.be/6htJHmPq0Os
予測は未来について行う測定だと言える
出典: https://www.edge.org/response-detail/10459
これは天気の話だと思っていた
ECMWFはアンサンブルモデルを走らせており、おそらく初期条件を少しずつ変えたり、モデルパラメータを一定の範囲内で変えたりして、51個の同時モデルを実行している。この51個のモデルから、かなり良い信頼区間を得ることができる
ただしこれは解像度が低く、実行頻度も低いモデルだ。「HRES」モデルは空間解像度が2倍なので、アンサンブルでは走らせていないのだと思う。理由は当然、コストが非常に高いからだ
[1]: https://en.wikipedia.org/wiki/Integrated_Forecast_System#Var...
https://content.meteoblue.com/en/research-education/specific...
この記事で興味深い例はナウキャスティングだ。データが入ってくるのを待つ間に、現在や過去を予測する技術だ
誤差範囲がなければ、ずさんな科学であり統計だ
予測が実際の不確実性を示すには、データ生成過程を知っているという、かなり恵まれた立場にいなければならない。可能な場合なら、大量の過去データで大まかに較正してみることはできるが、それでも限界はある
すべての見積もり、予測、補間、外挿には、チームが問題に置く仮定を反映した信頼区間、予測区間、または許容区間があるべきだ。適用分野によって異なる
この論文[1]を思い出しました
「科学的結果における予測可能性の錯覚:専門家でさえ推論の不確実性と結果のばらつきを混同する」
従来、科学者は個々の結果の予測可能性である結果のばらつきよりも、統計的推定の精度である推論の不確実性を伝えることに重きを置いてきました。この論文は、それが科学的結果の含意について大きな誤解を生み得ることを示しています。具体的には、事前登録された3つのランダム化実験で、参加者は同じ科学的発見を、推論の不確実性のみ、結果のばらつきのみ、またはその両方を示した可視化で見て、その発見の大きさと重要性について回答しました。医療専門家、プロのデータサイエンティスト、テニュアトラック教員の回答からなる結果は、推論の不確実性だけを可視化する一般的な方法が、高度に訓練された専門家にさえ治療効果を大きく過大評価させ得ることを示しています。反対に、推論の不確実性と結果のばらつきを併せて示すと、平均的には結果に対する他の主観的印象を保ったまま、より正確な認識につながります
[1] https://www.microsoft.com/en-us/research/publication/an-illu...
予測はエラーバーがなくても有用なことがあります。時には、行動を決めるのに点予測ひとつで十分です
しかし時には、良い意思決定のために予測分布全体を知ることが役立つ、あるいは必要な場合があります。「点予測は常に間違っている」という言葉は連続データでは正しいですが、ある株が2倍ではなく2.01倍になると予測できるなら、それでも有用です