ggpubr na podstawie Study 1 z artykułu “Morality constrains
the default representation of what is possible”, Jonathan Phillips &
Fiery CushmanJonathan Phillips i Fiery Cushman zastanawiali się, w jaki sposób ludzie reprezentują możliwości i w jaki sposób o nich rozumują. Zauważyli, że sądy przyczynowe i sądy dotyczące moralności, które zwykle wymagają od nas znajomości rozmaitych możliwości, są zwykle formułowane przez ludzi bez żadnego wysiłku i bardzo szybko. Tymczasem sądy, które w sposób jawny dotyczą możliwości zajścia pewnych zdarzeń, z reguły wymagają bardziej refleksyjnego postępowania i namysłu, mentalnej symulacji rozmaitych alternatywnych, kontrfaktycznych rozumowań, itp.
Badacze postawili więc hipotezę, że istnieją dwa systemy reprezentacji mentalnej możliwości. Pierwszy, domyślny system reprezentacji, jest szybki i bardzo rudymentarny oraz inkorporuje informacje na temat preskryptywnych i deskryptywnych norm. Drugi jest bardziej dokładny, ale jego użycie wymaga od nas większego wysiłku.
W pierwszym eksperymencie Phillips i Cushman chcieli dowiedzieć się, czy istnieją rzeczywiście różnice między sądami modalnymi (dotyczącymi możliwości) związane z tym, że sądy dokonywane były po odpowiednim namyśle. W swoim eksperymencie prosili oni o ocenę, czy dane zdarzenie jest możliwe czy niemożliwe w danym kontekście. Przykładowy kontekst znajduje się poniżej:
Josh is on the way to the airport to catch a flight for a hunting safari in Africa. He leaves with plenty of time to make it there, but his car breaks down on the highway. Now Josh is sitting in his car near a busy intersection and knows he needs to get to airport soon if he is going to catch his flight.
Badani czytali 6 różnych kontekstów . Po każdym z nich prezentowano im pewne zdarzenia. Zadaniem uczestników byłow wskazanie za pomocą naciśnięcia klawisza, czy dane zdarzenie jest możliwe, czy niemożliwe. W badaniu zostały użyte zdarzenia należące do 5 kategorii:
Przykładowo:
Is it possible or impossible for Josh to:
Badani podzieleni byli na dwie grupy. W jednej grupie byli zmuszeniu do udzielenia odpowiedzi bardzo szybko (odpowiedzi < 1500 ms), w drugiej poproszeni zostali o zwiększony namysł nad możliwością każdego zdarzenia (odpowiedź > 1500 ms)
Na zajęciach będziemy korzystać z trzech pakietów. Pierwszy to pakiet
tidyverse, służący do manipulacji danymi. Oprócz tego
będziemy używać pakietu do tworzenia wykresów ggplot2 oraz
pakietu ggpubr, który pozwala tworzyć publication
ready wizualizacje danych korzystając z możliwości
ggplot2.
knitr::opts_chunk$set(echo = F)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.3 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Dane znajdują się w pliku study1possibilityData.csv. Nas
będzie interesowała kolumna responses, w której znajduje
się informacja o tym, który klawisz nacisnął badany w danej próbie
eksperymentalnej (f - możliwe, j - niemożliwe;
musimy to przekodować), kolumna RTs, gdzie przechowywany
jest czas naciśnięcia przycisku oraz kolumny, w których zakodowane mamy
najważniejsze informacje o próbie - condition1,
condtion2, condition3.
## Rows: 50796 Columns: 51
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (30): type, condition1, condition2, condition3, trialNo, target, stim1, ...
## dbl (13): ITI, randomBlock, subjectGroup, timestamp, RTs, correct, turkID, a...
## lgl (8): sexOrientation, ethnicity, other1, other2, other3, other4, other5, ip
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `LogRTs = log(RTs)`.
## Caused by warning in `log()`:
## ! wyprodukowano wartości NaN
ggpubrNa początek zadamy sobie pytanie, na które niekoniecznie znajdziemy odpowiedź w tekście. Jak wyglądały rozkłady czasów odpowiedzi dla poszczególnych warunków eksperymentalnych? Rozkłady te możemy przedstawić na serii histogramów.
## Warning: Using `bins = 30` by default. Pick better value with the argument
## `bins`.
## Warning: Using `bins = 30` by default. Pick better value with the argument
## `bins`.
Jeśli histogramy wydają nam się zbyt prymitywną formą wizualizacji, możemy stworzyć wykres gęstości. Idea tego wykresu jest bardzo podobna jak histogramu; można ten wykres traktować jako “wygładzoną” wersję histogramu. Zasadniczo, jeśli chcemy być bardziej techniczni, to wykres ten rysuje nam krzywą gęstości prawdopodobieństwa dla naszego rozkładu, którą estymuje za pomocą estymatora jądrowego gęstości.
Standardowy wykres pudełkowy. W tym wypadku wykresy pudełkowe nie będą wyglądały zbyt dobrze ze względu na bardzo długi ogon rozkładów bardzo dużą niesymetryczność. Mimo to stworzymy wykres pudełkowy obrazujący rozkład czasów reakcji dla poszczególnych rodzajów zdarzeń. Zobaczymy również, czy użycie logarytmu z czasu zamiast czasu sprawia, że dane wyglądają inaczej.
Wykres skrzypcowy to “nowoczesny” odpowiednik wykresu pudełkowego. Możemy bardzo łatwo przerobić stworzony przez nas przed chwilą wykres pudełkowy na wykres skrzypcowy. Ba! Możemy nawet połączyć je w jeden wykres!
Z reguły w tym rodzaju wykresu punktom odpowiadają jakieś zagregowane statystyki (np. średnia, mediana, itp.). Zadadniczo wykres taki lepszy jest od wykresu słupkowego wówczas, gdy 0 nie ma żadnej interesującej teoretycznie interpretacji. W tym wypadku stworzymy wykres punktowy obrazujący średni czas reakcji dla poszczególnych warunków eksperymentalnych. Spróbujemy również nałożyć na wykres wyniki odpowiednich porównań statystycznych. Na potrzeby zadania założymy, że interesują nas porównania średnich czasów reakcji dotyczące następujących grup:
Na tym wykresie słupkowym będziemy chcieli zreplikować Fig 1. z artykułu. Wysokość słupka odpowiada % zdarzeń ocenionych przez badanych jako niemożliwe. Każdy z 5 paneli przedstawia inną kategorię zdarzeń a dwa kolory słupków odpowiadają dwóm warunkom eksperymentalnym (odpowiadaniu szybkiemu i z namysłem).
## Warning: Removed 2463 rows containing non-finite values (`stat_summary()`).
ggpubr pozwala robić ładne wykresy rozrzutu. W tym
przykładzie przeanalizujemy zależność między wiekiem (age)
a średnim czasem odpowiedzi dla każdego uczestnika badania
(turkID).
## `summarise()` has grouped output by 'turkID', 'Condition'. You can override
## using the `.groups` argument.
Bardziej fancy wersją zwykłego wykresu rozrzutu jest wykres rozrzutu, w którym na marginesach osi dodajemy dodatkowe informacje dla obu zmiennych (wykresy gęstości, wykresu pudełkowe, histogramy). W tym przykładzie zrobimy taki wykres dla badanych z warunku refleksyjnego, używając jako koordynatów punktów tych samych zmiennych, co na poprzednim wykresie.
## `summarise()` has grouped output by 'turkID', 'Condition', 'age'. You can
## override using the `.groups` argument.