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

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

## 背景
Apple Watchを買い、[AutoSleep](https://itunes.apple.com/jp/app/autosleep-watch%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%9D%A1%E7%9C%A0%E3%82%92%E8%87%AA%E5%8B%95%E3%81%A7%E8%BF%BD%E8%B7%A1%E3%81%97%E3%81%BE%E3%81%99/id1164801111?mt=8) を使って睡眠ログを取っていたら、せっかくだしデータを分析して最適な睡眠時間を見つけたいと思うようになった。

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

## 方法
### データソース
#### 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ファイルがあるディレクトリを開いておく。

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

```bash
# 心理学用パッケージをインストール（グラフの生成とかが楽になる）
> 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](https://qiita-image-store.s3.amazonaws.com/0/217058/5b5ff49b-b853-06ab-010c-f796d33636fb.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>