---
title: "Lektion 1: Explorativ dataanalys med R"
format: pdf
editor: visual
execute: 
  eval: false
editor_options: 
  chunk_output_type: console
---

I denna lektion kommer vi att introducera grunderna för dataanalys. Nedan följer uppgifter som ni ska arbeta tillsammans med under lektion 1. Sitt gärna i grupper för att gemensamt diskutera och reflektera kring uppgifterna. Ta också alla chanser att diskutera och ställa frågor till läraren under lektionen.

Syftet med Lektion 1 är att öka er förståelse kring:

-   Programvaran R samt RStudio.

-   Deskriptiv statistik. Ta fram samt tolka olika läges- och spridningsmått.

-   Variabeltypens påverkan på val av datavisualisering.

Vi kommer att arbeta med två av de datamaterial som finns tillgängliga på kursens Canvassida, under modulen *Datamaterial för kursen.*

# Förberedelser

-   Ladda ner filerna `bike.rds`, `hotel.rds` samt quarto-filen `Lektion_1.qmd` till samma mapp i din dator.

-   Öppna `Lektion_1.qmd` i RStudio.

-   Ställ in arbetskatalogen till mappen med quarto-filen och filen `bike.rds`. (Använd menyvägar: *Session/Set Working Directory/To Source File Location*)

    Du kan dubbelkolla om du har rätt mapp med hjälp av `getwd()`.\
    (Klicka på den gröna pilen till höger i det grå kodblocket ("chunken") nedan.

    ```{r working_directory}
    #| output: false
    getwd()
    ```

-   Läs in filen `bike.rds` i RStudio

```{r load bike data}
bike <- readRDS("bike.rds") 
```

-   Installera följande R-paket som behövs för lektionen:
    -   `tidyverse`
    -   `gtsummary`
    -   `esquisse`
    -   `questionr`

Det enklaste sättet att installera paket är via fliken **Packages** i nedre högra fönstret i R Studio (se Figur 1 i bilagan till lektionen).

**Notera**: Du behöver bara *installera* paket en gång men varje gång du startar RStudio måste du *ladda* de paket du vill använda med hjälp av funktionen `library()`.\
(Vissa paket laddas dock automatiskt när man startar RStudio.)

Ladda paketen `tidyverse` och `gtsummary`:

```{r, load libraries}
#| warning: false
#| message: false
library(tidyverse)
library(gtsummary)
```

-   Paketet [tidyverse](https://www.tidyverse.org/) är egentligen en samling av paket såsom `ggplot2` (visualisering av data), `dplyr` (databearbetning) och `tidyr` ("städning" av data).

-   Paketet [gtsummary](https://www.danieldsjoberg.com/gtsummary/index.html) används för att skapa tabeller och innehåller bl a funktionen [tbl_summary](https://www.danieldsjoberg.com/gtsummary/articles/tbl_summary.html) som vi ska använda för att ta fram deskriptiv statistik.

# Uppgift 1

Börja med att undersöka ert tillgängliga data till exempel genom att se hur många observationer och variabler som finns. Detta kan göras på olika sätt.

1.  Visa datamaterialet genom att klicka på ordet `bike` i övre högra fönstret eller genom att köra koden i chunken nedan.

```{r}
View(bike)

```

-   Vilka datumintervall har de olika årstiderna? Skrolla igenom datamaterialet för att se när vintern övergår till vår osv.

Vintern (2011-01-01 - 2011-03-20)\
Spring (2011-03-21 - 2011-06-20)\
Summer (2011-06-21 - 2011-09-22)\
Fall (2011-09-23 - 2011-12-20) osv

2.  Vilken information får du när du använder `head(bike)` eller `tail(bike)`?

De första och sista raderna i filerna

```{r 6 första rader}

head(bike)
tail(bike)
```

3.  Hur många observationer och hur många variabler innehåller filen `bike.rds`? Använd funktion `glipmse()` eller `str()`.

16 variablar

```{r glipmse }

glimpse(bike)

```

4.  Identifiera varje variabel i datafilen som kvalitativ eller kvantitativ. Varför är det viktigt att veta vilken typ av variabel man har? Du kan hoppa över variablerna `instant` som är en ID-variabel och `dteday` som har datumformat.

**Obs:** I R finns lite olika namn på datatyper som vi benämner kvalitativ respektive kvantitativ. Till exempel kan kvantitativ data visas som numerisk (num eller dbl) eller heltal (int) medan kvalitativ data kan visas som faktorer (Factor/fct) eller textsträngar (chr). När du använder funktioner som `glimpse(bike)` eller `str(bike)` kan du se dessa datatyper.

5.  Ta fram/beräkna sammanfattande mått för de olika variablerna. Vilken information får du för de kvalitativa variablerna respektive kvantitativa variablerna?\
    \
    Svara på frågorna nedan:\
    -   Hur många cyklar per dag har som högst hyrts ut?

        ```{r}

        max(bike$total)
        ```

        8714\

    -   Vad är det lägsta antalet cyklar per dag medlemmar har hyrt?

        ```{r}

        min(bike$member)
        ```

        \
        20

    -   Hur många cyklar i genomsnitt per dag har icke-medlemmar hyrt?

        ```{r}

        mean(bike$nonmember)
        ```

        \
        848.1765

    -   Tolka värdet 4,34 som är tredje kvartilen för variabeln `windspeed`.\

    -   Vad har den genomsnittliga temperaturen varit under perioden?

        ```{r}

        mean(bike$tempC[bike$season == "winter"])
        ```

        för season winter 12.20765\

    -   Vilken typ av väder har majoriteten av dagarna haft (titta på variabeln `weathersit`).

```{r}

bike %>%
  count(weathersit, sort = TRUE)
```

```{r summary1}

bike %>% summary()
```

6.  Titta på variablerna `member`och `nonmember`. Vem hyrde totalt flest cyklar under tidsperioden, medlemmar eller icke-medlemmar?

```{r, count total rents}

sum(bike$member)
sum(bike$nonmember)
```

Members

7.  Ta fram/beräkna medianen samt kvartilerna för antalet uthyrningar per dag för medlemmar. Tolka dessa mått i ord kopplade till uppgiften.

```{r summary member}
bike %>% select(member) %>% summary()
# Koden summary(bike$member) ger samma resultat
```

8.  Starta **ggplot2 builder** i din webbläsare genom att köra följande kod i fliken Console i fönstret längst ned till vänster.\
    `esquisse::esquisser(viewer = "browser")`\
    (Alternativt kan du gå via menyn Addins ovan men då öppnas verktyget i RStudio.)

9.  Skapa i ggplot builder boxplottar som beskriver hur totala antalet uthyrda cyklar varierar mellan de fyra årstiderna, se Figur 2–8 i bilagan. Klistra sedan in den genererade koden i chunken nedan och kör koden genom att klicka på den gröna pilen till höger.

```{r}
### Klistra in koden från ggplot builder nedan

ggplot(bike) +
  ggtitle("Antal uthyrning per sässong") + 
  aes(x = season, y = total) +
  geom_boxplot(fill = "#112446") +
  theme_minimal()
```

10. Beräkna med hjälp av funktionen `tbl_summary` beskrivande statistik för några variabler grupperat på årstid (`season`).

```{r}
bike %>% 
  select(season, weathersit, tempC, hum, windspeed, total) %>% 
  tbl_summary(by = season,
              statistic = list(all_continuous() ~ "{mean} ({sd})"),
              digits = list(c(tempC, hum) ~ 1,
                            all_categorical() ~ c(0, 1))
              )  %>% 
   add_overall()
```

-   Vilken årstid har störst andel dagar med klart väder?

Fall

-   Ange genomsnittlig vindhastighet under vintern.

3.99

-   Vilken årstid har högst spridning (standardavvikelse) i dagligt antal uthyrda cyklar?

Summer??

-   Vad gör koden `add_overall()`?

    \
    Ta bort koden `%>% add_overall()` och se vad som ändras i utskriften när du kör om koden i chunken ovan.

Jag får en "overall" kollumm" som beskriver genomsnittliga på alla årstider

-   Ändra även `all_categorical() ~ c(0, 1)` till `all_categorical() ~ c(1, 2)` och undersök hur utskriften förändras när du kör om koden.

Jag får extra pressision med 1 decimal?

11. Visualisera med ggplot builder i ett spridningsdiagram hur totala antalet uthyrningar per dag (`total`) varierar med utomhustemperatur (`tempC`). Se Figur 9-10 i bilagan. Klistra in koden i chunken nedan.

```{r rentals vs temp}

ggplot(bike) +
  ggtitle("Rentals per temperatur") +
  aes(x = tempC, y = total) +
  geom_point(colour = "#00CC00") + 
  geom_smooth(se = FALSE) +
  theme_minimal()
```

-   Beskriv i "stora drag" hur sambandet mellan temperatur och antalet uthyrda cyklar ser ut.

Om det är varmare så hyrs mer cyklare. Men inte om det är för varmt

-   Utifrån informationen i diagrammet, ungefär hur många cyklar hyrs i genomsnitt ut under dagar då temperaturen är kring 20 grader?

drygt 5 tusen ish

# Uppgift 2.

Läs in filen `hotel.rds` i Rstudio. (Se till att den filen ligger i mappen som är din arbetskatalog).

```{r load hotel data }

hotels <- readRDS("hotel.rds") 
```

1 Hur många observationer och hur många variabler innehåller filen `hotel.rds`?

118 322 observationer med 33 variablar\
\
**Tips**: Se övre högra fönstret i RStudio. Klicka på den blå symbolen till vänster om `hotels` så kan du se detaljer om datamaterialet. Om du istället klickar på texten `hotels` så öppnas hela datamaterialet i en ny flik i RStudio.

```{r}

View(hotels)
```

1.  Vilken typ av variabel, kvalitativ eller kvantitativ, är variablerna `IsCanceled` (mäter om reservationen bokats av eller inte), `LeadTime` (antal dagar från bokning till ankomst) samt `hotel` (h1 för Algarve och h2 för Lissabon)?\
    (Bortse från hur variabeln är *kodad* i datamaterialet.)\

2.  Vi kodar om variabeln `IsCanceled` så att 0 blir "No" och 1 blir "Yes". Klicka på "Addins" längst upp i övre vänstra fönstret och leta upp 'Levels recoding' (du måste ha paketet `questionr` installerat). Se Figur 11-14 i bilagan.\

3.  Klistra in koden från 'Levels recoding' i chunken nedan och klicka därefter på den gröna pilen.

```{r}
# Klistra in kod från 'Levels recoding' nedan


```

5.  Koda på samma sätt om variabeln `hotel` så att 'h1' blir Algarve och 'h2' blir Lisbon.

```{r summary hotel}
# Klistra in kod från 'Levels recoding' nedan


```

6.  Beräkna med hjälp av funktionen `tbl_summary` beskrivande statistik för några variabler grupperat på hotell (Algarve/Lissabon).

```{r}

hotels %>%
  select(hotel, IsCanceled, Children, CustomerType, LeadTime) %>% 
  tbl_summary(by = hotel,
              statistic = list(Children ~ "({min}, {max})",
                               LeadTime ~ "{mean} ({max})"),
              type = list(IsCanceled ~ "categorical",
                          c(LeadTime, Children) ~ "continuous2"),
              digits = list(LeadTime ~ 1,
                            all_categorical() ~ c(0,1))
  ) %>% 
  add_overall()

```

-   Vilket av hotellen har högst andel avbokningar?

-   Är det någon större skillnad i fördelningen av `CustomerType` mellan hotellen?

-   Hur många dagar före ankomst (`LeadTime`) gjordes den bokning som gjordes längst i förväg?

7.  Visualisera med ggplot builder (`esquisse::esquisser(viewer = "browser"`)) i två histogram hur variabeln `LeadTime` varierar för de två hotellen.

-   Dra `LeadTime` till X, `hotel` till fill och `hotel` till facet.

-   Välj Number of bins: 20 och ändra färger (välj själv) i 'Geometries'.

-   Klistra in koden i chunken nedan och skapa diagrammet när du är nöjd med inställningarna.\
    (Kom ihåg att stänga av ggplot2 builder med "stopptecknet" om du kör ggplot builderi webbläsare.)

```{r}
# Klistra in kod från ggplot2 builder här


```

-   Beskriv hur `LeadTime` varierar, t ex bokar de flesta långt i förväg eller är det vanligast att boka nära ankomst?

8.  Visualisera med ggplot builder i ett stapeldiagram hur långt i förväg hotellen bokas uppdelat på ankomstmånad.\
    Starta ggplot builder, dra `ArrivalDateMonth` rill X och `LeadTime` till Y. Välj 'Bar' i menyn till vänster.\
    Klicka på 'Geometries' och sätt 'Stat summary function' till 'mean'.\
    Klicka på 'Axes '\> X axis text options \> Angle: 45.\
    Gå sedan tillbaka till RStudio och skapa diagrammet i chunken nedan.

```{r Stapeldiagram}
# Klistra in kod från ggplot2 builder här
# Stapeldiagram


```

-   Som du ser kommer månaderna i bokstavsordning istället för i kronologisk ordning. Vi åtgärdar det med hjälp av verktyget 'Levels ordering' som du hittar under 'Addins'. Följ instruktionerna i Figur 15-18 i bilagan. Klistra sedan in och kör koden i chunken nedan.

```{r}
# Klistra in kod från Levels ordering' här.
# Kom ihåg att köra koden genom att klicka på gröna pilen till höger


```

-   Skapa nu stapeldiagrammet igen genom att på nytt köra koden i chunken med ggplot-kod ovan (Stapeldiagram). Nu bör månaderna vara i rätt ordning längs x-axeln.

-   För vilka månader görs bokningarna i genomsnitt längst i förväg?
