販売データには、商品ごとに異なる季節性が現れることがあります。夏に需要が集中する商品もあれば、冬に強く売れる商品もあります。今回は、こうした周期的な需要偏重を単純な月別折れ線として並べるのではなく、「1年を一周する形」として比較できるVisualizationを設計しました。季節性を数値の大小だけでなく、方向・重なり・密度から読むことが目的です。
この図は何を表しているのか
円周方向は1月から12月までの時間の流れを表し、1周すると再び1月へ戻ります。各商品の月別売上は年間売上に対する構成比へ変換し、年間を通じて完全に均等なら半径方向で1.0となるよう基準化しました。
細い曲線は個々の商品です。ある方向へ曲線が大きく膨らむほど、その時期の需要構成比が年間平均より高いことを示します。太い曲線は、同じ季節ピークを持つ商品群の中央値です。色は春・夏・秋・冬の4群を示しますが、季節差は色だけでなく、どの方向に形が突出するかによっても読み取れます。
可視化から読み取れること
今回のSynthetic Dataでは、4つの季節群が異なる方向へ膨らむ構造が確認できます。春群は4月付近、夏群は7月付近、秋群は10月付近、冬群は1月付近に代表的なピークを持つよう生成しています。
72商品のうち、暦上の3か月単位で最も売上が大きい季節が埋め込んだ季節ラベルと一致した割合は約97.2%でした。完全一致ではないのは、商品ごとにノイズと副次的なピークを加えているためです。
また、各商品の年間売上に占める「最大季節」の比率は平均で約29.6%でした。年間を4季節に完全均等に分けた場合は25%になるため、今回のデータには明確ではあるものの極端すぎない季節偏重を設定しています。
この構造をどう解釈するか
この形は、実世界の販売データから発見された季節性を示しているわけではありません。今回はGround Truthとして、商品ごとに春・夏・秋・冬のいずれかへ需要ピークを埋め込んでいます。その潜在構造に商品固有の基礎需要、季節振幅、副次ピーク、乗法ノイズを加えた結果、個別曲線にはばらつきが生じています。
したがって、太い代表線の方向は「群として共有される季節構造」、細い線の広がりは「同じ季節群の中にある商品差」と読むことができます。可視化の目的は、平均値だけでは失われる個体差を残しながら、群としての周期構造も同時に把握することです。
可視化の仕組み
まず、各商品の月別売上を年間売上で割り、月別構成比へ変換します。これにより、売上規模の大きい商品と小さい商品を同じ基準で比較できます。次に、月別構成比を「年間均等配分である1/12」で割り、均等な月を1.0とする半径値へ変換します。
12か月の離散値は周期Cubic Splineで補間します。通常のスプラインでは12月と1月の境界が切れてしまう可能性がありますが、周期境界条件を用いることで1年の終端と始端を連続させています。こうして得られた曲線を円環上に重ね、個別商品を弱く、季節群の中央値を強く描いています。
なぜこの可視化方法を選んだのか
今回扱いたいのは、単なる月ごとの大小ではなく、「1年のどの方向へ需要が偏るか」という周期構造です。円環表現では12月の次に1月が来るという時間の連続性を自然に扱えます。
また、同じ座標上に多数の商品を重ねることで、個別商品の違いが線の密度として現れ、季節群の代表線との関係も確認できます。一般的な折れ線グラフやヒートマップにも比較上の利点がありますが、今回のStudyでは周期性そのものを造形として見せることを重視し、radial spline fieldを採用しました。
実データへの応用可能性
同様の表現は、POSデータ、EC購買履歴、商品カテゴリ別需要、問い合わせ件数、設備部品の交換需要など、一定周期を持つ可能性のあるデータ探索に利用できます。
実データへ適用する場合は、商品ごとの販売量だけでなく、欠品、価格改定、キャンペーン、休日、天候などが季節性と重なっている可能性があります。そのため、この可視化だけで原因を判断するのではなく、季節パターンの違いを発見し、追加分析の仮説を作るための入口として使うのが適切です。
データと分析方法
今回はSynthetic Dataを使用しています。対象は72商品、期間は12か月で、合計864観測です。4季節群へ18商品ずつ割り当て、春は4月、夏は7月、秋は10月、冬は1月を主要ピークとして設定しました。
各商品には対数正規分布から生成した基礎需要、商品ごとに異なる季節振幅、半年程度ずれた小さな副次ピーク、乗法ノイズを加えています。乱数シードは260925です。可視化には月別構成比と周期Cubic Splineを使用しています。
このVisualization Studyの限界
最大の制約は、今回の構造がSynthetic DataのData Generating Processによって設計されていることです。4季節群が存在すること自体が既知であり、可視化が未知の季節クラスタを発見したわけではありません。
また、月別構成比へ正規化しているため、絶対売上規模の差は主たるgeometryから意図的に弱めています。周期スプラインは離散的な月次データを滑らかに見せるための補間であり、その曲線自体が月の間に観測された実測値を意味するわけではありません。
実データでは、季節性以外の要因や複数年の変動、トレンド、欠測、販促イベントなども考慮する必要があります。このStudyから因果関係や実際のビジネス効果を導くことはできません。
まとめ
今回は、商品ごとの販売季節性を「1年を一周する形」として比較するSeasonal radial spline fieldを作成しました。個別商品を細い周期曲線、季節群の代表構造を太い中央値曲線として重ねることで、四季それぞれの需要偏重と群内ばらつきを同時に表現しています。
Synthetic Data上では、埋め込んだ季節ピークが異なる方向への膨らみとして現れました。この見方は、周期データを単なる時系列の上下ではなく、方向・密度・重なりを持つ構造として探索するための一つの方法です。


