ベクトル自己回帰(VAR)モデルは基本的にパラメータの定常性(時間によって変化しないこと)を仮定している。
心理変数間の関係は時間に対して一定?心理的介入の前後では関係が変わるのでは?
時間経過にともなってパラメータ(偏相関係数など)が変化していくネットワークを時変(time-varying)ネットワークモデルと呼ぶ(Haslbeck J. M. B. et al., 2022)
平均ベクトル\(\mu_{t}\)や偏相関行列\(\Omega_{t}\)のように,パラメータに時間tの添字がつく。
ネットワークのパラメータの変化には連続的変化(左)と離散的変化(右,状態間でジャンプ有り)がある
連続か離散かによって解析が変わるので,理論的・実証的(先行研究)にどちらが適切か検討する
時系列上で窓を移動をさせていき,その窓ごとに局所モデルを多数推定する方法
固定窓と異なり,全てのデータポイントを利用するが特定の時点に重みをつけて推定(カーネル重み付け法,詳細は Haslbeck et al. (2020) )
移動窓アプローチでは,カーネル関数の幅(帯域幅)が重要になる
帯域幅が広いと多くのデータポイントを使うので,推定は安定するが時間変化の感度が下がる(オレンジ)。狭いと逆(緑)。
Journal of Open Psychology Dataに掲載された Kossakowski et al. (2017) のデータを用いる。
Kossakowski et al. (2017) は,1名のうつ病患者に239日間さまざまな症状を収集(1日10回で合計1478回答)
データはOSF(https://osf.io/j4fg8/)で配布されているので,ESMdata.zipをダウンロードして展開する。
同じデータがmgm(Haslbeck & Waldorp, 2020)パッケージに入っているが(symptom_data),実際の解析に近づけるためにcsvファイルから読み込む。
データの前処理にtidyverse(Wickham et al., 2019)を用い,日付や時間の情報の処理にlubridate(Grolemund & Wickham, 2011)を用いる
時変自己相関モデルにmgm(Haslbeck & Waldorp, 2020)を用い,可視化にqgraph(Epskamp et al., 2012)を用いる
mgmの使用法は,Haslbeckのブログ(Haslbeck, 2020)が参考になる
data <- read_csv("ESMdata/ESMdata.csv") |>
mutate(datetime = dmy_hms(paste(date, resptime_e)))
data$time_norm <- as.numeric(data$datetime-data$datetime[1])/as.numeric((data$datetime-data$datetime[1])[nrow(data)])
head(data)
# A tibble: 6 × 88
...1 date phase concentrat dayno beepno beeptime resptime_s resptime_e
<dbl> <chr> <dbl> <dbl> <dbl> <dbl> <time> <time> <time>
1 1 13/08/12 1 150 226 1 08:58 08:58:56 09:00:15
2 2 14/08/12 1 150 227 5 14:32 14:32:09 14:33:25
3 3 14/08/12 1 150 227 6 16:17 16:17:13 16:23:16
4 4 14/08/12 1 150 227 8 18:04 18:04:10 18:06:29
5 5 14/08/12 1 150 227 9 20:57 20:58:23 21:00:18
6 6 14/08/12 1 150 227 10 21:54 21:54:15 21:56:05
# ℹ 79 more variables: resp_abort <dbl>, mood_relaxed <dbl>, mood_down <dbl>,
# mood_irritat <dbl>, mood_satisfi <dbl>, mood_lonely <dbl>,
# mood_anxious <dbl>, mood_enthus <dbl>, mood_suspic <dbl>,
# mood_cheerf <dbl>, mood_guilty <dbl>, mood_doubt <dbl>, mood_strong <dbl>,
# pat_restl <dbl>, pat_agitate <dbl>, pat_worry <dbl>, pat_concent <dbl>,
# se_selflike <dbl>, se_ashamed <dbl>, se_selfdoub <dbl>, se_handle <dbl>,
# soc_who1 <dbl>, soc_enjoy_alone <dbl>, soc_prefcomp <dbl>, …
select()で使う変数を選択(気分12変数,時間関連5変数)
欠測があるので(5つの測定),filter()とcomplete.cases()で完全ケースに絞る