0.1 Load Database

## New names:
## • `` -> `...4`

This file combines data from two sites: Indiana University, and Nanyang Technological University. The mean age of participants was 44.46 (SD = 8.42). Number of participants by age group:

IU nie
2 2 0
3 2 4
4 0 6

Participants completed the full battery: give-n task, highest count task, dot comparison task, and a visual memory task.

Three participants were removed because of experimenter errors (age entered in AMS task did not match the age calculated using DOB or reported in months)

Path: Main/Studies/2023_manynumbers/scripts/mn_amstask_analyses_amsfeedback_072524.Rmd

age N age_months sd se ci
3 8 38.37 5.112 1.807 4.274
4 6 52.58 3.061 1.250 3.212

1.1 Data Cleaning - Trial Level

Anticipatory responses

Slow responses

participant N rt sd se ci sd3_sup sd3_inf
ck1 54 2.992 0.7472 0.1017 0.2040 5.234 0.7506
ck10 60 3.249 1.7333 0.2238 0.4477 8.449 -1.9509
ck12 54 2.258 0.9355 0.1273 0.2553 5.064 -0.5488
ck2 60 2.257 1.1315 0.1461 0.2923 5.652 -1.1370
ck3 54 2.789 0.8514 0.1159 0.2324 5.343 0.2345
ck4 54 3.216 3.4013 0.4629 0.9284 13.419 -6.9883
ck5 54 3.141 1.2851 0.1749 0.3508 6.997 -0.7139
ck6 60 3.348 1.7088 0.2206 0.4414 8.475 -1.7780
ck8 60 3.815 3.4236 0.4420 0.8844 14.086 -6.4557
ck9 54 2.558 2.2984 0.3128 0.6273 9.453 -4.3376
mn066 60 6.449 16.1963 2.0909 4.1840 55.038 -42.1397
mn067 60 12.647 50.3155 6.4957 12.9979 163.594 -138.2994
mn068 60 4.479 7.7186 0.9965 1.9939 27.635 -18.6764
mn070 60 4.991 5.9164 0.7638 1.5284 22.740 -12.7580
Var1 Freq
ck1 53
ck10 60
ck12 54
ck2 59
ck3 53
ck4 53
ck5 53
ck6 58
ck8 59
ck9 52
mn066 59
mn067 59
mn068 58
mn070 58
missed anticipatory too_slow valid_correct valid_incorrect total valid_total
ck1 0 0 1 43 10 54 53
ck10 0 0 0 25 35 60 60
ck12 0 0 0 40 14 54 54
ck2 0 0 1 42 17 60 59
ck3 0 0 1 45 8 54 53
ck4 0 0 1 37 16 54 53
ck5 0 0 1 46 7 54 53
ck6 0 0 2 31 27 60 58
ck8 0 0 1 26 33 60 59
ck9 0 0 2 25 27 54 52
mn066 0 0 1 27 32 60 59
mn067 0 0 1 30 29 60 59
mn068 0 0 2 29 29 60 58
mn070 0 0 2 35 23 60 58
## Warning: Expected 2 pieces. Additional pieces discarded in 658 rows [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, ...].
## [1] 14

2.1 General Analyses

Practice trials

Var1 Freq
ck1 6
ck10 12
ck12 6
ck2 12
ck3 6
ck4 6
ck5 6
ck6 12
ck8 12
ck9 6
mn066 12
mn067 12
mn068 12
mn070 12
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
## Warning: The `fun.y` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.
## ℹ Please use the `fun` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
##   age practice_block N accuracy     sd      se     ci
## 1   3         block1 6   0.3611 0.1255 0.05122 0.1317
## 2   3         block2 6   0.5278 0.1255 0.05122 0.1317
## 3   4         block1 2   0.4167 0.1179 0.08333 1.0589
## 4   4         block2 2   0.8333 0.2357 0.16667 2.1177
## 
##  Paired t-test
## 
## data:  accuracy by practice_block
## t = -4.2, df = 7, p-value = 0.004
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -0.3568 -0.1015
## sample estimates:
## mean difference 
##         -0.2292

Experimental trials

All trials

Analyses
df_acc_noout_experimental = subset(df_acc_noout, block != "practice")
df_acc_noout_experimental$age = as.factor(as.character(df_acc_noout_experimental$age))
distinct(df_acc_noout_experimental[c("participant","age")]) %>%
  {table(.$age)}
## 
## 3 4 
## 8 6
ratio_condition_model <- glmer(accuracy ~ 
                                          +     numRatio * block*age+ 
                                          + (1|participant), data = df_acc_noout_experimental, family = binomial, control = glmerControl(optimizer = "bobyqa"))
summary(ratio_condition_model)
## Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
##  Family: binomial  ( logit )
## Formula: accuracy ~ +numRatio * block * age + +(1 | participant)
##    Data: df_acc_noout_experimental
## Control: glmerControl(optimizer = "bobyqa")
## 
##      AIC      BIC   logLik deviance df.resid 
##    845.7    904.4   -409.9    819.7      659 
## 
## Scaled residuals: 
##    Min     1Q Median     3Q    Max 
## -4.110 -0.956  0.440  0.794  1.457 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  participant (Intercept) 0.112    0.335   
## Number of obs: 672, groups:  participant, 14
## 
## Fixed effects:
##                           Estimate Std. Error z value Pr(>|z|)
## (Intercept)                 0.1918     0.7634    0.25     0.80
## numRatio                   -0.0277     0.3216   -0.09     0.93
## blockblock2                 0.1193     1.0641    0.11     0.91
## blockblock3                -0.7945     1.0844   -0.73     0.46
## age4                       -0.3030     1.1931   -0.25     0.80
## numRatio:blockblock2        0.1235     0.4598    0.27     0.79
## numRatio:blockblock3        0.0784     0.4652    0.17     0.87
## numRatio:age4               0.6867     0.5910    1.16     0.25
## blockblock2:age4           -0.9363     1.7241   -0.54     0.59
## blockblock3:age4           -1.2003     1.7492   -0.69     0.49
## numRatio:blockblock2:age4   0.3709     0.9028    0.41     0.68
## numRatio:blockblock3:age4   1.1849     0.9137    1.30     0.19
## 
## Correlation of Fixed Effects:
##             (Intr) numRat blckb2 blckb3 age4   nmRt:2 nmRt:3 nmRt:4 blc2:4 blc3:4 nR:2:4
## numRatio    -0.960                                                                      
## blockblock2 -0.700  0.689                                                               
## blockblock3 -0.690  0.678  0.492                                                        
## age4        -0.640  0.614  0.449  0.441                                                 
## nmRt:blckb2  0.671 -0.700 -0.970 -0.471 -0.430                                          
## nmRt:blckb3  0.666 -0.694 -0.475 -0.971 -0.426  0.483                                   
## numRatio:g4  0.522 -0.544 -0.375 -0.369 -0.949  0.381  0.378                            
## blckblck2:4  0.432 -0.425 -0.618 -0.303 -0.678  0.600  0.293  0.658                     
## blckblck3:4  0.428 -0.421 -0.306 -0.619 -0.668  0.293  0.602  0.649  0.463              
## nmRt:blc2:4 -0.342  0.357  0.495  0.239  0.624 -0.510 -0.245 -0.657 -0.961 -0.426       
## nmRt:blc3:4 -0.339  0.354  0.243  0.494  0.617 -0.247 -0.508 -0.649 -0.428 -0.959  0.427
Anova(ratio_condition_model, type=3)
## Analysis of Deviance Table (Type III Wald chisquare tests)
## 
## Response: accuracy
##                    Chisq Df Pr(>Chisq)
## (Intercept)         0.06  1       0.80
## numRatio            0.01  1       0.93
## block               0.83  2       0.66
## age                 0.06  1       0.80
## numRatio:block      0.07  2       0.96
## numRatio:age        1.35  1       0.25
## block:age           0.54  2       0.77
## numRatio:block:age  1.71  2       0.43
em=emtrends(ratio_condition_model, pairwise ~ age|block, var="numRatio", mult.name = "age")
summary(em, infer=c(TRUE,TRUE), null=0, type = "response", adjust = "none")
## $emtrends
## block = block1:
##  age numRatio.trend    SE  df asymp.LCL asymp.UCL z.ratio p.value
##  3          -0.0277 0.322 Inf   -0.6581     0.603  -0.086  0.9313
##  4           0.6589 0.496 Inf   -0.3129     1.631   1.329  0.1839
## 
## block = block2:
##  age numRatio.trend    SE  df asymp.LCL asymp.UCL z.ratio p.value
##  3           0.0957 0.329 Inf   -0.5481     0.740   0.292  0.7707
##  4           1.1532 0.596 Inf   -0.0149     2.321   1.935  0.0530
## 
## block = block3:
##  age numRatio.trend    SE  df asymp.LCL asymp.UCL z.ratio p.value
##  3           0.0507 0.335 Inf   -0.6055     0.707   0.151  0.8797
##  4           1.9223 0.610 Inf    0.7268     3.118   3.152  0.0016
## 
## Confidence level used: 0.95 
## 
## $contrasts
## block = block1:
##  contrast    estimate    SE  df asymp.LCL asymp.UCL z.ratio p.value
##  age3 - age4   -0.687 0.591 Inf     -1.84     0.472  -1.162  0.2453
## 
## block = block2:
##  contrast    estimate    SE  df asymp.LCL asymp.UCL z.ratio p.value
##  age3 - age4   -1.058 0.681 Inf     -2.39     0.277  -1.553  0.1204
## 
## block = block3:
##  contrast    estimate    SE  df asymp.LCL asymp.UCL z.ratio p.value
##  age3 - age4   -1.872 0.695 Inf     -3.23    -0.509  -2.691  0.0071
## 
## Confidence level used: 0.95
emeans=emmeans(ratio_condition_model, pairwise ~ numRatio|age, mult.name = "age", at=list(numRatio=c(1.5,2,2.5,3)))
## NOTE: Results may be misleading due to involvement in interactions
summary(emeans, infer=c(TRUE,TRUE), null=0, type = "response", adjust = "none")
## $emmeans
## age = 3:
##  numRatio  prob     SE  df asymp.LCL asymp.UCL null z.ratio p.value
##       1.5 0.506 0.0531 Inf     0.404     0.609  0.5   0.123  0.9020
##       2.0 0.511 0.0413 Inf     0.431     0.592  0.5   0.278  0.7813
##       2.5 0.516 0.0414 Inf     0.436     0.596  0.5   0.396  0.6918
##       3.0 0.521 0.0532 Inf     0.418     0.623  0.5   0.401  0.6883
## 
## age = 4:
##  numRatio  prob     SE  df asymp.LCL asymp.UCL null z.ratio p.value
##       1.5 0.694 0.0438 Inf     0.602     0.773  0.5   3.972  0.0001
##       2.0 0.809 0.0352 Inf     0.730     0.868  0.5   6.335  <.0001
##       2.5 0.887 0.0339 Inf     0.802     0.939  0.5   6.085  <.0001
##       3.0 0.936 0.0288 Inf     0.851     0.974  0.5   5.573  <.0001
## 
## Results are averaged over the levels of: block 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## Tests are performed on the logit scale 
## 
## $contrasts
## age = 3:
##  contrast                  odds.ratio     SE  df asymp.LCL asymp.UCL null z.ratio p.value
##  numRatio1.5 / numRatio2        0.980 0.0926 Inf    0.8147     1.180    1  -0.209  0.8341
##  numRatio1.5 / numRatio2.5      0.961 0.1816 Inf    0.6638     1.392    1  -0.209  0.8341
##  numRatio1.5 / numRatio3        0.942 0.2670 Inf    0.5408     1.642    1  -0.209  0.8341
##  numRatio2 / numRatio2.5        0.980 0.0926 Inf    0.8147     1.180    1  -0.209  0.8341
##  numRatio2 / numRatio3          0.961 0.1816 Inf    0.6638     1.392    1  -0.209  0.8341
##  numRatio2.5 / numRatio3        0.980 0.0926 Inf    0.8147     1.180    1  -0.209  0.8341
## 
## age = 4:
##  contrast                  odds.ratio     SE  df asymp.LCL asymp.UCL null z.ratio p.value
##  numRatio1.5 / numRatio2        0.537 0.0882 Inf    0.3889     0.741    1  -3.787  0.0002
##  numRatio1.5 / numRatio2.5      0.288 0.0947 Inf    0.1512     0.548    1  -3.787  0.0002
##  numRatio1.5 / numRatio3        0.155 0.0762 Inf    0.0588     0.406    1  -3.787  0.0002
##  numRatio2 / numRatio2.5        0.537 0.0882 Inf    0.3889     0.741    1  -3.787  0.0002
##  numRatio2 / numRatio3          0.288 0.0947 Inf    0.1512     0.548    1  -3.787  0.0002
##  numRatio2.5 / numRatio3        0.537 0.0882 Inf    0.3889     0.741    1  -3.787  0.0002
## 
## Results are averaged over the levels of: block 
## Confidence level used: 0.95 
## Intervals are back-transformed from the log odds ratio scale 
## Tests are performed on the log odds ratio scale
#plot(ggpredict(ratio_condition_model, terms=c("numRatio","block")))
Figure
age numRatio N accuracy sd se ci
3 3.5 8 0.5208 0.2588 0.0915 0.2163
3 4.0 8 0.5625 0.2663 0.0942 0.2227
4 3.5 6 0.9167 0.2041 0.0833 0.2142
4 4.0 6 0.7222 0.2277 0.0930 0.2390
age numRatio N accuracy sd se ci
3 1.50 8 0.5208 0.1527 0.0540 0.1276
3 2.00 8 0.4688 0.1938 0.0685 0.1621
3 2.50 8 0.5625 0.1527 0.0540 0.1276
3 3.00 8 0.5000 0.1992 0.0704 0.1665
4 1.25 6 0.6250 0.1149 0.0469 0.1205
4 1.50 6 0.6944 0.1009 0.0412 0.1059
4 2.00 6 0.7778 0.1459 0.0596 0.1531
4 2.50 6 0.8889 0.2337 0.0954 0.2453

Age Effects

Figure
##   age N accuracy      sd      se      ci
## 1   3 8   0.5130 0.09956 0.03520 0.08324
## 2   4 6   0.7465 0.10657 0.04351 0.11184
##   age N accuracy      sd      se      ci
## 1   3 8   0.4948 0.07195 0.02544 0.06015
## 2   4 6   0.7361 0.09742 0.03977 0.10224
## Bin width defaults to 1/30 of the range of the data. Pick better value with `binwidth`.