Hatena::ブログ(Diary)

盆栽日記

2016-04-21

歩数データから行動パターンを抽出する話

この1年ほどfitbitで歩数データを取り続けている。

最近、歩数データは1日よりも小さい単位(1分、15分)で取得できることを知ったので、それを利用して日々の行動をパターン化したい。

同時に手持ちの睡眠データと組み合わせて、行動パターンとの関連も見たい。

睡眠データはSonyのSmartband2で取得している。

なお、コードも含めた結果はRPubsにアップしたので細かい話をそちらを確認してほしい。

http://rpubs.com/dichika/stepandsleep

可視化した結果

歩数データは1時間ごとの集計をLDAでもって5グループに分けた。

LDAを用いた理由はこの研究会でLDAを歩数パターンに適用している発表があったのでその追試の意味合いが大きい。

5グループへの分類が終わったら、各グループの特徴を時間別の分布、総歩数、睡眠の質(入眠後3時間以内の深い眠りの割合)で確認する。

f:id:dichika:20160421201716p:image

分類した5つのグループおよび総歩数がどのように分布しているかカレンダープロットで確認する。

こちらは5つのグループをカレンダープロット可視化したもの。

f:id:dichika:20160421215653p:image

こちらは総歩数をカレンダープロット可視化したもの。

f:id:dichika:20160421215654p:image


得られた知見

  • LDAの結果をカレンダープロットで確認すると、Group1は平日パターン、Group3,5は休日パターンのように見える。Group2,4は夜間の歩数が多いので飲み会パターンか(私の勤め先はホワイトなので深夜に帰宅することはまず無い)。
  • 総歩数はどのパターンも中央値はあまり変わらない。休日パターン(Group5)は左に裾をひいてるので概して歩数が少なくなっている印象。
  • 平日パターン(Group1)と休日パターン(Group5)の眠りの質(per_D_180)を比べると、前者の方が良さそう。とはいえ、ばらつきも大きい。総歩数のデータと併せて考えると、良い睡眠に一定の運動量は必要だが、それが十分条件ではなさそう。

知見をふまえて決定木でモデリング

もう少し知見を定量的に深めたい。

手持ちの睡眠データには「就寝前2時間以内に食事をしたか(shokuji)」「就寝前1時間以内にブルーライトを発するような装置を注視したか(BL)」「寝る1時間前に蛍光灯をつけたか(Keikou)」がそれぞれ0/1(いいえ/はい)で含まれている。

f:id:dichika:20160421201717p:image

結果をみるとブルーライトを注視しないと圧倒的に睡眠の質が良い。ここでいうブルーライトを発するような装置はスマホやPCである。寝る直前までtwitter眺めるのはやめよう。

またばらつきは大きいものの、歩数パターンのGroup1と3は他のグループに比べて睡眠の質が良い。

Group1は主に平日に現れる歩数パターンなので、平日の方が休日より睡眠の質が良いのか。

また悪い歩数パターンの中でも約8,000歩を超えると多少は睡眠の質が良くなっている。 当面の目標値は8000歩にしておこう。

まとめ

fitbitはカギにつけて持ち歩いているだけなのでそれで自分の行動パターンが見えてくるのは面白い。

みなさんもじぶんマイニング(beroberoさん命名)やってみましょう。

Enjoy!!

teramonagiteramonagi 2016/06/30 07:56 大変参考にさせていただきました。
topicmodelsパッケージが乱数のシードができなかったのでldaパッケージをset.seed()しながら使うことにしました。

dichikadichika 2016/06/30 08:32 ありがとうございます。
LDAの方で別途set.seed()する必要があったんですね。

teramonagiteramonagi 2016/06/30 08:39 topicmodelsでも
LDA(..., control=list(seed=seed))
として指定することでシード固定(結果固定)ができました!
こちらでやります!

dichikadichika 2016/06/30 08:54 おお、こっちの方がsupecificですね。ありがとうございます!

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/dichika/20160421/p1
Connection: close