LoginSignup
9
4

More than 3 years have passed since last update.

42日間の睡眠ログをR使って相関分析してみた

Last updated at Posted at 2018-01-21

※文系のド素人がネットの記事を見ながらそれっぽくやってるだけですので、生暖かい目で見ていただけると幸いです
※サンプル数少ないので有意な結果とは言い難いです

背景

Apple Watchを買い、AutoSleep を使って睡眠ログを取っていたら、せっかくだしデータを分析して最適な睡眠時間を見つけたいと思うようになった。

仮説

気温・気圧が低いと睡眠時間が増加するのではないか。

方法

データソース

AutoSleepのデータ(12/4~1/19)をCSVでエクスポート

  • 就寝時刻start
    • 前日23時→23時、当日1時→25時として計算
  • 起床時刻end
    • 全て24時間プラスして計算
  • 睡眠時間duration
  • 深い睡眠時間deep_duratoin

気象庁の自分の起床時のデータ

http://www.data.jma.go.jp/gmd/risk/obsdl/index.php#ここから落とせます。便利ですね。
- 気温temp
- 気圧press

※本当は降水量もみたかったけど起床時は全日0mmになってたので断念

手順

  • https://qiita.com/hujuu/items/ddd66ae8e6f3f989f2c0 あたりを見ながらR Studioを使える状態にする。
  • 上記データをCSVファイルで用意し(外れ値は除外しておく)、R StudioでCSVファイルがあるディレクトリを開いておく。

  • 以下をコンソールで実施する

# 心理学用パッケージをインストール(グラフの生成とかが楽になる)
> install.packages("psych")

# パッケージを使えるようにする
> library(psych)

# ヘッダー付きCSVをdataに読み込む
> data = read.csv("sleep.csv", header = TRUE)

# データが読み込めてるかどうか、最初の6行表示して確認する
> head(data)

# データのサマリーを見てみる
> summary(data)

# 相関係数を見てみる(デフォルトではピアソンの積率相関係数の無相関検定を行う、らしい。よくわからん。)
> cor(data)

# 相関分析を行い、結果をパネル形式で表示する
> pairs.panels(data)

結果

> summary(data)

start end duration deep_duration temp press
Min. :23.00 Min. :30.25 Min. : 3.520 Min. :1.980 Min. :0.000 Min. : 991.2
1st Qu.:24.60 1st Qu.:30.50 1st Qu.: 5.004 1st Qu.:2.592 1st Qu.:2.925 1st Qu.:1009.9
Median :25.50 Median :30.98 Median : 6.360 Median :3.250 Median :4.300 Median :1014.6
Mean :25.33 Mean :31.72 Mean : 6.384 Mean :3.367 Mean :4.214 Mean :1013.3
3rd Qu.:26.40 3rd Qu.:32.40 3rd Qu.: 7.357 3rd Qu.:4.037 3rd Qu.:6.225 3rd Qu.:1018.1
Max. :28.50 Max. :35.98 Max. :10.980 Max. :6.080 Max. :9.100 Max. :1026.6

> cor(data)

start end duration deep_duration temp press
start 1 0.2846485947 -0.5118532249 -0.3715882522 0.1873040359 -0.001701778338
end 0.2846485947 1 0.6778355872 0.09332092994 0.6625535882 0.1708639808
duration -0.5118532249 0.6778355872 1 0.368602744 0.4498061992 0.1546590529
deep_duration -0.3715882522 0.09332092994 0.368602744 1 0.09643753281 0.07972065772
temp 0.1873040359 0.6625535882 0.4498061992 0.09643753281 1 -0.2920856974
press -0.001701778338 0.1708639808 0.1546590529 0.07972065772 -0.2920856974 1

> pairs.panels(data)
Rplot.png

http://www.koka.ac.jp/morigiwa/sjs/les10801.htmを参考に、相関があるものを列挙していく。

  • 起床時刻endと睡眠時間durationに正の相関があった。
  • 起床時の気温tempと起床時刻endに正の相関があった。
  • 起床時の気温tempと睡眠時間durationに正の相関があった
  • 就寝時刻startと睡眠時間durationに負の相関があった。

考察

あくまで相関関係を表しただけだが、気温が起床時刻・睡眠時間に関係しているという結果となり、仮説を支持する示唆が得られた。一方、気圧はどの項目に対しても相関が弱く、仮説とは異なった。部屋の温度も測定できれば、より高い相関関係を表すことができるのではないであろうか。

睡眠時間は起床時間の方が相関が強かったのに対し、深い睡眠は就寝時間の方が相関が強かったことが見て取れる。深い睡眠を取りたかったら早寝早起き型へ変更すると良いと感じるが、因果関係を表している訳ではないので説明できない。

おわりに

今回は被験者が1名(私のみ)でサンプル数も相当少なかったため、精度の高いデータとは言い難かった。また、分析を楽にするため曜日や祝日についての分析や、因果関係についての分析が出来なかった。ただ、R Studioを使って簡単に分析の真似事ができることを示せたのではないであろうか。つまり、ただの自己満。

参考にしたページ

http://kusanagi.hatenablog.jp/entry/2014/07/23/220951
http://www.data.jma.go.jp/gmd/risk/obsdl/index.php#
http://www.koka.ac.jp/morigiwa/sjs/les10801.htm
http://mizumot.com/handbook/?page_id=460

9
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4