---
title: 'Features around events'
author: 'Peter Hahn'
date: '`r Sys.Date()`'
output:
  html_document:
    number_sections: true
    toc: true
---
# Inspect features (anglez,enmo) near the events

## Load libraries
The library arrow is required for reading .parquet files. 
```{r message = FALSE}
library(tidyverse) # metapackage of all tidyverse packages
library(arrow)
library(pryr)
library(skimr)
```

### Read train_events and modify timestamp with lubridate
Be careful with timestamps: I substracted 4 hours to get the right time and days.
See: https://www.kaggle.com/competitions/child-mind-institute-detect-sleep-states/discussion/440868

## Read events
```{r}
events <- read_csv("../input/child-mind-institute-detect-sleep-states/train_events.csv")
events <- events %>% mutate(dt = as_datetime(timestamp)) %>% 
        mutate(dt = dt - hours(4))  %>% mutate(hr = hour(dt)) %>% 
        select(-timestamp,-dt)

```

## Read training data
This will take some time
```{r}
train <- read_parquet("../input/child-mind-institute-detect-sleep-states/train_series.parquet") %>% 
        mutate(dt = as_datetime(timestamp)) %>%
        mutate(dt = dt - hours(4)) %>% 
        mutate(hr = hour(dt)) %>% 
        select(-timestamp,-dt)
```

## Build a file from events with data from train
Add steps before and after the events
+-1
+-10
+-20
```{r}
## event plus
event_feat <- events %>% select(series_id,night,event,step) %>% mutate(x = 0)
event_plus <- event_feat %>% mutate(step = step + 1) %>% mutate(x = 1)
event_minus <- event_feat %>% mutate(step = step - 1) %>%  mutate(x = -1)
event_plus10 <- event_feat %>% mutate(step = step + 10) %>% mutate(x = 10)
event_minus10 <- event_feat %>% mutate(step = step - 10) %>%  mutate(x = -10)
event_plus20 <- event_feat %>% mutate(step = step + 20) %>% mutate(x = 20)
event_minus20 <- event_feat %>% mutate(step = step - 20) %>%  mutate(x = -20)
event_feat <- bind_rows(event_feat,event_plus,event_minus, event_plus10,event_minus10,event_plus20,event_minus20)
event_feat <- event_feat %>% arrange(series_id,step)
```

### Join event_feat with train data
```{r}
event_feat <- left_join(event_feat, train, by=c("series_id","step"))
```

### Plot anglez around onset
```{r}
event_feat %>% filter(event == "onset") %>% ggplot(aes(anglez)) + geom_density(aes(color = as.factor(x)))
```
### Plot anglez around wakeup
```{r}
event_feat %>% filter(event == "wakeup") %>% ggplot(aes(anglez)) + geom_density(aes(color = as.factor(x)))
```
### Anglez
There is a difference between wakeup and onset

### Plot enmo around wakeup
```{r}
event_feat %>% filter(event == "wakeup") %>% ggplot(aes(enmo+1)) + geom_density(aes(color = as.factor(x)))
```
### Plot enmo around onset
```{r}
event_feat %>% filter(event == "onset") %>% ggplot(aes(enmo+1)) + geom_density(aes(color = as.factor(x)))
```

