diff --git a/ccn2019.rev2.nb.html b/ccn2019.rev2.nb.html new file mode 100644 index 0000000..b44e02a --- /dev/null +++ b/ccn2019.rev2.nb.html @@ -0,0 +1,444 @@ + + + + + + + + + + + + + +Statistical Properties of the N-Back Sequences + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+

Problems

+

Statistical properties of n-back sequences bias behaviors. These bias, under specified structure, allows multiple cognitive strategies, producing heterogeneous behavior in a “gold standard” cognitive task.

+
+
+

Gaps

+ + + + + + +
load('./data/CL2015.RData')
+window_size <- 8
+ + + +

\(P=\{V,D,C,W\}\)

+

\(V=\{x_N,x_{T},x_{T,local},x_L,x_{L,local},x_V,x_U,x_S,x_{S,local},x_G\}\)

+

\(D=\{\}\)

+ + + +
with_lures <- function(stimulus, stimulus_type, n) {
+  sapply(1:length(stimulus), function(i) {
+    lures <- c(as.character(stimulus[i-n-1]), as.character(stimulus[i-n+1]))
+    are_valid_trials <- i>n && all(!is.na(c(lures,stimulus[i])))
+    ifelse(are_valid_trials && stimulus[i] %in% lures,
+           "lure", 
+           as.character(stimulus_type[i]))
+  })
+}
+with_history <- function(stimuli, length=16, fixed=F) {
+  seq <- paste(stimuli, collapse = '')
+  
+  sapply(1:length(stimuli), function(i) {
+    stri_reverse(str_sub(seq, max(1,i-length+1), i))
+  })
+  #ifelse(fixed, h[str_length(h)==size], h)
+}
+# $x_{s,local}$
+with_skewness <- function(history) {
+  sapply(history, function(h) {
+    freqs <- table(unlist(str_split(h,"")))
+    sum(sort(freqs, decreasing = T)[1:2]) - 1
+  })
+}
+# $x_{u,local}$
+with_lumpiness <- function(history) {
+  sapply(history, function(h) {
+    freqs <- table(unlist(str_split(h,"")))
+    max(freqs) - 1
+  })
+}
+with_targets_ratio <- function(stimulus_type, length=16) {
+  sapply(1:length(stimulus_type), function(i) {
+    trials <- stimulus_type[max(1,i-length):i]
+    length(trials[trials=="target"]) / length(trials)
+  })
+}
+with_lures_ratio <- function(stimulus_type, length=16) {
+  sapply(1:length(stimulus_type), function(i) {
+    trials <- stimulus_type[max(1,i-length):i]
+    length(trials[trials=="lure"]) / length(trials)
+  })
+}
+NB2 <- NB %>%
+  filter(participant=="P13") %>%
+  group_by(participant, condition, block) %>%
+  mutate(n = ifelse(condition=='2-back',2,3)) %>%
+  mutate(stimulus_type = with_lures(stimulus, stimulus_type, n)) %>%
+  mutate(history = with_history(stimulus, window_size)) %>%
+  mutate(x_sl = with_skewness(history)) %>%
+  mutate(x_ul = with_lumpiness(history)) %>%
+  mutate(x_t = with_targets_ratio(stimulus_type, window_size)) %>%
+  mutate(x_l = with_lures_ratio(stimulus_type, window_size)) %>%
+  ungroup()
+  
+pca <- prcomp(~x_sl+x_ul+x_t+x_l, NB2, center = TRUE,scale. = TRUE, na.action=na.exclude)
+NB2 <- NB2 %>% mutate(pc1=pca$x[,'PC1'], pc2=pca$x[,'PC2'])
+# caret
+library(caret)
+# Compile cross-validation settings
+any(is.na(NB2))
+ + +
[1] TRUE
+ + +
NB2 <- na.omit(NB2)
+# set.seed(100)
+# trainingfold <- createMultiFolds(NB2@correct, k = 5, times = 10)
+# 
+# # PLS
+# mod1 <- train(correct ~ ., data = NB2[,c("correct","x_sl","x_ul","x_t","x_l")],
+#  method = "pls",
+#  metric = "Accuracy",
+#  tuneLength = 20,
+#  trControl = trainControl("repeatedcv", index = trainingfold, selectionFunction = "oneSE"),
+#  preProc = c("zv","center","scale"))
+#  
+# # Check CV
+# plot(mod1)
+plsResult <- plsR(correct ~ ., data=NB2[,c("correct","x_sl","x_ul","x_t","x_l")],3)
+ + +
____************************************************____
+____Component____ 1 ____
+____Component____ 2 ____
+____Component____ 3 ____
+____Predicting X without NA neither in X nor in Y____
+****________________________________________________****
+ + +
plsResult
+ + +
Number of required components:
+[1] 3
+Number of successfully computed components:
+[1] 3
+Coefficients:
+                  [,1]
+Intercept  1.008159108
+x_sl      -0.012385995
+x_ul       0.019020579
+x_t       -0.009732895
+x_l        0.015588407
+Information criteria and Fit statistics:
+                AIC     RSS_Y        R2_Y   R2_residY RSS_residY  AIC.std  DoF.dof
+Nb_Comp_0 -400.8879 0.9942529          NA          NA   173.0000 496.7877 1.000000
+Nb_Comp_1 -399.2749 0.9920439 0.002221709 0.002221709   172.6156 498.4007 4.020014
+Nb_Comp_2 -397.5844 0.9902807 0.003995089 0.003995089   172.3088 500.0912 5.000000
+Nb_Comp_3 -396.2011 0.9867774 0.007518680 0.007518680   171.6993 501.4745 5.000000
+          sigmahat.dof     AIC.dof     BIC.dof  GMDL.dof DoF.naive sigmahat.naive
+Nb_Comp_0   0.07580980 0.005780156 0.005884498 -441.1050         1     0.07580980
+Nb_Comp_1   0.07617155 0.005969500 0.006392969 -427.5293         2     0.07594536
+Nb_Comp_2   0.07632287 0.006026049 0.006554844 -423.3755         3     0.07609938
+Nb_Comp_3   0.07618775 0.006004731 0.006531655 -423.6749         4     0.07618775
+            AIC.naive   BIC.naive GMDL.naive
+Nb_Comp_0 0.005780156 0.005884498  -441.1050
+Nb_Comp_1 0.005833993 0.006043423  -436.3376
+Nb_Comp_2 0.005890962 0.006206384  -431.7944
+Nb_Comp_3 0.005938011 0.006359551  -427.5722
+ + +
+ +
LS0tCnRpdGxlOiAiU3RhdGlzdGljYWwgUHJvcGVydGllcyBvZiB0aGUgTi1CYWNrIFNlcXVlbmNlcyIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKLS0tCgojIFByb2JsZW1zCgpTdGF0aXN0aWNhbCBwcm9wZXJ0aWVzIG9mIG4tYmFjayBzZXF1ZW5jZXMgYmlhcyBiZWhhdmlvcnMuIFRoZXNlIGJpYXMsIHVuZGVyIHNwZWNpZmllZCBzdHJ1Y3R1cmUsIGFsbG93cyBtdWx0aXBsZSBjb2duaXRpdmUgc3RyYXRlZ2llcywgcHJvZHVjaW5nIGhldGVyb2dlbmVvdXMgYmVoYXZpb3IgaW4gYSAiZ29sZCBzdGFuZGFyZCIgY29nbml0aXZlIHRhc2suCgojIEdhcHMKCi0gVW5jbGVhciBob3cgdG8gcGFyYW1ldGVyaXplIGludGVyZXN0aW5nIHZhcmlhdGlvbnMgZm9yIHNlcXVlbmNlIGdlbmVyYXRpb24KLSBIb3cgZG8gd2UgbW9kZWwgdGhlc2UgbXVsdGlwbGUgc3RyYXRlZ2llcyAod2hpY2ggcmVxdWlyZXMgaWRlbnRpZnlpbmcgd2hpY2ggc2VxdWVuY2UgdmFyaWF0aW9ucyBtYXR0ZXIpIAogICAgLSBsb2NhbCB2cy4gZ2xvYmFsIHByb3BlcnRpZXMsIHdoaWNoIG9uZSBtYXR0ZXJzIHRoZSBtb3N0PwogICAgLSBMb2NhbDogIGx1bXBpbmVzcywgc2hvcnQgc2VxdWVuY2UgcGF0dGVybnMgLT4gY291bGQgYmUgZXhwbG9pdGVkIGJ5IOKAnHJlYWN0aXZl4oCdL2F1dG9tYXRpY2l0eSAKICAgIC0gR2xvYmFsOiAgTm8gbHVyZXMsIGxhcmdlIHZvY2FidWxhcnkgLT4gcGF0dGVybiByZXBlYXRzIGltcGxpZXMgYSB0YXJnZXQKCgpgYGB7ciBsaWJyYXJpZXMsIG1lc3NhZ2U9RkFMU0UsIGluY2x1ZGU9RkFMU0UsIHBhZ2VkLnByaW50PUZBTFNFfQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHN0cmluZ2kpCmxpYnJhcnkocGxzUmdsbSkKbGlicmFyeShwbHNkb2YpCmxpYnJhcnkoY2FyZXQpCmBgYAoKYGBge3IgcGFyYW1zfQpsb2FkKCcuL2RhdGEvQ0wyMDE1LlJEYXRhJykKCndpbmRvd19zaXplIDwtIDgKYGBgCgoKJFA9XHtWLEQsQyxXXH0kCgokVj1ce3hfTix4X3tUfSx4X3tULGxvY2FsfSx4X0wseF97TCxsb2NhbH0seF9WLHhfVSx4X1MseF97Uyxsb2NhbH0seF9HXH0kCgokRD1ce1x9JAoKCgpgYGB7ciBoaXN0b3J5fQoKd2l0aF9sdXJlcyA8LSBmdW5jdGlvbihzdGltdWx1cywgc3RpbXVsdXNfdHlwZSwgbikgewogIHNhcHBseSgxOmxlbmd0aChzdGltdWx1cyksIGZ1bmN0aW9uKGkpIHsKICAgIGx1cmVzIDwtIGMoYXMuY2hhcmFjdGVyKHN0aW11bHVzW2ktbi0xXSksIGFzLmNoYXJhY3RlcihzdGltdWx1c1tpLW4rMV0pKQogICAgYXJlX3ZhbGlkX3RyaWFscyA8LSBpPm4gJiYgYWxsKCFpcy5uYShjKGx1cmVzLHN0aW11bHVzW2ldKSkpCiAgICBpZmVsc2UoYXJlX3ZhbGlkX3RyaWFscyAmJiBzdGltdWx1c1tpXSAlaW4lIGx1cmVzLAogICAgICAgICAgICJsdXJlIiwgCiAgICAgICAgICAgYXMuY2hhcmFjdGVyKHN0aW11bHVzX3R5cGVbaV0pKQogIH0pCn0KCndpdGhfaGlzdG9yeSA8LSBmdW5jdGlvbihzdGltdWxpLCBsZW5ndGg9MTYsIGZpeGVkPUYpIHsKICBzZXEgPC0gcGFzdGUoc3RpbXVsaSwgY29sbGFwc2UgPSAnJykKICAKICBzYXBwbHkoMTpsZW5ndGgoc3RpbXVsaSksIGZ1bmN0aW9uKGkpIHsKICAgIHN0cmlfcmV2ZXJzZShzdHJfc3ViKHNlcSwgbWF4KDEsaS1sZW5ndGgrMSksIGkpKQogIH0pCiAgI2lmZWxzZShmaXhlZCwgaFtzdHJfbGVuZ3RoKGgpPT1zaXplXSwgaCkKfQoKIyAkeF97cyxsb2NhbH0kCndpdGhfc2tld25lc3MgPC0gZnVuY3Rpb24oaGlzdG9yeSkgewogIHNhcHBseShoaXN0b3J5LCBmdW5jdGlvbihoKSB7CiAgICBmcmVxcyA8LSB0YWJsZSh1bmxpc3Qoc3RyX3NwbGl0KGgsIiIpKSkKICAgIHN1bShzb3J0KGZyZXFzLCBkZWNyZWFzaW5nID0gVClbMToyXSkgLSAxCiAgfSkKfQoKIyAkeF97dSxsb2NhbH0kCndpdGhfbHVtcGluZXNzIDwtIGZ1bmN0aW9uKGhpc3RvcnkpIHsKICBzYXBwbHkoaGlzdG9yeSwgZnVuY3Rpb24oaCkgewogICAgZnJlcXMgPC0gdGFibGUodW5saXN0KHN0cl9zcGxpdChoLCIiKSkpCiAgICBtYXgoZnJlcXMpIC0gMQogIH0pCn0KCgp3aXRoX3RhcmdldHNfcmF0aW8gPC0gZnVuY3Rpb24oc3RpbXVsdXNfdHlwZSwgbGVuZ3RoPTE2KSB7CiAgc2FwcGx5KDE6bGVuZ3RoKHN0aW11bHVzX3R5cGUpLCBmdW5jdGlvbihpKSB7CiAgICB0cmlhbHMgPC0gc3RpbXVsdXNfdHlwZVttYXgoMSxpLWxlbmd0aCk6aV0KICAgIGxlbmd0aCh0cmlhbHNbdHJpYWxzPT0idGFyZ2V0Il0pIC8gbGVuZ3RoKHRyaWFscykKICB9KQp9Cgp3aXRoX2x1cmVzX3JhdGlvIDwtIGZ1bmN0aW9uKHN0aW11bHVzX3R5cGUsIGxlbmd0aD0xNikgewogIHNhcHBseSgxOmxlbmd0aChzdGltdWx1c190eXBlKSwgZnVuY3Rpb24oaSkgewogICAgdHJpYWxzIDwtIHN0aW11bHVzX3R5cGVbbWF4KDEsaS1sZW5ndGgpOmldCiAgICBsZW5ndGgodHJpYWxzW3RyaWFscz09Imx1cmUiXSkgLyBsZW5ndGgodHJpYWxzKQogIH0pCn0KCk5CMiA8LSBOQiAlPiUKICBmaWx0ZXIocGFydGljaXBhbnQ9PSJQMTMiKSAlPiUKICBncm91cF9ieShwYXJ0aWNpcGFudCwgY29uZGl0aW9uLCBibG9jaykgJT4lCiAgbXV0YXRlKG4gPSBpZmVsc2UoY29uZGl0aW9uPT0nMi1iYWNrJywyLDMpKSAlPiUKICBtdXRhdGUoc3RpbXVsdXNfdHlwZSA9IHdpdGhfbHVyZXMoc3RpbXVsdXMsIHN0aW11bHVzX3R5cGUsIG4pKSAlPiUKICBtdXRhdGUoaGlzdG9yeSA9IHdpdGhfaGlzdG9yeShzdGltdWx1cywgd2luZG93X3NpemUpKSAlPiUKICBtdXRhdGUoeF9zbCA9IHdpdGhfc2tld25lc3MoaGlzdG9yeSkpICU+JQogIG11dGF0ZSh4X3VsID0gd2l0aF9sdW1waW5lc3MoaGlzdG9yeSkpICU+JQogIG11dGF0ZSh4X3QgPSB3aXRoX3RhcmdldHNfcmF0aW8oc3RpbXVsdXNfdHlwZSwgd2luZG93X3NpemUpKSAlPiUKICBtdXRhdGUoeF9sID0gd2l0aF9sdXJlc19yYXRpbyhzdGltdWx1c190eXBlLCB3aW5kb3dfc2l6ZSkpICU+JQogIHVuZ3JvdXAoKQogIApwY2EgPC0gcHJjb21wKH54X3NsK3hfdWwreF90K3hfbCwgTkIyLCBjZW50ZXIgPSBUUlVFLHNjYWxlLiA9IFRSVUUsIG5hLmFjdGlvbj1uYS5leGNsdWRlKQpOQjIgPC0gTkIyICU+JSBtdXRhdGUocGMxPXBjYSR4WywnUEMxJ10sIHBjMj1wY2EkeFssJ1BDMiddKQoKIyBjYXJldApsaWJyYXJ5KGNhcmV0KQojIENvbXBpbGUgY3Jvc3MtdmFsaWRhdGlvbiBzZXR0aW5ncwoKCmFueShpcy5uYShOQjIpKQpOQjIgPC0gbmEub21pdChOQjIpCgojIHNldC5zZWVkKDEwMCkKIyB0cmFpbmluZ2ZvbGQgPC0gY3JlYXRlTXVsdGlGb2xkcyhOQjJAY29ycmVjdCwgayA9IDUsIHRpbWVzID0gMTApCiMgCiMgIyBQTFMKIyBtb2QxIDwtIHRyYWluKGNvcnJlY3QgfiAuLCBkYXRhID0gTkIyWyxjKCJjb3JyZWN0IiwieF9zbCIsInhfdWwiLCJ4X3QiLCJ4X2wiKV0sCiMgIG1ldGhvZCA9ICJwbHMiLAojICBtZXRyaWMgPSAiQWNjdXJhY3kiLAojICB0dW5lTGVuZ3RoID0gMjAsCiMgIHRyQ29udHJvbCA9IHRyYWluQ29udHJvbCgicmVwZWF0ZWRjdiIsIGluZGV4ID0gdHJhaW5pbmdmb2xkLCBzZWxlY3Rpb25GdW5jdGlvbiA9ICJvbmVTRSIpLAojICBwcmVQcm9jID0gYygienYiLCJjZW50ZXIiLCJzY2FsZSIpKQojICAKIyAjIENoZWNrIENWCiMgcGxvdChtb2QxKQoKCnBsc1Jlc3VsdCA8LSBwbHNSKGNvcnJlY3QgfiAuLCBkYXRhPU5CMlssYygiY29ycmVjdCIsInhfc2wiLCJ4X3VsIiwieF90IiwieF9sIildLDMpCgoKcGxzUmVzdWx0CmBgYA==
+ + + +
+ + + + + + + +