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

- - - - - - -
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

- - - - - - -
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

- - - - - - -
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