Pierwsze badanie

Wprowadzenie

Tabele podsumowujące znajdują się pod kodem!

Przebadano 12 sędziów kompetentnych, którymi byli mężczyźni. Badanie składało się z czterech pytań:

  1. O neutralność obrazków neutralnych (kodowane jako neutrality);

  2. O czytelność (tj. czy widać homoseksualność) obrazków homoseksualnych (kodowane jako clarity);

  3. O trafność obrazków homoseksualnych (kodowane jako validity);

  4. Uszeregowanie pytań od najlepszego, do najgorszego (kodowane jako question_fit).

Obrazki neutralne mają nazwy na N (N1, N2…), a obrazki homoseksualne mają nazwy na H (H1, H2…). W tabelach podsumowujących obecne jest oznaczenie obrazka (lub propozycja pytania), średnia ocen danego obrazka (M) i jej odchylenie standardowe (SD) oraz średnia ocena standaryzowana względem innych obrazków (Z). W tabeli podsumowującej czytelność i trafność wartości M, SD i Z odnoszą się do czytelności, zaś CVR (Lawshe, 1975) do trafności. Przy 12 sędziach minimalny CVR wg Lawshe (1975, s. 568) to 0,56. Domyślnie tabela posortowana jest malejąco według CVR. Dodatkowo przy każdym pytaniu policzono zgodność sędziów kompetentnych testem W Kendalla.

Odpowiedzi na pytania 1. i 2. udzielane były na skali od 1 (zdecydowanie neutralne/czytelne) do 6 (zdecydowanie nieneutralne/nieczytelne). Te skale zostały później odwrócone. Pytanie o trafność miało 3 możliwe opcje odpowiedzi: 3 – obrazek ma zasadnicze znaczenie w mierzeniu homofobii, 2 – obrazek może być użyteczny w mierzeniu homofobii, ale nie ma zasadniczego znaczenia, 1 – obrazek nie powinien znaleźć się w teście homofobii. W 4. pytaniu osoba badana miała uszeregować propozycje pytań od najlepszego do najgorszego. Potem najlepsze pytanie otrzymywało 4 punkty, drugie 3 punkty itd.

Kod analizy

Analizę statystyczną wykonano w języku R (R Core Team, 2021) i z użyciem jego pakietów, ze szczególnym uwzględnieniem tidyverse (Wickham i in., 2019) i rstatix (Kassambara, 2021).

### ANALIZA BADANIA SĘDZIÓW KOMPETENTNYCH ###

pacman::p_load(rstatix, tidyverse, magrittr)

# Definicje funkcji ----
parse_long <- function(df, name) {
    df %>% 
        set_names(
            c(
                "ID", paste0(name, 1:(ncol(df)-1))
                )) %>% 
        mutate(
            across(where(is_character), parse_number)
            ) %>% 
        pivot_longer(
            cols = 2:ncol(df), # tj. wszystkie poza ID
            names_to = "pic",
            values_to = "rate")
}

std_mean <- function(df, rate, group) {
    df %>%
        group_by({{group}}) %>%
        summarise(
            M = mean(rate),
            SD = sd(rate)
            ) %>% 
        mutate(
            Z = (M - mean(M)) / sd(M)
            ) %>% 
        arrange(desc(Z))
}

flip_scale <- function(x, range) {
    2 * mean(range) - x
    # case_when(
    #     (2 * mean(range) - x) %in% 4:6 ~ 1,
    #     (2 * mean(range) - x) %in% 1:3 ~ 0)
}

# Zmienne z danymi ----
raw_data <- readxl::read_excel("sedziowie-dane.xlsx") %>%
    discard(~all(is.na(.)))

neutrality <- raw_data %>%
    select(ID, starts_with("Czy ten obrazek jest neutralny?"))

clarity <- raw_data %>%
    select(ID, starts_with("Na ile czytelne jest, że osoby na obrazku są homoseksualne?"))

validity <- raw_data %>%
    select(ID, starts_with("Czy ten obrazek może znaleźć się w teście mierzącym homofobię?"))

question_fit <- raw_data %>%
    select(ID, starts_with("Mając na względzie cel pomiaru, uszereguj podane niżej propozycje w kolejności od najlepszej do najgorszej"))


# Neutralność ----
neutrality %<>%
    parse_long("N") %>%
    mutate(rate = flip_scale(rate, 1:6))

neutrality_sum <- neutrality %>% std_mean(rate, pic)

neutrality_W <- neutrality %>%
    friedman_effsize(rate ~ pic | ID) %>% 
    mutate(`.y.` = "neutrality")


# Czytelność ----
clarity %<>%
    parse_long("H") %>% 
    mutate(rate = flip_scale(rate, 1:6))

clarity_sum <- clarity %>% std_mean(rate, pic)

clarity_W_gay <- clarity %>%
    filter(pic %in% paste0("H", 1:24)) %>% 
    friedman_effsize(rate ~ pic | ID) %>% 
    mutate(`.y.` = "clarity_gay")

clarity_W_lasbian <- clarity %>%
    filter(pic %in% paste0("H", 25:42)) %>% 
    friedman_effsize(rate ~ pic | ID) %>% 
    mutate(`.y.` = "clarity_lesbian")


# Trafność ----
validity %<>% parse_long("H")

validity_CVR <- validity %>% 
    group_by(pic) %>% 
    count(rate) %>% 
    filter(rate == "3") %>% 
    mutate(CVR = 
               (n - 0.5 * nrow(raw_data)) / (0.5 * nrow(raw_data)) # nrow(raw_data) to liczba sędziów
    ) %>% 
    select(pic, CVR) %>% 
    arrange(desc(CVR))

validity_W_gay <- validity %>%
    filter(pic %in% paste0("H", 1:24)) %>%
    friedman_effsize(rate ~ pic | ID) %>% 
    mutate(`.y.` = "validity_gay")

validity_W_lesbian <- validity %>%
    filter(pic %in% paste0("H", 25:42)) %>%
    friedman_effsize(rate ~ pic | ID) %>% 
    mutate(`.y.` = "validity_lesbian")


# Ocena pytań ----
question_fit %<>%
    separate(
        col = 2,
        into =
            as.character(
                str_count(question_fit[[1,2]], ";"):1 # liczba średników jest równa liczbie pytań do uszeregowania, ciąg N od liczby średników do 1
                ),
        sep = ";") %>% 
    pivot_longer(
        2:ncol(.),
        names_to = "rate",
        values_to = "question") %>% 
    mutate(
        rate = as.double(rate),
        across(where(is_character), str_trim))

question_fit_sum <- question_fit %>% std_mean(rate, question)

question_fit_W <- question_fit %>%
    friedman_effsize(rate ~ question | ID) %>% 
    mutate(`.y.` = "question_fit")


# W Kendalla ----
Kendall_W <- bind_rows(neutrality_W, clarity_W_gay, clarity_W_lasbian, validity_W_gay, validity_W_lesbian, question_fit_W)

W Kendalla

Ocena neutralności

Ocena czytelności i trafności

Geje

Lesbijki

Ocena pytania

Drugie badanie

Wprowadzenie

Niezadowalające wartości CVR bodźców z lesbijkami w pierwszym badaniu wymusiły powtórzenie badania trafności z nowym zestawem bodźców. Przebadanych zostało 12 mężczyzn. Badanie składało się z dwóch pytań, analogicznych do tych z pierwszego badania:

  1. O czytelność (tj. czy widać homoseksualność) obrazków homoseksualnych (kodowane jako clarity2);

  2. O trafność obrazków homoseksualnych (kodowane jako validity2).

Celem uspójnienia kodowania, bodźce w drugim badaniu zostały nazwane od H43 (H43, H44…). Jednocześnie bodziec H27 (CVR = 0,67 w pierwszym badaniu) został powtórnie sprawdzony, otrzymując nazwę kodową H59.

Minimalny CVR to ponownie 0,56 (Lawshe, 1975, s. 568).

Kod analizy

Analizę statystyczną wykonano w języku R (R Core Team, 2021) i z użyciem jego pakietów, ze szczególnym uwzględnieniem tidyverse (Wickham i in., 2019) i rstatix (Kassambara, 2021).

### ANALIZA BADANIA SĘDZIÓW KOMPETENTNYCH – POWTÓRNA ###

pacman::p_load(rstatix, tidyverse, magrittr)

# Definicje funkcji ----
parse_long2 <- function(df) {
    df %>% 
        set_names(
            str_extract(names(validity2), "H\\d{2}") %>% str_replace_na("ID")) %>% 
        mutate(across(where(is_character), parse_number)) %>% 
        pivot_longer(
            cols = 2:ncol(df), # tj. wszystkie poza ID
            names_to = "pic",
            values_to = "rate")
}

std_mean <- function(df, rate, group) {
    df %>%
        group_by({{group}}) %>%
        summarise(
            M = mean(rate),
            SD = sd(rate)
            ) %>% 
        mutate(
            Z = (M - mean(M)) / sd(M)
            ) %>% 
        arrange(desc(Z))
}

# Zmienne z danymi ----
raw_data2 <- readxl::read_excel("sedziowie-dane-2.xlsx") %>%
    discard(~all(is.na(.))) %>% 
    filter(Wiek >= 18)

clarity2 <- raw_data2 %>%
    select(ID, starts_with("Na ile czytelne jest, że osoby na obrazku są homoseksualne"))

validity2 <- raw_data2 %>%
    select(ID, starts_with("Czy ten obrazek może znaleźć się w teście mierzącym homofobię?"))

# Czytelność ----
clarity2 %<>% parse_long2()

clarity2_sum <- clarity2 %>% std_mean(rate, pic)

clarity2_W_lesbian <- clarity2 %>%
    friedman_effsize(rate ~ pic | ID) %>% 
    mutate(`.y.` = "clarity2_lesbian")


# Trafność ----
validity2 %<>% parse_long2()

validity2_CVR <- validity2 %>% 
    group_by(pic) %>% 
    count(rate) %>% 
    filter(rate == "3") %>% 
    mutate(CVR = 
               (n - 0.5 * nrow(raw_data2)) / (0.5 * nrow(raw_data2)) # nrow(raw_data2) to liczba sędziów
    ) %>% 
    select(pic, CVR) %>% 
    arrange(desc(CVR))

validity2_W_lesbian <- validity2 %>%
    friedman_effsize(rate ~ pic | ID) %>% 
    mutate(`.y.` = "validity2_lesbian")


# W Kendalla ----
Kendall_W_2 <- bind_rows(clarity2_W_lesbian, validity2_W_lesbian)

W Kendalla

Ocena czytelności i trafności

Bibliografia

Kassambara, A. (2021). rstatix: Pipe-Friendly Framework for Basic Statistical Tests. Pobrano z https://CRAN.R-project.org/package=rstatix
Lawshe, C. H. (1975). A quantitative approach to content validity. Personnel Psychology, 28(4), 563–575. https://doi.org/10.1111/j.1744-6570.1975.tb01393.x
R Core Team. (2021). R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. Pobrano z https://www.R-project.org/
Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., François, R., … Yutani, H. (2019). Welcome to the tidyverse. Journal of Open Source Software, 4(43), 1686. https://doi.org/10.21105/joss.01686