library(tidyverse)
library(here)
library(lmerTest)
library(MuMIn)
library(lme4)
library(dotenv)
library(broom)
library(broom.mixed)
library(effects)
library(emmeans)

env_file = here(".env")
if (file.exists(env_file)) {
  load_dot_env(file = env_file)
  PROJECT_VERSION <- Sys.getenv("PROJECT_VERSION")
  if (PROJECT_VERSION == "") PROJECT_VERSION <- "main"
} else {
  PROJECT_VERSION <- "main"
}

VALID_SECTIONS <- c("sample1", "sample2")
DATA_FOLDER    <- if (PROJECT_VERSION %in% c(VALID_SECTIONS, "main")) "main" else PROJECT_VERSION
SECTION_FILTER <- if (PROJECT_VERSION %in% VALID_SECTIONS) PROJECT_VERSION else NULL
source("lmer_helpers.R")

Load data

trial_metadata <- read.csv(here("data","metadata","level-trialtype_data.csv"))
trial_summary_data <- read.csv(here("data", DATA_FOLDER, "processed_data", "level-trials_data.csv"))
bv_dino_similarities <- read.csv(here("data", "embeddings", "similarities-dinobv_data.csv"))

usable_trials <- trial_summary_data |>
  # excluding possible scam participant
  filter(exclude_participant_insufficient_data == 0 & trial_exclusion == 0 & exclude_participant == 0 & SubjectInfo.subjID != "PH2RNZ")

# Merging with similarity information and mean-centering main effects
trials_with_effect_vars <- usable_trials |>
  left_join(trial_metadata) |>
  mutate(age_in_months = SubjectInfo.testAge/30) |>
  left_join(bv_dino_similarities |> transmute(Trials.imagePair = paste0(word1, "-", word2), image_similarity_bv =  image_similarity)) 
Joining with `by = join_by(Trials.trialID, Trials.targetImage,
Trials.distractorImage, Trials.imagePair, section)`
Joining with `by = join_by(Trials.imagePair)`
# Filter by section if PROJECT_VERSION specifies a particular sample
if (!is.null(SECTION_FILTER)) {
  trials_with_effect_vars <- trials_with_effect_vars |> filter(section == SECTION_FILTER)
}

Sanity check - making sure all participants have at least 16 trials and that we have 83 participants

low_trial_count <- trials_with_effect_vars |> distinct(SubjectInfo.subjID,Trials.trialID) |> summarize(n=n(),.by=SubjectInfo.subjID) |> filter(n < 25)
nrow(trials_with_effect_vars |> distinct(SubjectInfo.subjID))
[1] 144
tidy_model <- function(main_effect){
  table_data <- tidy(main_effect, effects = "fixed") %>%
  mutate(
    #p.value = 2 * (1 - pt(abs(statistic),df)),  # Calculate p-values for lmer - just using default calculated ones
    p.value.condensed = case_when(
      p.value < .001 ~ "<.001", 
      p.value < .01 ~ "<.01",
      p.value < .05 ~ "<.05",
      TRUE ~ sprintf("%.3f", p.value)),
    term = case_when(
      term == "(Intercept)" ~ "Intercept",
      term == "scale(age_in_months)" ~ "Age (scaled)",
      #term == "scale(image_similarity)" ~ "Target-distractor image embedding similarity (scaled)",
      TRUE ~ term
    )
  ) %>%
  rename(
    Predictor = term,
    "b" = estimate,
    "SE" = std.error,
    "t" = statistic,  # Note: changed from z to t for lmer
    "p" = p.value.condensed,
    "p.full" = p.value
  ) %>%
  mutate(across(c("b", "SE", "t"), ~round(., 2)))
  return(table_data)
}

Run mixed-effects model

Model 1: This is the model we said we’d run in our pre-reg

prereg_main_effect <- lmer(scale(corrected_target_looking) ~ scale(text_similarity)*scale(age_in_months)
                    + (scale(text_similarity) | SubjectInfo.subjID)
                    + (1|Trials.targetImage) 
                    + (1|Trials.imagePair) + (1 | section),
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
summary(prereg_main_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(text_similarity) * scale(age_in_months) +  
    (scale(text_similarity) | SubjectInfo.subjID) + (1 | Trials.targetImage) +  
    (1 | Trials.imagePair) + (1 | section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10943.6

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.93471 -0.63471 -0.02957  0.67000  2.86224 

Random effects:
 Groups             Name                   Variance  Std.Dev. Corr
 SubjectInfo.subjID (Intercept)            0.0238941 0.15458      
                    scale(text_similarity) 0.0001475 0.01215  1.00
 Trials.targetImage (Intercept)            0.0122063 0.11048      
 Trials.imagePair   (Intercept)            0.0019774 0.04447      
 section            (Intercept)            0.0000000 0.00000      
 Residual                                  0.9578812 0.97871      
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; Trials.imagePair, 32; section, 2

Fixed effects:
                                              Estimate Std. Error         df
(Intercept)                                 -8.513e-03  2.758e-02  5.246e+01
scale(text_similarity)                      -2.328e-02  2.064e-02  3.216e+01
scale(age_in_months)                         6.871e-02  2.037e-02  1.432e+02
scale(text_similarity):scale(age_in_months) -1.108e-02  1.594e-02  3.715e+03
                                            t value Pr(>|t|)    
(Intercept)                                  -0.309 0.758799    
scale(text_similarity)                       -1.128 0.267851    
scale(age_in_months)                          3.373 0.000957 ***
scale(text_similarity):scale(age_in_months)  -0.695 0.486953    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__)
scl(txt_sm)  0.048              
scl(g_n_mn) -0.001 -0.001       
scl(_):(__)  0.001 -0.018  0.045
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Singular fit debugs for image similarity

Swapping text similarity with image similarity:

image_similarity_effect <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                    + (scale(image_similarity) | SubjectInfo.subjID)
                    + (1|Trials.targetImage) 
                    + (1|Trials.imagePair)
                    + (1|section), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
summary(image_similarity_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    (scale(image_similarity) | SubjectInfo.subjID) + (1 | Trials.targetImage) +  
    (1 | Trials.imagePair) + (1 | section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10939.3

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.93619 -0.63040 -0.02968  0.67129  2.87363 

Random effects:
 Groups             Name                    Variance Std.Dev. Corr
 SubjectInfo.subjID (Intercept)             0.024477 0.15645      
                    scale(image_similarity) 0.001102 0.03320  1.00
 Trials.targetImage (Intercept)             0.011243 0.10603      
 Trials.imagePair   (Intercept)             0.001025 0.03202      
 section            (Intercept)             0.000000 0.00000      
 Residual                                   0.956826 0.97818      
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; Trials.imagePair, 32; section, 2

Fixed effects:
                                              Estimate Std. Error        df
(Intercept)                                   -0.00736    0.02671  51.96271
scale(image_similarity)                       -0.04052    0.01994  27.53117
scale(age_in_months)                           0.06874    0.02046 144.28741
scale(image_similarity):scale(age_in_months)  -0.01010    0.01596 927.71712
                                             t value Pr(>|t|)    
(Intercept)                                   -0.276 0.784013    
scale(image_similarity)                       -2.033 0.051813 .  
scale(age_in_months)                           3.359 0.000999 ***
scale(image_similarity):scale(age_in_months)  -0.633 0.527215    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__)
scl(mg_sml)  0.062              
scl(g_n_mn)  0.000 -0.009       
scl(_):(__) -0.007 -0.007  0.119
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

running into a singular fit, I tried removing each of the random effects but only removing the random slope of image_similarity and the random intercept for image pair fixed this. This is okay for now since we see a similar effect with the singular model and this model. (although the effect below is stronger)

image_similarity_effect <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                     + (1 | SubjectInfo.subjID)
                     + (1|Trials.targetImage)
                     + (1 | section), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
summary(image_similarity_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    (1 | SubjectInfo.subjID) + (1 | Trials.targetImage) + (1 |      section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10941.6

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.9306 -0.6336 -0.0282  0.6690  2.8633 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.02381  0.1543  
 Trials.targetImage (Intercept) 0.01191  0.1092  
 section            (Intercept) 0.00000  0.0000  
 Residual                       0.95874  0.9792  
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                  -7.047e-03  2.628e-02  6.559e+01
scale(image_similarity)                      -4.038e-02  1.899e-02  2.120e+02
scale(age_in_months)                          6.907e-02  2.036e-02  1.433e+02
scale(image_similarity):scale(age_in_months) -9.679e-03  1.572e-02  3.740e+03
                                             t value Pr(>|t|)    
(Intercept)                                   -0.268 0.789439    
scale(image_similarity)                       -2.127 0.034575 *  
scale(age_in_months)                           3.393 0.000895 ***
scale(image_similarity):scale(age_in_months)  -0.616 0.538067    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__)
scl(mg_sml) -0.008              
scl(g_n_mn)  0.000 -0.011       
scl(_):(__) -0.009 -0.007  0.008
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

What about this similarity effect per section?

image_similarity_effect_sample1 <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                     + (1 | SubjectInfo.subjID)
                     + (1|Trials.targetImage), 
                    data = trials_with_effect_vars |> filter(section=="sample1"))
summary(image_similarity_effect_sample1)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    (1 | SubjectInfo.subjID) + (1 | Trials.targetImage)
   Data: filter(trials_with_effect_vars, section == "sample1")

REML criterion at convergence: 6983

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.79001 -0.62653 -0.03021  0.66446  2.78185 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.01750  0.1323  
 Trials.targetImage (Intercept) 0.01556  0.1247  
 Residual                       0.96109  0.9804  
Number of obs: 2468, groups:  SubjectInfo.subjID, 91; Trials.targetImage, 24

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                  -8.395e-03  3.555e-02  2.977e+01
scale(image_similarity)                      -6.167e-02  2.474e-02  1.576e+02
scale(age_in_months)                          5.875e-02  2.416e-02  9.031e+01
scale(image_similarity):scale(age_in_months) -2.584e-02  1.969e-02  2.379e+03
                                             t value Pr(>|t|)  
(Intercept)                                   -0.236   0.8149  
scale(image_similarity)                       -2.493   0.0137 *
scale(age_in_months)                           2.432   0.0170 *
scale(image_similarity):scale(age_in_months)  -1.313   0.1895  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__)
scl(mg_sml) -0.002              
scl(g_n_mn)  0.002 -0.003       
scl(_):(__)  0.001 -0.007  0.007
image_similarity_effect_sample2 <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                     + (1 | SubjectInfo.subjID)
                     + (1|Trials.targetImage), 
                    data = trials_with_effect_vars |> filter(section=="sample2"))
summary(image_similarity_effect_sample2)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    (1 | SubjectInfo.subjID) + (1 | Trials.targetImage)
   Data: filter(trials_with_effect_vars, section == "sample2")

REML criterion at convergence: 3968.5

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-3.01344 -0.65087 -0.03933  0.69452  2.82763 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.038361 0.19586 
 Trials.targetImage (Intercept) 0.005349 0.07314 
 Residual                       0.952483 0.97595 
Number of obs: 1401, groups:  SubjectInfo.subjID, 53; Trials.targetImage, 24

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                  -5.472e-03  4.069e-02  2.977e+01
scale(image_similarity)                      -1.320e-02  2.872e-02  4.550e+01
scale(age_in_months)                          8.755e-02  3.743e-02  5.142e+01
scale(image_similarity):scale(age_in_months)  1.236e-02  2.584e-02  1.334e+03
                                             t value Pr(>|t|)  
(Intercept)                                   -0.134   0.8939  
scale(image_similarity)                       -0.460   0.6479  
scale(age_in_months)                           2.339   0.0233 *
scale(image_similarity):scale(age_in_months)   0.478   0.6324  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__)
scl(mg_sml) -0.003              
scl(g_n_mn)  0.012 -0.016       
scl(_):(__) -0.016  0.017  0.009

Adding in covariates

Now for the fun stuff: adding in our covariates using our original model – only doing this for text similarity for now because of the singular effects

main_image_effect <- lmer(scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (1 | SubjectInfo.subjID)  + (1 | section)
                    + (1|Trials.targetImage), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
bv_image_effect <- lmer(scale(corrected_target_looking) ~ scale(image_similarity_bv) * scale(age_in_months) + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (1 | SubjectInfo.subjID) 
                    + (1 | section)
                    + (1|Trials.targetImage), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
main_text_effect <- lmer(scale(corrected_target_looking) ~ scale(text_similarity) + scale(age_in_months) + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (1 | SubjectInfo.subjID) + (1 | section) 
                    + (1|Trials.targetImage), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
summary(main_image_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    scale(AoA_Est_target) + scale(MeanSaliencyDiff) + (1 | SubjectInfo.subjID) +  
    (1 | section) + (1 | Trials.targetImage)
   Data: trials_with_effect_vars

REML criterion at convergence: 10938.8

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.86694 -0.63442 -0.02347  0.67461  2.90320 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.023538 0.15342 
 Trials.targetImage (Intercept) 0.005996 0.07744 
 section            (Intercept) 0.000000 0.00000 
 Residual                       0.958808 0.97919 
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                  -7.129e-03  2.359e-02  6.410e+01
scale(image_similarity)                      -3.010e-02  1.792e-02  1.784e+02
scale(age_in_months)                          6.783e-02  2.031e-02  1.435e+02
scale(AoA_Est_target)                        -8.210e-02  1.996e-02  4.847e+01
scale(MeanSaliencyDiff)                       6.539e-03  1.903e-02  6.542e+01
scale(image_similarity):scale(age_in_months) -1.021e-02  1.571e-02  3.743e+03
                                             t value Pr(>|t|)    
(Intercept)                                   -0.302  0.76350    
scale(image_similarity)                       -1.679  0.09484 .  
scale(age_in_months)                           3.340  0.00107 ** 
scale(AoA_Est_target)                         -4.114  0.00015 ***
scale(MeanSaliencyDiff)                        0.344  0.73220    
scale(image_similarity):scale(age_in_months)  -0.650  0.51603    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(AA_E s(MSD)
scl(mg_sml) -0.008                            
scl(g_n_mn)  0.002 -0.013                     
scl(AA_Es_)  0.019 -0.155  0.016              
scl(MnSlnD)  0.008 -0.011 -0.005  0.016       
scl(_):(__) -0.009 -0.010  0.008  0.010 -0.010
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
summary(main_text_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(text_similarity) + scale(age_in_months) +  
    scale(AoA_Est_target) + scale(MeanSaliencyDiff) + (1 | SubjectInfo.subjID) +  
    (1 | section) + (1 | Trials.targetImage)
   Data: trials_with_effect_vars

REML criterion at convergence: 10933.5

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.87019 -0.63207 -0.02072  0.67053  2.89757 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.023646 0.15377 
 Trials.targetImage (Intercept) 0.006501 0.08063 
 section            (Intercept) 0.000000 0.00000 
 Residual                       0.958490 0.97902 
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                          Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)              -0.008405   0.023849  64.786573  -0.352  0.72565    
scale(text_similarity)   -0.025846   0.017948 182.218929  -1.440  0.15158    
scale(age_in_months)      0.067508   0.020324 143.283766   3.322  0.00114 ** 
scale(AoA_Est_target)    -0.088129   0.020002  48.435588  -4.406 5.81e-05 ***
scale(MeanSaliencyDiff)   0.006237   0.019248  66.311662   0.324  0.74695    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(AA_E
scl(txt_sm)  0.014                     
scl(g_n_mn)  0.002  0.000              
scl(AA_Es_)  0.019  0.035  0.014       
scl(MnSlnD)  0.008 -0.006 -0.005  0.016
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
summary(bv_image_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: scale(corrected_target_looking) ~ scale(image_similarity_bv) *  
    scale(age_in_months) + scale(AoA_Est_target) + scale(MeanSaliencyDiff) +  
    (1 | SubjectInfo.subjID) + (1 | section) + (1 | Trials.targetImage)
   Data: trials_with_effect_vars

REML criterion at convergence: 10936.2

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.85158 -0.63075 -0.02342  0.67780  2.90671 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.023887 0.15455 
 Trials.targetImage (Intercept) 0.006565 0.08102 
 section            (Intercept) 0.000000 0.00000 
 Residual                       0.957648 0.97860 
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                                  Estimate Std. Error
(Intercept)                                     -7.404e-03  2.391e-02
scale(image_similarity_bv)                      -1.054e-02  1.931e-02
scale(age_in_months)                             6.749e-02  2.036e-02
scale(AoA_Est_target)                           -8.438e-02  2.046e-02
scale(MeanSaliencyDiff)                          5.694e-03  1.927e-02
scale(image_similarity_bv):scale(age_in_months) -3.702e-02  1.597e-02
                                                        df t value Pr(>|t|)    
(Intercept)                                      6.477e+01  -0.310 0.757823    
scale(image_similarity_bv)                       9.069e+01  -0.546 0.586575    
scale(age_in_months)                             1.433e+02   3.315 0.001162 ** 
scale(AoA_Est_target)                            4.848e+01  -4.124 0.000145 ***
scale(MeanSaliencyDiff)                          6.615e+01   0.295 0.768582    
scale(image_similarity_bv):scale(age_in_months)  3.817e+03  -2.319 0.020471 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(m__) scl(g__) s(AA_E s(MSD)
scl(mg_sm_) -0.012                                
scl(g_n_mn)  0.002 -0.012                         
scl(AA_Es_)  0.021 -0.206    0.016                
scl(MnSlnD)  0.008  0.016   -0.006    0.013       
sc(__):(__) -0.007 -0.008    0.003   -0.007  0.005
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
r.squaredGLMM(main_image_effect)
            R2m        R2c
[1,] 0.01325033 0.04273696
r.squaredGLMM(main_text_effect)
            R2m        R2c
[1,] 0.01310146 0.04319586
r.squaredGLMM(bv_image_effect)
           R2m        R2c
[1,] 0.0137672 0.04416151

Image similarity is trending towards significance.

Checking if text similarity and image similarity are differently correlated with AoA

trials_with_effect_vars_metadata <- trials_with_effect_vars |> distinct(Trials.imagePair, text_similarity, image_similarity, image_similarity_bv)
cor.test(trial_metadata$AoA_Est_target, trial_metadata$text_similarity)

    Pearson's product-moment correlation

data:  trial_metadata$AoA_Est_target and trial_metadata$text_similarity
t = -0.47957, df = 62, p-value = 0.6332
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.3020875  0.1878236
sample estimates:
       cor 
-0.0607924 
cor.test(trial_metadata$AoA_Est_target, trial_metadata$image_similarity)

    Pearson's product-moment correlation

data:  trial_metadata$AoA_Est_target and trial_metadata$image_similarity
t = 0.88711, df = 62, p-value = 0.3784
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.1376426  0.3481820
sample estimates:
      cor 
0.1119545 
cor.test(trials_with_effect_vars_metadata$image_similarity, trials_with_effect_vars_metadata$image_similarity_bv)

    Pearson's product-moment correlation

data:  trials_with_effect_vars_metadata$image_similarity and trials_with_effect_vars_metadata$image_similarity_bv
t = 2.3117, df = 30, p-value = 0.02784
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.0464438 0.6494747
sample estimates:
      cor 
0.3888406 
cor.test(trials_with_effect_vars_metadata$text_similarity, trials_with_effect_vars_metadata$image_similarity_bv)

    Pearson's product-moment correlation

data:  trials_with_effect_vars_metadata$text_similarity and trials_with_effect_vars_metadata$image_similarity_bv
t = 1.3913, df = 30, p-value = 0.1744
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.1121168  0.5478627
sample estimates:
      cor 
0.2462023 

Well image similarity has a higher r but both are still insignificant.

vs_image_effect <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                    + scale(MeanSaliencyDiff)
                    + (1 | SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
vs_text_effect <- lmer(scale(corrected_target_looking) ~ scale(text_similarity)*scale(age_in_months)
                    + scale(MeanSaliencyDiff)
                    + (scale(text_similarity) | SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1|Trials.imagePair)
                    + (1 | section), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
summary(vs_image_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    scale(MeanSaliencyDiff) + (1 | SubjectInfo.subjID) + (1 |  
    Trials.targetImage) + (1 | section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10947.3

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.93087 -0.63658 -0.02981  0.66719  2.86315 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.02382  0.1543  
 Trials.targetImage (Intercept) 0.01233  0.1111  
 section            (Intercept) 0.00000  0.0000  
 Residual                       0.95875  0.9792  
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                  -7.031e-03  2.646e-02  6.449e+01
scale(image_similarity)                      -4.027e-02  1.906e-02  2.098e+02
scale(age_in_months)                          6.902e-02  2.036e-02  1.433e+02
scale(MeanSaliencyDiff)                       8.787e-03  2.153e-02  7.311e+01
scale(image_similarity):scale(age_in_months) -9.755e-03  1.572e-02  3.739e+03
                                             t value Pr(>|t|)    
(Intercept)                                   -0.266 0.791301    
scale(image_similarity)                       -2.113 0.035824 *  
scale(age_in_months)                           3.389 0.000905 ***
scale(MeanSaliencyDiff)                        0.408 0.684349    
scale(image_similarity):scale(age_in_months)  -0.621 0.534910    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(MSD)
scl(mg_sml) -0.009                     
scl(g_n_mn)  0.000 -0.011              
scl(MnSlnD)  0.009  0.007 -0.006       
scl(_):(__) -0.009 -0.007  0.008 -0.010
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
summary(vs_text_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(text_similarity) * scale(age_in_months) +  
    scale(MeanSaliencyDiff) + (scale(text_similarity) | SubjectInfo.subjID) +  
    (1 | Trials.targetImage) + (1 | Trials.imagePair) + (1 |      section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10949.2

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.9367 -0.6336 -0.0293  0.6711  2.8625 

Random effects:
 Groups             Name                   Variance  Std.Dev. Corr
 SubjectInfo.subjID (Intercept)            0.0239003 0.15460      
                    scale(text_similarity) 0.0001482 0.01217  1.00
 Trials.targetImage (Intercept)            0.0127850 0.11307      
 Trials.imagePair   (Intercept)            0.0018435 0.04294      
 section            (Intercept)            0.0000000 0.00000      
 Residual                                  0.9579065 0.97873      
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; Trials.imagePair, 32; section, 2

Fixed effects:
                                              Estimate Std. Error         df
(Intercept)                                 -8.566e-03  2.773e-02  5.193e+01
scale(text_similarity)                      -2.355e-02  2.065e-02  3.214e+01
scale(age_in_months)                         6.867e-02  2.037e-02  1.432e+02
scale(MeanSaliencyDiff)                      8.989e-03  2.176e-02  5.866e+01
scale(text_similarity):scale(age_in_months) -1.114e-02  1.594e-02  3.712e+03
                                            t value Pr(>|t|)    
(Intercept)                                  -0.309 0.758659    
scale(text_similarity)                       -1.141 0.262473    
scale(age_in_months)                          3.371 0.000964 ***
scale(MeanSaliencyDiff)                       0.413 0.681099    
scale(text_similarity):scale(age_in_months)  -0.699 0.484758    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(MSD)
scl(txt_sm)  0.048                     
scl(g_n_mn) -0.001 -0.001              
scl(MnSlnD)  0.009  0.002 -0.005       
scl(_):(__)  0.001 -0.018  0.045 -0.008
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Just a sanity check that adding our saliency metric as a covariate does not affect our similarity effects.

Alternate window analyses

Only using first instance of an item

first_instance_target <- trials_with_effect_vars |>
  group_by(SubjectInfo.subjID, Trials.targetImage) |>
  arrange(Trials.ordinal, .by_group = TRUE) |>
  slice(1) |>
  ungroup()

second_instance_target <- trials_with_effect_vars |>
  group_by(SubjectInfo.subjID, Trials.targetImage) |>
  arrange(Trials.ordinal, .by_group = TRUE) |>
  slice(2) |>
  ungroup()
  
first_instance_primary_target <- first_instance_target |>
  filter(Trials.trialType %in% c("easy", "hard"))
  
first_instance_image_pair <- trials_with_effect_vars |>
  group_by(SubjectInfo.subjID, Trials.imagePair) |>
  arrange(Trials.ordinal, .by_group = TRUE) |>
  slice(1) |>
  ungroup()


first_instance_effect <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                    + scale(MeanSaliencyDiff)
                    + (1 | Trials.ordinal)
                    + (1 | SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = first_instance_target)
boundary (singular) fit: see help('isSingular')
second_instance_effect <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                    + scale(MeanSaliencyDiff)
                    + (1 | Trials.ordinal)
                    + (1 | SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = second_instance_target)
boundary (singular) fit: see help('isSingular')
first_instance_pt_effect <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                    + scale(MeanSaliencyDiff)
                    + (1 | Trials.ordinal)
                    + (1 | SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = first_instance_primary_target)
boundary (singular) fit: see help('isSingular')
first_instance_image_pair_effect <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                    + scale(MeanSaliencyDiff)
                    + (1 | Trials.ordinal)
                    + (1 | SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = first_instance_image_pair)
boundary (singular) fit: see help('isSingular')
summary(first_instance_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    scale(MeanSaliencyDiff) + (1 | Trials.ordinal) + (1 | SubjectInfo.subjID) +  
    (1 | Trials.targetImage) + (1 | section)
   Data: first_instance_target

REML criterion at convergence: 8633.9

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.94959 -0.64112 -0.02766  0.66632  2.83295 

Random effects:
 Groups             Name        Variance  Std.Dev.
 SubjectInfo.subjID (Intercept) 0.0268061 0.16373 
 Trials.targetImage (Intercept) 0.0128112 0.11319 
 Trials.ordinal     (Intercept) 0.0006618 0.02573 
 section            (Intercept) 0.0000000 0.00000 
 Residual                       0.9541238 0.97679 
Number of obs: 3050, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; Trials.ordinal, 47; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                  -1.483e-04  2.834e-02  4.732e+01
scale(image_similarity)                      -4.876e-02  2.197e-02  1.276e+02
scale(age_in_months)                          7.247e-02  2.237e-02  1.458e+02
scale(MeanSaliencyDiff)                       5.100e-03  2.357e-02  6.291e+01
scale(image_similarity):scale(age_in_months)  4.298e-05  1.767e-02  2.956e+03
                                             t value Pr(>|t|)   
(Intercept)                                   -0.005  0.99585   
scale(image_similarity)                       -2.220  0.02819 * 
scale(age_in_months)                           3.240  0.00148 **
scale(MeanSaliencyDiff)                        0.216  0.82941   
scale(image_similarity):scale(age_in_months)   0.002  0.99806   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(MSD)
scl(mg_sml) -0.007                     
scl(g_n_mn)  0.001 -0.017              
scl(MnSlnD)  0.000 -0.081 -0.009       
scl(_):(__) -0.014 -0.021  0.013 -0.006
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
summary(second_instance_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    scale(MeanSaliencyDiff) + (1 | Trials.ordinal) + (1 | SubjectInfo.subjID) +  
    (1 | Trials.targetImage) + (1 | section)
   Data: second_instance_target

REML criterion at convergence: 2340.1

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.87045 -0.61735 -0.06732  0.63564  2.67477 

Random effects:
 Groups             Name        Variance  Std.Dev.
 SubjectInfo.subjID (Intercept) 0.0274798 0.16577 
 Trials.ordinal     (Intercept) 0.0003388 0.01841 
 Trials.targetImage (Intercept) 0.0047334 0.06880 
 section            (Intercept) 0.0000000 0.00000 
 Residual                       0.9666993 0.98321 
Number of obs: 819, groups:  
SubjectInfo.subjID, 144; Trials.ordinal, 34; Trials.targetImage, 16; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                   -0.003067   0.041564  11.906740
scale(image_similarity)                       -0.003673   0.040452 302.729612
scale(age_in_months)                           0.062243   0.037291 128.166555
scale(MeanSaliencyDiff)                        0.025945   0.042532  38.851725
scale(image_similarity):scale(age_in_months)  -0.046945   0.035139 804.229065
                                             t value Pr(>|t|)  
(Intercept)                                   -0.074   0.9424  
scale(image_similarity)                       -0.091   0.9277  
scale(age_in_months)                           1.669   0.0975 .
scale(MeanSaliencyDiff)                        0.610   0.5454  
scale(image_similarity):scale(age_in_months)  -1.336   0.1819  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(MSD)
scl(mg_sml)  0.000                     
scl(g_n_mn)  0.000  0.024              
scl(MnSlnD)  0.006  0.456  0.028       
scl(_):(__)  0.012  0.032 -0.009 -0.003
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
summary(first_instance_pt_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    scale(MeanSaliencyDiff) + (1 | Trials.ordinal) + (1 | SubjectInfo.subjID) +  
    (1 | Trials.targetImage) + (1 | section)
   Data: first_instance_primary_target

REML criterion at convergence: 3164

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.78542 -0.64758 -0.03046  0.68587  2.86506 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.04141  0.2035  
 Trials.ordinal     (Intercept) 0.01023  0.1011  
 Trials.targetImage (Intercept) 0.01419  0.1191  
 section            (Intercept) 0.00000  0.0000  
 Residual                       0.92620  0.9624  
Number of obs: 1116, groups:  
SubjectInfo.subjID, 144; Trials.ordinal, 35; Trials.targetImage, 16; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                   9.529e-03  4.950e-02  2.057e+01
scale(image_similarity)                      -6.371e-02  3.558e-02  4.530e+02
scale(age_in_months)                          8.107e-02  3.355e-02  1.435e+02
scale(MeanSaliencyDiff)                      -1.742e-02  4.179e-02  4.156e+01
scale(image_similarity):scale(age_in_months)  6.563e-02  2.928e-02  1.086e+03
                                             t value Pr(>|t|)  
(Intercept)                                    0.193   0.8492  
scale(image_similarity)                       -1.791   0.0740 .
scale(age_in_months)                           2.416   0.0169 *
scale(MeanSaliencyDiff)                       -0.417   0.6790  
scale(image_similarity):scale(age_in_months)   2.241   0.0252 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(MSD)
scl(mg_sml) -0.006                     
scl(g_n_mn) -0.003 -0.041              
scl(MnSlnD)  0.003  0.427 -0.026       
scl(_):(__) -0.023 -0.044  0.006 -0.011
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
summary(first_instance_image_pair_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    scale(MeanSaliencyDiff) + (1 | Trials.ordinal) + (1 | SubjectInfo.subjID) +  
    (1 | Trials.targetImage) + (1 | section)
   Data: first_instance_image_pair

REML criterion at convergence: 6300.6

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.84270 -0.63429 -0.03589  0.66606  2.85407 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.02131  0.14599 
 Trials.targetImage (Intercept) 0.01030  0.10151 
 Trials.ordinal     (Intercept) 0.00137  0.03701 
 section            (Intercept) 0.00000  0.00000 
 Residual                       0.96325  0.98145 
Number of obs: 2219, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; Trials.ordinal, 33; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                  -1.662e-03  2.991e-02  3.025e+01
scale(image_similarity)                      -3.785e-02  2.359e-02  1.612e+02
scale(age_in_months)                          5.783e-02  2.419e-02  1.436e+02
scale(MeanSaliencyDiff)                      -3.014e-02  2.524e-02  7.175e+01
scale(image_similarity):scale(age_in_months)  9.082e-03  2.092e-02  2.091e+03
                                             t value Pr(>|t|)  
(Intercept)                                   -0.056   0.9560  
scale(image_similarity)                       -1.605   0.1105  
scale(age_in_months)                           2.391   0.0181 *
scale(MeanSaliencyDiff)                       -1.194   0.2362  
scale(image_similarity):scale(age_in_months)   0.434   0.6643  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(MSD)
scl(mg_sml) -0.008                     
scl(g_n_mn)  0.000 -0.008              
scl(MnSlnD)  0.007 -0.030 -0.004       
scl(_):(__) -0.003 -0.010  0.005  0.011
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Random order effects

main_image_effect_ordinal <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*scale(age_in_months)
                    + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (1 | Trials.ordinal)
                    + (1 | SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
summary(main_image_effect_ordinal)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * scale(age_in_months) +  
    scale(AoA_Est_target) + scale(MeanSaliencyDiff) + (1 | Trials.ordinal) +  
    (1 | SubjectInfo.subjID) + (1 | Trials.targetImage) + (1 |      section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10938.3

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.85788 -0.64014 -0.02222  0.67477  2.88444 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.023599 0.15362 
 Trials.ordinal     (Intercept) 0.001485 0.03853 
 Trials.targetImage (Intercept) 0.005992 0.07741 
 section            (Intercept) 0.000000 0.00000 
 Residual                       0.957317 0.97843 
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.ordinal, 52; Trials.targetImage, 48; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                  -6.538e-03  2.454e-02  4.785e+01
scale(image_similarity)                      -3.031e-02  1.792e-02  1.785e+02
scale(age_in_months)                          6.785e-02  2.031e-02  1.435e+02
scale(AoA_Est_target)                        -8.260e-02  1.996e-02  4.860e+01
scale(MeanSaliencyDiff)                       6.428e-03  1.903e-02  6.555e+01
scale(image_similarity):scale(age_in_months) -1.011e-02  1.571e-02  3.741e+03
                                             t value Pr(>|t|)    
(Intercept)                                   -0.266 0.791045    
scale(image_similarity)                       -1.692 0.092424 .  
scale(age_in_months)                           3.341 0.001065 ** 
scale(AoA_Est_target)                         -4.138 0.000139 ***
scale(MeanSaliencyDiff)                        0.338 0.736562    
scale(image_similarity):scale(age_in_months)  -0.644 0.519823    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(AA_E s(MSD)
scl(mg_sml) -0.008                            
scl(g_n_mn)  0.002 -0.013                     
scl(AA_Es_)  0.017 -0.155  0.016              
scl(MnSlnD)  0.007 -0.011 -0.005  0.016       
scl(_):(__) -0.009 -0.010  0.008  0.009 -0.010
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Order does not explain much variance.

Target image order effects

ranked_trials <- trials_with_effect_vars |>
  group_by(SubjectInfo.subjID, Trials.targetImage) |>
  arrange(Trials.ordinal, .by_group = TRUE) |>
  mutate(
    slice_num = row_number(),
    order = case_when(
      slice_num == 1 ~ -0.5,
      slice_num == 2 ~ 0.5,
      TRUE ~ NA
    )
  )
main_image_effect_ranked <- lmer(scale(corrected_target_looking) ~ scale(image_similarity)*(scale(order))
                                 
                    + scale(AoA_Est_target)
                    + scale(age_in_months)
                    + (1 | SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = ranked_trials)
boundary (singular) fit: see help('isSingular')
# |> filter(Trials.trialType %in% c("easy", "hard")
summary(main_image_effect_ranked)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: 
scale(corrected_target_looking) ~ scale(image_similarity) * (scale(order)) +  
    scale(AoA_Est_target) + scale(age_in_months) + (1 | SubjectInfo.subjID) +  
    (1 | Trials.targetImage) + (1 | section)
   Data: ranked_trials

REML criterion at convergence: 10937.6

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.88325 -0.63247 -0.02264  0.67221  2.86456 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.023205 0.15233 
 Trials.targetImage (Intercept) 0.005383 0.07337 
 section            (Intercept) 0.000000 0.00000 
 Residual                       0.959048 0.97931 
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                       Estimate Std. Error         df t value
(Intercept)                          -5.457e-03  2.327e-02  6.351e+01  -0.235
scale(image_similarity)              -3.038e-02  1.778e-02  1.698e+02  -1.708
scale(order)                          2.144e-02  1.660e-02  8.945e+02   1.292
scale(AoA_Est_target)                -8.137e-02  1.974e-02  4.977e+01  -4.122
scale(age_in_months)                  6.811e-02  2.025e-02  1.435e+02   3.363
scale(image_similarity):scale(order)  7.930e-03  1.651e-02  1.854e+03   0.480
                                     Pr(>|t|)    
(Intercept)                          0.815303    
scale(image_similarity)              0.089393 .  
scale(order)                         0.196778    
scale(AoA_Est_target)                0.000142 ***
scale(age_in_months)                 0.000990 ***
scale(image_similarity):scale(order) 0.630980    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) scl(r) s(AA_E sc(__)
scl(mg_sml) -0.008                            
scale(ordr)  0.047  0.008                     
scl(AA_Es_)  0.018 -0.159 -0.008              
scl(g_n_mn)  0.003 -0.014  0.001  0.017       
scl(mg_):()  0.010 -0.049  0.010  0.112  0.014
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Z-scoring embeddings

Z-scoring embeddings leads to significant image similarity even with AoA as a covariate – todo!

#main_image_effect_zscored <- lmer(scale(corrected_target_looking) ~ scale(image_sim_zscore)*scale(age_in_months)
#                    + scale(AoA_Est_target)
#                    + scale(MeanSaliencyDiff)
#                    + (1 | SubjectInfo.subjID) 
#                    + (1|Trials.targetImage)
#                    + ( 1 | section), 
#                    data = trials_with_effect_vars)
#summary(main_image_effect_zscored)

Baseline window as a covariate

baseline_covariate_looking_text <- lmer(scale(mean_target_looking_critical_window) ~ scale(age_in_months)*scale(text_similarity)
                    + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + scale(mean_target_looking_baseline_window)
                    + (scale(text_similarity) || SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
baseline_covariate_looking_image <- lmer(scale(mean_target_looking_critical_window) ~ scale(age_in_months)*scale(image_similarity)
                    + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + scale(mean_target_looking_baseline_window)
                    + (1 | SubjectInfo.subjID)
                    + (1 | section)
                    + (1|Trials.targetImage), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
summary(baseline_covariate_looking_text)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: scale(mean_target_looking_critical_window) ~ scale(age_in_months) *  
    scale(text_similarity) + scale(AoA_Est_target) + scale(MeanSaliencyDiff) +  
    scale(mean_target_looking_baseline_window) + (scale(text_similarity) ||  
    SubjectInfo.subjID) + (1 | Trials.targetImage) + (1 | section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10410.8

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.80666 -0.70874  0.05715  0.75175  2.49124 

Random effects:
 Groups               Name                   Variance Std.Dev.
 SubjectInfo.subjID   (Intercept)            0.038508 0.19623 
 SubjectInfo.subjID.1 scale(text_similarity) 0.000000 0.00000 
 Trials.targetImage   (Intercept)            0.020075 0.14169 
 section              (Intercept)            0.001696 0.04118 
 Residual                                    0.819481 0.90525 
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                              Estimate Std. Error         df
(Intercept)                                 -4.432e-03  4.237e-02  9.074e-01
scale(age_in_months)                         8.821e-02  2.192e-02  1.404e+02
scale(text_similarity)                      -5.475e-02  1.943e-02  2.592e+02
scale(AoA_Est_target)                       -1.213e-01  2.575e-02  4.669e+01
scale(MeanSaliencyDiff)                      6.133e-02  2.300e-02  8.258e+01
scale(mean_target_looking_baseline_window)   2.817e-01  1.495e-02  3.799e+03
scale(age_in_months):scale(text_similarity) -1.335e-02  1.482e-02  3.813e+03
                                            t value Pr(>|t|)    
(Intercept)                                  -0.105  0.93493    
scale(age_in_months)                          4.023 9.33e-05 ***
scale(text_similarity)                       -2.818  0.00521 ** 
scale(AoA_Est_target)                        -4.711 2.25e-05 ***
scale(MeanSaliencyDiff)                       2.666  0.00923 ** 
scale(mean_target_looking_baseline_window)   18.843  < 2e-16 ***
scale(age_in_months):scale(text_similarity)  -0.901  0.36774    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) sc(__) scl(_) s(AA_E s(MSD) s(____
scl(g_n_mn) -0.001                                   
scl(txt_sm)  0.024 -0.006                            
scl(AA_Es_)  0.035  0.006  0.046                     
scl(MnSlnD)  0.009 -0.004  0.028  0.038              
scl(mn____) -0.007 -0.007  0.019  0.012 -0.046       
scl(__):(_)  0.000  0.004 -0.016  0.004 -0.007  0.000
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
summary(baseline_covariate_looking_image)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: scale(mean_target_looking_critical_window) ~ scale(age_in_months) *  
    scale(image_similarity) + scale(AoA_Est_target) + scale(MeanSaliencyDiff) +  
    scale(mean_target_looking_baseline_window) + (1 | SubjectInfo.subjID) +  
    (1 | section) + (1 | Trials.targetImage)
   Data: trials_with_effect_vars

REML criterion at convergence: 10413

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.79602 -0.71069  0.06101  0.74992  2.51699 

Random effects:
 Groups             Name        Variance  Std.Dev. 
 SubjectInfo.subjID (Intercept) 3.883e-02 1.970e-01
 Trials.targetImage (Intercept) 1.857e-02 1.363e-01
 section            (Intercept) 2.521e-14 1.588e-07
 Residual                       8.204e-01 9.058e-01
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                   1.574e-03  3.009e-02  7.718e+01
scale(age_in_months)                          8.786e-02  2.197e-02  1.409e+02
scale(image_similarity)                      -4.160e-02  1.912e-02  2.742e+02
scale(AoA_Est_target)                        -1.086e-01  2.511e-02  4.884e+01
scale(MeanSaliencyDiff)                       6.208e-02  2.259e-02  8.182e+01
scale(mean_target_looking_baseline_window)    2.825e-01  1.495e-02  3.798e+03
scale(age_in_months):scale(image_similarity) -1.892e-02  1.456e-02  3.723e+03
                                             t value Pr(>|t|)    
(Intercept)                                    0.052 0.958413    
scale(age_in_months)                           3.999 0.000102 ***
scale(image_similarity)                       -2.175 0.030475 *  
scale(AoA_Est_target)                         -4.327 7.47e-05 ***
scale(MeanSaliencyDiff)                        2.748 0.007376 ** 
scale(mean_target_looking_baseline_window)    18.897  < 2e-16 ***
scale(age_in_months):scale(image_similarity)  -1.300 0.193809    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) sc(__) scl(_) s(AA_E s(MSD) s(____
scl(g_n_mn)  0.002                                   
scl(mg_sml) -0.013 -0.011                            
scl(AA_Es_)  0.032  0.012 -0.139                     
scl(MnSlnD)  0.011 -0.005  0.029  0.032              
scl(mn____) -0.011 -0.007  0.005  0.011 -0.048       
scl(__):(_) -0.007  0.007 -0.006  0.007 -0.010  0.009
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Now we’re starting to see effects. although these models are still very ## Just predicting critical window looking

critical_looking_text <- lmer(scale(mean_target_looking_critical_window) ~ scale(age_in_months)*scale(text_similarity)
                    + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (scale(text_similarity) || SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
critical_looking_image <- lmer(scale(mean_target_looking_critical_window) ~ scale(age_in_months)*scale(image_similarity)
                    + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (1 | SubjectInfo.subjID)
                    + (1 | section)
                    + (1|Trials.targetImage), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
summary(critical_looking_text)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: scale(mean_target_looking_critical_window) ~ scale(age_in_months) *  
    scale(text_similarity) + scale(AoA_Est_target) + scale(MeanSaliencyDiff) +  
    (scale(text_similarity) || SubjectInfo.subjID) + (1 | Trials.targetImage) +  
    (1 | section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10741.4

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.42260 -0.67586  0.07834  0.75387  2.39815 

Random effects:
 Groups               Name                   Variance Std.Dev.
 SubjectInfo.subjID   (Intercept)            0.038580 0.1964  
 SubjectInfo.subjID.1 scale(text_similarity) 0.000000 0.0000  
 Trials.targetImage   (Intercept)            0.034511 0.1858  
 section              (Intercept)            0.001875 0.0433  
 Residual                                    0.892267 0.9446  
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                              Estimate Std. Error         df
(Intercept)                                  3.002e-03  4.705e-02  9.069e-01
scale(age_in_months)                         9.134e-02  2.237e-02  1.396e+02
scale(text_similarity)                      -6.539e-02  2.154e-02  3.211e+02
scale(AoA_Est_target)                       -1.253e-01  3.139e-02  4.497e+01
scale(MeanSaliencyDiff)                      7.448e-02  2.686e-02  9.255e+01
scale(age_in_months):scale(text_similarity) -1.349e-02  1.546e-02  3.813e+03
                                            t value Pr(>|t|)    
(Intercept)                                   0.064  0.96022    
scale(age_in_months)                          4.084 7.44e-05 ***
scale(text_similarity)                       -3.036  0.00259 ** 
scale(AoA_Est_target)                        -3.991  0.00024 ***
scale(MeanSaliencyDiff)                       2.773  0.00671 ** 
scale(age_in_months):scale(text_similarity)  -0.873  0.38292    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) sc(__) scl(_) s(AA_E s(MSD)
scl(g_n_mn) -0.002                            
scl(txt_sm)  0.026 -0.006                     
scl(AA_Es_)  0.040  0.006  0.041              
scl(MnSlnD)  0.010 -0.005  0.055  0.045       
scl(__):(_)  0.000  0.004 -0.013  0.003 -0.006
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
summary(critical_looking_image)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: scale(mean_target_looking_critical_window) ~ scale(age_in_months) *  
    scale(image_similarity) + scale(AoA_Est_target) + scale(MeanSaliencyDiff) +  
    (1 | SubjectInfo.subjID) + (1 | section) + (1 | Trials.targetImage)
   Data: trials_with_effect_vars

REML criterion at convergence: 10745.4

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.42582 -0.68146  0.07695  0.75389  2.38223 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.03897  0.1974  
 Trials.targetImage (Intercept) 0.03228  0.1797  
 section            (Intercept) 0.00000  0.0000  
 Residual                       0.89368  0.9453  
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                   9.512e-03  3.495e-02  6.798e+01
scale(age_in_months)                          9.093e-02  2.243e-02  1.400e+02
scale(image_similarity)                      -4.174e-02  2.119e-02  3.470e+02
scale(AoA_Est_target)                        -1.120e-01  3.057e-02  4.747e+01
scale(MeanSaliencyDiff)                       7.645e-02  2.644e-02  9.126e+01
scale(age_in_months):scale(image_similarity) -2.108e-02  1.520e-02  3.722e+03
                                             t value Pr(>|t|)    
(Intercept)                                    0.272 0.786341    
scale(age_in_months)                           4.054 8.31e-05 ***
scale(image_similarity)                       -1.969 0.049725 *  
scale(AoA_Est_target)                         -3.663 0.000626 ***
scale(MeanSaliencyDiff)                        2.892 0.004786 ** 
scale(age_in_months):scale(image_similarity)  -1.387 0.165412    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) sc(__) scl(_) s(AA_E s(MSD)
scl(g_n_mn)  0.000                            
scl(mg_sml) -0.015 -0.011                     
scl(AA_Es_)  0.041  0.011 -0.125              
scl(MnSlnD)  0.011 -0.005  0.065  0.035       
scl(__):(_) -0.007  0.007 -0.004  0.006 -0.010
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
r.squaredGLMM(critical_looking_image)
            R2m       R2c
[1,] 0.03051747 0.1020998
r.squaredGLMM(critical_looking_text)
            R2m       R2c
[1,] 0.03385116 0.1087337

Similar predictions to our original model.

Adding window type as a covariate

trials_window_type_separated <- trials_with_effect_vars |>
  pivot_longer(cols=c(mean_target_looking_critical_window, mean_target_looking_baseline_window), names_to="window_type", values_to="target_looking") |>
  mutate(window_type = str_replace(window_type, "mean_target_looking_", "")) |>
  mutate(trial_window_c = case_when(
    window_type=="critical_window" ~ 0.5,
    window_type=="baseline_window" ~ -0.5))

window_type_looking_text <- lmer(scale(target_looking) ~ scale(age_in_months)*trial_window_c*scale(text_similarity)
                    + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (scale(text_similarity) | SubjectInfo.subjID) 
                    + (1|Trials.targetImage) + (1|section), 
                    data = trials_window_type_separated)
boundary (singular) fit: see help('isSingular')
window_type_looking_image <- lmer(scale(target_looking) ~ scale(age_in_months)*trial_window_c*scale(image_similarity)
                    + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (scale(image_similarity) | SubjectInfo.subjID) 
                    + (1|Trials.targetImage) + (1|section), 
                    data = trials_window_type_separated)
boundary (singular) fit: see help('isSingular')
summary(window_type_looking_image)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: scale(target_looking) ~ scale(age_in_months) * trial_window_c *  
    scale(image_similarity) + scale(AoA_Est_target) + scale(MeanSaliencyDiff) +  
    (scale(image_similarity) | SubjectInfo.subjID) + (1 | Trials.targetImage) +  
    (1 | section)
   Data: trials_window_type_separated

REML criterion at convergence: 21606.9

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.39523 -0.71505  0.03621  0.75575  2.08991 

Random effects:
 Groups             Name                    Variance  Std.Dev. Corr
 SubjectInfo.subjID (Intercept)             0.0122129 0.11051      
                    scale(image_similarity) 0.0001329 0.01153  1.00
 Trials.targetImage (Intercept)             0.0344450 0.18559      
 section            (Intercept)             0.0000000 0.00000      
 Residual                                   0.9291984 0.96395      
Number of obs: 7738, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                                              Estimate
(Intercept)                                                  2.114e-02
scale(age_in_months)                                         5.038e-02
trial_window_c                                               1.862e-01
scale(image_similarity)                                     -2.096e-02
scale(AoA_Est_target)                                       -6.308e-02
scale(MeanSaliencyDiff)                                      5.579e-02
scale(age_in_months):trial_window_c                          8.199e-02
scale(age_in_months):scale(image_similarity)                -1.421e-02
trial_window_c:scale(image_similarity)                      -5.006e-02
scale(age_in_months):trial_window_c:scale(image_similarity) -9.786e-03
                                                            Std. Error
(Intercept)                                                  3.085e-02
scale(age_in_months)                                         1.435e-02
trial_window_c                                               2.192e-02
scale(image_similarity)                                      1.671e-02
scale(AoA_Est_target)                                        2.903e-02
scale(MeanSaliencyDiff)                                      2.291e-02
scale(age_in_months):trial_window_c                          2.192e-02
scale(age_in_months):scale(image_similarity)                 1.100e-02
trial_window_c:scale(image_similarity)                       2.192e-02
scale(age_in_months):trial_window_c:scale(image_similarity)  2.181e-02
                                                                    df t value
(Intercept)                                                  5.066e+01   0.685
scale(age_in_months)                                         1.385e+02   3.511
trial_window_c                                               7.537e+03   8.497
scale(image_similarity)                                      5.462e+02  -1.254
scale(AoA_Est_target)                                        4.398e+01  -2.173
scale(MeanSaliencyDiff)                                      1.195e+02   2.435
scale(age_in_months):trial_window_c                          7.537e+03   3.740
scale(age_in_months):scale(image_similarity)                 2.448e+03  -1.292
trial_window_c:scale(image_similarity)                       7.537e+03  -2.283
scale(age_in_months):trial_window_c:scale(image_similarity)  7.537e+03  -0.449
                                                            Pr(>|t|)    
(Intercept)                                                 0.496466    
scale(age_in_months)                                        0.000604 ***
trial_window_c                                               < 2e-16 ***
scale(image_similarity)                                     0.210337    
scale(AoA_Est_target)                                       0.035190 *  
scale(MeanSaliencyDiff)                                     0.016365 *  
scale(age_in_months):trial_window_c                         0.000185 ***
scale(age_in_months):scale(image_similarity)                0.196399    
trial_window_c:scale(image_similarity)                      0.022432 *  
scale(age_in_months):trial_window_c:scale(image_similarity) 0.653735    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) sc(__) trl_w_ scl(_) s(AA_E s(MSD) sc(__):__ s(__):( t__:(_
scl(g_n_mn) -0.003                                                            
tril_wndw_c  0.000  0.000                                                     
scl(mg_sml)  0.001 -0.011  0.000                                              
scl(AA_Es_)  0.056  0.009  0.000 -0.098                                       
scl(MnSlnD)  0.010 -0.007  0.000  0.137  0.034                                
scl(g__):__  0.000  0.000  0.000  0.000  0.000  0.000                         
scl(__):(_) -0.006  0.065  0.000 -0.001  0.005 -0.009  0.000                  
trl_wn_:(_)  0.000  0.000  0.000  0.000  0.000  0.000 -0.014     0.000        
s(__):__:(_  0.000  0.000 -0.013  0.000  0.000  0.000  0.009     0.000  -0.011
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
tidy_model(window_type_looking_text)
# A tibble: 10 × 8
   effect Predictor                          b    SE     t     df   p.full p    
   <chr>  <chr>                          <dbl> <dbl> <dbl>  <dbl>    <dbl> <chr>
 1 fixed  Intercept                       0.02  0.03  0.55   48.4 5.88e- 1 0.588
 2 fixed  Age (scaled)                    0.05  0.01  3.57  139.  4.90e- 4 <.001
 3 fixed  trial_window_c                  0.19  0.02  8.49 7535.  2.39e-17 <.001
 4 fixed  scale(text_similarity)         -0.05  0.02 -2.97  496.  3.14e- 3 <.01 
 5 fixed  scale(AoA_Est_target)          -0.07  0.03 -2.3    41.8 2.65e- 2 <.05 
 6 fixed  scale(MeanSaliencyDiff)         0.05  0.02  2.2   127.  3.00e- 2 <.05 
 7 fixed  scale(age_in_months):trial_wi…  0.08  0.02  3.71 7535.  2.08e- 4 <.001
 8 fixed  scale(age_in_months):scale(te… -0.01  0.01 -0.79 2791.  4.31e- 1 0.431
 9 fixed  trial_window_c:scale(text_sim… -0.02  0.02 -0.95 7535.  3.44e- 1 0.344
10 fixed  scale(age_in_months):trial_wi… -0.01  0.02 -0.63 7535.  5.32e- 1 0.532

The interaction makes sense, plotting the predictions here to try to understand what’s going on

trials_window_type_separated$predicted <- predict(window_type_looking_image)

# Plot interaction effect
ggplot(trials_window_type_separated, aes(x = image_similarity, y = predicted, color = factor(window_type))) +
  geom_point(alpha = 0.5) +   # Add points for raw data
  geom_smooth(method = "lm", se = TRUE) +  # Add regression lines
  labs(title = "Interaction Between Trial Window & Image Similarity",
       x = "Scaled Image Similarity",
       y = "Predicted Target Looking",
       color = "Trial Window") +
  theme_minimal()
`geom_smooth()` using formula = 'y ~ x'

This is also making me wonder whether we see any signal in how infants look at images in the baseline window. ## Baseline window looking

baseline_looking_image <- lmer(scale(mean_target_looking_baseline_window) ~ scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (1 | SubjectInfo.subjID) + (1 | section) + (1 | Trials.targetImage), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
summary(baseline_looking_image)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: scale(mean_target_looking_baseline_window) ~ scale(AoA_Est_target) +  
    scale(MeanSaliencyDiff) + (1 | SubjectInfo.subjID) + (1 |  
    section) + (1 | Trials.targetImage)
   Data: trials_with_effect_vars

REML criterion at convergence: 10903.7

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.05141 -0.73467  0.00675  0.74517  1.96078 

Random effects:
 Groups             Name        Variance  Std.Dev. 
 SubjectInfo.subjID (Intercept) 3.141e-10 1.772e-05
 Trials.targetImage (Intercept) 3.549e-02 1.884e-01
 section            (Intercept) 0.000e+00 0.000e+00
 Residual                       9.614e-01 9.805e-01
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                        Estimate Std. Error       df t value Pr(>|t|)  
(Intercept)              0.02734    0.03206 41.85561   0.853   0.3987  
scale(AoA_Est_target)   -0.01732    0.03148 42.28672  -0.550   0.5851  
scale(MeanSaliencyDiff)  0.06451    0.02749 89.85197   2.346   0.0211 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) s(AA_E
scl(AA_Es_) 0.056        
scl(MnSlnD) 0.013  0.045 
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Can’t get this to not be not singular but still fun to see that saliency is predictive.

Using a shorter critical window

short_image_effect <- lmer(scale(corrected_target_looking_short) ~ scale(image_similarity)*scale(age_in_months)
                    + scale(AoA_Est_target)
                    + scale(MeanSaliencyDiff)
                    + (1 | SubjectInfo.subjID) 
                    + (1|Trials.targetImage)
                    + (1 | section), 
                    data = trials_with_effect_vars)
boundary (singular) fit: see help('isSingular')
short_text_effect <- lmer(scale(corrected_target_looking_short) ~ scale(text_similarity)*scale(age_in_months)
                    + scale(AoA_Est_target)
                    + (1 | SubjectInfo.subjID)
                    + (1 | Trials.targetImage)
                    + (1 | section), 
                    data = trials_with_effect_vars)
Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model failed to converge with max|grad| = 0.00247669 (tol = 0.002, component 1)
  See ?lme4::convergence and ?lme4::troubleshooting.
summary(short_text_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: scale(corrected_target_looking_short) ~ scale(text_similarity) *  
    scale(age_in_months) + scale(AoA_Est_target) + (1 | SubjectInfo.subjID) +  
    (1 | Trials.targetImage) + (1 | section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10934.7

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.9371 -0.6663 -0.0099  0.6616  2.8001 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.020616 0.14358 
 Trials.targetImage (Intercept) 0.006441 0.08025 
 section            (Intercept) 0.000259 0.01609 
 Residual                       0.960550 0.98008 
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                              Estimate Std. Error         df
(Intercept)                                 -1.015e-02  2.609e-02  7.784e-01
scale(text_similarity)                      -1.915e-02  1.800e-02  1.749e+02
scale(age_in_months)                         7.431e-02  1.982e-02  1.410e+02
scale(AoA_Est_target)                       -9.025e-02  2.005e-02  4.955e+01
scale(text_similarity):scale(age_in_months)  8.922e-04  1.595e-02  3.840e+03
                                            t value Pr(>|t|)    
(Intercept)                                  -0.389 0.777195    
scale(text_similarity)                       -1.064 0.288825    
scale(age_in_months)                          3.750 0.000258 ***
scale(AoA_Est_target)                        -4.502  4.1e-05 ***
scale(text_similarity):scale(age_in_months)   0.056 0.955409    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(AA_E
scl(txt_sm)  0.020                     
scl(g_n_mn)  0.000 -0.002              
scl(AA_Es_)  0.025  0.041  0.012       
scl(_):(__)  0.001 -0.021  0.004  0.005
optimizer (nloptwrap) convergence code: 0 (OK)
Model failed to converge with max|grad| = 0.00247669 (tol = 0.002, component 1)
  See ?lme4::convergence and ?lme4::troubleshooting.
summary(short_image_effect)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: scale(corrected_target_looking_short) ~ scale(image_similarity) *  
    scale(age_in_months) + scale(AoA_Est_target) + scale(MeanSaliencyDiff) +  
    (1 | SubjectInfo.subjID) + (1 | Trials.targetImage) + (1 |      section)
   Data: trials_with_effect_vars

REML criterion at convergence: 10937.3

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.85576 -0.66644 -0.01379  0.65922  2.82003 

Random effects:
 Groups             Name        Variance Std.Dev.
 SubjectInfo.subjID (Intercept) 0.020583 0.14347 
 Trials.targetImage (Intercept) 0.005591 0.07478 
 section            (Intercept) 0.000000 0.00000 
 Residual                       0.960488 0.98005 
Number of obs: 3869, groups:  
SubjectInfo.subjID, 144; Trials.targetImage, 48; section, 2

Fixed effects:
                                               Estimate Std. Error         df
(Intercept)                                  -7.555e-03  2.295e-02  6.222e+01
scale(image_similarity)                      -2.979e-02  1.783e-02  1.811e+02
scale(age_in_months)                          7.426e-02  1.981e-02  1.415e+02
scale(AoA_Est_target)                        -8.344e-02  1.973e-02  4.983e+01
scale(MeanSaliencyDiff)                       2.274e-02  1.885e-02  6.690e+01
scale(image_similarity):scale(age_in_months) -1.107e-02  1.573e-02  3.745e+03
                                             t value Pr(>|t|)    
(Intercept)                                   -0.329 0.743156    
scale(image_similarity)                       -1.671 0.096445 .  
scale(age_in_months)                           3.749 0.000258 ***
scale(AoA_Est_target)                         -4.230 9.99e-05 ***
scale(MeanSaliencyDiff)                        1.206 0.232020    
scale(image_similarity):scale(age_in_months)  -0.704 0.481659    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) scl(_) sc(__) s(AA_E s(MSD)
scl(mg_sml) -0.008                            
scl(g_n_mn)  0.002 -0.014                     
scl(AA_Es_)  0.019 -0.155  0.016              
scl(MnSlnD)  0.007 -0.011 -0.006  0.015       
scl(_):(__) -0.010 -0.010  0.008  0.010 -0.010
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Our effects are not significant with the shorter window.