Chapter12:時間や空間を扱うモデル
大阪電気通信大学 情報通信工学部
小森 政嗣
『StanとRでベイズ統計モデリング』読書会(Osaka.Stan#6)
自己紹介
• 小森 政嗣(こもりまさし)
• 大阪電気通信大学
情報通信工学部 情報工学科
• 様々な時系列データを扱ってきた
– ラットやサルの電気生理
– 合コン・カウンセリング・授業場面の
体の動き
– ツイッターの投稿の時間的変化
– 気分障害患者の日内活動量パタン
ツイッターでこんなつぶやきを見つけた
※元ツイートは削除されている
こんなグラフがあって「XX時
には野生型と変異体で差が
あります」を言いたいときに
使う検定がわからなくて時
間が溶けてる。各時刻で野
生型 vs 変異体のt-testを
するのはよくなさそうなのは
わかる。
グラフは下記サイトから引用
二つの時系列データの間に「差」があるか判断するには - StatModeling Memorandum
http://statmodeling.hatenablog.com/entry/difference-between-time-courses
野生型
変異体
ツイッターでこんなつぶやきを見つけた
※元ツイートは削除されている
二つの時系列データの間に「差」があるか判断するには - StatModeling Memorandum
http://statmodeling.hatenablog.com/entry/difference-between-time-courses より引用
野生型
変異体
• このつぶやきに関する「Togetterまと
め」から抜粋
– 単に平均値を比較すればいい
– 時刻ごとt検定で連続N時刻以上有意で
OK みたいなやり方
• ↑多重検定補正が必要だろ
• ↑時系列データに対して,多重検定補正
はおかしい
– 拡張ディッキー–フラー検定の後,
変化点検出
– クラスター並べ替え検定
– 変化点検出を組み込んだ状態空間モデ
ル(アヒル本の中の人)
こんな単純なデータに対する分析であっても,
各々のバックグラウンドによって提案する方法が異なる
時系列解析のモデルを考えるときに必要なこと
• 様々な時系列分析手法がある
• 手法の違いは,基本的には「自己相関」と
どのように向き合うのかの違い
– 自己相関と正面から向き合う方法
• 「トレンド」「季節性」などの様々な自己相関を考慮する
• 状態空間モデルはここに含まれる
– 自己相関を消す方法
• 周波数解析など
12章では時空間的な自己相関を考慮に
入れた「状態空間モデル」を扱っている
12章のアウトライン
12.1 状態空間モデルことはじめ
ローカルレベルモデル・ローカル線形トレンドモデル
12.2 季節調整項
ダミー変数を使った季節成分の調整
12.3 変化点検出
12.4 その他の拡張方法
トレンド項の工夫,時間間隔不等の対処,複数のパラメータ
12.5 時間構造と空間構造の等価性
12.6 1次元の空間構造
みんな大好き久保緑本11章のデータでマルコフ場モデル
12.7 2次元の空間構造
12.8 地図を使った空間構造
状態空間モデルことはじめ(概要)
• 状態空間モデルでは真の状態𝜇と観測値𝑌を区別する
– 真の状態は直接は観測できない
– 観測値は時々刻々得られる
真の状態𝜇
観測値𝑌
𝜇[1] 𝜇[2] 𝜇[𝑇]
𝑌[2]𝑌[1] 𝑌[𝑇]
⋯
⋯
システムモデル(状態方程式)
「真の状態」の前後の関係式
観測モデル(観測方程式)
「真の値」は観測値に
その都度反映される
状態空間モデルことはじめ(概要)
• 一番簡単なローカルレベルモデル(酔歩+ノイズ)の例
– 12.1.3節■モデル式12−2■(1階差分のトレンド項モデル)
𝜇 𝑡 ~ Normal 𝜇 𝑡 − 1 , 𝜎𝜇 システムモデル(状態方程式)
𝑌 𝑡 ~ Normal 𝜇 𝑡 , 𝜎 𝑌 観測モデル(観測方程式)
真の状態𝜇
観測値𝑌
𝜇[1] 𝜇[2] 𝜇[𝑇]
𝑌[2]
𝑌[1] 𝑌[𝑇]
⋯
システムモデル
観測モデル
⋯
+𝜀 𝜇1 +𝜀 𝜇2 +𝜀 𝜇𝑇−1
+𝜀 𝑌1
+𝜀 𝑌2
+𝜀 𝑌𝑇
(状態撹乱項) (状態撹乱項)
(観測撹乱項)
(観測撹乱項)
状態空間モデルことはじめ(書き方)
ローカルレベルモデルを例に
• 本書でのモデルの書き方
𝜇 𝑡 ~ Normal 𝜇 𝑡 − 1 , 𝜎𝜇
𝑌 𝑡 ~ Normal 𝜇 𝑡 , 𝜎 𝑌
• こんな風に書かれることも
𝜇 𝑡 = 𝜇 𝑡−1 + 𝜀 𝜇 𝜀 𝜇~NID(0, 𝜎𝜇)
𝑦𝑡 = 𝜇 𝑡 + 𝜀 𝑌 𝜀 𝑌~NID(0, 𝜎 𝑌)
• 一般的には
𝛍t = 𝐓𝐭 𝛍𝐭−𝟏 + 𝐑 𝐭 𝛆 𝛍
𝐲𝐭 = 𝐙𝐭 𝛍𝐭 + 𝛆 𝐘
• Stanでの(スマートな)書き方
model {
mu[2:T] ~ normal(mu[1:(T-1)], s_mu);
Y ~ normal(mu, s_Y);
}
• Stanでの(わかりやすい)書き方
model {
for( t in 2 : T){
mu[t] ~ normal(mu[t-1], s_mu);
}
Y ~ normal(mu, s_Y);
}
システムモデル(状態方程式)
観測モデル(観測方程式)
ローカルレベルモデル
(「1階差分のトレンド項」を考慮したモデル)
• ローカルレベルモデルは
「ランダムウォークプラスノイズモデル」
とも呼ばれる
• 𝜇に正規ノイズ(状態撹乱項)𝜀 𝜇が累積加算されていく過程
𝜇 𝑡 = 𝜇 𝑡 − 1 + 𝜀 𝜇 𝑡 𝜀 𝜇 𝑡 ~Normal 0, 𝜎𝜇
12.1.1 – 12.1.5
pp. 231 - 233
初期値=0, σμ=1 に設定した
for (t in 2:N)
y[t] <- rnorm(1, y[t-1], sigma)
• ランダムウォーク(酔歩)とは?
描いてみた
ローカルレベルモデル
(「 1階差分のトレンド項」を考慮したモデル)
• ローカルレベルモデルはランダムウォークに観測撹乱項が加
わった観測値𝑌 から, 以下のパラメータを推定する
• 𝜇[𝑡],𝜎𝜇,𝜎 𝑌
12.1.1 – 12.1.5
pp. 231 - 233
真の状態𝜇
観測値𝑌
𝜇[1] 𝜇[2] 𝜇[𝑇]
𝑌[2]
𝑌[1] 𝑌[𝑇]
⋯
システムモデル
観測モデル
⋯
+𝜀 𝜇1 +𝜀 𝜇2 +𝜀 𝜇𝑇−1
+𝜀 𝑌1
+𝜀 𝑌2
+𝜀 𝑌𝑇
(状態撹乱項) (状態撹乱項)
(観測撹乱項)
(観測撹乱項)
𝜇 𝑡 ~ Normal 𝜇 𝑡 − 1 , 𝜎𝜇 𝑡 = 2, … , 𝑇 (12.1)
𝑌 𝑡 ~ Normal 𝜇 𝑡 , 𝜎 𝑌 𝑡 = 1, … , 𝑇 (12.2)
ローカルレベルモデル
(「 1階差分のトレンド項」を考慮したモデル)
Stanでやってみよう
• イベントの21日分の来場者数データからパラメータを推定
12.1.1 – 12.1.5
pp. 231 - 233
図12.1(右) イベント来場者
data {
int T;
int T_pred;
vector[T] Y;
}
parameters {
vector[T] mu;
real<lower=0> s_mu;
real<lower=0> s_Y;
}
model {
mu[2:T] ~ normal(mu[1:(T-1)], s_mu);
Y ~ normal(mu, s_Y);
}
model12-2.stan(抜粋)
システムモデル(状態方程式)
観測モデル(観測方程式)
ローカルレベルモデル
(「 1階差分のトレンド項」を考慮したモデル)
Stanでやってみよう
• 結果
12.1.1 – 12.1.5
pp. 231 - 233
• 推定できた
• 真の状態𝜇 𝑡
• 状態撹乱項のパラメータ𝜎𝜇
• 観測撹乱項のパラメータ𝜎 𝑌
図12.3(左; 一部改変) ベイズ信頼区間
ローカルレベルモデル
(「 1階差分のトレンド項」を考慮したモデル)
ついでに今後の予測もStanでやってみよう
• generated quantitiesで将来の来場者の予測もできる
12.1.1 – 12.1.5
pp. 231 - 233
generated quantities {
vector[T+T_pred] mu_all;
vector[T_pred] y_pred;
mu_all[1:T] = mu;
for (t in 1:T_pred) {
mu_all[T+t] = normal_rng(mu_all[T+t-1],
s_mu);
y_pred[t] = normal_rng(mu_all[T+t], s_Y);
}
}
※もちろんgenerated quantities
を使わずにRで乱数を発生させて予
測することもできるし,また,将来の
値を「欠損値」とみなしてmodel{}内で
予測することも可能(「Stanで体重の
推移をみつめてみた(状態空間モデ
ル) @kosugittiさん参照)
「ガキの使いとちゃうねんぞ」という
レベルの予測.
もっと減っていきそうなのに…
所詮はランダムウォークモデル.
できるのはこの程度
ローカルレベルモデルでは
流石にモデルが単純すぎるのでは?
2階差分モデル
(「 2階差分のトレンド項」を考慮したモデル)
• 一つ前の状態だけでなく,2つ前
の状態からの変化も考慮できな
いか?
– 「傾き」を考慮すれば良い
• 「傾き」とは?
– 2つ前から1つ前への変化量
– 酔歩するオッサンの例で言えば
「オッサンが歩く速度」を考慮す
ることと同じ
12.1.7
pp. 233 - 235
将来はもっと
下がっていき
そうな気がする
さっきやったやつ(model12-2.stan)
こんな感じになれば…
これからやるやつ(model12-4.stan)
2階差分モデル
(「 2階差分のトレンド項」を考慮したモデル)
12.1.7
pp. 233 - 235
• 1階差分のトレンド項モデル(model12-2.stan)
𝜇 𝑡 = 𝜇 𝑡 − 1 + 𝜀 𝜇 𝑡 − 1
• 2階差分のトレンド項モデル(model12-4.stan)
𝜇 𝑡 = 𝜇 𝑡 − 1 + 𝜇 𝑡 − 1 − 𝜇 𝑡 − 2 + 𝜀 𝜇 𝑡 − 2
= 2𝜇 𝑡 − 1 − 𝜇 𝑡 − 2 + 𝜀 𝜇 𝑡 − 2 (12.3)
一つ前 状態撹乱項
一つ前 状態撹乱項
傾き(単位時間あたりの変化量)
2階差分を考えるとなにがうれしいのか?
• 推定された𝜇の変化が滑らかになる(平滑化される)
• トレンドを考慮した予測ができる
2階差分モデル
(「 2階差分のトレンド項」を考慮したモデル)
Stanでやってみよう
12.1.7
pp. 233 - 235
• 確かになめらか
• 予測値も自然
図12.3(右) ベイズ信頼区間
model12-4.stan(抜粋)
※小森注:この「 2階差分のトレンド項」モデルは実際にはあまり使われな
いように思います.そのかわり「トレンド方程式」を状態方程式に加えた
「ローカル線形トレンドモデル」のほうが用いられるかな.
𝜇 𝑡 ~ Normal 𝜇 𝑡 − 1 + 𝑣[𝑡], 𝜎𝜇 状態方程式(レベル)
𝑣 𝑡 ~ Normal 𝑣 𝑡 − 1 , 𝜎𝑣 状態方程式(トレンド)
𝑌 𝑡 ~ Normal 𝜇 𝑡 , 𝜎 𝑌 観測方程式
季節要素を考慮したモデル 12.2
pp. 235 - 238
• 周期性(単なる変動ではなく)が
あるデータを分析する場合,
「季節調整項」を考慮する
• 季節調整項とは?(ガリガリ君最初の1
年間の四半期の売上を考える)
図12.4(左;一部改変)某「季節もの」の四半
期ごとの販売数.特定のシーズンだけよく
売れることがわかる
ベースライン𝜇=18.3
春 夏 秋 冬
-0.2
5.4
-1.9 -3.3
• ベースラインからの凸凹が「季節調整項」
• 季節調整項を全部足すと
−0.2 + 5.4 + −0.9 + (−3.3) ≅ 0
• つまり,春夏秋の3つの季節調整項が与えられ
れば,冬の季節調整項は自動的に求まる
季節要素を考慮したモデル
12.2
pp. 235 - 238
• 周期𝐿の周期データであれば𝜀 𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 は小さい値になる
𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 + 𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 − 1 + ⋯ + 𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 − 𝐿 − 1 = 𝜀 𝑠𝑒𝑎𝑠𝑜𝑛[𝑡]
• ガリガリ君の場合であれば(ただし春= 𝑡とすると)
𝑠𝑒𝑎𝑠𝑜𝑛 春 + 𝑠𝑒𝑎𝑠𝑜𝑛 夏 + 𝑠𝑒𝑎𝑠𝑜𝑛 秋 + 𝑠𝑒𝑎𝑠𝑜𝑛 冬 = 𝜀 𝑠𝑒𝑎𝑠𝑜𝑛[𝑡]
• ここで𝜀 𝑠𝑒𝑎𝑠𝑜𝑛[𝑡]が正規分布𝒩(0, 𝜎𝑠𝑒𝑎𝑠𝑜𝑛
2 ) に従うとすると
𝑙=0
𝐿−1
𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 − 𝑙 = 𝜀 𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 𝜀 𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 ~Normal(0, 𝜎𝑠𝑒𝑎𝑠𝑜𝑛)
𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 = −
𝑙=1
𝐿−1
𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 − 𝑙 + 𝜀 𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 𝜀 𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 ~Normal(0, 𝜎𝑠𝑒𝑎𝑠𝑜𝑛)
※春夏秋冬を全部足した値は平均0の正規分布に従う
※ある季節(春)の季節調整項は残りの季節(夏秋冬)の合計+𝜀 𝑠𝑒𝑎𝑠𝑜𝑛になる
この関係式をStanのモデルに入れてやればいいだけ
季節要素を考慮したモデル
Stanでやってみよう
12.2
pp. 235 - 238
model12-6.stan
𝑙=1
𝐿−1
𝑠𝑒𝑎𝑠𝑜𝑛 𝑡 − 𝑙
modelに「Y ~ normal(mu + season, s_Y);」
と書いてtransformed parametersを消しても
特に問題ないけど,y_meanを出力するためにこの
ように書いているのかな?
推定されたトレンド項𝜇 𝑡
季節調整項𝑠𝑒𝑎𝑠𝑜𝑛 𝑡
変化点検出
(システムノイズに非ガウス分布がある場合)
12.3
pp. 238 - 240
model12-2.stan(一部改変)
NormalをCauchyに変更
非常にノイジーなデータなので「裾が重い」
Cauchy分布をシステムノイズに使ってみたら
_人人人人人人人_
> 収束しねえ <
 ̄Y^Y^Y^Y^Y^Y ̄
裾の重い部分をのステップサイズがどうしても
小さくなってしまう.ヒントはStanマニュアル20
章“Optimizing Stan Code”の
“Reparameterizing the Cauchy”にある
Normal
Cauchy
「裾が重い」とは
変化点検出
(システムノイズに非ガウス分布がある場合)
• 再パラメータ化のテクニック
• Cauchy 𝑦 𝜇, 𝜎 の累積分布関数
の逆関数を使って, Cauchy分布
に従う乱数を発生させる
12.3
pp. 238 - 240
model12-7.stan
𝑥~Uniform 0,1
として𝜋(𝑥 − 0.5)
𝐹−1
𝑥 = 𝜇 + 𝜎tan(𝜋(𝑥 − 0.5))
これなら収束する
潜在状態の数がアプリオリに
決められるのであれば,隠れ
マルコフモデルでやるのもあ
りなのでは?
• グラフを見ると潜在状態が3つぐらいありそ
うなので,隠れマルコフモデル(HMM)を
Stanでやってみた
• 「隠れ状態」は離散量なので11章(うなど
ん氏)のテクニックを使ってみる
• Viterbiアルゴリズムでどの状態であったか
推定してみる
変化点検出
(隠れマルコフモデルで変化点検出やってみた)
ソースはこんな感じ
赤い線は潜在状態(離散値)
Stan User’s Guide and Reference Manualの10.6.節Hidden Markov Models”
の”Semisupervised Estimation”と”Predictive Inference”を参考にした
その他の拡張方法
• 独自のトレンド項を入れる
• データの対数をとる
• 時刻が不等間隔のとき
– 等間隔の目盛りを取って,丸める.
データが無いところは欠損値にする
• 複数の要因を入れる
• 複数の𝜇 𝑡
– 複数回の試行を行う場合や,複数人の被験
者を対象にする時など.観測撹乱項,状態
撹乱項を工夫すると良いかも
12.4
pp. 240 - 241
𝜇 𝑛, 𝑡 = 𝜇 𝑛, 𝑡 − 1 + 𝜀 𝜇[𝑛, 𝑡 − 1]
𝑌 𝑛, 𝑡 = 𝜇 𝑛, 𝑡 + 𝜀 𝑌[𝑛, 𝑡]
𝜀 𝜇 𝑛, 𝑡 ~𝑁𝑜𝑟𝑚𝑎𝑙 0, 𝜎𝜇 𝑛
𝜀 𝑌 𝑛, 𝑡 ~𝑁𝑜𝑟𝑚𝑎𝑙 0, 𝜎 𝑌
■モデル式12−9■
状態撹乱項は個人差あり
「3階差分を使うのも良いし…」と
本にあるが,時系列の場合は2階
差分,空間構造の場合は1階差
分でいいのでは?
スプラインとか
カルマンフィルタと
かで補完をしたデー
タを使っちゃダメョ
観測撹乱項は被験者間で共通
時間構造と空間構造の等価性
1階差分モデルを例に
• DAG(非巡回有向グラフ)で表現される
• システムモデル
𝜇 𝑡 = 𝜇 𝑡 − 1 +𝜀 𝜇 [𝑡] 𝜀 𝜇[𝑡]~𝑁𝑜𝑟𝑚𝑎𝑙 0, 𝜎𝜇
• 条件付き確率
𝑝 𝜇 𝑡 𝜇 𝑡−1 =
1
2𝜋𝑟2
exp(−
1
2𝜎𝜇
2
𝜇 𝑡 − 𝜇 𝑡−1
2
)
• 観測モデルは有向グラフだが,シ
ステムモデルは無向グラフ
• (1次元空間の場合は)結果は変
わらないが,無向グラフであること
を明示的に示すため同時確率で
表す
12.5
pp. 242 - 244
今まで扱ってきた状態空間モデル 1次元の空間構造(マルコフ場)モデル
𝑝(𝜇1, 𝜇2, … 𝜇 𝑇) ∝ exp −
1
2𝜎𝜇
2
𝑡=2
𝑇
(𝜇 𝑡 − 𝜇 𝑡−1)2
対数事後確率を見れば状態空間モデルとマルコフ場モデルは等価.
だけど(多分)2次元モデルになった時に説明が超めんどいのもあって
このような記法にしている(それにそもそもStanでは右の書き方が本質的)
1次元の空間構造
みんな大好き久保『緑本』11章
12.6
pp. 244 - 246
• まずは『緑本』11章を振り返ってみる
• 1から50までの区画が並んでいて,場所ご
とに植物がたくさん生えてたり生えてな
かったりする
• その植物の密度は滑らかに変化
• 植物が生えている本数はポアソン分布に
従うとする
「久保拓弥. データ解析のための統計モデリング
入門. 岩波書店, 2012.」より
𝜆
• 平均値に比べて分散が大きすぎる⇨過分散
• 大域的パラメータの切片𝛽と場所差𝑟𝑗を考える
𝑝 𝑦𝑗 𝜆𝑗 =
𝜆
𝑦 𝑗 exp −𝜆
𝑦 𝑗!
log 𝜆𝑗 = 𝛽 + 𝑟𝑗
• 𝑟𝑗の事前分布をどう与えるか?
• 𝑟𝑗が互いに独立だとするとglmmと同じ
• 𝑟𝑗が「隣接するものは互いに似ている」と考
えるのがCAR(conditional auto regressive;
条件付き自己回帰)モデル
久保緑本の図11.2を一部改変
12.6
pp. 244 - 246
1次元の空間構造
久保『緑本』11章とアヒル本12.6節の関係
• 緑本で紹介されているIntrinsic
Gaussian CAR model(条件付き自己
回帰モデル)
𝑝 𝑟𝑗 𝜇 𝑗, 𝑠 =
𝑛𝑗
2𝜋𝑠2 𝑒𝑥𝑝 −
𝑟𝑗 − 𝜇 𝑗
2
2𝑠2/𝑛𝑗
ただし𝜇 𝑗 =
𝑟 𝑗−1+𝑟 𝑗+1
2
• この式は2階差分になっている
𝑟𝑗 − 𝜇 𝑗
2
=
2𝑟 𝑗−𝑟 𝑗−1−𝑟 𝑗+1
2
2
=
𝑟 𝑗+1−𝑟 𝑗 − 𝑟 𝑗−𝑟 𝑗−1
2
2
• 注意:緑本のこのモデル式は「𝑟𝑗−1や
𝑟𝑗+1が固定されている場合の𝑟𝑗の確
率分布」を表す式(full conditionalと呼
ばれるらしい)であって条件付き分布
とは異なる
• 一方アヒル本のモデル式12−11では
一階差分(式12.9)
𝑝 𝑟 1 , 𝑟 2 , … , 𝑟 𝐼 ∝
1
𝜎𝑟
𝐴 exp −
1
2𝜎𝑟
2
𝑖,𝑗
𝑟[𝑖] − 𝑟[𝑖 − 1] 2
• 注意:事後(同時)確率で書かれてて,
この式を展開して𝑟[𝑖] について平方
完成すれば2階差分になるよね
• アヒル本の式から緑本の式は導ける
けど,逆はわからん
この2つのモデル(CARモデルと1階差分モデル)は同じもの
このあたりの議論は下記に詳しく解説あり
伊庭幸人 時間・空間を含むベイズモデルのいろいろな
表現形式, 岩波データサイエンス vol.1, 96-106.
1次元の空間構造
• 観測モデルについて
– こちらは有向グラフで表現でき
るので通常の書き方
• 結果
12.6
pp. 244 - 246
model12-11.stan(1階差分モデル)
model12-12.stan(2階差分モデル;抜粋)
r[2,I] ~ normal(r[1:(T-1)],s_r);
と同じ結果になる
1階差分モデル
2階差分モデル
緑本と同じ結果
対数リンク関数とセットになった
poisson_log()がいろいろ便利らしい
2次元の空間構造
2次元格子状の空間データの扱い方
• データ
– 2次元格子状(16×24)のプレー
ト上で計測を行った
– 96種類の処理を各々4回ずつ処
理して繰り返し数4のデータを得
た
• 目的
– プレートの位置の影響を除去
– プレートの位置の影響を知る
12.7
pp. 246 - 251
バイオアッセイで用いられる「384プレート」
24列
16行
図12.8 プレートの穴の配置 (𝑖, 𝑗) と観測値𝑌 (𝑖, 𝑗)
• 縦横ともに2階差分モデルで考える
• 𝑌 𝑖, 𝑗 = 𝑟 𝑖, 𝑗 + 𝛽[𝑇𝐼𝐷 𝑖, 𝑗 ]
• 𝑝 𝑟 1,1 , 𝑟 1,2 , … , 𝑟 16,24 ∝
1
𝜎𝑟
𝐴 exp −
1
2𝜎𝑟
2
𝑖,𝑗
𝑟[𝑖, 𝑗] − 2𝑟[𝑖, 𝑗 − 1] + 𝑟[𝑖, 𝑗 − 2] 2
2次元の空間構造
2次元格子状の空間データの扱い方
12.7
pp. 246 - 251
model12-13.stan
2次元の空間構造
2次元格子状の空間データの扱い方
12.7
pp. 246 - 251
• 初期値を与えるテクニック
– 局所解に陥らないようだいたいの
あたりをつけた初期値を使う
まずLOESS(局所回帰)
をやってる
LOESSの結果を初期値として投入
run-model12-13.R(抜粋)
図12.9(左)𝑟[𝑖, 𝑗]の中央値
図12.9(右)単純な平均値と
推定結果の関係(95%信頼区間)
地図を使った空間構造
格子状じゃないときの空間データ
12.8
pp. 251 - 254
• 各県の平均気温データを,隣接関
係をもとに平滑化
• 1階差分モデルで考える
地理的隣接関係を非巡回有向グラフ
(DAG)で表現したもの( 𝐹𝑟𝑜𝑚 < 𝑇𝑜) .
データファイル12.4(data-map-neighbor.txt)
を{igraph}パッケージで描画してみた
model12-13.stan
一階差分モデル
観測モデルのs_Yにかなり厳し目の事
前分布を用いている(平滑化しすぎな
いようにするため).ゆるくすると全国ほ
ぼ同じ気温だと推定される
地図を使った空間構造
格子状じゃないときの空間データ
12.8
pp. 251 - 254
図12.10(左)観測値,(右)推定された𝑟[𝑛] の中央値
平均気温 マルコフ場モデルに
より平滑化した気温
図12.11 実測値と予測値
図12.11 𝑌 𝑛 − 𝑟 𝑛 のMAP推定値
のヒストグラムと密度関数
※ 本書のソースにある事前分布
s_Y ~ normal(0, 0.1);
だと本の図の通りの結果にはならない
𝜎 = 0.08ぐらいにすればいいかも?
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル

【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル