Load Packages

haven

# Check if haven is already installed and if it is, load it.
if (!require(haven)){
  # If it's not intalled, then tell R to install it.
  install.packages("haven", dependencies = TRUE)
  # Once it's installed, tell R to load it.
  library(haven)
}

tidyverse

if (!require(tidyverse)){
  install.packages("tidyverse", dependencies = TRUE)
  library(tidyverse)
}

summarytools

if (!require(summarytools)){
  install.packages("summarytools", dependencies = TRUE)
  require(summarytools)
}

psych

if (!require(psych)){
  install.packages("psych", dependencies = TRUE)
  require(psych)
}

afex

if (!require(afex)){
  install.packages("afex", dependencies = TRUE)
  require(afex)
}

Importing Data

dataset <- read_sav("Build your Experiment_April 25, 2024_16.45.sav")

Clean Data

(dataset %>%
  head(20) -> dataset) 
(dataset %>% 
  filter(LocationLongitude > -122.5) %>%
  mutate(LocationLatitude > 47.8 -> dataset.clean))

Create Vision

(dataset %>% 
mutate(Vision = case_when(LocationLongitude == 1.1 ~ "Myopia",
                               LocationLongitude == 1.1 ~ "Hyperopia",
                               LocationLongitude == 1.1 ~ "Myopia",
                               LocationLongitude == 1.1 ~ "Hyperopia")) -> dataset.clean)

Create Navon Task

(dataset %>%
  mutate(BuildYourExperiment = case_when(LocationLongitude == 1.1 ~ "Myopia",
                               LocationLongitude == 1.1 ~ "Hyperopia",
                               LocationLongitude == 1.1 ~ "Myopia",
                               LocationLongitude == 1.1 ~ "Hyperopia")) -> dataset.clean)
#create dataframe with only relevant variables to work with
Vision.keys <- data.frame  (dataset.clean$NavonTask)
Warning: Unknown or uninitialised column: `NavonTask`.
#create list of 'keys'. The numbers just refer to the order of the question in the data.frame() you just made. The most important thing is to mark the questions that should be reserved scored with a '-'. Vision.keys <- make,keys(Vision, list(Vision=c(Vision, NavonTask)))

#score the scale
NavonTask.scales <- scoreItems (NavonTask.keys, NavonTask)
Error: object 'NavonTask' not found

ANOVA

aov_ez(id = "Vision",
       dv = "NavonTask", 
      data = "dataset.clean",
      between=c("RaceDFeb_sqrt", "RaceDFeb"),
      anova_table = list(es = "pes"))
Error: variable(s) `NavonTask`, `RaceDFeb_sqrt`, `RaceDFeb`, `Vision` not in `data`

Study Design Table Numbers

Marginal means for NavonTask

dataset.clean %>% 
  group_by(NavonTask) %>%
  summarise(m = mean(NavonTask),
            sd = sd(NavonTask))
Error in `group_by()`:
! Must group by variables found in `.data`.
✖ Column `NavonTask` is not found.
Backtrace:
 1. dataset.clean %>% group_by(NavonTask) %>% ...
 4. dplyr:::group_by.data.frame(., NavonTask)

Marginal means for RaceDFeb_sqrt

dataset.clean %>% 
  group_by(RaceDFeb_sqrt) %>%
  summarise(m = mean(RaceDFeb_sqrt),
            sd = sd(RaceDFeb_sqrt))

Cell means (inside of the study design table)

dataset.clean %>%
  group_by(RaceDFeb_sqrt) %>%
  summarise(m = mean(NavonTask),
            sd = sd(RaceDFeb_sqrt))
Error in `summarise()`:
ℹ In argument: `m = mean(NavonTask)`.
ℹ In group 1: `RaceDFeb_sqrt = -0.9611825`.
Caused by error in `h()`:
! error in evaluating the argument 'x' in selecting a method for function 'mean': object 'NavonTask' not found
Backtrace:
  1. dataset.clean %>% group_by(RaceDFeb_sqrt) %>% ...
 12. base::.handleSimpleError(...)
 13. base (local) h(simpleError(msg, call))

Method section numbers

print(dfSummary(dataset.clean, graph.magnif = .75), method = 'render') 
Warning: unable to open connection to X11 display ''

Data Frame Summary

dataset.clean

Dimensions: 20 x 9
Duplicates: 0
No Variable Label Stats / Values Freqs (% of Valid) Graph Valid Missing
1 Subject [character]
1. 03rose298
2. 03rose570
3. 04pink261
4. 04rose292
5. 06camelia540
6. 07daisy123
7. 09geranium419
8. 09rose071
9. 09rose143
10. 12rose333
[ 10 others ]
1(5.0%)
1(5.0%)
1(5.0%)
1(5.0%)
1(5.0%)
1(5.0%)
1(5.0%)
1(5.0%)
1(5.0%)
1(5.0%)
10(50.0%)
20 (100.0%) 0 (0.0%)
2 TrainTyp [haven_labelled, vctrs_vctr, double] 1 distinct value
1:20(100.0%)
20 (100.0%) 0 (0.0%)
3 EC [haven_labelled, vctrs_vctr, double] IV: Training
Min : 0
Mean : 0.4
Max : 1
0:12(60.0%)
1:8(40.0%)
20 (100.0%) 0 (0.0%)
4 IATOrder [haven_labelled, vctrs_vctr, double]
Min : 1
Mean : 1.6
Max : 2
1:7(35.0%)
2:13(65.0%)
20 (100.0%) 0 (0.0%)
5 RaceDFeb [numeric] Attitude IAT (new algorithm: Gawronski: prac, real, real)
Mean (sd) : 0.2 (0.8)
min ≤ med ≤ max:
-0.9 ≤ 0.1 ≤ 1.6
IQR (CV) : 1.3 (3.1)
20 distinct values 20 (100.0%) 0 (0.0%)
6 IdenDFeb [numeric] Iden IAT (new algorithm: Gawronski: prac, real, real)
Mean (sd) : 0 (0.5)
min ≤ med ≤ max:
-1 ≤ 0 ≤ 1.1
IQR (CV) : 0.3 (-18.8)
20 distinct values 20 (100.0%) 0 (0.0%)
7 TrainTyp_EffectCode [numeric] IV: Type of Training 1 distinct value
1:20(100.0%)
20 (100.0%) 0 (0.0%)
8 RaceDFeb_sqrt [numeric]
Mean (sd) : 0.2 (0.8)
min ≤ med ≤ max:
-1 ≤ 0.3 ≤ 1.3
IQR (CV) : 1.5 (3.7)
20 distinct values 20 (100.0%) 0 (0.0%)
9 PrisonGuardsVs.Prisoners [character]
All NA's
0 (0.0%) 20 (100.0%)

Generated by summarytools 1.0.1 (R version 4.3.3)
2024-05-01

LS0tCnRpdGxlOiAiR3JvdXAgQW5hbHlzaXMgQXNzaWdubWVudCIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IHBhcGVyCiAgICB0b2M6IHRydWUKLS0tCgojIyBMb2FkIFBhY2thZ2VzIHsudGFic2V0fQoKIyMjIGhhdmVuCmBgYHtyfQojIENoZWNrIGlmIGhhdmVuIGlzIGFscmVhZHkgaW5zdGFsbGVkIGFuZCBpZiBpdCBpcywgbG9hZCBpdC4KaWYgKCFyZXF1aXJlKGhhdmVuKSl7CiAgIyBJZiBpdCdzIG5vdCBpbnRhbGxlZCwgdGhlbiB0ZWxsIFIgdG8gaW5zdGFsbCBpdC4KICBpbnN0YWxsLnBhY2thZ2VzKCJoYXZlbiIsIGRlcGVuZGVuY2llcyA9IFRSVUUpCiAgIyBPbmNlIGl0J3MgaW5zdGFsbGVkLCB0ZWxsIFIgdG8gbG9hZCBpdC4KICBsaWJyYXJ5KGhhdmVuKQp9CmBgYAoKIyMjIHRpZHl2ZXJzZQpgYGB7cn0KaWYgKCFyZXF1aXJlKHRpZHl2ZXJzZSkpewogIGluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIsIGRlcGVuZGVuY2llcyA9IFRSVUUpCiAgbGlicmFyeSh0aWR5dmVyc2UpCn0KYGBgCgojIyMgc3VtbWFyeXRvb2xzCmBgYHtyfQppZiAoIXJlcXVpcmUoc3VtbWFyeXRvb2xzKSl7CiAgaW5zdGFsbC5wYWNrYWdlcygic3VtbWFyeXRvb2xzIiwgZGVwZW5kZW5jaWVzID0gVFJVRSkKICByZXF1aXJlKHN1bW1hcnl0b29scykKfQpgYGAKCiMjIyBwc3ljaApgYGB7cn0KaWYgKCFyZXF1aXJlKHBzeWNoKSl7CiAgaW5zdGFsbC5wYWNrYWdlcygicHN5Y2giLCBkZXBlbmRlbmNpZXMgPSBUUlVFKQogIHJlcXVpcmUocHN5Y2gpCn0KYGBgCgojIyMgYWZleApgYGB7cn0KaWYgKCFyZXF1aXJlKGFmZXgpKXsKICBpbnN0YWxsLnBhY2thZ2VzKCJhZmV4IiwgZGVwZW5kZW5jaWVzID0gVFJVRSkKICByZXF1aXJlKGFmZXgpCn0KYGBgCgojIyBJbXBvcnRpbmcgRGF0YQpgYGB7cn0KZGF0YXNldCA8LSByZWFkX3NhdigiQnVpbGQgeW91ciBFeHBlcmltZW50X0FwcmlsIDI1LCAyMDI0XzE2LjQ1LnNhdiIpCmBgYAoKCiMjIENsZWFuIERhdGEKYGBge3J9CihkYXRhc2V0ICU+JQogIGhlYWQoMjApIC0+IGRhdGFzZXQpIApgYGAKYGBge3J9CihkYXRhc2V0ICU+JSAKICBmaWx0ZXIoTG9jYXRpb25Mb25naXR1ZGUgPiAtMTIyLjUpICU+JQogIG11dGF0ZShMb2NhdGlvbkxhdGl0dWRlID4gNDcuOCAtPiBkYXRhc2V0LmNsZWFuKSkKYGBgCgojIyBDcmVhdGUgVmlzaW9uCmBgYHtyfQooZGF0YXNldCAlPiUgCm11dGF0ZShWaXNpb24gPSBjYXNlX3doZW4oTG9jYXRpb25Mb25naXR1ZGUgPT0gMS4xIH4gIk15b3BpYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbkxvbmdpdHVkZSA9PSAxLjEgfiAiSHlwZXJvcGlhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uTG9uZ2l0dWRlID09IDEuMSB+ICJNeW9waWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25Mb25naXR1ZGUgPT0gMS4xIH4gIkh5cGVyb3BpYSIpKSAtPiBkYXRhc2V0LmNsZWFuKQpgYGAKCiMjIENyZWF0ZSBOYXZvbiBUYXNrCmBgYHtyfQooZGF0YXNldCAlPiUKICBtdXRhdGUoQnVpbGRZb3VyRXhwZXJpbWVudCA9IGNhc2Vfd2hlbihMb2NhdGlvbkxvbmdpdHVkZSA9PSAxLjEgfiAiTXlvcGlhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uTG9uZ2l0dWRlID09IDEuMSB+ICJIeXBlcm9waWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25Mb25naXR1ZGUgPT0gMS4xIH4gIk15b3BpYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbkxvbmdpdHVkZSA9PSAxLjEgfiAiSHlwZXJvcGlhIikpIC0+IGRhdGFzZXQuY2xlYW4pCmBgYAoKYGBge3J9CiNjcmVhdGUgZGF0YWZyYW1lIHdpdGggb25seSByZWxldmFudCB2YXJpYWJsZXMgdG8gd29yayB3aXRoClZpc2lvbi5rZXlzIDwtIGRhdGEuZnJhbWUgIChkYXRhc2V0LmNsZWFuJE5hdm9uVGFzaykKCiNjcmVhdGUgbGlzdCBvZiAna2V5cycuIFRoZSBudW1iZXJzIGp1c3QgcmVmZXIgdG8gdGhlIG9yZGVyIG9mIHRoZSBxdWVzdGlvbiBpbiB0aGUgZGF0YS5mcmFtZSgpIHlvdSBqdXN0IG1hZGUuIFRoZSBtb3N0IGltcG9ydGFudCB0aGluZyBpcyB0byBtYXJrIHRoZSBxdWVzdGlvbnMgdGhhdCBzaG91bGQgYmUgcmVzZXJ2ZWQgc2NvcmVkIHdpdGggYSAnLScuIFZpc2lvbi5rZXlzIDwtIG1ha2Usa2V5cyhWaXNpb24sIGxpc3QoVmlzaW9uPWMoVmlzaW9uLCBOYXZvblRhc2spKSkKCiNzY29yZSB0aGUgc2NhbGUKTmF2b25UYXNrLnNjYWxlcyA8LSBzY29yZUl0ZW1zIChOYXZvblRhc2sua2V5cywgTmF2b25UYXNrKQoKI3NhdmUgdGhlIHNjb3JlcyAKVmlzaW9uLnNjb3JlcyA8LSBWaXNpb24uc2NhbGVzJHNjb3JlcwoKI3NhdmUgdGhlIHNjb3JlcyBiYWNrIGluICdkYXRhc2V0JwpkYXRhc2V0LmNsZWFuJFZpc2lvbiA8LSBWaXNpb24uc2NvcmVzWyxdCgojcHJpbnQgdGhlIGNyb25iYWNoIGFscGhhClZpc2lvbi5zY2FsZXMkYWxwaGEKYGBgCgojIyBBTk9WQQpgYGB7cn0KYW92X2V6KGlkID0gIlZpc2lvbiIsCiAgICAgICBkdiA9ICJOYXZvblRhc2siLCAKICAgICAgZGF0YSA9ICJkYXRhc2V0LmNsZWFuIiwKICAgICAgYmV0d2Vlbj1jKCJSYWNlREZlYl9zcXJ0IiwgIlJhY2VERmViIiksCiAgICAgIGFub3ZhX3RhYmxlID0gbGlzdChlcyA9ICJwZXMiKSkKYGBgCgojIyBTdHVkeSBEZXNpZ24gVGFibGUgTnVtYmVycwoKTWFyZ2luYWwgbWVhbnMgZm9yIE5hdm9uVGFzawpgYGB7cn0KZGF0YXNldC5jbGVhbiAlPiUgCiAgZ3JvdXBfYnkoTmF2b25UYXNrKSAlPiUKICBzdW1tYXJpc2UobSA9IG1lYW4oTmF2b25UYXNrKSwKICAgICAgICAgICAgc2QgPSBzZChOYXZvblRhc2spKQpgYGAKCk1hcmdpbmFsIG1lYW5zIGZvciBSYWNlREZlYl9zcXJ0CmBgYHtyfQpkYXRhc2V0LmNsZWFuICU+JSAKICBncm91cF9ieShSYWNlREZlYl9zcXJ0KSAlPiUKICBzdW1tYXJpc2UobSA9IG1lYW4oUmFjZURGZWJfc3FydCksCiAgICAgICAgICAgIHNkID0gc2QoUmFjZURGZWJfc3FydCkpCmBgYApDZWxsIG1lYW5zIChpbnNpZGUgb2YgdGhlIHN0dWR5IGRlc2lnbiB0YWJsZSkKYGBge3J9CmRhdGFzZXQuY2xlYW4gJT4lCiAgZ3JvdXBfYnkoUmFjZURGZWJfc3FydCkgJT4lCiAgc3VtbWFyaXNlKG0gPSBtZWFuKE5hdm9uVGFzayksCiAgICAgICAgICAgIHNkID0gc2QoUmFjZURGZWJfc3FydCkpCmBgYAoKIyMgTWV0aG9kIHNlY3Rpb24gbnVtYmVycwpgYGB7cn0KcHJpbnQoZGZTdW1tYXJ5KGRhdGFzZXQuY2xlYW4sIGdyYXBoLm1hZ25pZiA9IC43NSksIG1ldGhvZCA9ICdyZW5kZXInKSAKYGBgCgo=