SSブログ

【時系列】広告効果をモデリングする ~その5 外生変数を入れる(広告効果が一定)~ [時系列解析 / 需要予測]

広告のありなしで時系列にどのような影響を与えるかモデルかしたいのですが、広告効果はいずれの期間も一定と考えるのか、広告効果も時間とともに変動すると考えるのか。

まずは、話を簡単にするために「広告効果はいずれの期間も一定」とします。

reg_mean[i] = mu[i] + b*x_cm[i]

この部分ですが、bは固定のパラメータを与えることで推定できるのですが、実際は、時間とともに水準も変化するし、広告効果も変動していると考えた方が状態空間モデルっぽい書き方かと思います。


data {
  int T;           // データ取得期間の長さ
  vector[T] y;     // 観測値
  vector[T] x_cm;  // 説明変数
}

parameters {
  vector[T] mu;       // 状態の推定値(水準成分)
  real b;             // 
  real s_w;  // 過程誤差の標準偏差
  real s_v;  // 観測誤差の標準偏差
}

transformed parameters{
  vector[T] reg_mean;
  for(i in 1:T){
    reg_mean[i] = mu[i] + b*x_cm[i];
  }
}

model {
  for(i in 2:T) {
    mu[i] ~ normal(mu[i-1], s_w);
  }

  for(i in 1:T) {
    y[i] ~ normal(reg_mean[i], s_v);
  }
}


nice!(0)  コメント(0) 
共通テーマ:学問

【時系列】広告効果をモデリングする ~その6 広告効果が時間とともに変動~ [時系列解析 / 需要予測]

広告のありなしで時系列にどのような影響を与えるかモデルかしたいのですが、広告効果はいずれの期間も一定と考えるのか、広告効果も時間とともに変動すると考えるのか。

広告効果はいずれの期間も一定
https://skellington.blog.ss-blog.jp/2020-11-01

こちらの続き。

広告効果が時間とともに変動するとのことなので、

reg_mean[i] = mu[i] + b*x_cm[i]
⇒ reg_mean[i] = mu[i] + b[i] * x_cm[i];

このように時変係数(広告効果)をベクトル化して書いておきます。


data {
  int T;           // データ取得期間の長さ
  vector[T] y;     // 観測値
  vector[T] x_cm;  // 説明変数
}

parameters {
  vector[T] mu;       // 状態の推定値(水準成分)
  vector[T] b;        // 時変係数の推定値
  real s_w;  // 過程誤差の標準偏差
  real s_t;  // 時変形数の標準偏差
  real s_v;  // 観測誤差の標準偏差
}

transformed parameters{
  vector[T] reg_mean;
  for(i in 1:T){
    reg_mean[i] = mu[i] + b[i] * x_cm[i];
  }
}

model {
  // 状態方程式に従い、状態が遷移する
  for(i in 2:T) {
    mu[i] ~ normal(mu[i-1], s_w);
	b[i] ~ normal(b[i-1], s_t);
  }
  
  // 観測方程式に従い、観測値が得られる
  for(i in 1:T) {
    y[i] ~ normal(reg_mean[i], s_v);
  }
}


nice!(3)  コメント(0) 
共通テーマ:学問

【時系列】広告効果をモデリングする ~その7 周期性をモデル化~ [時系列解析 / 需要予測]

ARIMAモデルとかだと、元系列をトレンド+季節成分+不規則変動に分けたりします。
状態空間モデルも同じように周期性(季節成分)をモデル化することができます。

ポイントは、季節成分の部分。
x_seasonal[i] ~ normal(-sum(x_seasonal[(i-11):(i-1)]), sd_sea);

例えば、月別データ(周期が12か月)の場合は、
a1 + a2 + ... + a12 = ε, ε~N(0, σ2)
と周期成分の合計が0になるように書くことができ、
a1 = -Σ(a2 + ... + a12)
となっています。

■ rのコード

AirPassengers <- c(112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118,
           115, 126, 141, 135, 125, 149, 170, 170, 158, 133, 114, 140,
           145, 150, 178, 163, 172, 178, 199, 199, 184, 162, 146, 166,
           171, 180, 193, 181, 183, 218, 230, 242, 209, 191, 172, 194,
           196, 196, 236, 235, 229, 243, 264, 272, 237, 211, 180, 201,
           204, 188, 235, 227, 234, 264, 302, 293, 259, 229, 203, 229,
           242, 233, 267, 269, 270, 315, 364, 347, 312, 274, 237, 278,
           284, 277, 317, 313, 318, 374, 413, 405, 355, 306, 271, 306,
           315, 301, 356, 348, 355, 422, 465, 467, 404, 347, 305, 336,
           340, 318, 362, 348, 363, 435, 491, 505, 404, 359, 310, 337,
           360, 342, 406, 396, 420, 472, 548, 559, 463, 407, 362, 405,
           417, 391, 419, 461, 472, 535, 622, 606, 508, 461, 390, 432)
head(AirPassengers, 10)
ts.plot(log(AirPassengers), type="o", ylab="AirPassengers")

# データの準備
data_list <- list(
  y = log(AirPassengers), 
  T = length(AirPassengers)
)

# モデルの推定
seasonal_model <- stan(
  file = "D:\\Projects\\LM\\arima\\seasonal_model_1.stan",
  data = data_list,
  chains = 3,
  seed = 1234
)


■ stanファイル

data {
  int T;         // データ取得期間の長さ
  vector[T] y;   // 観測値
}

parameters {
  vector[T] mu;          // 水準成分の推定値(過程誤差)
  vector[T] x_seasonal;  // 季節成分の推定値(過程誤差)
  real sd_mu;   // 水準成分の標準偏差(過程誤差)
  real sd_sea;  // 季節成分の標準偏差(過程誤差)
  real sd_v;    // 観測誤差の標準偏差
}

transformed parameters {
  vector[T] alpha;
  for (i in 1:T) {
    alpha[i] = mu[i] + x_seasonal[i];
  }
}

model {
  // 水準成分
  for(i in 3:T) {
    mu[i] ~ normal(2*mu[i-1] - mu[i-2], sd_mu);
  }

  // 季節成分
  for(i in 12:T) {
    x_seasonal[i] ~ normal(-sum(x_seasonal[(i-11):(i-1)]), sd_sea);
  }  

  // 観測モデル
  for(i in 1:T) {
    y[i] ~ normal(alpha[i], sd_v);
  }
}


nice!(0)  コメント(0) 
共通テーマ:学問

【時系列】広告効果をモデリングする ~その8 将来を予測する方法~ [時系列解析 / 需要予測]

その1からその7まではあくまでも既存のデータに対するフィットだけでした。
stanを使って将来のデータに対してどのように予測するか?

「generated quantities」を使うことで、将来を予測することができます。

例えば、

generated quantities{
  vector[T + pred_term] mu_pred;
  vector[T + pred_term] x_seasonal_pred;
  mu_pred[1:T] = mu;
  x_seasonal_pred[1:T] = x_seasonal;

  for(i in 1:pred_term){
    mu_pred[T + i] = normal_rng(2*mu_pred[T+i-1] - mu_pred[T+i-2], sd_mu);
  }
  for(i in 1:pred_term){
    x_seasonal_pred[T + i] = normal_rng(-sum(x_seasonal_pred[(T+i-11):(T+i-1)]), sd_sea);
  }
}

となります。

トレンドの予測が重要で、直近のトレンドから大きくトレンドが変化していると上手く予測できていません。

AirPassengersの例だと、最後3年分を予測期間とした場合、
予測のトレンド:赤色
実際のトレンド:青色
となり、予測値は実測値よりも下ぶれてしまいます。





一方、最後1年分を予測期間とした場合、
トレンドが大きく変化していないので、予測値と実測値がほぼ同じとなっていることが確認できるかと思います。




nice!(3)  コメント(0) 
共通テーマ:学問

伊香保 2020 ~ 岩宿遺跡 [【旅行】関東]

GoToトラベルで群馬(伊香保)に行ってきました。

まずは、岩宿遺跡。
旧石器時代って火山活動が盛んで日本列島には人が住んでいないと思われていたのですが、この岩宿遺跡が相沢忠洋によって発見されたことがきっかけで歴史が大きく変わりました。
教科書とかで一度は聞いたことがある名前かもしれませんね。


「旧石器時代」の発見・岩宿遺跡 (シリーズ「遺跡を学ぶ」100)

「旧石器時代」の発見・岩宿遺跡 (シリーズ「遺跡を学ぶ」100)

  • 作者: 小菅将夫
  • 出版社/メーカー: 新泉社
  • 発売日: 2014/12/19
  • メディア: 単行本



館内は基本撮影不可なのですが、ナウマンゾウの前だけは撮って良いとのことでした。



北から入ってきたのが、マンモス(毛がふさふさしている象)。
そして、南から来たのが、ナウマンゾウ(普通の象に近い)。

日本列島は中国大陸とつながっていたので、多くの動物が来ました。
それを追って人もやってきたようです。

岩宿遺跡に行ってみると、案内をしてくれる人がいました。
当時の相沢忠洋の話をたくさんしてくれました。
教科書で見るのも良いですが、このように貴重な生の話を聴けるって大切だなって思いました。

nice!(0)  コメント(0) 
共通テーマ:旅行

伊香保 2020 ~ 水沢うどん 元祖田丸屋 [【旅行】関東]

GoToトラベルで群馬(伊香保)に行ってきました。

岩宿遺跡を後にして伊香保に向かいました。
その途中で、水沢うどんで有名な田丸屋でお昼ご飯。

三大うどんというのがあり、
・香川県の「讃岐うどん」
・秋田県の「稲庭うどん」
・群馬県の「水沢うどん」
らしい。

水沢うどんの代わりに、五島うどんが入ったり、氷見うどんがはいったりするようです。w

「元祖 田丸屋」ですが、1582年創業と言われています。
本能寺の変があった年といえば、相当昔なことが想像できるかと思います。

「もりうどん」と「古伝 喜利麦」を食べました。

「もりうどん」は、万人受けする美味しいうどんでした。
もりうどん

「古伝 喜利麦」は、麦から作ったそばらしく、香りがとても豊かです。
もちもち感が強いので、好き嫌いが分かれるところ。
古伝 喜利麦

nice!(0)  コメント(0) 
共通テーマ:旅行

伊香保 2020 ~ 水沢観音 [【旅行】関東]

GoToトラベルで群馬(伊香保)に行ってきました。

水沢うどんを食べて、そのまま旅館に行こうかと思ったのですが、水沢観音を発見。

ここは、飛鳥時代に創建されたといわれているかなり古いお寺です。
千三百年の歴史だそうです。

子供たちが、如来、菩薩、観音の違いについて聞いてきたので説明しました。
なかなか区別が難しいですが、ざっくりいえば、

如来:仏教の中で一番偉い仏様。
菩薩、観音:如来の次に偉い人。修行中で56億7千万年後に仏さまになれるらしい。
その下にランクするのが、少し顔が怖い明王だったり、天だったりします。

ちなみに、水沢観音は鐘を突くことができるので、大人だけでなく、子供たちも楽しめると思います。



nice!(0)  コメント(0) 
共通テーマ:旅行

伊香保 2020 ~ 伊香保を歩く [【旅行】関東]

GoToトラベルで群馬(伊香保)に行ってきました。

伊香保の街を散策。
ちょうど夕方くらいから河鹿橋付近がライトアップされているとのことで行ってきました。

伊香保

石段を登ると、伊香保神社あります。
伊香保神社からさらに10分ほど歩いた場所が河鹿橋。

伊香保神社の紅葉がライトアップされていると勘違いしている人もいるみたいなので、注意が必要です。

伊香保 河鹿橋 紅葉 ライトアップ

かなり密状態でしたが・・・ライトアップされた紅葉はとても美しかったです。
石段の途中では、射的とか駄菓子屋があり、古きよき昭和な感じがしました。

なんとなく懐かしい感じがした伊香保の街。

伊香保 石段

nice!(0)  コメント(0) 
共通テーマ:学問

伊香保 2020 ~ 伊香保温泉 旅館 ふくぜん [【旅行】関東]

GoToトラベルで群馬(伊香保)に行ってきました。

伊香保温泉 旅館 ふくぜん
https://www.jalan.net/yad369460/

こちらに泊まりました。

部屋は二間続きの広い部屋。
食事も部屋で取ることができます。

伊香保温泉 旅館 ふくぜん

伊香保温泉 旅館 ふくぜん

量は多くもなく少なくもなく、ちょうどいい感じ。
ご飯の量が多いので少し残してしまいました。

伊香保温泉 旅館 ふくぜん

旅館自体が少し古い気がします。

後、石段の場所から離れているので、次は石段から近い旅館が良いかなって思いました。

nice!(3)  コメント(0) 
共通テーマ:旅行

伊香保 2020 ~ 伊香保おもちゃと人形自動車博物館 [【旅行】関東]

GoToトラベルで群馬(伊香保)に行ってきました。

伊香保おもちゃと人形自動車博物館
http://www.ikaho-omocha.jp/

伊香保おもちゃと人形自動車博物館

伊香保おもちゃと人形自動車博物館

行ってみると意外と面白い!

テディベアから始まり、昭和の世界、自動車の世界、映画の世界などなど次々と色々な世界が出てきます。

ただ単に展示しているのではなく、思わず「おぉ~!」と声をあげてしまうような作りになっているのが上手いなって思いました。

子供から大人まで楽しめますし、割と広いので、時間に余裕をもって行くと楽しめると思います。

nice!(0)  コメント(0) 
共通テーマ:旅行

伊香保 2020 ~ 本格的な十割そば作り体験 [【旅行】関東]

GoToトラベルで群馬(伊香保)に行ってきました。

ふれあいの家
https://www.jalan.net/kankou/spt_guide000000182561/

ここで本格的な十割そば作り体験。

ふれあいの家 十割そば作り体験

伊香保に行く直前にテレビでそば作り体験を娘が見たのがきっかけ。
やってみたいってことで、急遽探して予約しました。

4人前なので、それなりの分量があります。
混ぜて、こねて、平たくして、だんだんと蕎麦らしくなってきました。

ふれあいの家 十割そば作り体験

ふれあいの家 十割そば作り体験

切るところは危ないので大人が切るのですが、それ以外は子供でも十分に体験できると思います。

自分で作った蕎麦は、最後に隣のレストランで食べることができます。
蕎麦作り体験料金には、蕎麦作りとレストランでの食事が付いていますが、オプションで天ぷらを付けることができます。
大人2名、子供2名で、天ぷらの盛り合わせ1つで十分な量でした。

ふれあいの家 十割そば作り体験

少しボリュームが多いかなと思いましたが、自分で作った蕎麦は美味しくて、完食!
満足な体験でした。

nice!(3)  コメント(0) 
共通テーマ:旅行

伊香保 2020 ~ 矢瀬親水公園 [【旅行】関東]

伊香保への旅ですが、一番最初は岩宿遺跡(旧石器時代)でした。

〆は、月夜野はーべすと 道の駅「矢瀬親水公園」。

こちらは、矢瀬遺跡(3500年から2300年前の縄文時代)を見ることができます。
みなかみ町月夜野郷土歴史資料館があって発掘された資料が展示されています。



nice!(3)  コメント(0) 
共通テーマ:旅行

変形性膝関節症 [健康 / ビューティー]

昨年末に膝に水が溜まっていますと言われたのですが、そのまま放置したらひとまず落ち着きました。
それからしばらくして忘れたころに、膝の関節が痛くなりだした。

再発かなと思い病院に行ったら、「変形性膝関節症」ですねと。

要は・・・
・加齢に伴い膝の軟骨がすり減ってくる
・骨と骨がぶつかって痛い
・片方の足をかばいながら生活することで、もう片方も痛くなりやすい
とのことでした。

幸い、初期の変形性膝関節症だったので、筋肉をつけることで元通りの生活ができるようになるらしい。
特に気を付ける筋肉は、膝上の内ももあたりの筋肉をつけると良いそうな。

新型コロナウィルスの影響であまり動かなくなっていたのが原因かもしれないですね。
積極的に体を動かす習慣をつけたいと思います。

nice!(3)  コメント(0) 
共通テーマ:健康

スキー 2020 サホロへ [【旅行】北海道]

なんだかんだと毎年行っているスキーですが、今年は予約するのが出遅れました。。。
また、GoToトラベルの関係で結構予約が埋まっていて、あまり空いていない!

JAL経由で予約をしようかと思ったら既に良いところは完売していたので、今年はANA経由で予約をすることにしました。

北海道スキー 2016 初日 大雪の北海道
https://skellington.blog.ss-blog.jp/2016-12-25

ここ最近はルスツでしたが、サホロにはどうやら4年前に行ったみたいです。

少し小さめのコースですが、初心者向けのコースが多いので今年は長女のレベルアップ向けかなって思っています。

なんだかんだと年末の足音が聞こえてきます・・・

nice!(1)  コメント(0) 
共通テーマ:旅行

リングフィット アドベンチャー、ついに入手! [ゲーム]

リングフィット アドベンチャー | Nintendo Switch | 任天堂
https://www.nintendo.co.jp/ring/

ガッキーが可愛すぎて品薄状態が続いているリングフィットアドベンチャーですが、ついに!入手できました~♪

やってみると意外と良い!
きちんと考えられて作られていると思いました。

自分だけでなく、子供の運動不足も解消できそうです。

nice!(0)  コメント(0) 
共通テーマ:ゲーム

GoToイート予約、終了 [時事 / ニュース]

GoToイート終了してしまいましたね。
予約サイトで予約できる飲食店は混んでいて、それ以外はガラガラという両極端だった気がします。

GoToイート予約が終了してもいきなりレストランがスカスカになるかといえば恐らくそうではない。
ポイント9割未使用だとか。

つまり、みんなせっせとGoToイートで予約しているけど、ポイントはまだ使われていない。
また、有効期限が2か月と短めなので、これからは貯めたポイントを使って予約してくれる人がいるのでしばらくはだ丈夫かと思います。

ただ、2か月後でどうなるか。
本当は大したことがない新型コロナですが、いつまでも怖い怖いと不安を煽っていたり、いつまでも本日の感染者数が○○名を超えましたとかって言っているようでは、閉店する飲食店が爆増してくると思います。

さらに、リモートワークが進んでしまっているので(良くも悪くも)、飲食を利用する人自体が減ってしまっている。
また、ボーナスカットという人も多く、お財布の中身が減ってしまえば、飲食店もそうだし、旅行業界自体もお先真っ暗な状態が続きそうです。

将来の日本、将来の若者の事を考えるとこのままで良いわけがなく、一人一人の積極的な活動が大切かなと思っています。

nice!(3)  コメント(0) 
共通テーマ:ニュース