--- 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 ) } ```