コメ価格急騰の異常検知・予測・政策評価
1. はじめに
昨年の春頃から現在もなお、「米不足」「米価格高騰」といったニュースを頻繁に目にしています。自炊をしていて、お米が好きな自分のような学生にとっても米価格の上昇は厳しい状況です。しかしながら全体的に物価の上がっている現在において、米の価格上昇がどのくらい深刻な状況なのかがよくわかっていませんでした。そして、今年5月には当時の小泉農林水産相から備蓄米放出政策が打ち出されましたが、その効果についても気になっていました。
そこで本記事では、
・米価格の高騰は異常なのか?
・米価格の大きな変化は予測できるのか?
・備蓄米政策の効果はいかほどなのか?
という3つのテーマについて統計的に分析した結果をご紹介します。
2. 手法
本分析では、農林水産省や総務省統計局からダウンロードしたり書き写したりした以下のデータを用いました。
2011年~2025年の15年間の
・米の相対取引価格:出荷団体と卸売業者間の玄米60kg価格の月次データ
・消費者物価指数(CPI):主食関連の6項目の月次データ
・年間収穫量データ
・年間需要量データ
2015~2025年の11年間の
・米の販売価格:スーパーでの精米5kgの価格の全国平均の月次データ
2024年7月~2025年10月の70週間の
・米の販売価格: 1000のスーパーでの精米5kgの平均価格の週次データ
また、備蓄米の放出量や日時については新聞や農林水産省のHPを元にデータを得て、分析はPython3.12.7の環境で行いました。
3-1. 米価格高騰は異常なのか?
とりあえず各データをプロットしてみます。
・価格の推移
見たところ2024年半ばくらいから急上昇しています。相対取引価格についていうと、9月から新米が出るのでそのタイミングで価格に変化が生まれてそこからは横ばいというのが高騰が始まる前の基本的な傾向です。
・収穫量、需要量と消費者物価指数
収穫量や需要量は減少傾向にあるのですね。総合、食品の物価はじわじわ上がってきています。穀物、パン、麺類の物価は2022年から上昇の傾きが増しています。米価格は2024年中頃から急に上がっていることがわかります。縦軸のスケールも他に比べて大きくなっています。
同じスケールで出力してみます。
米の小売価格とCPIの変化量は群を抜いているように見えます。
・変化率を見てみる
これらを前月からの変化率で見てみます。縦軸のスケールがかなり違います。相対取引価格の最大変化率は40.705%で、これは他に比べてかなり高いです。小売価格もかなり高い水準で継続的に上がっているようです。

ちなみにこれら変化率には当たり前ですがかなり相関があります。
総合CPIを見ると、これは食料・穀物・パン・麺類とかなり強い相関があることがわかります。一方で2種類の米の価格及びCPIとの相関はあるものの他の指標ほどではなく、米の価格だけが少し違った振る舞いをしているのかもしれません。
・異常検知にかかるか
時系列データで行われる「移動平均とZスコアによる異常検知」を試してみました。ここでの異常とは過去のふるまいから考えて正常とは考えにくい稀な事象のことです。
windowの大きさを設定して、「移動平均からの乖離」が、「移動標準偏差」いくつ分かがZスコアにあたります。まずは季節性変動を考えて使われることの多いwindow = 12ヶ月と、正規分布ならば約99%のデータがここに収まる | Z | = 2.5 を閾値に設定しました。
相対取引価格については、9月が新米に変わる月なので価格変化が大きいことが多く、ここで異常が検知されるのみでした。すなわち、9月からの1年間の価格変化は、8月から9月の変化に比べると小さい、しかしwindowの大きさは12ヶ月分でその変化の小さい期間で移動平均を計算しているためにこのような結果になったと考えられます。
そこでwindow = 18ヶ月にしてみます。

2024年の9月と10月を検知しました。2020年の7,9,10月はそこまでの横ばい傾向から減少に向かう点で、ここも検知されました。小売価格についても、window = 18ヶ月で異常検知にかけてみます。

2020年の7月と、2024年8月からの4ヶ月間が検知されるという結果でした。
・変化点を検出してみる
Pythonのrupturesライブラリを用いて、変化点検出ができるか試してみます。今回はこのライブラリの中のPELTアルゴリズムを使いました。これは時系列データの中で統計的性質が変化する点を検出するもので、その中でも分布の変化を対象にするRBFモデルを用いました。ペナルティのパラメータ(= pen)はpen = 8に調整しました。

相対取引価格については、2013年〜2017年あたりの低価格期と2023年10月からの高価格期が検出されました。ただ、2024年後半からの高騰時期への変化を検出できたわけではなく、この理由としてはまだ高騰が始まってそこまでの期間が経過しているわけではなく、統計的性質が十分に変化するには時間が足りていなかったからと考えられます。
小売価格についてもやってみます。

2023年10月は同じところを検知しました。
2017年12月と2021年9月は、どちらも相対取引価格の変化点から5ヶ月遅れて検出されました。相対取引価格の変化から少し遅れて小売価格に変化が起こった可能性が考えられます。
・ここまでのまとめ
まずは、全般的な物価や主食の価格が上がっている状況ではあるがお米の価格には実際に他とはスケールが違う、急な上昇が起きていることがわかりました。また異常検知や変化点検出のモデルを組み立ててみることができ、実際に今回の急騰も検知されました。このようなモデルをうまく発展させれば、定量的な判断の根拠や政策介入の基準になるのかなと思いました。
3-2. 米価格の大きな変化は予測できるか
ここでは収集したデータを使って、今回の上昇を含めた米価格を予測することを試みます。もしうまくモデルを作ることができ、上昇を予知できれば政府や各家庭にとっての対策にも役立つかなと考えたのがこのパートのモチベーションでした。
目的変数は「相対取引価格」にしました。流通費用などを考えない純粋な価格に近いのではと考えたからです。説明変数としては、「需要量・供給量・消費者物価指数(コメと穀物以外)」を使いました。
まずは固定期間分割での予測をやってみます。
2011年9月〜2023年12月の148ヶ月で学習、2024年1月〜2025年8月の20ヶ月でテストをするものです。ここまでの10数年のデータを使ったらこの上昇期間の価格を予測できるのかということです。ちなみにこの期間で目的変数である相対取引価格は77%上がっています。
・重回帰モデル
まずはscikit-learn を用いて回帰モデルを作ってみます。結果は下のグラフ(赤のライン)を見ていただいても分かる通り、あまりうまく予測できるとは言えません。平均絶対誤差(MAE)で約7854円、パーセンテージ誤差で約33%とかなり下にズレています。

係数は上に示しましたが、需要増は価格減と結び付けられました。パンのCPIは正で麺類のCPIは負の要素となりました。パンは米と代替関係にあり、パンの価格が上がると米に代替するため米価格も上昇する一方、麺類の価格が上がると節約志向が強まるなどにより米需要も弱まって価格減少につながるというような仮説も立てることができます。
・SARIMAモデル
続いて、季節性(S)+ 自己回帰(AR)+ 移動平均(MA)を組み合わせた時系列分析で使われるこちらのモデルをPythonのstatsmodelsからインポートして使います。
AIC基準で最適なパラメータを探索したところ、季節周期12ヶ月で、1ヶ月前の値を使って予測、季節ずれの補正は12ヶ月前と24ヶ月前の予測誤差を用いることにしました。
結果は下のグラフの青のラインですが、MAEで約6493円、パーセンテージ誤差で約25%と重回帰よりは改善されたもののやはり大きくズレてしまいました。
・Prophetモデル
Metaの開発した、トレンド・季節性・休日・外生変数を加法的に重ねた時系列の回帰モデルであるProphetを使ってみます。
全体的なトレンドは価格減少方向を見出し、外生要因で上昇圧力を示したようです。9月の新米の時期と春先に価格が上がりやすいという季節性はうまく見出せたようです。
結果は下のグラフの緑のラインですが、MAEで約7373円、パーセンテージ誤差で約31%とこれまでの2つの間で、こちらもうまく予測できているとは言えないでしょう。

グラフはこちらになります。
全てのモデルで過小に評価してしまっています。スコアとしてはSARIMAが最良でしたが、横ばいに予測したようです。回帰とProphetはスコアは負けていますが、2024年の7〜9月あたりに関しては上昇を予測しています。

・ウォークフォワード検証による評価
ここまでの固定期間での予測は結果的にはどれもうまく予測できているとは言えないでしょう。高騰期でテストしていますから、好意的に捉えれば今回の上昇が予測できないくらい異常なものだったことの裏付けとも考えられます。せっかくモデルを作ったので、ウォークフォワード検証をやってみました。
これは、期間を少しずつ進めて毎回その時点より先の一定期間でテストする手法です。現実には時間経過にしたがってデータが増えていくものなので、より現実に即したテストとも言えます。具体的にはテスト期間は「6ヶ月」とし、毎回「3ヶ月」ずつ進めて、17回のテストで検証することにしました。

これがスコアとしての結果(±は標準偏差)で、SARIMAが最も良い数値ですが、ばらつきは大きいというものでした。

グラフに表示した結果を見ると、2023年頃までは3モデルとも実測に比較的うまくついて行っているようです。価格上昇が始まると、重回帰やProphetは過小ではあるもののなんとか上昇方向に予測しているようです。SARIMAは横ばいに近く、その後も下がる方向を予測し、ここで大きく外していそうです。右下のヒストグラムで見ると、SARIMAは誤差のかなり小さい領域に集まりますが、左の裾は長くなっています。ProphetはSARIMAより裾は狭いですが、右方向(過大)にも広がりがあります。重回帰モデルは広く散らばりました。
・ここまでのまとめ
収集したデータを元に3つのモデルを作ってみましたがやはり価格上昇の予測は難しかったです。どんな商品に関しても需要、供給、コストから市場メカニズムだけで価格が決まるというわけではないですが、特に日本の米に関しては食料安全保障の上で政府に強く管理されているそうです。作況や外食産業の動向を踏まえた農協や政策の意向、為替や物流コスト、民間の在庫状況も要因になるため、もっと精度の良いモデルを作ろうと思ったらこの辺りのドメイン知識も調べた上でもっと色々な種類のデータが必要なのかなと思いました。
一方今回のデータだけでも、平常の期間であれば比較的精度良く予測できることがわかりました。
3-3. 備蓄米政策にはどのくらいの効果があったのか
ここでは、2025年に行われた備蓄米放出政策は米価格に対しどのくらいの影響があったのかを数値的に分析してみます。
急上昇の始まった2024年7月からの週次の販売価格のデータを用いました。政策に関する情報は新聞やニュースから収集した以下のものを使います。

5つの(線形)回帰モデルを構築して、備蓄米政策の価格を押し下げる効果や上昇を抑える効果がどのくらいであったかを評価してみました。


※ R²:決定係数 AIC:赤池情報量基準;低いほどよい
これらモデルを説明します。
・モデルA(セグメント回帰)
政策介入によって価格上昇の傾きに変化が起きたと仮定するモデルです。

Dは介入点を表し、2025/2/3から始まる週以降で D = 1になっています。
結果としては、
β₁(上昇トレンド) : 46.22 円/週
β₃(介入による変化) : -46.75 円/週
となりました。
政策を始めたことで上昇→ほぼ横ばいに変わったというような計算結果ですが、グラフを見てもらえればわかる通り上下はあり、横ばいとは言い難いですよね。
とはいえ変化の項のp値はp <.0001となっていて、少なくともこの政策により価格上昇のトレンドは変化したといえそうです。
・モデルA’(3フェーズ回帰)
政策の情報を見ると、入札と随意契約による放出では量や値段は異なり価格に対する影響も違う可能性があると考えました。そこで、施策を打ち出していくことで、価格を押し下げる効果があったと仮定するモデルを作りました。
。

Phase1は政策告知〜入札開始
Phase2は入札開始〜随意契約開始
Phase3は随意契約開始〜
という定義にしました。
β₁ (上昇トレンド) : 38.83 円/週
β₂ (Phase1=政策告知週のシフト) : -62.87 円
β₃ (Phase2=入札期間のシフト) : 47.27 円
β₄ (Phase3=随意契約期間のシフト) : -887.93 円
という結果でした。
随意契約による放出にはかなり価格を下げる効果があるという結果ですが、入札による放出は逆に価格を少し上げる方向と出ました。
グラフは先ほどよりは当てはまりが良いように見え、決定係数R²も上がりました。P値はPhase3についてはp < .0001と有意、他はサンプル数が少ないこともありますが0.5を超えていて断言はできなさそうです。
・モデルA’’(3フェーズ + 傾き変化)
上2つを組み合わせたようなモデルで、政策を打ち出していくごとに価格上昇の傾きに変化が生まれたと仮定するモデルです。

β₁ (上昇トレンド) : 48.76 円/週
β₅ (Phase1 傾き変化) : -7.30 円/週
β₆ (Phase2 傾き変化) : -16.75 円/週
β₇ (Phase3 傾き変化) : -27.10 円/週
という結果でした。
政策のどの段階も傾きを抑える方向の効果があったという分析結果になりました。しかしながらどのフェーズでも共通の上昇トレンドβ₁を下降に持っていくほどの影響はなかったという数値です。決定係数も改善しました。P値についてはPhase3の変化のみが有意(<.0002)で、他は先ほど同様比較的大きかったです。
・モデルB(放出量モデル)
続いて、放出の各回でも量や価格が異なると思い、これら要素で重みをつけるモデルも試してみました。さらにここでは、放出量やその価格を説明変数に入れるなら、放出した備蓄米が市場に出回るまでの時間的なズレも考慮すべきかもしれないと思い、最適ラグ長の推定も試してみました。

AIC(赤池情報量基準)、BIC(ベイズ情報量基準)どちらの基準でも同じ結果で、モデルBではラグなし、モデルB’では7週間遅れの場合が最も当てはまりのいいという結果でしたので、これを採用しました。2つのモデルでずれてしまったので解釈が難しいですが、B’の方が現実に近いとするならば備蓄米が流通して価格に影響が出るのが放出から7週間ということになるのでしょうか。

モデルBはこちらの式で、ラグなしなのでDは放出のあった週に1になります。
β₁ (上昇トレンド) : 21.74 円/週
β₂ (変動効果) : +14.80 円/1万t
という結果になり、備蓄米放出で価格がむしろ上がるという結果になってしまいました。回帰で傾きを少なく見積もって、価格に及ばない分を放出の項で補ってしまったような形でしょうか。決定係数も小さくなってしまいました。
・モデルB’(金額による重みモデル)
放出価格の情報も組み込みたいと思い、こちらも試してみました。

price_diffは、放出月の相対取引価格と備蓄米放出価格の差で、D_lagは放出の7週間後に1になるということです。
β₁ (上昇トレンド) : 22.93 円/週
β₂ (重み効果) : -6.64円/(10万t・価格差-600円/60kg )
という結果で、60kgあたり600円安い備蓄米を10万t放出すると価格が6.64円減少するということです。随意契約の初回は60kgで16000円くらいの価格差で20万t放出しましたので、これにより300円以上の値下げ効果があったことになります。
決定係数はモデルBよりは良いですが、これまでのものよりは小さく、やはり全体の上昇トレンドを小さく見積もってしまっていてグラフの印象もそこまで当てはまっているようには見えません。入札による放出の効果は逆に小さすぎる評価になっているかもしれません。
・政策評価のまとめ
5つのモデルを構築してみましたが、決定係数やAICを見るとモデルA’’(3フェーズでの傾き変化を組み込んだ回帰)が最も当てはまりのいい結果でした。
モデルにより差はあれど、備蓄米放出の政策は米価格上昇の勢いを抑えるものであった可能性は高いのではないでしょうか。政策告知→入札方式での放出→随意契約方式での放出と段階を踏むにつれ、価格抑制の効果が出たことが示唆されます。
また、単に量のみを説明変数にとるよりも、量×価格差で重み付けした時の方が当てはまりが良かったですので、より安く市場に放出することは意味がありそうです。
備蓄米政策は段階的に効果を発揮し、価格抑制に有効な手段だったと考えることができます。
この分析の課題としては、単に米の市場価格と政策のタイミングを見たのみで外部要因を考えられていないこと、政策介入前も傾きが変化しているところがあるがこれは説明できていないこと、各フェーズのサンプル数はそこまで多くないこと、2025年8月以降また上昇してきていることが説明できていないことなどが挙げられます。
4. まとめ
分析のまとめとしては
・ 米価格は確かにかなり異常な高騰をしている
・ 価格が異常な高騰をしていない期間に関しては精度のよいモデルを立てることができそうであるが、価格の急上昇を同じモデルで予測することは難しい
・ 備蓄米放出政策、その中でも特に随意契約による放出は価格上昇の勢いを弱める効果がある、あるいは減少に向かわせる効果がある可能性は高い
というものになりそうです。
今回の分析でもいろいろと課題や至らない点はあったのですが、今後の展望としては、過去の他の物品の異常高騰との比較や、他物品の価格抑制のための政策の比較が可能かと思いました。また、米価格決定のプロセスは単に需給で決まるわけではなく複雑で、その部分をもっと調べて説明変数を組み込むことは精度向上のためには必要だと感じました。
元のレポートは6月頃に書いたもので、随意契約の政策から日が浅く果たして効果を見積もれているのか疑問な部分がありましたが、今回このような賞をいただけたこともありデータを追加してグラフ等を再出力し、ブログに書かせていただきました。
自分でデータを収集して整理するところから分析をするのは初めてで、あまり分析手法の知識もなかったので今読み返すと微妙な点も多々あるのですが、身近なテーマに対してこのように定量的分析ができると知ることができすごく良い機会でした。
長くなってしまいましたが、ここまで読んでいただいた方がいたら嬉しい限りです。
今後出てくる価格データによりモデルの比較や解釈については変わる可能性があります。
2025年11月12日
工学部 長沼 和輝
アワード一覧
- スーパーデータサイエンスアワード2025年度春学期
- スーパーデータサイエンスアワード2024年度秋学期
- スーパーデータサイエンスアワード2024年度春学期
- スーパーデータサイエンスアワード2023年度秋学期
- スーパーデータサイエンスアワード2023年度春学期