うつ日記 ~うつを克服するための日記~

うつ病のため休職してから復帰するための体験、工夫、Androidアプリの紹介、アプリの作成ノウハウなど。アプリはこちら→ https://play.google.com/store/apps/details?id=tokin_kame.utunikki_app

体調の分析~うつ日記の活用~

自分の体調について、自作のアプリで毎日記録を付けています。
もし、こういうことの後には体調を崩しやすいとか、こんな時には大丈夫とわかれば、日常生活を送る上で参考になると思われます。
以前は色々なことが複雑に関連すると想定して、複雑な予測手法を試してきましたが、今回は基本に帰って個々の情報と体調との関係を見てみました。
2つの現象の関係を見る手法として相関係数を使うことにしました。同時に起こる現象ほど相関が高くて、相関係数が大きくなるってところでしょうか。

まず、わかりやすいところから。

○症状
体調と比較的相関が高いもので、症状と思われるものは以下の通りでした。(数値は相関係数)

気力       0.5676177682
活動具合     0.5660850718
仕事をした    0.4501065514
つらい、しんどい 0.4459462761
眠気       0.3466495251
憂鬱感      0.3291547111
不安感      0.289137679
気が重い、不快感 0.2306174536
憂鬱感(1日前)  0.1002050951

体調が悪いと思う時は、気力がないとか、活動ができていない時ということなんでしょう。
自分で記録してて実感としてわかる気がします。


次に前日以前の状態を引きずっていると思われるものです。

○連続性
意外と前日までの体調と連続性があるようです。

体調(1日前)    0.4165590524
活動具合(1日前)  0.3887784676
仕事をした(1日前) 0.3512161073
仕事をした(2日前) 0.3139686268
活動具合(2日前)  0.3008375468
体調(2日前)    0.299723202
気力(1日前)    0.2717481515
活動具合(3日前)  0.2205140497

そして、重要なのが因果関係にあると思われるものです。

○因果関係
記録している中では睡眠時間との関係が強いようです。
睡眠は、1日前より、2日前とか3日前の方が関係が強いってのが、実感と合う気がします。
天気との関係が強いように思っていましたが、意外と気圧や気温の方が関係が強いという結果でした。
もしかすると、気温差とかを変数にしてみるともっと良いのかもしれません。
塩からいものは余り食べてはいないけど意外と相関が出ています。何かしらの因果関係があるのでしょうか?
悩みが強い場合は調子が悪いというのも低めですが出ています。

睡眠時間(2日前)       0.2622079518
睡眠時間(3日前)       0.2557154152
気圧(1日前)         0.2547683709  ←天候の中で最も相関が強い
塩からいものを食べた(3日前) 0.2546342145  ←塩分の取りすぎが良くない?
気温(1日前)         0.251670292
気圧(2日前)         0.2481592617
気圧             0.2453346151
気温(2日前)         0.2449271001
気圧(3日前)         0.2429016449
気温             0.2424637039
気温(3日前)         0.2376466735
睡眠時間(1日前)       0.2327329479
睡眠時間           0.2309630032
湿度(1日前)         0.2189409971
塩からいものを食べた(1日前) 0.2180654616
塩からいものを食べた(2日前) 0.2124009936
湿度             0.2113519812
間食を食べた(3日前)     0.2103576462
湿度(2日前)         0.2063517619
天気             0.20377873  ←意外と低い
間食を食べた(2日前)     0.1980849892
油っこいものを食べた(1日前) 0.1798724932
塩からいものを食べた     0.1688248735
悩み具合           0.1568354537
悩み具合(2日前)       0.1481562102


逆相関というのもあります。
何かが良い時ほど体調が悪くなるというものです。

○連続性
調子が良い時は疲れるぐらいまで活動するからでしょうか?

倦怠感、疲れた感じ(3日前)  -0.1937511577
倦怠感、疲れた感じ(1日前)  -0.2048685176
倦怠感、疲れた感じ(2日前)  -0.2064618956

○因果関係
忙しいほど調子が良いというのは、緊張感の問題かもしれません。
今日は頑張らないといけないと思ってるとなんとか体調がもって、その後崩れるってことはありますので、そういうことなのかもしれません。
と言うより、ほんとに調子悪い時は仕事休んじゃうから忙しくないって記録に残っちゃうだけかもしれません。

忙しかった(1日前)    -0.1905547243
豆類を食べた(2日前)   -0.2013853332
早く目が覚める(1日前)  -0.2014840327
豆類を食べた(3日前)   -0.2052963942
果物を食べた(1日前)   -0.2174520025
忙しかった       -0.2332050618

残業した後とかに体調崩すみたいな結果を期待していましたが、そういうのは出てきませんでした。
データの問題、手法の問題あるので、たまたまかもしれませんが。

相関係数の値も小さいですし。

 

 

天候とうつとの関係~うつ日記の活用~

久々の体調の分析と予測についてです。
よく、天候が悪いとうつになりやすいなんて聞きますので、とりあえず天候の情報を記録して、体調の変化と比較してみることにしました。
天気と言っても、晴れとか雨とか視覚的に捉えるものもあれば、気温のように肌で感じるもの、気圧や湿度のように無意識に感じているものなど色々あります。
自分にとって、どれが効くものなのか、これらの変化と体調の変化を重ね合わせてみることにしました。
結果をグラフに示します。
黒い線が体調で、赤い線が天候です。

f:id:tokin_kame:20160123124148p:plain

天気と体調のグラフを見てみると、傾向がかなり一致していることがわかります。
ところどころ合わないところはありますが、上がるか下がるかの傾向などは一致する部分が多いように思います。

f:id:tokin_kame:20160123124139p:plain

気圧と体調のグラフを見ると、体調と気圧が逆向きの関係にあるように見えます。
一般的には、気圧が下がる時は天気も崩れがちになるので、先ほどのグラフと相反する結果のようにも思えます。
より詳細な分析が必要だと思いますが、大域的な天気の変化ではなく、視覚的な情報や、足元が悪くなるなど直接的な影響が体調を左右するということなのかもしれません。

f:id:tokin_kame:20160123124131p:plain

f:id:tokin_kame:20160123124144p:plain

湿度と気温については、体調との直接的な関係はないように見えます。

 

と言ったところで、天気と体調とには関係がありそうですが、完全に一致しているわけではないので、一致しなかった理由について掘り下げると、体調の予測精度を向上させたり、天気が悪い時に体調を崩さずにすむヒントが見えてくるかもしれないという期待があります。
今後、更に分析を進めたいところです。

 

モータはなぜ回るのか。

モーターの仕組みの実験は、自分としては、結構お気に入りの実験です。

 

○用意するもの
・方位磁針(ダイソーなど)
・棒磁石(ダイソーなど)
・コイル(ストローにエナメル線を巻いて作成)
・乾電池2本
・電池ボックス(あれば)
・導線(模型屋さん、ホームセンターなど)
・モーター(模型屋さん、おもちゃ屋さんなど)

コイルは、今回は作っていないのでエナメル線がいくらぐらいするか、わからないけど、なければ導線なんかでも大丈夫だと思う。

f:id:tokin_kame:20150830201611j:plain

コイルの中には、ネジや針金など鉄心を入れる方がいいです。
電池ボックスはなければ電池の電極にセロテープで直接導線を貼っても大丈夫。
導線は、廃棄するようなおもちゃや電化製品なんかを分解すると簡単に手に入る。
モーターもミニ四駆とか、おもちゃにもよく使われているもので十分。

f:id:tokin_kame:20150830201621j:plain

 

実験は3段階で行う。
・第一段階
磁石の力で方位磁針の針を回す。

方位磁針に棒磁石を近づけて、方位磁針の針が磁石に引っ張られることを示す。
また、棒磁石を方位磁針の周りを回すことで方位磁針の針が回ることを確認する。

 

・第二段階
電気の力で方位磁針の針を回す。

コイルに電池をつなぎ、第一段階と同じように電磁石で方位磁針の針を回せることを示す。
また、電池のプラスとマイナスを逆にすることで、コイルを動かさなくても方位磁針の針を動かせることを示す。

 

・第三段階
モーターが第二段階と同じ構造になっていることを確認する。

モーターの後ろの蓋を外して、中のコイルを取り出す。
蓋は、枠の金属の一部を折って抑えてあるので、マイナスドライバーなどで、この部分を伸ばして外す。

f:id:tokin_kame:20150830201625j:plain


中のコイルは磁力で引っ張られているだけなので、引っ張れば取れる。
実際のモーターは、外側が磁石で、内側がコイルになっていて、第二段階とは逆になっているので注意。
電極が2つに分かれていて、回転するとプラスとマイナスが入れ替わる仕組みになっている。
コイルと蓋を戻して、モーターに電池をつないで、回転することを確認する。
電極の部分が引っかかって蓋が入りにくいので注意。

 

鉄球の拡散

拡散の様子を観察してみよう!


液体を使った実験だと、時間がかかって飽きそうなので、粒に振動を与える方法で擬似的に実験することにした。
最初は直径18mm程度のプラスチックの玉でやろうと思ったが、大きすぎて、うまくいかないみたいだったので、以前に自転車のベアリング用に購入して余っていた直径3.2mm程度のステンレスの玉を使うことにした。

 

実験は2段階で、初めに、密度の違うものがある場合には、混ざらずに密度の低いものが浮かんでいくことを確認し、次に、密度が同じ場合には分離していたものが徐々に拡散して混ざっていくことを見てみるというもの。

 

○用意するもの
 ・直径3.2mm程度のステンレスの玉500個ぐらい(今回使用したものはベアリング用のものでちょっと高級で1000円ぐらい)
 ・内径22mm程度の透明なプラスチックのパイプ(空気でっぽうの実験に使ったもの)
 ・パイプの蓋
 ・赤い油性マジック
 ・ステンレスの玉より密度が低いもの(今回は小さいほっぺちゃんを使用)

f:id:tokin_kame:20150830195917j:plain

 

○浮かんでくる実験
プラスチックのパイプの片方を塞ぎ、ほっぺちゃん、ステンレスの玉の順で入れて、ほっぺちゃんがステンレスの玉に沈んだ状態にする。

↓沈められる前のほっぺちゃん

f:id:tokin_kame:20150830195904j:plain

 

↓沈められたほっぺちゃん

f:id:tokin_kame:20150830195908j:plain

パイプを下からドンドンと叩いて、振動させる。
徐々にほっぺちゃんが浮かんでくる。

f:id:tokin_kame:20150830195913j:plain

 

○拡散の実験
ステンレスの玉のうち8個~10個ぐらいに油性マジックで着色しておく。
パイプに着色していないステンレスの玉を入れ、その上に着色したステンレスの玉を置く。

f:id:tokin_kame:20150830195859j:plain


パイプを下からドンドン叩いて、振動させる。
徐々に着色した玉がもぐていき、適当なところでパイプを傾けて中の方を見てみると、着色した玉が全体に広がっているのが観察できる。

f:id:tokin_kame:20150830195848j:plain

f:id:tokin_kame:20150830195841j:plain

 

今回は、手元にあったステンレスの玉を使ったが、もっと身近にある、ビーズなどでも良いかも。

記事一覧

○科学実験

 ・CPUで茶を沸かせっ!(第1回:熱伝導板方式)

  http://tokin-kame.hatenablog.com/entry/2015/05/01/212018

 ・CPUで茶を沸かせっ!(第2回:半水没方式)

  http://tokin-kame.hatenablog.com/entry/2015/05/01/213116

 ・CPUで茶を沸かせっ!(第3回:全水没方式)

  http://tokin-kame.hatenablog.com/entry/2015/05/01/213930

 ・大気の見えない力。

  http://tokin-kame.hatenablog.com/entry/2015/05/03/130101

 ・ドップラー効果とミニ四駆

  http://tokin-kame.hatenablog.com/entry/2015/06/07/204310

 ・ペルツェ素子で水を冷やしてみた。

  http://tokin-kame.hatenablog.com/entry/2015/05/06/065837

  ・鉄球の拡散

  http://tokin-kame.hatenablog.com/entry/2015/08/30/200555

  ・モータはなぜ回るのか。

  http://tokin-kame.hatenablog.com/entry/2015/08/30/202453

 

Androidアプリの作り方

 ・画面に合わせてサイズを決める ~Androidアプリの作り方~

  http://tokin-kame.hatenablog.com/entry/2015/03/25/203907

 ・バックアップ機能の実装 ~Androidアプリの作り方~

  http://tokin-kame.hatenablog.com/entry/2015/03/29/200311

 ・Android上で使われている改行コードは何か~Androidアプリの作り方~

  http://tokin-kame.hatenablog.com/entry/2015/04/30/110727

 ・天気の情報を取得する~Androidアプリの作り方~

  http://tokin-kame.hatenablog.com/entry/2015/05/31/105245

 

○体調の分析

 ・体調管理って、どうやって...?

  http://tokin-kame.hatenablog.com/entry/2015/03/23/185228

 ・うつ日記をつけてみて

  http://tokin-kame.hatenablog.com/entry/2015/03/28/114209

 ・うつに効く薬ってなんだろうか?~うつに関するSNSの分析(集合知)~

  http://tokin-kame.hatenablog.com/entry/2015/03/27/131226

 ・うつに効く薬ってなんだろうか?(その2)~うつに関するSNSの分析(集合知)~

  http://tokin-kame.hatenablog.com/entry/2015/03/30/131331

 ・何で体調を判断するか。(うつ日記のインポートの仕様)

  http://tokin-kame.hatenablog.com/entry/2015/04/07/095008

 ・うつに関係する薬名のリスト。(うつ日記のインポートの仕様)

  http://tokin-kame.hatenablog.com/entry/2015/04/09/131959

 ・体調の変化を可視化する~うつ日記の活用~

  http://tokin-kame.hatenablog.com/entry/2015/07/15/213019

 ・Rを使った体調の予測~うつ日記の活用~

  http://tokin-kame.hatenablog.com/entry/2015/07/18/091147

 ・天候とうつとの関係~うつ日記の活用~ 

  http://tokin-kame.hatenablog.com/entry/2016/01/23/124535

  ・体調の分析~うつ日記の活用~

  http://tokin-kame.hatenablog.com/entry/2016/04/17/140908

 

○3DCG

 ・復活っ!

  http://tokin-kame.hatenablog.com/entry/2015/05/05/075525

 ・慣性。

  http://tokin-kame.hatenablog.com/entry/2015/06/21/085232

 ・バランス

  http://tokin-kame.hatenablog.com/entry/2015/08/08/182419

 

○その他

 ・自己紹介など。

  http://tokin-kame.hatenablog.com/entry/2015/03/21/101424

  ・積分について考えてみよう!

  http://tokin-kame.hatenablog.com/entry/2015/04/30/203242

 ・ハードディスクを分解してみる。

  http://tokin-kame.hatenablog.com/entry/2015/05/06/091330

 ・AVCHD(.MTSファイル)から日時字幕入りのDVDを作成する。

  http://tokin-kame.hatenablog.com/entry/2015/05/31/141023

 

バランス

f:id:tokin_kame:20150808182313j:plain

こっちが重い?

今度はこっち?

釣り合いそうで、
傾いてるようで...
 
仕事とプライベートのバランス?
そんなのプライベート100%に決まってるじゃん!
バランスなんてわかんないよっ、
だって、水平線は丸いんだよっ!
 
釣り合いなんて、無数の可能性の中の、
だった一つの特異点
理想でもなく、現実でもない、妥協点。
そんなものに意味を見出そうなんて、人間ぐらいなものじゃない?
生態系のバランスなんて言うけれど、
自然は絶えず変化して、
破壊しているものでしょ?
 
やっぱり、ちょっと傾いてるな。
すみません、
足かせをもう一つ追加してください。

 

Rを使った体調の予測~うつ日記の活用~

体調は良くはなっているものの、波があって、朝起きてみたら調子が悪くて起き上がれないって時もたまにあります。

予め体調の変化が予測できれば、仕事の予定をずらすとか、予め最低限は終わらせておくとか、休養を多めに取って体調の波を小さくするなど、対策を取ることができるはずです。

 前回は体調の変化を可視化して、周期性がありそうなことがわかりました。

今回は、うつ日記にたまってきたデータを用いて、体調の予測ができないか試してみることにしました。

 

予測の問題と考えた場合、データを予測する対象と、予測するための手掛かりとに分ける必要があります。
予測する対象は、目的変数と呼ばれるのですが、例えば体調の悪さにということになります。
手掛かりは、説明変数と呼ばれますが、今回は、仕事の負荷や出来事、曜日や天候なんかになります。

 

○体調の悪さを表すデータ(目的変数になるようなもの)

 ・調子の良い悪い   5段階の整数 
 ・憂鬱感       3段階の整数 
 ・不安感       3段階の整数 
 ・気が重い      3段階の整数 
 ・つらい、しんどい  3段階の整数 
 ・倦怠感       3段階の整数 
 ・気力        5段階の整数 
 ・日中の眠気     4段階の整数 
 ・早く目が覚める   有無の2値 
 ・朝起きられない   3段階の整数 
 ・頭痛        3段階の整数 
 ・腹痛        3段階の整数 
 ・活動具合      4段階の整数 

 体調の良い悪いや気力のようなものは、プラスとマイナスがあるため段階数が多くなっています。

 

○調子の悪さを予測する手掛かりになりそうなデータ(説明変数として使えそうなもの)
 ・仕事をした          6段階の整数
 ・つぶやき、日記のデータ    文字列 
 ・起床時間           時刻 
 ・就寝時間           時刻 
 ・簡単な活動内容        文字列 
 ・曜日             7つのカテゴリデータ 
 ・処方箋のデータ        薬の種類と量 
 ・天気             幾つかのカテゴリデータ 
 ・気温             実数

 ・湿度             パーセント 
 ・気圧             整数
 ・風速             実数 
 ・風向             0~359の整数 
 ・雲の割合           パーセント 
 ・体調を記録した時の緯度と経度 0~359の実数 

 

Rで簡単に使えそうだったので、ARIMAモデルを用いて、予測を行ってみます。

まずはベースラインとして、体調の良い悪いの過去のデータのみから、未来の体調の良い悪いをどの程度予測できるか試してみます。

3月1日~7月11日 のデータを、3月1日(1日目)~6月2日(94日目)とそれ以降に分けて、6月2日までのデータでモデルを作成し、その後の39日の体調を予測できるか試してみました。

とりあえずは、auto.arimaという関数を使って、予測モデルを作ってみました。 
以下のコマンドで予測モデルを作成しました。
  library(forecast) 
  feel <- read.table(“feel5.txt”) 
  model <- auto.arima(feel, ic=“aic", trace=T, stepwise=F, approximation=F,  start.p=0, start.q=0, start.P=0, start.Q=0) 

以下のコマンドで予測結果を取得しました。 
  forecast(model, level = c(50,95), h = 39) 

モデルのパラメータは(1,0,0)になったが、予測が良くないみたいでした。

 

自分の体調の波は、18日周期があるみたいでしたので、今度はauto.arimaに頼らず、適当にパラメータを決めて、モデルを作成してみました。  
以下のコマンドで予測モデルを作成しました。
  model <- arima(feel, order=c(18,0,1)) 
こうして作ったモデルで39日間の予測をして、実際の体調と比較してみたところ、上がり下がりの傾向が結構一致しているようでした。 
○実測の特徴 
 ・101日目に凄く悪い 
 ・118日~120日の間、凄く悪い 
○予測結果の特徴 
 ・100日目で最も悪く、101日目もかなり悪い 
 ・その後回復して、111日目で一旦落ちて、回復 
 ・119日目に向けて落ちて、120日目は一旦上がり121日目に少し落ちてから上がる 

f:id:tokin_kame:20150715205418j:plain

 

まぁ、元々規則性が強かったってのはあるけど、傾向は結構予測できている感じ。

この方法による予測がある程度参考になるとして、私の明日からの体調はいったいどうなるのか、予測してみました。

 

f:id:tokin_kame:20150718084023j:plain

これによると、今週は金曜まで比較的低調で、木曜日に特に調子が悪くなるとのことです。
なんか、今週の占いみたいな感じがしてきましたが。

これを見ながら、一週間を過ごしてみました。

結果はと言うと、微妙です。
木曜日の体調は、良くはけど、凄く悪いってほどでもなく、どちらかと言えば悪いというぐらいでした。
まぁ、水曜日よりは悪くなっていましたので、調子の上がり下がりの傾向で言えば当たってると言えなくもないのかもしれません。
金曜日には少し回復しましたし。 

まぁ、元々、体調の良い悪いのデータだけで予測するのは無理があるとは思ってたんですけどね。
途中で処方も変わってますし。
ここをベースラインとして、他のデータと組み合わせることで、どこまで精度を上げられるかですね。
他のデータを組み合わせるためには、Rの使い方ももっと勉強しないといけません。

それはそれとして、予測結果をもっと簡単に出せるようにしたいです。
うつ日記に、データをサーバへ送る機能を追加したい。
家のパソコンをWebサーバにして、WebAPIを作って予測結果を返すようにすれば、気軽に予測を出して、1日ごとに予測精度を評価できますね。

ということで、今後の課題は、以下のような感じになります。
 ・体調の良い悪い以外のデータも活用して予測精度を上げること。
 ・ARIMAモデルのパラメータをもっとちゃんと決めて最適化すること。
 ・アプリに予測用のサーバとデータをやり取りする機能を実装すること。


 

うつ日記 ~うつを克服するための日記~
https://play.google.com/store/apps/details?id=tokin_kame.utunikki_app