elsur.jpn.org >

« 2019年9月 | メイン | 2019年11月 »

2019年10月29日 (火)

 話はちがうが(なにからだ)、Stanを使っていると、ときどきデータ型について混乱してしまうことがある。数日前も同僚が書いたコードをみていて、しばしわけがわからなくなってしまった。私が悪いんです、すいません。
 松浦「StanとRでベイズ統計モデリング」の9章を熟読すればよい問題なのだが(自宅にも職場にも置いてあるんだし)、毎度毎度めくっているのもどうかという気がしてきたので、Users Guide (2.19)の15-16章を眺めてメモを取った。

15. Matrices, Vectors, and Arrays

16. Multiple Indexing and Range Indexing

16章にはほかにもいろいろ書いてあるんだけど、なんだかめんどくさくなってきたので、まあいいや、別の機会にしよう。

雑記:データ解析 - ちょっとした覚書:Stanのデータ型について

2019年10月23日 (水)

 たとえば、いまサイズ4の標本があり、ある変数の値が小さい順に100, 200, 300, 300であったとする。標本中央値は250ですわね。では40パーセンタイルは?
 これは意外にややこしい話で、以前気が付いたんだけど、ソフトによって出力が異なるのである。
 こんな細かいことに気を揉んでも一銭の得にもならん、くわばらくわばら...と思っていたが、このたび勤務先のお仕事の関係で関連するお問い合わせを受け、まあこれも機会であろうと思い、ちょっと調べてみた。

Hyndman, R.J. & Fan, Y. (1996) Sample Quantiles in Statistical Packages. American Statistician, 50, 361-365.
 この話になるとよく引用される論文はこれだという印象だけがあったのだが、実際に手に入れてみたら、4pの短いコラムのような記事であった。

 いわく。
 分布関数を$F(x)$として、分位数とは
 $Q(p) = F^{-1}(p) = inf \{x: F(x) \geq p \}, \ \ 0 < p < 1$
だが、これを標本においてどう定義するか。

 以下、$i$番目の定義を$\hat{Q}_i(p)$とする。標本を$\{X_1, \ldots, X_n\}$とし、その順序統計量を$\{X_{(1)}, \ldots, X_{(n)}\}$とする[小さい順に並べて$3$番目の値を$X_{(3)}$と書きますってことでしょうね]。
 $u$を超えない最大の整数を$L(u)$, $u$を下回らない最小の整数を$U(u)$と書く[←原文ではあまり見たことない記号を使っているので、このメモではこのように略記する。以下、$u$に負値が来ることはなさそうだから、要は$u$の端数を切り捨てたら$L(u)$, 切り上げたら$U(u)$ね]

 標本分位数の定義はソフトによってさまざまである。一般化して書くと、

 $\hat{Q}_i(p) = (1-\gamma) X_{(j)} + \gamma X_{(j+1)}$
ただし $\frac{j-m}{n} \leq p \leq \frac{j-m+1}{n}$、$m$は実数、$0 \leq \gamma \leq 1$。
 $\gamma$は $j = L(pn + m)$と$g = pn + m - j$の関数である。

 [著者らは頭が良すぎるせいか抽象化しすぎているので、具体例を使って、私にもわかるように書き換えよう。
 標本$\{100, 200, 300, 300\}$(サイズ$n=4$と書く)の40パーセンタイル($p=0.4$と書く)とは、$j$番目の値と$j+1$番目の値の間の区間のどこかにある点である。その点からその区間の左端までの長さが区間の幅の$(1-\gamma)$倍であり、その点からその区間の右端までの長さが区間の幅の$\gamma$倍であるとしよう。ソフトによるちがいは、結局は$j$と$\gamma$の決め方の問題にすぎない。
 $j$の決め方のひとつは、$np = 4 \times 0.4 = 1.6$ の端数を切り捨てた値とする、というものである。このデータ例だと$j=1$、つまり100と200の間ということになる。ソフトによっては端数を切り捨てる前に$m$を足すものもある。たとえば$m=0.5$なら$j=2$、つまり200と300の間ということになる。
 $\gamma$の決め方にはいろいろあるんだけど、どの決め方にせよ、それは$j$と、切り捨てた端数$g$のふたつによって決まる。]

 さて、標本分位数$\hat{Q}_i(p)$に期待される特性として次の6つを挙げることができる。

 大変ながらくお待たせしました。それでは!選手の入場です!

 定義1.

$m=0$とする。$g > 0$のとき$\gamma = 1$, $g = 0$ のとき$\gamma = 0$とする。

 この定義は以下の性質を持つ。
 $Freq(X_k \leq \hat{Q}_1(p)) = U(pn)$
 $Freq(X_k \geq \hat{Q}_1(1-p)) = L(pn+1)$
 P2を満たす。また$n$が奇数の時P6を満たす。他の特性は満たさない。
 [上の具体例でいうと、$j$は$0.4 \times 4 = 1.6$の端数を切り捨てた値, すなわち$1$。切り捨てが起きているので$\gamma = 1$、よって答えは$j+1$番目の値200となる。それ以下の値の個数は2、これは$1.6$の端数を切り上げた値に等しい。なお、60パーセンタイルは300、それ以上の値の個数は2となり、これは$1.6+1$の端数を切り捨てた値に等しい]

 定義2.

$m=0$とする。$g > 0$のとき$\gamma = 1$, $g = 0$ のとき$\gamma = 0.5$とする。

 この定義は以下の性質を持つ。
 $Freq(X_k \leq \hat{Q}_2(p)) = Freq(X_k \geq \hat{Q}_2(1-p)) = U(pn)$
 P2, P3のみを満たす。
 [定義1とほぼ同じなのだが、$pn$が端数を持たなかったときの扱いが異なる。たとえば上の具体例での25パーセンタイルは、定義1では100となるが、定義2では100と200の中点すなわち150となる。なんだか奇妙な定義だが、たとえば20パーセンタイル以下の値の個数と80パーセンタイル以上の値の個数が常に一致し$U(0.2n)$となる、つまりP3の特性を持つというメリットがあるわけだ]

 定義3.

$m=-0.5$とする。$g > 0$のとき$\gamma=1$とする。$g=0$の場合、jが偶数ならやはり$\gamma=0$, 奇数の場合は$\gamma=1$とする。

 この定義はP2のみを満たす。
 [上の具体例でいうと、40パーセンタイルを求めるとして、$j$は$np - m = 1.6-0.5= 1.1$の端数を切り捨てた値1となる。切り捨てが起きたので2番目の値200を採用する。切り捨てが起きなかったときがなんだかややこしいが、まあその値だかその次の値だかを使うわけだ]

 以上の定義では、分位数は$j$番目の値か$j+1$番目の値かその中点であり、つまり非連続的である(P1を満たさない)。
 ここからは区間ごとに線形関数を考えて内挿するタイプの定義で、すべてP1を満たす。
 以下、$\hat{Q}_i (p_k) = X_{(k)}$と書く。
 [つまりですね、横軸に$X_{(k)}$、縦軸に$\hat{Q}_i (p_k) = X_{(k)}$となる$p_k$をとり、点$k=1, \ldots, n$が布置する散布図を書いて、点と点を直線でつなぐ。で、たとえば水平線$Y=0.4$との交点を求めてこれを40パーセンタイルとしようという算段である。問題は$p_k$をどう定義するかだ]

 定義4.

$p_k = k/n$として線形に内挿する。

 この定義はP1, P2を満たす。
 [上の具体例でいうと、40パーセンタイルを求めるなら、点$(100,1/4)$と点$(200,1/4)$を結ぶ線分と、水平戦$Y=0.4$との交点をもとめるわけね。40パーセンタイルは160となる。素直な発想だが、このやり方だと50パーセンタイルは200になり、通常の標本中央値と合致しなくなる、つまりP6は満たされない]

 定義5.

$p_k = (k-0.5)/n$として線形に内挿する。

 P1からP6のすべてを満たす。
 [上の具体例でいうと、40パーセンタイルを求めるなら、点$(200,1.5/4)$と点$(300,2.5/4)$を結ぶ線分と、水平線$Y=0.4$との交点をもとめるわけだ。40パーセンタイルは 210。50パーセンタイルは250となり、通常の標本中央値と合致する]

 定義4-5には分布の分位数を推定するという視点が欠けている。いっぽう定義6-8は、$F(X_{(k)})$のなんらかの特性値を$p_k$にするというもの。いま$F(X_k)$が一様分布とすれば、$F(X_{(k)})$はベータ分布$Beta(k, n-k+1)$になるので、そのなんらかの特性値を使う。[←この理屈がいまいちぴんとこないんだけど... $F(X_k)$は実際には一様分布じゃないっすよね...]

 定義6.

$p_k = k / (n+1)$として線形に内挿する。

 これは$F(X_{(k)})$の期待値である。P3以外の5つの特性を満たす。
 [上の具体例でいうと、40パーセンタイルを求めるなら、点$(200,2/5)$と点$(300,3/5)$を結ぶ線分と$Y=0.4$との交点を求めるわけだ。40パーセンタイルは200, 45パーセンタイルだったら225]

 定義7.

$p_k = (k-1) / (n-1)$として線形に内挿する。

 これは$F(X_{(k)})$の最頻値である。P1,P2,P4,P6を満たす。
 [上の具体例でいうと、40パーセンタイルを求めるなら、点$(200,1/3)$と点$(300,2/3)$を結ぶ線分と$Y=0.4$との交点を求めるわけだ。答えは220]

 定義8.

$p_k = (k-1/3)/(n+1/3)$として線形に内挿する。

 これは$F(X_{(k)})$の中央値の近似である。P3以外の5つの特性を満たす。
 [上の具体例でいうと、40パーセンタイルを求めるなら、点$(200,1.666/4.333)$と点$( 300,2.666/4.333)$を結ぶ線分と、$Y=0.4$との交点を求めるわけってことか...答えは206.66]

 定義9は視点が違って、$F$が正規分布だと仮定し、$F(E(X_{(k)}))$を求めるというもの。定義6では$F(X_{(k)})$の期待値を考えたが、ここでは$X_{(k)}$の期待値を考える。次の定義で近似できる由。

$p_k = (k-3/8)/(n+1/4)$として線形に内挿する。

 P3以外の5つの特性を満たす。
 [上の具体例でいうと...めんどくさいので省略するが、40パーセンタイルは207.5となる模様]

 特性だけでいえば優れているのは定義5である。いっぽう推定という観点からは、定義8は$F$の形状を問わず$Q(p)$のmedian-unbiasedな推定値であり、これがもっとも優れている。
 思えば、標本分散の定義もいろいろありうるが(直観的にはnで割るのが分かりやすいし、正規分布ならn+1で割ればMSE最小になる)、不偏性を重んじてn-1で割るというのが標準になっている。いっぽう標本分位数の定義は標準化されていない。由々しいことだ。ソフトメーカーのみなさん、定義8に統一しませんか。

 ... 細かいところはよくわかんないんですけど、勉強になりましたです。
 ところで、第1著者Hyndman先生は2016年のブログ記事でこの論文について振り返っている。いわく、この論文はある時期からすごく引用されるようになった(そのきっかけのひとつはWikipediaに論文へのリンクが載ったからだが、実は先生がご自分で載せたのだそうだ。ここ笑っちゃった)。しかし思いの丈は果たされなかった。各ソフトウェアは標本分位数のデフォルトを定義8に統一するのではなく、むしろこれまで実装していなかった定義も実装するようになってしまった... とぼやいておられる。面白いなあ。

 現時点での各種ソフトはどうなっているだろうか。
 Rの場合。そもそもRのstats::quantile()を書いた人のひとりがHyndman先生その人であるからして、この論文の定義の番号に合わせ、たとえば quantile(x, type = 8) という風に書けばよい。ただしデフォルトは先生の意に反し、S言語での定義に合わせた定義7となっている。

 私は使っていないけど、時々お問い合わせを受けるのがSPSSの挙動である。どうなっているのか。
 手元にあるIBM SPSS 24のStatistic AlgorithmsというPDFによると(ここからダウンロードできる)、単変量の記述統計量を求めるEXAMINEコマンドは、分位数として5つの定義を実装している。FAQページにいわせるとデフォルトはHAVERAGEという定義だ。
 PDFによればHAVERAGEの定義は次の通り。

標本サイズを$W$, $p$パーセンタイルを$x$, 重複を取り除いた$i$番目の値を$y_i$, その度数を$c_i$, 累積度数を$cc_i$と表記する。$tc_2 = (W+1)p$とし、$cc_i$で区切られる区間のうち$tc_2$が落ちる区間の下限を$cc_{k_2}$とする。$g^{*}_2 = tc_2 - cc_{k_2}$, $g_2 = g^{*}_2 / c_{k_2+1}$として、

  • $g^{*}_2 \geq 1$のとき $x = y_{k_2+1}$
  • $g^{*}_2 < 1$ かつ $c_{k_2+1} \geq 1$のとき$x = (1-g^{*}_2)y_{k_2} + g^{*}_2 y_{k_2+1}$
  • $g^{*}_2 < 1$ かつ $c_{k_2+1} < 1$のとき$x = (1-g_2)y_{k_2} + g_2 y_{k_2+1}$

うむむ、ややこしい。
 話がややこしくなっているのは、SPSSではローデータの個々の行に対して整数でない頻度ウェイトを与えることができるからである。
 話を簡単にするために、頻度ウェイトは1以上の整数としよう(頻度ウェイトとは標本におけるその行の頻度であるから、本来は1以上の整数になるはずである)。このとき$y_i$の度数$c_i$は1以上の整数になるので、3本目の式は無視できる。
 1本目、$tc_2$が区間下限$cc_{k_2}$より1以上離れていたら区間の上限を採用するというのは、たとえば$\{100, 200, 300, 300\}$の65パーセンタイルを求めるとき、$tc_2 = 0.65 * (4+1) = 3.25$が落ちる区間は累積度数2と累積度数4の間だけど、下から3人目以降はあきらかに300なんだから、$tc_2$が3以上だったら四の五の言わずに300だ、ということだと思う。SPSSでいう$y_i$はHyndmanさんのいう$X_{(i)}$とちがって、データの重複を取り除いたうえで小さい順に並べたときの$i$番目の値だから、こういう但し書きが必要になるわけだ。
 話のポイントは2本目の式である。最初に挙げた具体例$\{100, 200, 300, 300\}$で考えると、その40パーセンタイルは、$tc_2 = 0.4 * (4+1) = 2$, これが落ちる区間の下限は2だから$g^{*}_2 = 0$で、2番目の式より200となる。45パーセンタイルなら$tc_2 = 0.45 * (4+1) = 2.25$, $g^{*}_2 = 0.25$となり、0.75*200 + 0.25 * 300 = 225。どちらの例でもHyndmanさんのいう定義6に一致する。
 それもそのはずで、Hyndmanさんの説明は「点$(200,2/5)$と点$(300,3/5)$を結ぶ線分と水平線$Y=0.45$との交点を求める」であり、SPSSの説明は「点$(200,2)$と点$(300,3)$を結ぶ線分と水平線$Y=0.45 \times 5=2.25$との交点を求める」である。データ点の縦座標を5で割るか、欲しい$p$に5を掛けるかの違いで、結局同じ事をいっている。
 このように、頻度ウェイトが正の整数であれば、SPSSの出力は定義6だと思う。

 Excelはどうなっているんだろう... 上の具体例で求めてみたところ、セル関数PERCENTILE.INCは40パーセンタイルとして220を返し、PERCENTILE.EXCは200を返した。調べる気力が尽きたが、これ、なにやってんですかねえ。

論文:データ解析(2018-) - 読了:Hyndman & Fan (1996) 標本分位数の出力はソフトによってちがう

2019年10月21日 (月)

 ちょっと事情があって調べ物をしていたら、American Business History CenterというWebサイトに、アメリカの消費者パネルデータの歴史についてのすごく面白い記事が投稿されていた。仕事そっちのけでメモをとってしまったのでブログに載せておく。

 著者のFred Phillipsさんはどうやら現在ニューメキシコ大の教授らしい。著書に"Market-Oriented Technology Management"があり、このブログ記事はその一部の改訂版である由。

 いわく。
 メーカーは自社の出荷についてはわかっているが、(他社製品を含めた)消費者の購入実態についてはわからない。そのため、FMCG(日用消費財)メーカーはパネル調査を頼りにする。消費者をパネルとして抱え込んでおいて複数時点で調査する方法だ。
 80年代以降、アメリカの消費者パネル調査はA.C. Nielsen Co.とMarket Research Corporation of America (MRCA)に支配されていた。Nielsenは消費者のメディア習慣のデータを、MRCAは消費者の購買データを売っていた。アメリカの主なFMCGメーカーは、たいてい両方のデータを買っていた。
 これはNielsenとMRCAの栄枯盛衰の物語である。

 1936年、Arthur C. Nielsen, Sr.はMITからラジオ聴取を記録する装置のライセンスを受けた。彼は1942年、Nielsen Radio Indexを開始した。
 戦後のTV普及に伴い、NielsenはTV視聴率を郵送の日記調査で調べるようになった(この日記調査は80年代まで続いた)。さらにNielsenは据え置きデバイスを併用するようになった。
 といっても、据え置きデバイスでは世帯内の誰がTVを観ているのかわらない。視聴者にいちいちボタンを押してもらい、誰が観ているのかを調べようとしたが、これは協力率が低かった。ひとりひとりに発信器つきのメダルをぶら下げてもらうというのも試したがこれも無理だった。据え置きデバイスに熱センサーを付けてみたが、犬や赤ちゃんやストーブやトースターに反応してしまった。

 1941年、ゲーム理論研究者のOskar MorgensternはIndustrial Survey Inc.を創業する。この会社はまもなく社名をMRCAに変えた。
 [なによりこの記載に度肝を抜かれた。フォン・ノイマン & モルゲンシュテルン「ゲームの理論と経済行動」のモルゲンシュテルンだよね? まじか。この人、ナチス占領でアメリカに亡命したウィーンの知識人だから、きっと生活費を稼ぐためにいろんなことをしたんだろうなあ...]
 MRCAは訪問調査を行っていたが、50年代の都市化とともに訪問調査は難しくなり、日記調査に軸足を移した。
 70年代、女性が職場に進出し、離婚が増え、世帯サイズが小さくなり、日記調査への協力率は下がった。しかしMRCAのデータは依然として出荷データのトレンドに対応していた。この頃、David B. Learner(心理学出身、広告代理店BBDOの元幹部)がMRCAを買い、70年代末には単独の所有者となった。
 [おいおいちょっと待って... Clancy, Krieg, & Wolf (2006)の歴史の章には、David Learnerは「60年代にBBDOでDEMONというSTMモデルを開発するも、うまくいかずBBDOを去ってピッツバーグのハイテク企業の社長になる人」として登場するんですけど?]

 さて70年代末。いよいよ小売店に清算用スキャナが普及し始める。
 1979年、野心的スタートアップ Information Resources, Inc. が登場する。この会社はアメリカ全国から人口構成が全国のそれに近い複数の街を選んで"pod markets"とし、そこのすべてのスーパーにスキャナを配り、世帯を抽出して調査を掛けたうえ、IDカードを使って精算時にスキャンするように求めた。さらにケーブル局と提携し、街を半々にわけて別のCMを流せるようにした。
 IRIにもいろいろ問題はあった。そもそもすべての製品にUPCコード[日本で言うJANコードね]が振ってあるわけではない。味覚やブランドへの選好には地域差があるので、人口構成が似ているからと言って購買データを全国にあてはめることはできない。パネルのメンバーはIDカードを家に置き忘れるかもしれない。pod marketsがどこにあるかは公開されていたから、競合はプロモーションを打って広告テストを無効化するかもしれない。スキャナ・パネル・データからは原則として競合の価格はわからない。スキャナがあるのはスーパーだけで、他の小売チャネルはわからない。当時のスキャナ・データは結構エラーが多かった。
 というわけで、メーカーは当初はIRIに飛びついたものの、いったんはMRCAに戻ってきた(典型的なハイプ・カーブである)。結局はIRIが勝つことになるわけだけど。

 80年代は新技術の時代であった。RDD, マイコン, コンピューター産業調査のためのSurvey-on-a-disk [おそらくフロッピーを配ってコンジョイント分析をやるというような話であろう]、自動コールセンター。
 NielsenはIRIに対抗し、世帯パネルに手持ちスキャナを送るという作戦にでる。
 実はMRCAも同じことを考えていた。80年代初頭、私[著者のFredさん]はMRCAの副社長で、家庭でのスキャンを実験したんだけど、なかなかうまくいかなかった。子どもがはしゃいでしまって、シリアルの箱をなんどもスキャンするのである。[←ははは]
 社長のDaveはいつも云っていたのだが、彼はMRCAの経営に満足しており、上場する気はさらさらなかった(上場などしようものならウォール街のアナリストと延々電話する羽目になる)。スキャナを配るには資金が必要だ。Daveはスキャナ・パネルと競合するのをやめて、データ収集ではなく企業へのデリバリーに特化しようとした。社名をMRCA Information Servicesに変え、調査対象カテゴリを拡大した(金融サービスとか)。旗艦商品は即時的かつインタラクティブな市場調査ツール。おかげさまで顧客も戻ってきた。
 私は1988年にMRCAを去った。円満退社であった。

 90年代はさらなる新技術の時代、そして技術市場の国際化の時代であった。Nielsenは欧州と日本に進出する。日本ではそれまで、朝日新聞のような日刊紙の消費者パネルが使われていた。
 fax、そして電子メールによる調査が始まった。TVとWWWの融合が始まった。画像認識によるTV視聴者判定、音声認識による調査が登場した。
 NielsenとIRIは技術を向上させ、いよいよMRCAからシェアを奪い始める。もっとも同時期、IRIが600万ドルかけたシンジケート広告調査は大失敗したし、1996年にはTV局4社が共同でNielsenデータの不正確さを批判する広告を出したのだけれど。

 IRIとNielsenは、店舗スキャナ・データとスキャナ・パネル・データを併売するようになる。後者はなんと実質無料。独禁法に反するのではないかという疑いもあったが、MRCAに法廷闘争の体力はなかった。クライアントもスキャナ・パネルの怪しさを知っていたが、低価格には抗えなかった。こうして日記調査は急速にシェアを失う。
 近視眼、拒否、警告、安堵、自己満足、パニック、そして諦め。MRCAはまさにこの路を辿った。MRCAは資金不足で税の不払いに陥った。幹部社員は有罪を認め、短期収監と罰金刑に服した。[←ええええええ]
 かくしてMRCAは滅びた。

 といっても、日記調査そのものは滅びていない。日記調査はいまでも、コードが付いていないカテゴリ(服飾・靴・宝石、家具など)の購入や、食品の消費を追跡するための最良の手法である。
 Nielsenもまた買収・分割された。1984年、Dun & Bradstreet CompanyがNielsenを買収。1996年、TV視聴率測定のNielsen Media Researchと消費者購買・映画興収のAC Nielsenに分割。1999年、オランダの出版社VNUが前者を買収。2001年、VNUは後者も買収して併合。
 皮肉なことに、IRIもかつてのMRCAと同様、データ収集ではなく分析を志向する企業となった。

 90年代初期までには、食品の約60%が小売店での清算時にスキャナを通ることになった。スキャナ・データによって、メーカーから小売店へと権力がシフトした。全国テレビ局から地域の広告主、そして消費者へと権力がシフトした...[中略]
 調査も変わった。厳密な無作為標本ではなく任意型標本が支配的となった...[中略]

 20世紀にMRCAとNielsenが築いたデータベースは、いまからみれば笑ってしまうくらい小さなものだった。しかし、それらから現代に通じる教訓を得ることができる。

 [...以下略]

 。。。ところで、モルゲンシュテルン創業のIndustrial Survey Inc.がMRCAに社名変更するというくだり、Jones & Tadajewski(2011)によれば次のような事情らしい。
 そもそもMRCAという会社を創業したのは最初期のマーケティング研究者Percival Whiteである。彼はPauline Arnoldという人のArnold Research Service (ARS)を買いMRCAと名付けた。MRCAは30-40年代の市場調査会社の最大手のひとつとなる。さて、Whiteは会社を娘に継がせようとしたんだけど、結局は1951年、Samuel Bartonという人が経営するIndustrial Surveys Companyに売る。合併後、MRCAという社名が継承された。... えーと、ってことはモルゲンシュテルンは51年までには会社を手放していたんだろうね。

 10/23追記: 勢い余ってPauline Arnoldの伝記(Jones, 2013) にも目を通してしまった。
 Paulineは1894年生まれ、セント・ルイスの高校の音楽教師だったが、1926年(ってことは御年30才)、ARSを創業。なぜ音楽の先生がそんなことをはじめたのかはよく分からない由。ARSははじめて地域ごとのフィールド・スタッフを全米規模で組織した会社であり、1936年の時点で1000都市に3000人のインタビュアーを擁していた[←戦前にそんな会社があったのね...]。またARSはcoincidental radio survey、すなわち「いまラジオのCMを聴いてました?」と訊く電話調査のパイオニアであった。それまでラジオ広告への接触調査はあとから思い出してもらうやり方で行われていた。
 Paulineは1928年にNYのマーケティング・コンサルタントPercival Whiteに出会い、1931年に結婚(あ、なるほど...)、NYに移る。ARSはPercival White Inc.と合併してMRCAとなる。夫が社長で妻が副社長。
 さて、夫は次第にMRCAの経営に関心をなくし、軍需用の機械製造みたいなことをはじめちゃったもんで(このへんもちょっと面白い話なんだけど割愛)、妻が社長、夫の連れ子のMatilda(1911年生)が副社長になる。
 このMatildaさんという人もただのお嬢ではなくて、気まぐれな父に代わって経営に尽力し、確率抽出による調査設計によって1946年にAMAから賞をもらったりする。で、一時は会社を継ぐつもりだったんだけど父が約束をまもらないもんだからうんざりし、1949年に大学に移る。両親は結局1951年にMRCAを手放した、という次第。
 Matildaさんはのちに社会学の教授となる。Matilda White Riley (2004年没)、老年学のパイオニアとして知られる研究者だそうだ。

雑記 - 消費者パネルデータの栄枯盛衰

2019年10月18日 (金)

Ferrari, P.A., Barbiero, A. (2012) Simulating Ordinal Data. Multivariate Behavioral Research, 47, 566-589.

 いま、$m$個の順序変数があって、各変数の周辺分布はわかっている。さらに、任意の2個の変数について、(カテゴリに1,2,...と数字を振って得た)相関係数もわかっている。この周辺分布と相関行列にあわせてデータを生成するにはどうすればいいか、という論文。
 なんでそんなの読んでるの?という感じだが、仕事の都合でそういうのが急遽必要になったのである。ああ流されていく人生。

 著者らはRのGenOrdパッケージの中の人。
 イントロは端折るけど、一般に、欲しい特徴を持つデータ行列をシミュレーションする方法は二つあるそうだ。

 この論文は前者のアプローチ。

 いま、ターゲットである相関行列$\mathbf{R}^{O*}$をつかって、連続変数のデータ行列 $\mathbf{Z} \sim N(\mathbf{0}, \mathbf{R}^{O*})$を生成したとしよう。で、$\mathbf{Z}$の各列について、ターゲットである周辺分布に一致するように離散化したとしよう。ここまでは、まあ、思いつきますね。
 ところが、このデータ行列から相関行列$\mathbf{R}^O$を得ると、それはターゲットの$\mathbf{R}^{O*}$からずれてしまう。そりゃまあそうだ。

 そこで著者らが提案する手順は以下の通り。

 後半は応用例。この方法でなにかの信頼区間を出すとか、PCAと非線形PCAの性質のちがいをシミュレーションするとか。眠くて読み飛ばした。

 ...意外に単純な話で拍子抜け。要はほしい相関行列を共分散としてもつMVNからサンプリングして離散化し、その相関行列をみて共分散を修正してまたサンプリングして離散化して、というのを繰り返すわけだ。

論文:データ解析(2018-) - 読了: Ferrari & Barbiero (2012) 指定された周辺分布と相関行列を持つ多変量順序データを生成する方法

2019年10月15日 (火)

Hardie, B.G.S., Fader, P.S., Wisniewski, M. (1998) An empirical comparison of new product trial forecasting models. Journal of Forecasting, 17, 219-229.

 消費財の新製品トライアル売上を説明するモデルをいろいろ集め、実データにあてはめて比べてみました、という論文。
 新製品売上予測モデルのバトルロイヤル企画としてはM Competitionsが有名だけど、これはそのトライアル版。まあ誰でも思いつきそうな研究ではあるが(すいません)、レビューのところが勉強になりそうだと思ってめくった。

 イントロ [...省略。トライアル売上の予測がいかに大事かというような、まあそりゃそうでしょという話。直接の先行研究としてMahajan, Muller, & Sharma (1984 MktgSci)を挙げている。あれは認知率の予測じゃなかったっけか。ともかく、読まなきゃいけないなあ]

 CPG(consumer packaged goods)のトライアル予測モデルのうち、パネル/サーベイデータを使い、マーケティング意思決定変数(価格とか広告とか)を使わない8つのモデルを選んだ。
 それでは選手登場です。拍手でお迎えください!

1. 非トライアル者つき指数モデル
 Fourt & Woodlock(1960)は、累積トライアルの天井を$x$, 浸透速度を$r$, 上市からの離散時間を$i$として、時点$i$のトライアル増分を$r x (1-r)^{i-1}$とした。
 連続時間で定式化しよう。ランダムに選んだパネリストについて、その人がトライアルするまでの時間が指数分布 $f(t) = \theta \exp(-\theta t)$に従うとする(つまりある人の非トライアル下での瞬間トライアル率は定数$\theta$)。で、$\theta$の分布は確率$p$で$g(\theta)=\lambda$, 確率$1-p$で$g(\theta)=0$としよう。このとき、累積トライアル率は
 $P(t) = p (1- \exp(-\lambda t))$
 Fourt-Woodlockいわく、このモデルでは累積トライアルの曲線が比較的すぐにフラットになってしまうけど、現実のデータはそうでもない。購入頻度に異質性があるからだろう。

2. 非トライアル者・ストレッチ因子つき指数モデル
 というわけで、Fourt-Woodlock、Eskin(1973)、Kalwani & Silk (1980 JMR) らはこう拡張した:
 $P(t) = p (1- \exp(-\lambda t)) + \delta t$
[あまりに単純な拡張でびっくり。なんすか$\delta$って... 実質的な解釈は難しいよね]

3. 指数ガンマモデル
 いっぽうAnscombe (1961 JASA)は異質性を直接モデル化することを考えた。ガンマ混合分布を考える。
 $g(\theta | r, \alpha) = \frac{\alpha^r \theta^{r-1} exp(-\alpha \theta)}{\Gamma(r)}$
 ここから
 $P(t) = 1 - (\frac{\alpha}{\alpha + t})^r$
これはNBDモデルの待ち時間版だと考えてもよい。

4. 非トライアル者つき指数ガンマモデル
上のモデルで、$\theta$の分布がすごく左に寄っているというかたちで非トライアル者の存在を表現することもできるんだけど、そうすると$\theta$の平均や分散を解釈しにくくなるので、明示的に表現して
 $P(t) = p \left( 1 - (\frac{\alpha}{\alpha + t})^r \right)$
なお、これはもともと Kalwani & Silk (1980) がリピート購買に当てはめたモデルであった。

5. 非トライアル者つきワイブル・ガンマモデル
 Massyという人が60年代に提案した STEAM(Stochastic evolutionaly adoption model)というのがある。トライアルと初回リピートとその後のリピートについてそれぞれモデル化するという複雑な提案である。
 トライアルについていうと、瞬間トライアル率を(定数じゃなくて)時間の関数と見ている。つまり購買間隔はワイブル分布になる。異質性はガンマ分布で表現するので、ワイブル分布のガンマ混合ということになる。ほかにいくつかの仮定を付け加えると下式になる。$c=1$なら非トライアル者つき指数ガンマモデルとなる。
 $P(t) = p \left( 1- \left[\frac{\alpha c}{(t+1)^c + \alpha c - 1}\right]^r \right)$

6. 対数正規-対数正規モデル
 Lawrenceという人は、購買間隔が(指数分布じゃなくて)対数正規分布に従うと仮定した。でもって、その平均が消費者間で対数正規分布すると仮定すると、$\Lambda(t|\mu, \sigma^2)$を$N(\mu, \sigma^2)$の対数として
 $P(t) = \frac{1}{\exp(\mu+\sigma^2/2)}(1-\Lambda(t|\mu, \sigma^2)) + \Lambda(t|\mu+\sigma^2, \sigma^2)$
となる。[ほへぇぇ... 恥ずかしながら初めて聞いたぞ。Lawrence(1979 Euro.Res.; 1982 Euro.Res.; 1985 Mktg Intelligence & Plannning)というのが挙げられている]

7.「二重指数」モデル
 Greeneという人の提案。
 $P(t) = \frac{p}{\beta - \alpha} (\beta (1-\exp(-\alpha t) - \alpha (1-exp(-\beta t))$
 これは購買行動についての仮定からではなくて、単なる曲線近似。Greeneさんは累積トライアル曲線が経験的にS字型だと考えたのでこういう提案をした。

8. Bassモデル
 いよいよ本命、Bass(1969)の登場である。ひかえおろう。
 $P(t) = p \left( \frac{1-\exp(-(\alpha+\beta)t}{1+(\beta/\alpha) \exp(-(\alpha+\beta)t)} \right)$
$\beta =0$なら非トライアル者つき指数モデルになる。
 超有名なモデルではあるが、CPGへの適用は実はきわめてレア。

 選手紹介は以上だが、Bassモデルを除いて、普及モデルなら考えるであろう消費者間の影響を考えていない点にご注目。CPGだからね。トイレットペーパーについてクチコミしないからね。
 ここで浮かぶ疑問は、WoMがないんなら、なぜに累積トライアル曲線がS字型になることがあるのか、という点である(モデル5,6,7,8はS字型を表現しうる)。ひとつの説明は、実際の市場はテストマーケットと異なり配荷がコントロールされていない、S字型になるのは配荷のせいで行動のせいじゃないんじゃない、というもの。
 ついでに予選落ちした諸君をご紹介しよう。Massy et al.(1970 書籍)はさまざまなモデルを提案している(ロジスティックモデルとか線形学習モデルとか)。既存製品の購買行動のモデルを新製品に適用するという手もある[Aaker(1971 MgmtSci.), Herniter(1971 MgmtSci.)というのが挙げられている]。

 IRIのスキャンデータを使う。このデータでは新製品の配荷は常に100%である[どういう仕組みなのかねえ...]。4カテゴリ、19新製品。
 それぞれの新製品について、52週間のトライアル購入者がわかる。前半の26週(ないし13週)でモデルを推定し、残りをあてにいく。
 以下、週$t$の実浸透率を$Y(t)$, その推定値を$P(t)$, 前週からの増分を$y(t)$と$p(t)$, 世帯数を$N$, 推定に使った期間の週数を$T$と書く。
 推定は3種類。

 指標として、テスト期間の累積トライアルのMAPE, ないし52週目の累積トライアルのAPEをみる。

 結果。
 モデル1,2,3,4の成績がよい。つまり、単純にconcaveなモデル(S字型を表現できないモデル)の勝ち。
 26週で学習した場合、優勝はモデル2。ただし13週の場合、成績ががくっと落ちる。13週での優勝は、なんとモデル1。要するに、ストレッチ因子$\delta$は学習期間がある程度長いときに効いてくるわけだ。
 モデル3,4は優勝は逃したが、26週でも13週でもそこそこの成績を示す。
 下位集団のなかで検討しているのはモデル5で、平均すると5位だが、実は26週でも13週でも4位につけている。その次がBassモデルと「二重指数」モデル。堂々の最下位は対数正規-対数正規モデルであった。
 推定方法をみると、MLEと累積NLSが良い。学習期間が長いとMLEが優位となる。もっともモデルとの交互作用もあって、model 3やBassモデルはMLEがよい。
 52週目のAPEを指標としても、だいたい似たような結果。

 浸透限界$p$を想定する6モデルについて$\hat{p}$や$P(52)$を$Y(52)$と比べると、いずれも過小評価が起きやすい。いっぽう残りの2モデルでは過大評価が起きやすい。
 このように浸透限界の推定は難しい。Van den Bulte & Lilien (1997 MktgSci.)は浸透限界はなにか別の方法で推定したほうがいいと述べているが[←へー]、それは耐久財の話であって、CPGでは難しいね。

 結論と考察。

 最近の実務家や研究者は、新製品トライアルモデルはどのモデルでもロバストだしモデル間で大差ないと思っているかもしれないが、そうではない。モデル選択は大事です。
 云々。

 ... なかなか面白かった。
 この研究の最大の知見は「シンプルなモデルがよい」だと思うのだが、これは要するに、「この研究で使ったデータでは、トライアル売上はどの新製品でも上に凸な曲線だった」ということを意味しているのではないかと思う。
 とすると、この知見はどこまで一般化できるだろうか。この論文で使ったデータはジュース, クッキー、スナック、ドレッシングのトライアル売上で、いずれもクチコミは効きそうにないが、消費財にだってクチコミが効くカテゴリはあるのではなかろうか(化粧品とか?)。また、この論文の時代と比べて小売の商品管理はもっと発達しているだろう。コンビニのように、商品の回転率をシビアに観察して棚をひんぱんに入れ替えている業態を考えると、売上曲線の初期の立ち上がりがのちの配荷に影響し、S字型のトライアル売上曲線が生じたりしないかしらん。

 どうでもいいけど、論文の最後に「本論文ではなんら複雑なソフトは使ってません。全部Excelのソルバーでやりました。まあ時間はかかったけどな」と書いていて、笑ってしまった。そこを自慢するのね。

論文:マーケティング - 読了:Hardie, Fader & Wisniewski (1998) 消費財トライアル売上予測バトルロイヤル

2019年10月10日 (木)

 仕事の都合で読んでんだけど、それにしても、なぜ俺こんなん読んでるんだろう... こういう話は人間にとって心底どうでもよいことだと思ったから人文学部に入ったのにさ... わけがわからないよ...

 Reibstein, D.J., Farris, P.W. (1995) Market share and distribution: A generalization, a speculation, and some implication. Marketing Science, 14(3), G190-202.
 この論文、いきなり「一般化」という節から始まって面食らうんだけど、この雑誌の"Empirical Generalizations in Marketing"という特集号(?)に掲載されたようなので、おそらくは冒頭で当該トピックに関する経験的知見の一般化をまとめるという縛りかなにかがあったのだろう。

 一般化。

 ここからは、シェアと配荷のconvexな関係をどう説明するかという理論的な話なんだけど、その前に、配荷の指標について。物理配荷率, ACV, PCVについて説明。ACVはブランド扱店の日用品売上を日用品売上総額で割ったもの、PCVはブランド扱店のカテゴリ売上をカテゴリ売上総額で割ったもの(実務家はこの2つをあまり区別していない)。

 話を戻して、理論的説明。
 配荷率とシェアの間の因果関係について。

 関係の形状について。
 最初に次の2点に注意しよう。(1)配荷がゼロならシェアはゼロだし、シェアがゼロなら(棚落ちするから)配荷はゼロになる。(2)シェアはPCVを超えない。
 さて、形状として以下がありうる。

 クロスセクショナルにみて下に凸になる理由。Nuttall(1965)はこう説明している。
 横軸にPCV、縦軸にシェアをとると、各ブランドにおけるシェアの増大は配荷率増大に伴い逓減する(上に凸)。ただしその曲線の高さはブランドによって違う。
 いっぽう小売店の「商品扱いルール」について考えると、シェア増大に伴いPCVは増えるけど、その増大も逓減する(上に凸)。縦横を入れ替えると下に凸になる。
 あるブランドからみたPCV-シェア関係は上に凸だけど、PCVは商品扱いルールで決まるから、結局そのブランドのPCV-シェア曲線と小売からみたシェア-PCV曲線の交点が均衡解になる。各ブランドの均衡解は小売からみたシェア-PCV曲線の上に乗るから、クロスセクションでみるとPCVとシェアの関係は下に凸になる。
 [ちょ、ちょっとまって... 小売の「商品扱いルール」を表す曲線が、シェアを横にとったときに上に凸になるのはなぜ? コンビニみたいに棚が小さい場合、この曲線は上に凸じゃなくてS字型になるのではなかろうか?]

 実証研究... [いくつか紹介されているが、観察研究だった。せめて道具変数とか使った分析があるかと思ったんだけど、それもなさそう]

 インプリケーション。
 実務的には... 配荷とシェアは相互に影響しており、効果は非線形で推定は困難。顧客ロイヤルティが鍵になる(ロイヤルティが高いブランドは、小売にとっては扱うべきで、メーカーにとっては配荷を増やしてもシェアへの効果が小さい)。
 学術的には... 流通チャネルの構造、棚管理意思決定、長期的効果についての研究が必要。そもそもマーケティング・ミックスの中でも流通の研究は乏しいほうだ。
 この論文は消費財の話だったけど他の種類の財についても研究すべき。
 云々。

 ... 仕事の都合で配荷について考える必要に迫られ、なにがなんだか分かんなくなって混乱していたんだけど、Nuttallという人による説明を読んでずいぶんすっきりした(しっかし、1965年の研究なのね...)。
 ことマーケティング・サイエンスに関していえば、仕事の関連で知りたい話は、こういうちょっと古めの論文を探したほうが効率良く探せるような気がする。もっともこれは私の仕事の性質のせいで、たとえばデジタルマーケティング系の華やかなお仕事をなさっていたら、それはもう全然ちがうのでありましょう。

論文:マーケティング - 読了:Reibstein & Farris (1995) 市場シェアと配荷の関係についてこれまでにわかっていること・いないこと

2019年10月 9日 (水)

 どんな分野でもそうだと思うけど、その分野におけるちょっとした通用語で、きちんとした書籍などにはなかなか登場しないんだけど、現場の人はなんとなく知っている、というような言葉があるものだ。そういう言葉を聞くと、なんとなく嬉しくなってしまう。
 いま良い例がぱっと思いつかないんだけど、ずっと前にキリスト教関係の方と話していて、世間話の折にふと「ニッキの人は...」という表現が出てきて、それが日本最大のプロテスタント教派・日本基督教団のことだと気が付いたときは、なんだかちょっと嬉しかった。おおお業界用語だあ、という妙な感動がある。

 三十代も半ばを超えてから、ひょんなことから市場調査の会社に拾っていただいたところ、ブランドの「間口」と「奥行き」という言い回しを聞かされて、え?なんですかそれ?と訊き返した。あんたはこんな言葉も知らんのか、という顔をされたのにはちょっとムッとしたが(知るかいな)、いっけん無関係な日常語がスッと紛れ込むあたり、なんだか通っぽくて楽しくもある。
 どうやら、たとえばあるブランドに接する人の広がりと、そのブランドに対する顧客の関わりの深さを、それぞれ漠然と「間口」「奥行き」と表現しているらしい。抽象概念を空間的に捉えているわけですね。いま検索したら、国内最大手の市場調査会社・インテージの資料に、ブランド認知者に占める購入経験者の割合を「間口」、購入経験者に占める現在使用者の割合を「奥行き」と呼んでいるのがあった。正確にどう定義するかは別にして、まあだいたいそんなニュアンスの言葉なのでありましょう。
 しばらく経って、マーケティング系の英語の論文を読んでいたら、ブランドのdouble jeopardyという言葉が出てきて、これもなかなか意味がわからなかった。辞書を引くと、同じ犯罪で二度裁判を受けることを禁止する法律上の原則 (一事不再理の原則) のことだ、なんて説明がある。余計に混乱したのだが、どうやら、間口の狭いブランドは奥行きも狭くなるよ、というようなことを指しているらしい。

Wilbur, K.C, Farris, P.W. (2014) Distribution and Market Share. Journal of Retailing, 90, 154-167.

 仕事の都合なのでなんだって読みますけど、さすがにここまでくると、「なんで俺こんなの読んでんだ?」という奇妙な感覚があるなあ...

 いわく。
 製品のdistribution[以下、配荷と訳す]と市場シェアの関係については膨大な実証研究がおこなわれている。特に重要な知見のひとつとしてdouble jeopardyが挙げられる。つまり、配荷率1ポイントの増大に伴う売上増大は高シェアなブランドのほうが大きいという現象である。横軸に配荷率、縦軸にシェアをとると下に凸(convex)になるわけだ。
 その理由として以下が考えられている。(1)消費者の選好。(2)小売業者の陳列戦略。(3)小売業者の期待。
 さて、従来の研究はすべてブランド単位であった。ということは、convexな関係はブランドレベルで生じていてSKUレベルで生じていないのかもしれないし、逆かもしれないし、両方で生じているかもしれない。SKUレベルで調べてみよう。

 データは、ACニールセンのスキャナ・データ、CPG、37カテゴリ、SKUレベル、国レベルの配荷率(ACV)と売上金額シェア、2003-2005(四半期別に値があるが年ごとに平均する)。SKUは実に79000以上、年あたりでみたアクティブなSKUでも2200件くらいある。[あーあ... 素人なので失礼なことを書いちゃいますけど、データが売りの研究って感じだなあ]

 結果。
 カテゴリ別に配荷とシェアの関係をみると、たしかにconvexでした。
 4つのモデルを組んでみる。SKUを$k$, 時点を$t$, シェアを$s_{kt}$とする。
 モデル1, カテゴリを無視して
 $s_{kt} = \beta_0 + (ACV_{kt}) \beta_1 + (ACV_{kt})^2 \beta_2 + \epsilon_{kt}$
 モデル2, SKUはあるカテゴリ$c_k$にのみ属するとして
 $s_{kt} = \beta_0 + (ACV_{kt}) \beta_{1c_k} + (ACV_{kt})^2 \beta_{2c_k} + \epsilon_{kt}$
 モデル3, $L$個のカテゴリ特性$x_{cl}$ を考えて、
 $s_{kt} = \sum_l^L x_{c_k l} [(\beta_{0l} + ACV_{kt}) \beta_{1l} + (ACV_{kt})^2 \beta_{2l}] + \epsilon_{kt}$
 モデル4, SKUはカテゴリ$c_k$, ブランド$b_k$に属するとし, $b_k$のカテゴリにおけるランク(1位, 2位, ..., 9位, 10位以下)を$r_{kc}$として
 $s_{kt} = \beta_0 + (ACV_{kt}) \beta_{1r_{kc}} + (ACV_{kt})^2 \beta_{2r_{kc}} + \epsilon_{kt}$
 あてはめると、モデル4,2,3,1の順にRMSEが小さい[そりゃパラメータ数が多いからね]。ホールドアウトに対しても同様。
 モデル1のACVのパラメータをみるとconvex。モデル2をみるとほとんどのカテゴリでconvex。
 モデル3をみると、金額規模がでかいカテゴリでよりconvex (ターンオーバーの頻度が高いので、流通は品切れを避けるために人気商品を並べたがるのだろう)、SKUへの集中度が高いカテゴリでconvex, 美容産業でconvex。モデル4をみると、上位ブランドでよりconvex。
 以上をまとめるとですね、(1)SKUレベルでみても配荷-シェア関係はconvex、(2)その程度はカテゴリの金額規模と集中度とともに強くなる、(3)首位ブランドにおいて強くなる。

 さて。以上の知見は新SKUの上市判断に活かすことができる。
 通常、SKUの上市判断は次のようになされる。まず、上市コストに基づき、とんとんとなるシェアを求める。次に、SKUのポテンシャルに基づき、予測シェアを求める。予測シェアがとんとんシェアを超えていたらGOだ。
 ここで予測シェアを求めるための情報源は4つある。(1)認知率。(2)トライアル率。(3)再購入率と数量。(4)配荷率。
 このうち(1)-(3)はどうにかなるとしても、(4)はガイダンスが乏しい。早い話、上市したいマネージャーは上市後の配荷率を高めに見積もればいいわけだ[←はっはっは]。
 実際、上市が失敗する大きな理由のひとつはマネージャーの過信だということが知られている。マネージャーは異動するので配荷率の予測に責任感を感じない。配荷率の予測をちゃんと記録し、失敗したSKUについてちゃんと反省している組織は少ない。[この論文、メーカーをディスるくだりになると急に生き生きしてくるな...]
 そこでご提案です。配荷率-シェア関係を使いましょう。

 試してみます。
 あるブランドについて、2004年のSKUでもって配荷率とシェアの曲線を求めておく。2005年の新SKUについて、その配荷率のベクトルを$ACV$とし、これを曲線にあてはめて推定した2005年の市場シェアのベクトルを$\hat{s}_{04}(ACV)$とする。実際の市場シェアのベクトル$s_j$に対する説明率指標$R^2$を定義する[式省略]。
 新SKUが8つ以上あった57ブランドについて試してみたら、失敗したSKUを別にすれば、結構あたっている。[なんだかめんどくさい議論になったので読み飛ばした]
 ということは、マネージャーが仮定した配荷率と、それを使って求めたシェア予測が、既存SKUから求めた配荷率-シェアの曲線にあてはまらないようであったら、配荷率の仮定を疑ったほうがいいわけだ。
 云々。

 ... フガフガと無責任に読んでいる分には面白かったんだけど、最後のインプリケーションのところ、なんだかまわりくどい話だなあ。ある配荷率の設定に基づきシェアを予測し、そのシェアと配荷率設定を見比べてチェックするというよりも、(広告予算から予測した)認知率と(製品テストから予測した)トライアル率・リピート率・数量から想定可能な配荷率の上限を求める、というほうがシンプルなのではないだろうか。

 この論文の主旨とはちがうんだけど、消費財の店頭配荷率っていったいどうやって決まってんですかね。きっと配荷率とシェアが相互作用するダイナミクスがあって、そのなかでなにかこう均衡みたいなものが生じているんだろうなあ。そういう研究はないのかしらん。
 上市が失敗する大きな理由のひとつはマネージャーの過信だというくだりで、Camerer & Lavallo (1999, Am.Econ.Rev.), Lowe & Ziedonis (2006, MgmtSci.)というのが挙げられている。面白そう。

論文:マーケティング - 読了:Wilbur & Farris (2014) 配荷率増大が売上に与える効果はシェアが大きい製品において大きい、SKUレベルでみてもやっぱりそうだった

2019年10月 3日 (木)

Hyndman, R.J., Athanasopoulos, G, Shang, H.L. (2013) hts: An R Package for Forecasting Hierarchical or Grouped Time Series.

 階層時系列データを分析するためのRパッケージhtsのvignette。中の人は誰あろう、forecastパッケージで知られるHyndmanさんである。
 ここで階層的時系列というのは、たとえば国レベルの死亡者数時系列があり、これを地域別の時系列とか性別の時系列とに分けることができる、というようなことを指している。

 説明例として2レベルの階層を考える。全体(レベル0)の時系列を$y_t$、レベル1にAとBがあって、その時系列を$y_{A,t}, y_{B,t}$とする。Aはレベル2に子AA, AB, ACを持ち、Bは子BA, BBを持ち、それらの時系列を$y_{AA,t}, \ldots, y_{BB, t}$とする。
 時系列変数のベクトルを考えよう。$\mathbf{y}_t$をこの8本の時系列変数のベクトルとする。$\mathbf{y}_{K,t}$をレベル2の5本の時系列変数のベクトルとする。すると、
 $\mathbf{y}_t = \mathbf{S} \mathbf{y}_{K,t}$
と書ける。ここで$\mathbf{S}$は$8 \times 5$のダミー行列で、1行目($y_t$に対応)はすべて1となり, 2行目($y_{A,t}$)は左から順に1, 1, 1, 0, 0となり、下部の5行だけ取り出すと単位行列になる。なるほどね?

 で、ここでの問題は、8本の時系列すべてに対して関心を持っているという点である。
 以下では、なんらかの方法によって得た、$j(=1,\ldots,8$)本目の時系列の$h$期先予測を$\hat{y}_{j,h}$と書く(ほんとは$h$じゃなくて$T+h|T$という気持ちだが略記する)。これをベース予測と呼ぼう。
 ベース予測は、階層構造に照らしてつじつまが合うとは限らない。つじつまがあうように修正した予測を$\tilde{y}_{j,h}$と書き、これを修正予測と呼ぼう。

 さて、階層的時系列の予測には、ボトムアップ法、トップダウン法、ミドルアウト法がある。さらに我々の考えた最適予測結合法も紹介しよう。

 まずはボトムアップ法。
 上の例でいうと、まずレベル2で$\hat{y}_{AA,h}, \ldots, \hat{y}_{BB,h}$を得る。これがベース予測。つまり、レベル0-1の3本についてはまだ手に入らない。
 で、これを積み上げてレベル1の$\tilde{y}_{A,h}, \tilde{y}_{B,h}$を得て、さらにこれを合計してレベル0の$\tilde{y}_{h}$とする。これが修正予測。つまり、レベル2の5本については修正しない。
 良い点は、累積において情報が失われないという点。悪い点は、レベル2のデータはノイズが多いことが多いので、モデリングが大変だという点。

 お次はトップダウン法。
 最初にレベル0で$\hat{y}_h$を得る。で、これらを割合$p_1, \ldots, p_{m_2}$によってレベル2に配分する。最後にレベル2の時系列を積み上げてレベル1の時系列を得る。
 この方法がうまくいくかどうかは次の3つの要因で決まる。(1)レベル1の予測の正確性。(2)配分割合の正確性。(3)ベース予測の正確性。[← ??? (1)と(3)は同じことじゃないの?]
 配分割合の決め方にはいろいろある。紹介しよう。
 その1, 過去の割合の平均
 $p_j = \frac{1}{T} \sum_t^T \frac{y_{j,t}}{y_t}$
を使う。
 その2, 過去の平均の割合
 $p_j = \sum_t^T \frac{y_{j,t}}{T} / \sum_t^T \frac{y_t}{T}$
を使う。
 その3、割合を予測する。まず、すべての時系列についての$h$期先予測を手に入れる。で、レベル1から順に、$h$期先予測に占めるそのノードの割合を求める。これを一番下のレベルまで繰り返す。[数式はめんどくさいので略]
 配分割合をどうやって決めるかはともかくとして、トップダウン法の弱点は、仮にベース予測が不偏であったとしても、修正予測は不偏じゃない、という点。

 ミドルアウト法。どこかのレベルに注目し、そのレベルより上に向かってはボトムアップ法、そのレベルより下に向かってはトップダウン法を使う。

 お待たせしました、我々が考えた最適予測結合法です。
 この方法では、まずは全レベルで個別に$h$期先予測値を得る。そのベクトルを$\mathbf{\hat{y}}_h$としよう。で、
 $\mathbf{\hat{y}}_h = \mathbf{S} \mathbf{\beta}_h + \mathbf{\epsilon}_h$
というモデルを考える。$\mathbf{\epsilon}_h$は$h$期先予測誤差ではなくて、単にこの回帰式における誤差である。その共分散行列を$\mathbf{\Sigma}_h$としよう。
 一番下のレベルの$h$期先予測誤差を$\mathbf{\epsilon}_{K,h}$としよう。$\mathbf{\epsilon}_h \approx \mathbf{S} \mathbf{\epsilon}_{K,h}$と仮定すれば、$\mathbf{\beta}_h$の線形不偏推定量は
 $\mathbf{\tilde{\beta}}_h = \mathbf{S (S' S)^{-1} S' \hat{y}_h}$
となるので、これを求めて、上のモデルに放り込めば、修正予測$\mathbf{\tilde{y}}_h$が手に入る。[なるほどー]

 ここからはhtsパッケージの紹介。
 関数hts()は、階層構造の指定と、一番下のレベルの時系列データを食って、全レベルの時系列を持つオブジェクトを返す。階層がなくて単にグループがあるだけならばgts()でもよい。
 関数forecast()はこのオブジェクトを食って$h$期先予測を返す。予測モデルとしてはarima, ets, ランダムウォークをご用意している。で、ボトムアップ予測とか、トップダウン予測とか、いろいろできるらしい。
 
 forecastパッケージのforecast()とは異なり、どうやら説明変数は使えないようだ。自分の仕事のなかでは、利用場面がかなり限られてくる...がっくり...

論文:データ解析(2018-) - 読了:Hyndman et al. (2013) 階層時系列データ分析のためのパッケージ hts

« 2019年9月 | メイン | 2019年11月 »

rebuilt: 2022年3月 1日 20:14
validate this page