pkbb_ABBA_analysis

rm(list = ls())

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ 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
library(performance)
library(lmerTest)
Loading required package: lme4
Loading required package: Matrix

Attaching package: 'Matrix'

The following objects are masked from 'package:tidyr':

    expand, pack, unpack


Attaching package: 'lmerTest'

The following object is masked from 'package:lme4':

    lmer

The following object is masked from 'package:stats':

    step
library(kableExtra)

Attaching package: 'kableExtra'

The following object is masked from 'package:dplyr':

    group_rows
source(file.path(here::here(), "pkbb", "scripts", "process_pairs.R"))
source(file.path(here::here(), "pkbb", "scripts", "process_ABBA.R"))

stacked_image_folder_path <- file.path(here::here(), "pkbb", "stimuli", "adult_exp2", "stacked_images")

exp2_adult <- read_csv(file.path(here::here(), "pkbb","data", "adult_stimuli_type.csv"))
Rows: 44775 Columns: 12
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (8): prolific_id, trial_type, block_type, background_stimulus, deviant_s...
dbl (4): total_rt, block_number, trial_number, total_trial_number

ℹ 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.

1 load data

# log LT
exp2_adult$total_rt_log <- log(exp2_adult$total_rt)

# create bg_image, dv_image (contain all four info: pose, identity id, number, animacy)
exp2_adult <- exp2_adult %>%
  mutate(
    bg_image = paste(background_type, str_extract(background_stimulus, "\\d+"), sep = "_"),
    dv_image = paste(deviant_type, str_extract(deviant_stimulus, "\\d+"), sep = "_")
  ) %>%
  mutate(dv_image = ifelse(violation_type == "background", bg_image, dv_image)) %>%
  mutate(fam_trial_number = total_trial_number - 1) %>%
  mutate(block_position = block_number)
# calculate dishab
exp2_test_only <- exp2_adult %>% filter(trial_number == total_trial_number) %>% mutate(my_trial_type = "test")
exp2_last_fam_only <- exp2_adult %>% filter(trial_number == total_trial_number - 1) %>% mutate(my_trial_type = "last_fam")
exp2_first_fam_only <- exp2_adult %>% filter(trial_number == 1) %>% mutate(my_trial_type = "first_fam")

exp2_core <- pivot_wider(bind_rows(exp2_first_fam_only, exp2_last_fam_only, exp2_test_only),
                         id_cols = c(prolific_id, block_position, violation_type, fam_trial_number, bg_image, dv_image),
                         names_from = my_trial_type,
                         values_from = total_rt_log) %>%
  mutate(dishab = test - last_fam) %>%
  mutate(one_fam = ifelse(fam_trial_number == 1, 1, 0))

2 make unique pairs look up DF

## unique combinations of stimuli pairs in test trials
exp2_unique_stimuli_pairs <- exp2_test_only %>%
  group_by(bg_image, dv_image, violation_type) %>%
  summarise(count = n(), .groups = "drop") %>%
  mutate(pairID = row_number())

### number of unique combinations of deviant trials used in study:
nrow(filter(exp2_unique_stimuli_pairs, violation_type != "background"))
[1] 2674
### number of background trials used in study
nrow(filter(exp2_unique_stimuli_pairs, violation_type == "background"))
[1] 128

2.1 number

within_POP_ID: 1 (pair to single), 2 (single to pair)

exp2_pairs_number <- process_pairs(filter(exp2_unique_stimuli_pairs, violation_type == "number")) 

exp2_pairs_number_noidentity <- process_pairs(filter(exp2_unique_stimuli_pairs, violation_type == "number"), ignore_violation_types = c("identity"))

2.2 animacy

within_POP_ID: 1 (animate to inanimate), 2 (inanimate to animate)

exp2_pairs_animacy <- process_pairs(filter(exp2_unique_stimuli_pairs, violation_type == "animacy"))

exp2_pairs_animacy_noidentity <- process_pairs(filter(exp2_unique_stimuli_pairs, violation_type == "animacy"), ignore_violation_types = c("identity"))

2.3 pose

within_POP_ID: 1 (left to right), 2 (right to left)

exp2_pairs_pose <- process_pairs(filter(exp2_unique_stimuli_pairs, violation_type == "pose")) 

exp2_pairs_pose_noidentity <- process_pairs(filter(exp2_unique_stimuli_pairs, violation_type == "pose"), ignore_violation_types = c("identity"))

3 ABBA: NUMBER

exp2_core_number <- exp2_core %>% filter(violation_type == "number") 

# for modeling
ABBA_number <- exp2_core_number %>% 
  left_join(exp2_pairs_number, by = c("violation_type", "bg_image", "dv_image")) %>% 
  filter(!is.na(first_fam) & !is.na(dishab))

# for plotting
ABBA_number_noidentity <- exp2_core_number %>%
  mutate(
    bg_image = str_replace_all(bg_image, "_[0-9]+", ""),
    dv_image = str_replace_all(dv_image, "_[0-9]+", "")
  )  %>%
  left_join(exp2_pairs_number_noidentity, by = c("violation_type", "bg_image", "dv_image")) %>%
  filter(!is.na(first_fam) & !is.na(dishab))

3.1 summary of mean dishab

ABBA_number %>% group_by(change_direction) %>% rstatix::get_summary_stats(dishab, type = "common")
# A tibble: 2 × 11
  change_direction variable     n   min   max median   iqr   mean    sd    se
  <chr>            <fct>    <dbl> <dbl> <dbl>  <dbl> <dbl>  <dbl> <dbl> <dbl>
1 pair to single   dishab     943 -3.20  1.28 -0.048 0.416 -0.117 0.453 0.015
2 single to pair   dishab     909 -2.46  2.39  0.003 0.404 -0.035 0.464 0.015
# ℹ 1 more variable: ci <dbl>
ABBA_number %>% group_by(violation_type, change_direction, fam_trial_number) %>% rstatix::get_summary_stats(dishab, type = "common")
# A tibble: 6 × 13
  violation_type fam_trial_number change_direction variable     n    min   max
  <chr>                     <dbl> <chr>            <fct>    <dbl>  <dbl> <dbl>
1 number                        1 pair to single   dishab     311 -3.20   0.94
2 number                        3 pair to single   dishab     312 -1.10   1.28
3 number                        5 pair to single   dishab     320 -1.89   1.28
4 number                        1 single to pair   dishab     314 -2.46   1.15
5 number                        3 single to pair   dishab     286 -1.95   2.39
6 number                        5 single to pair   dishab     309 -0.927  1.99
# ℹ 6 more variables: median <dbl>, iqr <dbl>, mean <dbl>, sd <dbl>, se <dbl>,
#   ci <dbl>

3.2 variable recoding

ABBA_number$change_direction_dc <- as.factor(ABBA_number$change_direction)
contrasts(ABBA_number$change_direction_dc) <- -contr.sum(2)/2

ABBA_number$one_fam_dc <- as.factor(ABBA_number$one_fam)
contrasts(ABBA_number$one_fam_dc) <- -contr.sum(2)/2

ABBA_number$fam_trial_number_c <- scale(ABBA_number$fam_trial_number, center = TRUE, scale = FALSE)
ABBA_number$block_position_log_c <- scale(log(ABBA_number$block_position), center = TRUE, scale = FALSE)

3.3 diffemean plot (collapsed across identity)

sumstats_ABBA_number_alltrials_noidentity <- calculate_sumstats(ABBA_number_noidentity)

pic_ABBA_number_noidentity <- plot_diffmean_with_images(image_folder = stacked_image_folder_path, sumstats = sumstats_ABBA_number_alltrials_noidentity, title_suffix = "(all trials)", ylim = 0.2)
pic_ABBA_number_noidentity

3.4 models

3.4.1 effect from change direction

m_number_1 <- lmer(dishab ~ change_direction_dc + (1|prolific_id), data = ABBA_number)

summary(m_number_1)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: dishab ~ change_direction_dc + (1 | prolific_id)
   Data: ABBA_number

REML criterion at convergence: 2378

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-6.7048 -0.4035  0.1131  0.4919  5.2725 

Random effects:
 Groups      Name        Variance  Std.Dev.
 prolific_id (Intercept) 0.0009342 0.03056 
 Residual                0.2092441 0.45743 
Number of obs: 1852, groups:  prolific_id, 468

Fixed effects:
                       Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)            -0.07623    0.01072  449.18978  -7.108 4.66e-12 ***
change_direction_dc1    0.08160    0.02130 1834.21479   3.830 0.000132 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr)
chng_drct_1 0.018 

3.4.2 adding raz et al predictors

# adding total trial number and block number
m_number_2 <- lmer(dishab ~ fam_trial_number_c + change_direction_dc + (1|prolific_id), data = ABBA_number)
m_number_3 <- lmer(dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc + (1|prolific_id), data = ABBA_number)

anova(m_number_1, m_number_2, m_number_3)
refitting model(s) with ML (instead of REML)
Data: ABBA_number
Models:
m_number_1: dishab ~ change_direction_dc + (1 | prolific_id)
m_number_2: dishab ~ fam_trial_number_c + change_direction_dc + (1 | prolific_id)
m_number_3: dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc + (1 | prolific_id)
           npar    AIC    BIC  logLik deviance   Chisq Df Pr(>Chisq)    
m_number_1    4 2372.9 2395.0 -1182.5   2364.9                          
m_number_2    5 2120.8 2148.4 -1055.4   2110.8 254.111  1    < 2e-16 ***
m_number_3    6 2118.9 2152.1 -1053.5   2106.9   3.884  1    0.04875 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

3.4.3 best fitting model

best_model_number <- m_number_3

check_model(best_model_number)
Some of the variables were in matrix-format - probably you used
  `scale()` on your data?
  If so, and you get an error, please try `datawizard::standardize()` to
  standardize your data.
Some of the variables were in matrix-format - probably you used
  `scale()` on your data?
  If so, and you get an error, please try `datawizard::standardize()` to
  standardize your data.

summary(best_model_number)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc +  
    (1 | prolific_id)
   Data: ABBA_number

REML criterion at convergence: 2135.7

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-6.6860 -0.4503  0.0271  0.5078  5.7093 

Random effects:
 Groups      Name        Variance  Std.Dev.
 prolific_id (Intercept) 9.267e-05 0.009627
 Residual                1.829e-01 0.427723
Number of obs: 1852, groups:  prolific_id, 468

Fixed effects:
                       Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)          -7.616e-02  9.951e-03  4.500e+02  -7.654 1.20e-13 ***
fam_trial_number_c    9.970e-02  6.041e-03  1.844e+03  16.503  < 2e-16 ***
block_position_log_c -2.411e-02  1.224e-02  1.484e+03  -1.970   0.0491 *  
change_direction_dc1  8.547e-02  1.989e-02  1.834e+03   4.297 1.82e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) fm_t__ blc___
fm_trl_nmb_  0.000              
blck_pstn__  0.000  0.000       
chng_drct_1  0.018  0.009 -0.021
plot(effects::allEffects(best_model_number))
Warning in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the
predictors fam_trial_number_c, block_position_log_c are one-column matrices
that were converted to vectors
Warning in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the
predictors fam_trial_number_c, block_position_log_c are one-column matrices
that were converted to vectors
Warning in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the
predictors fam_trial_number_c, block_position_log_c are one-column matrices
that were converted to vectors

4 ABBA: ANIMACY

exp2_core_animacy <- exp2_core %>% filter(violation_type == "animacy") 

# for modeling
ABBA_animacy <- exp2_core_animacy %>% 
  left_join(exp2_pairs_animacy, by = c("violation_type", "bg_image", "dv_image")) %>% 
  filter(!is.na(first_fam) & !is.na(dishab))

# for plotting
ABBA_animacy_noidentity <- exp2_core_animacy %>%
  mutate(
    bg_image = str_replace_all(bg_image, "_[0-9]+", ""),
    dv_image = str_replace_all(dv_image, "_[0-9]+", "")
  )  %>%
  left_join(exp2_pairs_animacy_noidentity, by = c("violation_type", "bg_image", "dv_image")) %>%
  filter(!is.na(first_fam) & !is.na(dishab))

4.1 summary of mean dishab

ABBA_animacy %>% group_by(change_direction) %>% rstatix::get_summary_stats(dishab, type = "common")
# A tibble: 2 × 11
  change_direction     variable     n   min   max median   iqr  mean    sd    se
  <chr>                <fct>    <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>
1 animate to inanimate dishab     931 -2.74  2.53  0.103 0.474 0.124 0.544 0.018
2 inanimate to animate dishab     925 -2.10  2.37  0.165 0.521 0.2   0.508 0.017
# ℹ 1 more variable: ci <dbl>
summary_animacy <- ABBA_animacy %>% group_by(violation_type, change_direction, fam_trial_number) %>% rstatix::get_summary_stats(dishab, type = "common")
summary_animacy
# A tibble: 6 × 13
  violation_type fam_trial_number change_direction    variable     n   min   max
  <chr>                     <dbl> <chr>               <fct>    <dbl> <dbl> <dbl>
1 animacy                       1 animate to inanima… dishab     299 -2.74  1.3 
2 animacy                       3 animate to inanima… dishab     318 -1.79  2.53
3 animacy                       5 animate to inanima… dishab     314 -1.64  2.48
4 animacy                       1 inanimate to anima… dishab     279 -2.10  1.91
5 animacy                       3 inanimate to anima… dishab     312 -1.77  2.20
6 animacy                       5 inanimate to anima… dishab     334 -1.09  2.37
# ℹ 6 more variables: median <dbl>, iqr <dbl>, mean <dbl>, sd <dbl>, se <dbl>,
#   ci <dbl>

4.2 variable recoding

ABBA_animacy$change_direction_dc <- as.factor(ABBA_animacy$change_direction)
contrasts(ABBA_animacy$change_direction_dc) <- -contr.sum(2)/2

ABBA_animacy$one_fam_dc <- as.factor(ABBA_animacy$one_fam)
contrasts(ABBA_animacy$one_fam_dc) <- -contr.sum(2)/2

ABBA_animacy$fam_trial_number_c <- scale(ABBA_animacy$fam_trial_number, center = TRUE, scale = FALSE)
ABBA_animacy$block_position_log_c <- scale(log(ABBA_animacy$block_position), center = TRUE, scale = FALSE)

4.3 diffemean plot (collapsed across identity)

sumstats_ABBA_animacy_alltrials <- calculate_sumstats(ABBA_animacy_noidentity)
pic_ABBA_animacy_noidentity <- plot_diffmean_with_images(image_folder = stacked_image_folder_path, sumstats = sumstats_ABBA_animacy_alltrials, title_suffix = "(all trials)", ylim = 0.2)
pic_ABBA_animacy_noidentity

4.4 models

4.4.1 effect from change direction

m_animacy_1 <- lmer(dishab ~ change_direction_dc + (1|prolific_id), data = ABBA_animacy)

summary(m_animacy_1)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: dishab ~ change_direction_dc + (1 | prolific_id)
   Data: ABBA_animacy

REML criterion at convergence: 2884.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-5.2570 -0.4618 -0.0553  0.4546  4.3895 

Random effects:
 Groups      Name        Variance Std.Dev.
 prolific_id (Intercept) 0.01662  0.1289  
 Residual                0.26025  0.5102  
Number of obs: 1856, groups:  prolific_id, 468

Fixed effects:
                      Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)          1.619e-01  1.326e-02 4.528e+02  12.212  < 2e-16 ***
change_direction_dc1 7.649e-02  2.369e-02 1.380e+03   3.229  0.00127 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr)
chng_drct_1 0.003 

4.4.2 adding raz et al predictors

# adding total trial number and block number
m_animacy_2 <- lmer(dishab ~ fam_trial_number_c + change_direction_dc + (1|prolific_id), data = ABBA_animacy)
m_animacy_3 <- lmer(dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc + (1|prolific_id), data = ABBA_animacy)

anova(m_number_1, m_number_2, m_number_3)
refitting model(s) with ML (instead of REML)
Data: ABBA_number
Models:
m_number_1: dishab ~ change_direction_dc + (1 | prolific_id)
m_number_2: dishab ~ fam_trial_number_c + change_direction_dc + (1 | prolific_id)
m_number_3: dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc + (1 | prolific_id)
           npar    AIC    BIC  logLik deviance   Chisq Df Pr(>Chisq)    
m_number_1    4 2372.9 2395.0 -1182.5   2364.9                          
m_number_2    5 2120.8 2148.4 -1055.4   2110.8 254.111  1    < 2e-16 ***
m_number_3    6 2118.9 2152.1 -1053.5   2106.9   3.884  1    0.04875 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

4.4.3 best fitting model

# best_model_animacy <- m_animacy_4
best_model_animacy <- m_animacy_3

check_model(best_model_animacy)
Some of the variables were in matrix-format - probably you used
  `scale()` on your data?
  If so, and you get an error, please try `datawizard::standardize()` to
  standardize your data.
Some of the variables were in matrix-format - probably you used
  `scale()` on your data?
  If so, and you get an error, please try `datawizard::standardize()` to
  standardize your data.

summary(best_model_animacy)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc +  
    (1 | prolific_id)
   Data: ABBA_animacy

REML criterion at convergence: 2702.5

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-5.1109 -0.4950 -0.0498  0.4678  4.6642 

Random effects:
 Groups      Name        Variance Std.Dev.
 prolific_id (Intercept) 0.01581  0.1257  
 Residual                0.23367  0.4834  
Number of obs: 1856, groups:  prolific_id, 468

Fixed effects:
                      Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)          1.619e-01  1.264e-02 4.523e+02  12.813   <2e-16 ***
fam_trial_number_c   1.020e-01  7.103e-03 1.823e+03  14.367   <2e-16 ***
block_position_log_c 2.844e-02  2.101e-02 1.590e+03   1.354   0.1760    
change_direction_dc1 1.027e-01  3.429e-02 1.499e+03   2.994   0.0028 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) fm_t__ blc___
fm_trl_nmb_ 0.000               
blck_pstn__ 0.003  0.049        
chng_drct_1 0.004  0.019  0.756 
plot(effects::allEffects(best_model_animacy))
Warning in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the
predictors fam_trial_number_c, block_position_log_c are one-column matrices
that were converted to vectors
Warning in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the
predictors fam_trial_number_c, block_position_log_c are one-column matrices
that were converted to vectors
Warning in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the
predictors fam_trial_number_c, block_position_log_c are one-column matrices
that were converted to vectors

5 ABBA: POSE

exp2_core_pose <- exp2_core %>% filter(violation_type == "pose") 

# for modeling
ABBA_pose <- exp2_core_pose %>% 
  left_join(exp2_pairs_pose, by = c("violation_type", "bg_image", "dv_image")) %>% 
  filter(!is.na(first_fam) & !is.na(dishab))

# for plotting
ABBA_pose_noidentity <- exp2_core_pose %>%
  mutate(
    bg_image = str_replace_all(bg_image, "_[0-9]+", ""),
    dv_image = str_replace_all(dv_image, "_[0-9]+", "")
  )  %>%
  left_join(exp2_pairs_pose_noidentity, by = c("violation_type", "bg_image", "dv_image")) %>%
  filter(!is.na(first_fam) & !is.na(dishab))

5.1 summary of mean dishab

ABBA_pose %>% group_by(change_direction) %>% rstatix::get_summary_stats(dishab, type = "common")
# A tibble: 2 × 11
  change_direction variable     n   min   max median   iqr   mean    sd    se
  <chr>            <fct>    <dbl> <dbl> <dbl>  <dbl> <dbl>  <dbl> <dbl> <dbl>
1 left to right    dishab     939 -2.30  2.92 -0.029 0.394 -0.074 0.453 0.015
2 right to left    dishab     917 -2.54  2.52 -0.028 0.433 -0.078 0.526 0.017
# ℹ 1 more variable: ci <dbl>
ABBA_pose %>% group_by(violation_type, change_direction, fam_trial_number) %>% rstatix::get_summary_stats(dishab, type = "common")
# A tibble: 6 × 13
  violation_type fam_trial_number change_direction variable     n   min   max
  <chr>                     <dbl> <chr>            <fct>    <dbl> <dbl> <dbl>
1 pose                          1 left to right    dishab     320 -2.30 0.962
2 pose                          3 left to right    dishab     307 -1.97 1.56 
3 pose                          5 left to right    dishab     312 -1.79 2.92 
4 pose                          1 right to left    dishab     324 -2.54 1.32 
5 pose                          3 right to left    dishab     287 -1.89 1.78 
6 pose                          5 right to left    dishab     306 -1.61 2.52 
# ℹ 6 more variables: median <dbl>, iqr <dbl>, mean <dbl>, sd <dbl>, se <dbl>,
#   ci <dbl>

5.2 variable recoding

ABBA_pose$change_direction_dc <- as.factor(ABBA_pose$change_direction)
contrasts(ABBA_pose$change_direction_dc) <- -contr.sum(2)/2

ABBA_pose$one_fam_dc <- as.factor(ABBA_pose$one_fam)
contrasts(ABBA_pose$one_fam_dc) <- -contr.sum(2)/2

ABBA_pose$fam_trial_number_c <- scale(ABBA_pose$fam_trial_number, center = TRUE, scale = FALSE)
ABBA_pose$block_position_log_c <- scale(log(ABBA_pose$block_position), center = TRUE, scale = FALSE)

5.3 diffemean plot (collapsed across identity)

sumstats_ABBA_pose_alltrials_noidentity <- calculate_sumstats(ABBA_pose_noidentity)
pic_ABBA_pose_noidentity <- plot_diffmean_with_images(image_folder = stacked_image_folder_path, sumstats = sumstats_ABBA_pose_alltrials_noidentity, title_suffix = "(all trials)", ylim = 0.2)
pic_ABBA_pose_noidentity

5.4 models

5.4.1 effect from change direction

m_pose_1 <- lmer(dishab ~ change_direction_dc + (1|prolific_id), data = ABBA_pose)

summary(m_pose_1)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: dishab ~ change_direction_dc + (1 | prolific_id)
   Data: ABBA_pose

REML criterion at convergence: 2629.4

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-5.0369 -0.3712  0.0930  0.4504  6.1516 

Random effects:
 Groups      Name        Variance Std.Dev.
 prolific_id (Intercept) 0.008756 0.09357 
 Residual                0.231736 0.48139 
Number of obs: 1856, groups:  prolific_id, 468

Fixed effects:
                       Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)            -0.07579    0.01198  459.76427  -6.324 6.05e-10 ***
change_direction_dc1   -0.00431    0.02267 1821.56631  -0.190    0.849    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr)
chng_drct_1 0.011 

5.4.2 adding raz et al predictors

# adding total trial number and block number
m_pose_2 <- lmer(dishab ~ fam_trial_number_c + change_direction_dc + (1|prolific_id), data = ABBA_pose)
m_pose_3 <- lmer(dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc + (1|prolific_id), data = ABBA_pose)

anova(m_number_1, m_number_2, m_number_3)
refitting model(s) with ML (instead of REML)
Data: ABBA_number
Models:
m_number_1: dishab ~ change_direction_dc + (1 | prolific_id)
m_number_2: dishab ~ fam_trial_number_c + change_direction_dc + (1 | prolific_id)
m_number_3: dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc + (1 | prolific_id)
           npar    AIC    BIC  logLik deviance   Chisq Df Pr(>Chisq)    
m_number_1    4 2372.9 2395.0 -1182.5   2364.9                          
m_number_2    5 2120.8 2148.4 -1055.4   2110.8 254.111  1    < 2e-16 ***
m_number_3    6 2118.9 2152.1 -1053.5   2106.9   3.884  1    0.04875 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

5.4.3 best fitting model

# best_model_pose <- m_pose_4
best_model_pose <- m_pose_3

check_model(best_model_pose)
Some of the variables were in matrix-format - probably you used
  `scale()` on your data?
  If so, and you get an error, please try `datawizard::standardize()` to
  standardize your data.
Some of the variables were in matrix-format - probably you used
  `scale()` on your data?
  If so, and you get an error, please try `datawizard::standardize()` to
  standardize your data.

summary(best_model_pose)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc +  
    (1 | prolific_id)
   Data: ABBA_pose

REML criterion at convergence: 2407.2

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.8901 -0.4481  0.0294  0.5057  6.1025 

Random effects:
 Groups      Name        Variance Std.Dev.
 prolific_id (Intercept) 0.004422 0.0665  
 Residual                0.207129 0.4551  
Number of obs: 1856, groups:  prolific_id, 468

Fixed effects:
                       Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)          -7.577e-02  1.100e-02  4.583e+02  -6.886  1.9e-11 ***
fam_trial_number_c    1.027e-01  6.473e-03  1.851e+03  15.864  < 2e-16 ***
block_position_log_c -1.870e-02  1.298e-02  1.485e+03  -1.441    0.150    
change_direction_dc1 -1.386e-03  2.131e-02  1.829e+03  -0.065    0.948    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) fm_t__ blc___
fm_trl_nmb_  0.000              
blck_pstn__  0.000 -0.003       
chng_drct_1  0.011  0.007 -0.012
plot(effects::allEffects(best_model_pose))
Warning in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the
predictors fam_trial_number_c, block_position_log_c are one-column matrices
that were converted to vectors
Warning in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the
predictors fam_trial_number_c, block_position_log_c are one-column matrices
that were converted to vectors
Warning in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the
predictors fam_trial_number_c, block_position_log_c are one-column matrices
that were converted to vectors

6 check baseline looking

6.1 get baseline looking for each image

stimuli_baseline_fam_img <- exp2_first_fam_only %>%
  group_by(bg_image) %>%
  mutate(fam_img_baseline = mean(total_rt_log, na.rm = TRUE)) %>% 
  select(bg_image, fam_img_baseline) %>%
  distinct()

stimuli_baseline_test_img <- stimuli_baseline_fam_img %>% rename(dv_image = bg_image, test_img_baseline = fam_img_baseline)

6.2 number

ABBA_number$bg_image_type_dc <- as.factor(ABBA_number$bg_image_type)
contrasts(ABBA_number$bg_image_type_dc) <- contr.sum(2)/2

ABBA_number_baselined <- ABBA_number %>% 
  left_join(stimuli_baseline_fam_img, by = "bg_image") %>%
  left_join(stimuli_baseline_test_img, by = "dv_image")

m_number_baselined <- lmer(dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc + fam_img_baseline + test_img_baseline + (1|prolific_id), data = ABBA_number_baselined)
summary(m_number_baselined)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc +  
    fam_img_baseline + test_img_baseline + (1 | prolific_id)
   Data: ABBA_number_baselined

REML criterion at convergence: 2141.6

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-6.6878 -0.4511  0.0247  0.5158  5.7092 

Random effects:
 Groups      Name        Variance  Std.Dev.
 prolific_id (Intercept) 0.0001835 0.01355 
 Residual                0.1830274 0.42782 
Number of obs: 1852, groups:  prolific_id, 468

Fixed effects:
                       Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)          -4.080e-01  7.696e-01  1.629e+03  -0.530  0.59606    
fam_trial_number_c    9.978e-02  6.046e-03  1.842e+03  16.504  < 2e-16 ***
block_position_log_c -1.891e-02  1.753e-02  1.650e+03  -1.079  0.28084    
change_direction_dc1  8.113e-02  2.488e-02  1.843e+03   3.261  0.00113 ** 
fam_img_baseline      9.233e-04  9.120e-02  1.807e+03   0.010  0.99192    
test_img_baseline     4.206e-02  8.712e-02  1.829e+03   0.483  0.62936    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) fm_t__ blc___ chn__1 fm_mg_
fm_trl_nmb_ -0.020                            
blck_pstn__ -0.715  0.014                     
chng_drct_1 -0.013 -0.004  0.022              
fam_mg_bsln -0.586 -0.004  0.453  0.494       
tst_mg_bsln -0.530  0.027  0.344 -0.502 -0.376

6.3 animacy

ABBA_animacy$bg_image_type_dc <- as.factor(ABBA_animacy$bg_image_type)
contrasts(ABBA_animacy$bg_image_type_dc) <- contr.sum(2)/2

ABBA_animacy_baselined <- ABBA_animacy %>% 
  left_join(stimuli_baseline_fam_img, by = "bg_image") %>%
  left_join(stimuli_baseline_test_img, by = "dv_image")

m_animacy_baselined <- lmer(dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc + fam_img_baseline + test_img_baseline + (1|prolific_id), data = ABBA_animacy_baselined)
summary(m_animacy_baselined)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc +  
    fam_img_baseline + test_img_baseline + (1 | prolific_id)
   Data: ABBA_animacy_baselined

REML criterion at convergence: 2707.1

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-5.1048 -0.4966 -0.0512  0.4684  4.6568 

Random effects:
 Groups      Name        Variance Std.Dev.
 prolific_id (Intercept) 0.01583  0.1258  
 Residual                0.23390  0.4836  
Number of obs: 1856, groups:  prolific_id, 468

Fixed effects:
                       Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)           5.453e-01  1.219e+00  1.774e+03   0.447   0.6548    
fam_trial_number_c    1.020e-01  7.111e-03  1.822e+03  14.350   <2e-16 ***
block_position_log_c  2.850e-02  2.102e-02  1.587e+03   1.356   0.1753    
change_direction_dc1  1.020e-01  6.130e-02  1.790e+03   1.664   0.0962 .  
fam_img_baseline     -2.345e-02  1.298e-01  1.817e+03  -0.181   0.8567    
test_img_baseline    -2.620e-02  1.202e-01  1.825e+03  -0.218   0.8274    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) fm_t__ blc___ chn__1 fm_mg_
fm_trl_nmb_  0.006                            
blck_pstn__  0.008  0.049                     
chng_drct_1  0.069  0.041  0.413              
fam_mg_bsln -0.667 -0.031  0.004 -0.661       
tst_mg_bsln -0.593  0.026 -0.015  0.624 -0.204

6.4 pose

ABBA_pose$bg_image_type_dc <- as.factor(ABBA_pose$bg_image_type)
contrasts(ABBA_pose$bg_image_type_dc) <- contr.sum(2)/2

ABBA_pose_baselined <- ABBA_pose %>% 
  left_join(stimuli_baseline_fam_img, by = "bg_image") %>%
  left_join(stimuli_baseline_test_img, by = "dv_image")

m_pose_baselined <- lmer(dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc + fam_img_baseline + test_img_baseline + (1|prolific_id), data = ABBA_pose_baselined)
summary(m_pose_baselined)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
dishab ~ fam_trial_number_c + block_position_log_c + change_direction_dc +  
    fam_img_baseline + test_img_baseline + (1 | prolific_id)
   Data: ABBA_pose_baselined

REML criterion at convergence: 2410.7

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.9038 -0.4544  0.0263  0.5022  6.1067 

Random effects:
 Groups      Name        Variance Std.Dev.
 prolific_id (Intercept) 0.004554 0.06749 
 Residual                0.206973 0.45494 
Number of obs: 1856, groups:  prolific_id, 468

Fixed effects:
                       Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)          -9.112e-01  7.154e-01  1.693e+03  -1.274    0.203    
fam_trial_number_c    1.026e-01  6.472e-03  1.849e+03  15.859   <2e-16 ***
block_position_log_c -4.929e-03  1.732e-02  1.657e+03  -0.285    0.776    
change_direction_dc1 -1.263e-03  2.131e-02  1.827e+03  -0.059    0.953    
fam_img_baseline     -2.708e-02  1.073e-01  1.846e+03  -0.253    0.801    
test_img_baseline     1.353e-01  1.010e-01  1.843e+03   1.339    0.181    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) fm_t__ blc___ chn__1 fm_mg_
fm_trl_nmb_ -0.002                            
blck_pstn__ -0.662 -0.001                     
chng_drct_1 -0.014  0.007  0.001              
fam_mg_bsln -0.497  0.008  0.310  0.017       
tst_mg_bsln -0.390 -0.006  0.279 -0.004 -0.606

7 Effect of unchanged feature in stimuli

7.1 in number change

ABBA_number_baselined$animacy_dc <- as_factor(ABBA_number_baselined$animacy)
contrasts(ABBA_number_baselined$animacy_dc) <- -contr.sum(2)/2

ABBA_number_baselined %>% group_by(animacy_dc, change_direction) %>% rstatix::get_summary_stats(dishab, type = "common")
# A tibble: 4 × 12
  change_direction animacy_dc variable     n   min   max median   iqr   mean
  <chr>            <fct>      <fct>    <dbl> <dbl> <dbl>  <dbl> <dbl>  <dbl>
1 pair to single   inanimate  dishab     466 -1.89  1.28 -0.047 0.395 -0.083
2 single to pair   inanimate  dishab     455 -2.46  1.56  0.004 0.427 -0.039
3 pair to single   animate    dishab     477 -3.20  1.28 -0.048 0.419 -0.15 
4 single to pair   animate    dishab     454 -2.04  2.39  0.002 0.388 -0.032
# ℹ 3 more variables: sd <dbl>, se <dbl>, ci <dbl>
# m_number_inter_ani <- lmer(dishab ~ fam_trial_number_c + block_position_log_c + fam_img_baseline + test_img_baseline + change_direction_dc * animacy_dc + (1|prolific_id), data = ABBA_number_baselined) # singular
m_number_inter_ani <- lm(dishab ~ fam_trial_number_c + block_position_log_c + fam_img_baseline + test_img_baseline + change_direction_dc * animacy_dc, data = ABBA_number_baselined)
summary(m_number_inter_ani)

Call:
lm(formula = dishab ~ fam_trial_number_c + block_position_log_c + 
    fam_img_baseline + test_img_baseline + change_direction_dc * 
    animacy_dc, data = ABBA_number_baselined)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.83546 -0.19768  0.01107  0.21873  2.41769 

Coefficients:
                                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)                       0.352297   1.515686   0.232   0.8162    
fam_trial_number_c                0.099985   0.006045  16.539   <2e-16 ***
block_position_log_c             -0.015196   0.018796  -0.808   0.4189    
fam_img_baseline                 -0.135276   0.131394  -1.030   0.3034    
test_img_baseline                 0.079790   0.127174   0.627   0.5305    
change_direction_dc1              0.062909   0.026217   2.400   0.0165 *  
animacy_dc1                      -0.034240   0.060051  -0.570   0.5686    
change_direction_dc1:animacy_dc1  0.097264   0.045313   2.146   0.0320 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4277 on 1844 degrees of freedom
Multiple R-squared:  0.1393,    Adjusted R-squared:  0.1361 
F-statistic: 42.65 on 7 and 1844 DF,  p-value: < 2.2e-16

7.2 in animacy change

ABBA_animacy_baselined$number_dc <- as_factor(ABBA_animacy_baselined$number)
contrasts(ABBA_animacy_baselined$number_dc) <- -contr.sum(2)/2

ABBA_animacy_baselined %>% group_by(number_dc, change_direction) %>% rstatix::get_summary_stats(dishab, type = "common")
# A tibble: 4 × 12
  change_direction number_dc variable     n   min   max median   iqr  mean    sd
  <chr>            <fct>     <fct>    <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl>
1 animate to inan… single    dishab     471 -2.06  2.53  0.1   0.475 0.132 0.541
2 inanimate to an… single    dishab     460 -2.10  2.20  0.173 0.522 0.195 0.483
3 animate to inan… pair      dishab     460 -2.74  2.48  0.105 0.468 0.116 0.546
4 inanimate to an… pair      dishab     465 -1.75  2.37  0.153 0.519 0.204 0.532
# ℹ 2 more variables: se <dbl>, ci <dbl>
m_animacy_3_inter_num <- lmer(dishab ~ fam_trial_number_c + block_position_log_c + fam_img_baseline + test_img_baseline + change_direction_dc * number_dc + (1|prolific_id), data = ABBA_animacy_baselined)
summary(m_animacy_3_inter_num)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
dishab ~ fam_trial_number_c + block_position_log_c + fam_img_baseline +  
    test_img_baseline + change_direction_dc * number_dc + (1 |  
    prolific_id)
   Data: ABBA_animacy_baselined

REML criterion at convergence: 2716.2

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-5.0914 -0.4977 -0.0501  0.4685  4.6526 

Random effects:
 Groups      Name        Variance Std.Dev.
 prolific_id (Intercept) 0.01581  0.1257  
 Residual                0.23417  0.4839  
Number of obs: 1856, groups:  prolific_id, 468

Fixed effects:
                                  Estimate Std. Error         df t value
(Intercept)                      5.482e-01  1.640e+00  1.789e+03   0.334
fam_trial_number_c               1.021e-01  7.115e-03  1.820e+03  14.344
block_position_log_c             2.842e-02  2.105e-02  1.583e+03   1.351
fam_img_baseline                -3.883e-02  1.601e-01  1.822e+03  -0.243
test_img_baseline               -1.121e-02  1.485e-01  1.825e+03  -0.076
change_direction_dc1             1.099e-01  6.790e-02  1.809e+03   1.619
number_dc1                       3.518e-05  3.092e-02  1.801e+03   0.001
change_direction_dc1:number_dc1  1.448e-02  5.307e-02  1.800e+03   0.273
                                Pr(>|t|)    
(Intercept)                        0.738    
fam_trial_number_c                <2e-16 ***
block_position_log_c               0.177    
fam_img_baseline                   0.808    
test_img_baseline                  0.940    
change_direction_dc1               0.106    
number_dc1                         0.999    
change_direction_dc1:number_dc1    0.785    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) fm_t__ blc___ fm_mg_ tst_m_ chn__1 nmbr_1
fm_trl_nmb_  0.010                                          
blck_pstn__ -0.016  0.048                                   
fam_mg_bsln -0.716 -0.032  0.023                            
tst_mg_bsln -0.659  0.021 -0.002 -0.053                     
chng_drct_1  0.056  0.042  0.367 -0.641  0.611              
number_dc1   0.668  0.008 -0.034 -0.467 -0.453  0.012       
chng_d_1:_1 -0.002  0.010 -0.013 -0.347  0.377  0.429 -0.009

8 PLOTS

8.1 asymmetry

ABBA_all <- bind_rows(ABBA_pose, ABBA_number, ABBA_animacy)
ABBA_all$violation_type <- as.factor(ABBA_all$violation_type)
ABBA_all$violation_type <- fct_relevel(ABBA_all$violation_type, "number", "animacy", "pose")
levels(ABBA_all$violation_type) <- c("Number", "Animacy","Pose")
ABBA_all$change_direction <- as.factor(ABBA_all$change_direction)
ABBA_all$change_direction <- fct_relevel(ABBA_all$change_direction, "pair to single", "single to pair", "animate to inanimate", "inanimate to animate",  "right to left", "left to right")

pic_ABBA_allcond <- ABBA_all %>% 
   ggplot(aes(x = change_direction, y = dishab, fill = violation_type)) + 
    geom_boxplot(alpha = 0.8, width = 0.4, outlier.shape = 1, outlier.alpha = 0) + 
    geom_point(alpha = 0.01) +
  stat_summary(fun = "mean", geom = "point", size = 1, position = position_dodge(.9), color = "red") +
    stat_summary(fun.data = "mean_se", geom = "errorbar", size = 0.5, width = 0.15, position = position_dodge(.9), color = "red") +
    labs(x = "", y = "Dishabituation Magnitude (log s)", fill = "Condition") +
    theme_classic() +
  coord_cartesian(ylim = c(-1.2, 1.2)) +
  theme(legend.position = "top", 
        text = element_text(size = 14),
        axis.text = element_text(size = 11),
    axis.title = element_text(size = 14)) +
  scale_fill_manual(values = c("#66c2a5", "#fc8d62", "#8da0cb"))
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.
pic_ABBA_allcond

ggsave("~/Desktop/pic_ABBA_allcond.png", pic_ABBA_allcond, width = 10, height = 4)
dot_errrobar_plot <- ABBA_all %>% 
  ggplot(aes(x = change_direction, y = dishab, color = violation_type)) + 
  stat_summary(fun = mean, geom = "point", 
               position = position_dodge(0.9), 
               size = 3) +
  stat_summary(fun.data = mean_cl_boot, geom = "errorbar", 
               position = position_dodge(0.9), 
               width = 0.15, size = 0.6) +
  labs(x = "", y = "Dishabituation Magnitude (log s)", color = "Condition") +
  # geom_hline(yintercept = 0, linetype = "dashed", color = "gray40", linewidth = 0.6) +
  theme_classic() +
  coord_cartesian(ylim = c(-0.22, 0.22)) +
  theme(
    legend.position = "top", 
    text = element_text(size = 14),
    axis.text = element_text(size = 11),
    axis.title = element_text(size = 14)
  ) +
  scale_color_manual(values = c("#66c2a5", "#fc8d62", "#8da0cb"))
ggsave("~/Desktop/pic_ABBA_allcond_doterrorbar.png", dot_errrobar_plot, width = 10, height = 3)

8.2 asymmetry effect by unchanged stimuli

ggsave("ABBA_number_noidentity.png", pic_ABBA_number_noidentity, width = 4.5, height = 4, path = "~/Desktop/")
ggsave("ABBA_animacy_noidentity.png", pic_ABBA_animacy_noidentity, width = 4.5, height = 4, path = "~/Desktop/")
ggsave("ABBA_pose_noidentity.png", pic_ABBA_pose_noidentity, width = 4.5, height = 4, path = "~/Desktop/")

9 SI: model outputs

sjPlot::tab_model(m_number_1)
  dishab
Predictors Estimates CI p
(Intercept) -0.08 -0.10 – -0.06 <0.001
change direction dc1 0.08 0.04 – 0.12 <0.001
Random Effects
σ2 0.21
τ00 prolific_id 0.00
ICC 0.00
N prolific_id 468
Observations 1852
Marginal R2 / Conditional R2 0.008 / 0.012
sjPlot::tab_model(m_animacy_1)
  dishab
Predictors Estimates CI p
(Intercept) 0.16 0.14 – 0.19 <0.001
change direction dc1 0.08 0.03 – 0.12 0.001
Random Effects
σ2 0.26
τ00 prolific_id 0.02
ICC 0.06
N prolific_id 468
Observations 1856
Marginal R2 / Conditional R2 0.005 / 0.065
sjPlot::tab_model(m_pose_1)
  dishab
Predictors Estimates CI p
(Intercept) -0.08 -0.10 – -0.05 <0.001
change direction dc1 -0.00 -0.05 – 0.04 0.849
Random Effects
σ2 0.23
τ00 prolific_id 0.01
ICC 0.04
N prolific_id 468
Observations 1856
Marginal R2 / Conditional R2 0.000 / 0.036
sjPlot::tab_model(best_model_number)
  dishab
Predictors Estimates CI p
(Intercept) -0.08 -0.10 – -0.06 <0.001
fam trial number c 0.10 0.09 – 0.11 <0.001
block position log c -0.02 -0.05 – -0.00 0.049
change direction dc1 0.09 0.05 – 0.12 <0.001
Random Effects
σ2 0.18
τ00 prolific_id 0.00
ICC 0.00
N prolific_id 468
Observations 1852
Marginal R2 / Conditional R2 0.137 / 0.137
sjPlot::tab_model(best_model_animacy)
  dishab
Predictors Estimates CI p
(Intercept) 0.16 0.14 – 0.19 <0.001
fam trial number c 0.10 0.09 – 0.12 <0.001
block position log c 0.03 -0.01 – 0.07 0.176
change direction dc1 0.10 0.04 – 0.17 0.003
Random Effects
σ2 0.23
τ00 prolific_id 0.02
ICC 0.06
N prolific_id 468
Observations 1856
Marginal R2 / Conditional R2 0.104 / 0.161
sjPlot::tab_model(best_model_pose)
  dishab
Predictors Estimates CI p
(Intercept) -0.08 -0.10 – -0.05 <0.001
fam trial number c 0.10 0.09 – 0.12 <0.001
block position log c -0.02 -0.04 – 0.01 0.150
change direction dc1 -0.00 -0.04 – 0.04 0.948
Random Effects
σ2 0.21
τ00 prolific_id 0.00
ICC 0.02
N prolific_id 468
Observations 1856
Marginal R2 / Conditional R2 0.120 / 0.139
sjPlot::tab_model(m_number_baselined)
  dishab
Predictors Estimates CI p
(Intercept) -0.41 -1.92 – 1.10 0.596
fam trial number c 0.10 0.09 – 0.11 <0.001
block position log c -0.02 -0.05 – 0.02 0.281
change direction dc1 0.08 0.03 – 0.13 0.001
fam img baseline 0.00 -0.18 – 0.18 0.992
test img baseline 0.04 -0.13 – 0.21 0.629
Random Effects
σ2 0.18
τ00 prolific_id 0.00
ICC 0.00
N prolific_id 468
Observations 1852
Marginal R2 / Conditional R2 0.137 / 0.138
sjPlot::tab_model(m_animacy_baselined)
  dishab
Predictors Estimates CI p
(Intercept) 0.55 -1.85 – 2.94 0.655
fam trial number c 0.10 0.09 – 0.12 <0.001
block position log c 0.03 -0.01 – 0.07 0.175
change direction dc1 0.10 -0.02 – 0.22 0.096
fam img baseline -0.02 -0.28 – 0.23 0.857
test img baseline -0.03 -0.26 – 0.21 0.827
Random Effects
σ2 0.23
τ00 prolific_id 0.02
ICC 0.06
N prolific_id 468
Observations 1856
Marginal R2 / Conditional R2 0.104 / 0.161
sjPlot::tab_model(m_pose_baselined)
  dishab
Predictors Estimates CI p
(Intercept) -0.91 -2.31 – 0.49 0.203
fam trial number c 0.10 0.09 – 0.12 <0.001
block position log c -0.00 -0.04 – 0.03 0.776
change direction dc1 -0.00 -0.04 – 0.04 0.953
fam img baseline -0.03 -0.24 – 0.18 0.801
test img baseline 0.14 -0.06 – 0.33 0.181
Random Effects
σ2 0.21
τ00 prolific_id 0.00
ICC 0.02
N prolific_id 468
Observations 1856
Marginal R2 / Conditional R2 0.121 / 0.140