diff --git a/bayes.ipynb b/bayes.ipynb
new file mode 100644
index 0000000..786f655
--- /dev/null
+++ b/bayes.ipynb
@@ -0,0 +1,59 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "outputs": [],
+ "source": "\nimport numpy as np\n\nnp.arange(16)\n??np\n\n",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n",
+ "is_executing": false
+ }
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "outputs": [],
+ "source": "paste(\u0027a\u0027,\u0027b\u0027)\n\n??",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.6"
+ },
+ "kernelspec": {
+ "name": "python3",
+ "language": "python",
+ "display_name": "Python 3"
+ },
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": "",
+ "metadata": {
+ "pycharm": {
+ "metadata": false
+ }
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/bayes.ipynb b/bayes.ipynb
new file mode 100644
index 0000000..786f655
--- /dev/null
+++ b/bayes.ipynb
@@ -0,0 +1,59 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "outputs": [],
+ "source": "\nimport numpy as np\n\nnp.arange(16)\n??np\n\n",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n",
+ "is_executing": false
+ }
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "outputs": [],
+ "source": "paste(\u0027a\u0027,\u0027b\u0027)\n\n??",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.6"
+ },
+ "kernelspec": {
+ "name": "python3",
+ "language": "python",
+ "display_name": "Python 3"
+ },
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": "",
+ "metadata": {
+ "pycharm": {
+ "metadata": false
+ }
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/ccn2019.rev2.Rmd b/ccn2019.rev2.Rmd
index 318502a..3e8cfd9 100644
--- a/ccn2019.rev2.Rmd
+++ b/ccn2019.rev2.Rmd
@@ -132,7 +132,8 @@
# plot(mod1)
-plsResult <- plsR(correct ~ ., data=NB2[,c("rt","x_sl","x_ul","x_t","x_l")],3)
+plsResult <- plsR(rt ~ ., data=NB2[,c("rt","x_sl","x_ul","x_t","x_l")],3)
+plsResult <- plsR(correct ~ ., data=NB2[,c("correct","x_sl","x_ul","x_t","x_l")],3)
plsResult
diff --git a/bayes.ipynb b/bayes.ipynb
new file mode 100644
index 0000000..786f655
--- /dev/null
+++ b/bayes.ipynb
@@ -0,0 +1,59 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "outputs": [],
+ "source": "\nimport numpy as np\n\nnp.arange(16)\n??np\n\n",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n",
+ "is_executing": false
+ }
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "outputs": [],
+ "source": "paste(\u0027a\u0027,\u0027b\u0027)\n\n??",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.6"
+ },
+ "kernelspec": {
+ "name": "python3",
+ "language": "python",
+ "display_name": "Python 3"
+ },
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": "",
+ "metadata": {
+ "pycharm": {
+ "metadata": false
+ }
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/ccn2019.rev2.Rmd b/ccn2019.rev2.Rmd
index 318502a..3e8cfd9 100644
--- a/ccn2019.rev2.Rmd
+++ b/ccn2019.rev2.Rmd
@@ -132,7 +132,8 @@
# plot(mod1)
-plsResult <- plsR(correct ~ ., data=NB2[,c("rt","x_sl","x_ul","x_t","x_l")],3)
+plsResult <- plsR(rt ~ ., data=NB2[,c("rt","x_sl","x_ul","x_t","x_l")],3)
+plsResult <- plsR(correct ~ ., data=NB2[,c("correct","x_sl","x_ul","x_t","x_l")],3)
plsResult
diff --git a/ccn2019.rev2.nb.html b/ccn2019.rev2.nb.html
deleted file mode 100644
index b44e02a..0000000
--- a/ccn2019.rev2.nb.html
+++ /dev/null
@@ -1,444 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-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
-
-Unclear how to parameterize interesting variations for sequence generation
-How do we model these multiple strategies (which requires identifying which sequence variations matter)
-
-local vs. global properties, which one matters the most?
-Local: lumpiness, short sequence patterns -> could be exploited by “reactive”/automaticity
-Global: No lures, large vocabulary -> pattern repeats implies a target
-
-
-
-
-
-
-
-
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==
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/bayes.ipynb b/bayes.ipynb
new file mode 100644
index 0000000..786f655
--- /dev/null
+++ b/bayes.ipynb
@@ -0,0 +1,59 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "outputs": [],
+ "source": "\nimport numpy as np\n\nnp.arange(16)\n??np\n\n",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n",
+ "is_executing": false
+ }
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "outputs": [],
+ "source": "paste(\u0027a\u0027,\u0027b\u0027)\n\n??",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.6"
+ },
+ "kernelspec": {
+ "name": "python3",
+ "language": "python",
+ "display_name": "Python 3"
+ },
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": "",
+ "metadata": {
+ "pycharm": {
+ "metadata": false
+ }
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/ccn2019.rev2.Rmd b/ccn2019.rev2.Rmd
index 318502a..3e8cfd9 100644
--- a/ccn2019.rev2.Rmd
+++ b/ccn2019.rev2.Rmd
@@ -132,7 +132,8 @@
# plot(mod1)
-plsResult <- plsR(correct ~ ., data=NB2[,c("rt","x_sl","x_ul","x_t","x_l")],3)
+plsResult <- plsR(rt ~ ., data=NB2[,c("rt","x_sl","x_ul","x_t","x_l")],3)
+plsResult <- plsR(correct ~ ., data=NB2[,c("correct","x_sl","x_ul","x_t","x_l")],3)
plsResult
diff --git a/ccn2019.rev2.nb.html b/ccn2019.rev2.nb.html
deleted file mode 100644
index b44e02a..0000000
--- a/ccn2019.rev2.nb.html
+++ /dev/null
@@ -1,444 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-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
-
-Unclear how to parameterize interesting variations for sequence generation
-How do we model these multiple strategies (which requires identifying which sequence variations matter)
-
-local vs. global properties, which one matters the most?
-Local: lumpiness, short sequence patterns -> could be exploited by “reactive”/automaticity
-Global: No lures, large vocabulary -> pattern repeats implies a target
-
-
-
-
-
-
-
-
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==
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pls_playground.Rmd b/pls_playground.Rmd
new file mode 100644
index 0000000..22d877f
--- /dev/null
+++ b/pls_playground.Rmd
@@ -0,0 +1,36 @@
+---
+title: "PLS Training"
+output: html_notebook
+---
+
+PLS:
+
+
+```{r}
+#detach("package:MASS","plsdof") # to avoid conflict with dplyr::select
+library(tidyverse)
+library(pls)
+
+## 1. load sample data
+drinks <- read.csv("http://wiki.q-researchsoftware.com/images/d/db/Stacked_colas.csv")
+#str(drinks)
+
+## 2. clean data (remove brand and URLID)
+drinks <- drinks %>%
+ select(-URLID, -brand)
+
+## 3. use cross validatation to find the optimal number of dimensions
+pls.model = plsr(pref ~ ., data = drinks, validation = "CV")
+
+## 3.1. find the model with lowest cv error
+cv <- RMSEP(pls.model)
+best_dims <- which.min(cv$val[estimate = "adjCV", , ]) - 1
+
+## 4. rebuild the model
+pls.model <- plsr(pref ~ ., data = drinks, ncomp = best_dims)
+
+## 5. Sort, and visualize top coefficients
+coefs <- coef(pls.model)
+
+barplot(tail(sort(coefs[,1,1])))
+```
\ No newline at end of file
diff --git a/bayes.ipynb b/bayes.ipynb
new file mode 100644
index 0000000..786f655
--- /dev/null
+++ b/bayes.ipynb
@@ -0,0 +1,59 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "outputs": [],
+ "source": "\nimport numpy as np\n\nnp.arange(16)\n??np\n\n",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n",
+ "is_executing": false
+ }
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "outputs": [],
+ "source": "paste(\u0027a\u0027,\u0027b\u0027)\n\n??",
+ "metadata": {
+ "pycharm": {
+ "metadata": false,
+ "name": "#%%\n"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.6"
+ },
+ "kernelspec": {
+ "name": "python3",
+ "language": "python",
+ "display_name": "Python 3"
+ },
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": "",
+ "metadata": {
+ "pycharm": {
+ "metadata": false
+ }
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/ccn2019.rev2.Rmd b/ccn2019.rev2.Rmd
index 318502a..3e8cfd9 100644
--- a/ccn2019.rev2.Rmd
+++ b/ccn2019.rev2.Rmd
@@ -132,7 +132,8 @@
# plot(mod1)
-plsResult <- plsR(correct ~ ., data=NB2[,c("rt","x_sl","x_ul","x_t","x_l")],3)
+plsResult <- plsR(rt ~ ., data=NB2[,c("rt","x_sl","x_ul","x_t","x_l")],3)
+plsResult <- plsR(correct ~ ., data=NB2[,c("correct","x_sl","x_ul","x_t","x_l")],3)
plsResult
diff --git a/ccn2019.rev2.nb.html b/ccn2019.rev2.nb.html
deleted file mode 100644
index b44e02a..0000000
--- a/ccn2019.rev2.nb.html
+++ /dev/null
@@ -1,444 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-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
-
-Unclear how to parameterize interesting variations for sequence generation
-How do we model these multiple strategies (which requires identifying which sequence variations matter)
-
-local vs. global properties, which one matters the most?
-Local: lumpiness, short sequence patterns -> could be exploited by “reactive”/automaticity
-Global: No lures, large vocabulary -> pattern repeats implies a target
-
-
-
-
-
-
-
-
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==
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pls_playground.Rmd b/pls_playground.Rmd
new file mode 100644
index 0000000..22d877f
--- /dev/null
+++ b/pls_playground.Rmd
@@ -0,0 +1,36 @@
+---
+title: "PLS Training"
+output: html_notebook
+---
+
+PLS:
+
+
+```{r}
+#detach("package:MASS","plsdof") # to avoid conflict with dplyr::select
+library(tidyverse)
+library(pls)
+
+## 1. load sample data
+drinks <- read.csv("http://wiki.q-researchsoftware.com/images/d/db/Stacked_colas.csv")
+#str(drinks)
+
+## 2. clean data (remove brand and URLID)
+drinks <- drinks %>%
+ select(-URLID, -brand)
+
+## 3. use cross validatation to find the optimal number of dimensions
+pls.model = plsr(pref ~ ., data = drinks, validation = "CV")
+
+## 3.1. find the model with lowest cv error
+cv <- RMSEP(pls.model)
+best_dims <- which.min(cv$val[estimate = "adjCV", , ]) - 1
+
+## 4. rebuild the model
+pls.model <- plsr(pref ~ ., data = drinks, ncomp = best_dims)
+
+## 5. Sort, and visualize top coefficients
+coefs <- coef(pls.model)
+
+barplot(tail(sort(coefs[,1,1])))
+```
\ No newline at end of file
diff --git a/pls_training.Rmd b/pls_training.Rmd
deleted file mode 100644
index 2f9163c..0000000
--- a/pls_training.Rmd
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: "PLS Training"
-output: html_notebook
----
-
-PLS:
-
-```{r}
-#detach("package:MASS","plsdof") # to avoid conflict with dplyr::select
-library(tidyverse)
-library(pls)
-
-## 1. load sample data
-drinks <- read.csv("http://wiki.q-researchsoftware.com/images/d/db/Stacked_colas.csv")
-#str(drinks)
-
-## 2. clean data (remove brand and URLID)
-drinks <- drinks %>%
- select(-URLID, -brand)
-
-## 3. use cross validatation to find the optimal number of dimensions
-pls.model = plsr(pref ~ ., data = drinks, validation = "CV")
-
-## 3.1. find the model with lowest cv error
-cv <- RMSEP(pls.model)
-best_dims <- which.min(cv$val[estimate = "adjCV", , ]) - 1
-
-## 4. rebuild the model
-pls.model <- plsr(pref ~ ., data = drinks, ncomp = best_dims)
-
-## 5. Sort, and visualize top coefficients
-coefs <- coef(pls.model)
-
-barplot(tail(sort(coefs[,1,1])))
-```
\ No newline at end of file