---
title: "Raport z replikacji eksperymentu Knobe'a"
author: "Bartosz Maćkiewicz"
date: "1 11 2020"
output: html_document
editor_options: 
  chunk_output_type: console
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE) 
# echo = FALSE sprawia, że listingi kodu nie trafiają do wynikowego pliku
library(tidyverse)
library(pander) # stąd funkcja `pander`
library(knitr) # stąd funkcja `kable`

data <- read_csv("imodyfikatory.csv") 
# odpowiednik read.csv z pakietu tidyverse - działa troszkę lepiej
# i można łatwo deklarować typy jakie mają mieć poszczególne kolumny
# dodatkowo przy ładowaniu plików printuje, jakie przyjmuje typy
# ale tutaj i tak tego nie widać i nie zostało to użyte
```

# Demografia

## Płec (liczba badanych)

```{r}
# za pomocą funkcji `pander` wyświetlamy ładnie tabelę (nie jako listing)
pander(table(data$Płeć))
```

## Wiek

```{r}
# Przekodowujemy Rok Urodzenia na wiek oznaczając błędne obserwacje jako NA
data$Wiek = ifelse(data$`Rok urodzenia` > 1900 & data$`Rok urodzenia` < 3000, 2015 - data$`Rok urodzenia`, NA)

# Obliczamy średnią i odchylenie standardowe z wieku usuwając błędne obserwacje (na.rm = TRUE)
M_wiek <- mean(data$Wiek, na.rm = T)
SD_wiek <- sd(data$Wiek, na.rm = T)
```

Średni wiek wynosił `r round(M_wiek, 2)` (SD = `r round(SD_wiek, 2)`).

## Wykształcenie (w procentach)

```{r}
# Przekodowujemy wykształcenie jako ordered factor
data$Wykształcenie <- factor(data$Wykształcenie,
                             levels = c("Podstawowe",
                                        "Zawodowe",
                                        "Średnie",
                                        "Wyższe",
                                        "Doktorat",
                                        "Habilitacja Plus",
                                        "-oth-"),
                             ordered = T
                             )
# Tworzymy tabelkę z odsetkami
tab_edu <- prop.table(table(data$Wykształcenie))
# Wyświetlamy odsetki jako procenty
pander(round(tab_edu*100, 1))
```

# Wyniki

## Przypisanie intencjonalności

```{r}
# Przekodowujemy odpowiedzi "Tak" oraz "Nie" na liczby. Uwaga na backticki!
data$Odp <- data$Odpowiedź %>% recode(`Tak` = 1, `Nie` = 0)

# Przekodowujemy kolumnę Modyfikator na factor
data$Modyfikator <- factor(data$Modyfikator,
                           levels = c("Brak przysłówka", "Chciał", "Zamierzał",
                                      "Celowo", "Świadomie", "Specjalnie", 
                                      "Umyślnie", "Z rozmysłem"
                                      )
)
# Tworzymy podsumowanie danych (statystyki deskryptywne dla każdej podgrupy)
summ <- data %>% 
  group_by(Modyfikator, Grupa) %>% 
  summarize(prc = mean(Odp)) %>%
  mutate(prc = round(prc * 100, 2))
# Wyświetlamy je za pomocą `kable`. Ta funkcja ma dużo opcji np. do kontroli
# wyglądu tabelek. Proszę zajrzeć do dokumentacji!
kable(summ)
```

```{r}
# Wybieramy poziomy z kolumny Modyfikator
mods <- levels(summ$Modyfikator)
# Dzielimy pole rysowania wykresu na 8 części (2 rzędy po 8 kolumn)
par(mfrow = c(2, 4))
# Iterujemy i w każdej iteracji rysujemy wykres dla danego modyfikatora
for (mod in mods){
  barplot(prc ~ Grupa,
          data = summ %>% filter(Modyfikator == mod), 
          # filtrujemy, żeby mieć tylko jeden  modyfikator!
          main = mod, # tytuł wykresu
          col = c("darkgreen", "deeppink"), # kolory
          ylim = c(0, 100) # wykres jest z procentami więc od 0 do 100
          )
}
```


# Odpowiedzialność

```{r}
# przekodowujemy pytanie dotyczące  odpowiedzialność 
# bo w oryginalnym zbiorze danych zakodowana jest odwrotnie liczbowo
# pytanie brzmiało: W jakim stopniu dyrektor zasługuje na pochwałę/nagane?
data <- data %>% mutate(Odpowiedzialność = 5 - Odpowiedzialność)
# Obliczamy statystyki deskryptywne
summ <- data %>% 
  group_by(Modyfikator, Grupa) %>% 
  summarize(m = mean(Odpowiedzialność), sd = sd(Odpowiedzialność), n = n()) %>%
  mutate(mean = round(m, 2), sd = sd(round(sd, 2)))
# I wyświetlamy je za pomocą funkcji `pander`
pander(summ)
```

```{r}
# Kodj jest analogiczny jak poprzedni z tą różnicą, że nanosimy na wykres inną zmienną
mods <- levels(data$Modyfikator)
par(mfrow = c(2, 4))
for (mod in mods){
  barplot(m ~ Grupa,
          data = summ %>% filter(Modyfikator == mod),
          main = mod,
          col = c("darkgreen", "deeppink"),
          ylim = c(0, 5) # zmieniamy skalę wykresu
          )
}
```