-
Notifications
You must be signed in to change notification settings - Fork 1
/
mixed-model-curiosity-writeup.qmd
949 lines (766 loc) · 61.4 KB
/
mixed-model-curiosity-writeup.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
---
title: "Effects of Initial Curiosity and Prediction Error on Explicit and Incidental Memory Formation"
authors: "Cherrie Chang, Amaavi Miriyagalla, Jasmine Shao"
format: html
editor: visual
---
```{r}
#| label: Load R libraries
#| echo: false
#| message: false
library(osfr)
library(readr)
library(jsonlite)
library(dplyr)
library(tidyr)
library(ggplot2)
library(ez)
library(stringr)
library(lmerTest)
library(sjPlot)
```
```{r}
#| label: Retrieve the data from OSF
#| echo: false
#| include: false
osf_retrieve_node("ubnxa") %>%
osf_ls_files() %>%
osf_download(path = "data/", conflicts = "skip")
```
```{r}
#| label: Convert Files from JSON to CSV
#| echo: false
#| include: false
files <- list.files("data", full.names = TRUE)
data <- lapply(files, fromJSON) %>%
bind_rows()
```
## Introduction
The present study explores the connection between curiosity and memory, where recent evidence suggests that higher levels of curiosity leads to improved memory of that information (Kang et al., 2009; Gruber et al., 2014; van Leishout et al., 2020). This supports the intuition that the more curious a person is about something, the better they are at learning and remembering it. When applied to an educational setting, this means instructors may find that embedding highly specific, hard-to-remember information in a context where students are curious may lead to better overall retention of the material.
In behavioral experiments testing the correlation between curiosity and memory, participants are typically shown a series of trivia questions and their answers, then tasked to recall the answers to the questions after a period of time. Evidence from an example of these studies by Kang et al. (2009) found that participants were better able to recall answers to questions that they were highly curious about, even after a 11-16 day period. These behavioral results are also supported by neuroscientific evidence: Gruber et al., (2014) conducted an fMRI study showing that when there is increased brain activity in areas related to curiosity, there is also increased anticipatory activity in areas relating to memory. While the present study does not build on this neuroimaging work, it provides powerful supporting evidence for theories that seek to connect curiosity and memory at the neurological level. Additionally, Gruber et al., (2014) found that improved memory due to high levels of curiosity not only applies to material being activity learned, such as answers to trivia questions shown, but also to any material incidentally encountered during the learning process. In their case, these were faces that appeared between the trivia questions and answers, and participants were asked to recognize them upon completion of the experiment.
After considering these different studies about curiosity and memory, there are some interesting comparisons that we can make: Gruber et al., (2014)'s study only tested for immediate memory retention, as opposed to the longer time periods utilized by Kang et al., (2009), and Gruber et al., (2014)'s incidental stimuli were restricted to faces. Additionally, the two groups interpreted their neuroscientific data differently: Gruber et al., (2014)'s team attributed midbrain and nucleus accumbens activation to the anticipation of an answer and curiosity, while Kang et al., (2009)'s team observed that the same activations were heightened for incorrect answers, thus tying them to prediction errors (the difference between a participant's prediction and the correct answer). The prediction error account is further developed in a report by Marvin et al., (2016), which hypothesized that information prediction error is the essential factor by which curiosity drives memory formation. This would indicate that people remember information better if it was initially associated with a larger prediction error (they got it very wrong to start and then were like 'woah!'). This 'woah' might derive from the connection between information prediction error and surprise: when people are confronted with unexpected events, they experience surprise (Sumira & Katahira, 2020). Synthesizing across these studies, the mechanism by which curiosity affects memory formation remains unclear: is it initial curiosity about the answer itself, or the large prediction error generated by an incorrect guess that ultimately drives improved memory formation?
The present study seeks to clarify and challenge these existing findings by 1) testing whether the positive correlation between curiosity and memory can be replicated, and 2) isolating the most relevant factor by which curiosity motivates memory formation for both explicit and incidentally presented material. We hypothesize that the most relevant factor could either be the subject's initial curiosity about the topic, or a more downstream prediction error (and associated surprise). We also introduce the subject's prior knowledge as a possible third, underlying factor explaining the connections of both initial curiosity and prediction error to memory. High prior knowledge about a topic might actually decrease curiosity and prediction error, and thus, be implicated in an interesting way with their memory of it later on. Finally, we chose to employ a different incidental memory stimulus than Gruber et al., (2014), as we were skeptical about how inconspicuous a human face could be when presented in between a trivia question and its answer. Thus, our design chose to use colorful patterns with no apparent meaning or subject instead, acting as the back of a playing card flipped to reveal a trivia answer.
![behavior-study-diagram\@3x](images/[email protected]){#fig-scheme} insert caption (later, prolly also have to change the text and stuff)
## Hypothesis
**Hypothesis 1**: Higher initial curiosity leads to better memory of the answer to a trivia question (explicit memory) and a colorful pattern on the back of the trivia card (incidental memory).
**Hypothesis 2**: A larger prediction error after guessing the answer to a trivia question leads to better memory of the answer to a trivia question (explicit memory) and a colorful pattern on the back of the trivia card (incidental memory).
**Hypothesis 3** (exploratory): Prior knowledge may underlie these factors, such that high prior knowledge correlates to lower curiosity and prediction error, and thus leads to poorer memory of the answer to a trivia question (explicit memory) and a colorful pattern on the back of the trivia card (incidental memory).
## Methods
### Pre-Registration & Open Materials
All stimuli, experiment scripts, data, and analysis scripts are available on the Open Science Framework at <https://osf.io/v35df/>. The pre-registration for this study is also available at <https://osf.io/w3qh4>. This study was approved by the Vassar College Institutional Review Board, and all participants provided informed consent prior to their participation.
### Participants
Participants were 40 individuals from the United States (X female, X male) between X and X years of age (M = X, SD = X) recruited via Prolific, a platform that enables researchers to carry out fast, reliable, and high-quality online data collection with a diverse sample. To rationalize this sample size of 40, we determined that our study would take approximately 20 minutes to complete and we had \$160 in our budget. Thus, having a sample size of 40 allowed each participant to receive an acceptable pay of \$4 upon completion of the experiment, regardless of their performance on the tasks.
### Stimuli
In order to conduct this experiment, we needed to generate 30 trivia questions with numerical answers to explore explicit memory, and 40 colorful abstract patterns to study incidental memory. In order to generate the trivia questions, we used ChatGPT to output ten broad categories of trivia, and we got: science/technology, art/entertainment, literature, nature/animals, culture, history, religion, geography, food, and sports. We then instructed ChatGPT to generate trivia questions with strictly numerical answers based on each of these categories, and selected three questions for each. We made an effort to maximize the diversity in difficulty, length of answer and cultural origin for our final set of questions. These 30 questions were randomly ordered and presented to participants during the experiment.
In order to generate the colorful patterns, we \_\_\_\_\_\_\_\_\_\_\_\_\_\_. We then used DALL-E from Open AI to blow up all the images to the same size by repeating the patterns within them. 30 out of the 40 would appear on the cards presenting each trivia answer as target patterns, and the remaining 10 were used as distractor patterns in the implicit memory test rounds, where participants have to correctly choose the pattern they had seen earlier during the trivia trials.
### Procedure
Participants were instructed to complete this experiment on a laptop or computer, and upon clicking the link in Prolific, they were given some preliminary instructions: here is a trivia question, 1) predict the answer, 2) rate how much you already know about the topic, 3) rate how much you want to know the answer; and then a card will flip over to reveal the correct answer. Participants then had the opportunity to complete one practice round to confirm that they understood the instructions. In the practice round, and in the ensuing 30 experimental rounds, participants were presented with a trivia question such as, "How many double stitches does a baseball have?" and asked to type in a (numerical) prediction of the answer. After responding, on the next screen they were asked, "How much do you know about this topic?" and asked to rate their knowledge on a Likert scale of 0 (Nothing at all) to 5 (LIKE, A LOT). On the following screen, they were asked, "How much do you want to know the answer to this question?" and asked to rate their curiosity on a Likert scale of 0 (I don't care) to 5 (TELL ME!). If the participant failed to type in an answer (for the prediction question) or click a rating (for the knowledge or curiosity question), they were unable to continue to the next round. This ensured that participants could not simply click continue through the entire experiment without making any predictions or ratings.
After these three questions were complete, a card with a random, colorful abstract pattern appeared. After 5000 ms, it automatically turned over to reveal the correct answer. This ensured that every participant viewed each pattern for the same amount of time (eliminating a viewing-time confound for the later memory test). The trial then ended and the participant could press any key to continue to the next trial:
![Figure 2. Illustration of initial experimental trial structure. For thirty trials, participants predict the answer to a trivia question, rate how much they know about the topic on a scale of 0-5, and rate how much they want to know the answer to this question on a scale of 0-5. Then, a card appears with a colorful pattern and flips over (after 5000 ms) to reveal the correct answer. Finally, the participant clicks any key to continue to the next trial. A bright blue background was utilized throughout the experiment instead of a more neutral color to make sure the colorful fractal images wouldn't stand out so much that they would be too memorable for our participants!](images/Screen%20Shot%202023-05-05%20at%204.36.47%20PM.png){#fig-1 fig-align="center"}
After the 30 trials were complete, participants were met with another (surprise!) instruction screen. For the next 10 trials, participants were presented with two colorful, fractal patterns and asked to select which of the two they had seen previously. During this incidental memory test, they clicked 'f' to select that they had seen the left image or 'j' to select that they had seen the right image. Following each selection, they were presented with immediate feedback: Correct! or Wrong answer, as seen in @fig-2.
![Figure 3. Illustration of surprise incidental memory test. For ten trials, participants press 'f' to indicate that they saw the left image previously and press 'j' to indicate that they saw the right image previously. Immediately following the selection, they receive feedback about the accuracy of their selection: Correct! or Wrong answer.](images/Screen%20Shot%202023-05-05%20at%204.40.08%20PM.png){fig-align="center"}
Following the 10 incidental memory trials, participants were met with another (surprise!) instruction screen (last one, I promise). For the next 10 trials, participants were presented with a trivia question that they were previously asked, but that they had guessed incorrectly on. They typed in their prediction as in the first round, and they immediately received the correct answer and feedback about how close their guess was. For example, if the participant guessed 43 for the question, "How many single hand gestures, or mudras, are used in Indian classical dance?," they would be presented with a screen indicating that the correct answer is 28, the difference between their answer and the correct one (their prediction error) is 15, and an unsolicited comment about their performance: "Not even close... do better next time!", as seen in @fig-3. After these 10 rounds were complete, participants were thanked for their engagement and sent back to the Prolific page to receive their \$4 pay.
![](images/Screen%20Shot%202023-05-05%20at%204.41.12%20PM.png){fig-align="center"}
## Results
```{r}
#| label: delete practice trials
#| echo: false
#| include: false
data <- data %>%
filter(trial_index %in% c(6:167))
```
```{r}
#| label: filter out unnecessary columns
#| echo: false
#| include: false
data.filtered <- subset(data, select = c(trial_index, session_id, task, trial_type, stimulus, response, correct_response, difference, correct))
for(i in 1:nrow(data.filtered)){
if(i %% 162 == 0){
data.filtered$session_id[i] = i / 162
}else{
data.filtered$session_id[i] = i %/% 162 + 1
}
}
data.filtered$session_id <- as.numeric(data.filtered$session_id)
```
```{r}
#| label: update task column to differentiate between prediction, likert, fractals and trivia
#| echo: false
#| include: false
for(i in 1:nrow(data.filtered)) {
if (!is.na(data.filtered$difference[i])) {
data.filtered$task[i] <- "trivia"
}
else if (data.filtered$trial_type[i] == "survey-text") {
data.filtered$task[i] <- "prediction"
}
else if (data.filtered$trial_type[i] == "survey") {
data.filtered$task[i] <- "likert"
}
else if (data.filtered$response[i] == 'f' || data.filtered$response[i] == 'j') {
data.filtered$task[i] <- "fractal_response"
}
else {
data.filtered$task[i] <- "NULL"
}
}
```
```{r}
#| label: add correct answer back to each question asked in first 30 trials
#| echo: false
#| include: false
data.filtered.flips <- data.filtered %>%
filter(grepl("flip", data.filtered$stimulus)) %>%
mutate(stimulus_key = NA)
for (i in 1:nrow(data.filtered.flips)) {
if (grepl("iPhone", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "2007"
data.filtered.flips$stimulus_key[i] = "iPhone"
}
else if (grepl("Indian classical dance", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "28"
data.filtered.flips$stimulus_key[i] = "Indian classical dance"
}
else if (grepl("Stephen King", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "65"
data.filtered.flips$stimulus_key[i] = "Stephen King"
}
else if (grepl("diameter", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "7917.5"
data.filtered.flips$stimulus_key[i] = "diameter"
}
else if (grepl("Vietnamese", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "6"
data.filtered.flips$stimulus_key[i] = "Vietnamese"
}
else if (grepl("Berlin Wall", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "1989"
data.filtered.flips$stimulus_key[i] = "Berlin Wall"
}
else if (grepl("Muslims", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "5"
data.filtered.flips$stimulus_key[i] = "Muslims"
}
else if (grepl("How many countries are in Africa?", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "54"
data.filtered.flips$stimulus_key[i] = "How many countries are in Africa?"
}
else if (grepl("Baker's Dozen", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "13"
data.filtered.flips$stimulus_key[i] = "Baker's Dozen"
}
else if (grepl("stitches", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "108"
data.filtered.flips$stimulus_key[i] = "stitches"
}
else if (grepl("constellations", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "88"
data.filtered.flips$stimulus_key[i] = "constellations"
}
else if (grepl("Frida", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "1907"
data.filtered.flips$stimulus_key[i] = "Frida"
}
else if (grepl("Great Wall of China", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "13171"
data.filtered.flips$stimulus_key[i] = "Great Wall of China"
}
else if (grepl("human baby", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "300"
data.filtered.flips$stimulus_key[i] = "human baby"
}
else if (grepl("How many countries in Africa have French as the official language?", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "21"
data.filtered.flips$stimulus_key[i] = "How many countries in Africa have French as the official language?"
}
else if (grepl("titanic", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "1912"
data.filtered.flips$stimulus_key[i] = "titanic"
}
else if (grepl("Catholic Bible", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "73"
data.filtered.flips$stimulus_key[i] = "Catholic Bible"
}
else if (grepl("Japan", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "4"
data.filtered.flips$stimulus_key[i] = "Japan"
}
else if (grepl("vegan", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "79"
data.filtered.flips$stimulus_key[i] = "vegan"
}
else if (grepl("Olympic", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "1896"
data.filtered.flips$stimulus_key[i] = "Olympic"
}
else if (grepl("Neptune", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "14"
data.filtered.flips$stimulus_key[i] = "Neptune"
}
else if (grepl("sonnet", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "14"
data.filtered.flips$stimulus_key[i] = "sonnet"
}
else if (grepl("Nobel", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "1901"
data.filtered.flips$stimulus_key[i] = "Nobel"
}
else if (grepl("kangaroos", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "4"
data.filtered.flips$stimulus_key[i] = "kangaroos"
}
else if (grepl("Burj Khalifa", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "163"
data.filtered.flips$stimulus_key[i] = "Burj Khalifa"
}
else if (grepl("King Tut", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "19"
data.filtered.flips$stimulus_key[i] = "King Tut"
}
else if (grepl("bar mitzvah", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "13"
data.filtered.flips$stimulus_key[i] = "bar mitzvah"
}
else if (grepl("Arctic", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "8"
data.filtered.flips$stimulus_key[i] = "Arctic"
}
else if (grepl("calendar", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "12"
data.filtered.flips$stimulus_key[i] = "calendar"
}
else if (grepl("soccer", data.filtered.flips$stimulus[i])) {
data.filtered.flips$correct_answer[i] = "11"
data.filtered.flips$stimulus_key[i] = "soccer"
}
}
data.filtered.flips <- data.filtered.flips %>%
select(c('stimulus', 'stimulus_key', 'correct_answer'))
```
```{r}
#| label: join the correct answer column back into main dataframe
#| echo: false
#| include: false
data.filtered.correct <- left_join(data.filtered, data.filtered.flips, by="stimulus")
data.filtered.correct <- data.filtered.correct %>%
mutate(question_correct_answer = as.numeric(correct_answer)) %>%
mutate(trivia_difference = as.numeric(difference)) %>%
mutate(fractal_correct = correct)
```
```{r}
#| label: selecting in data.filtered.correct
#| echo: false
#| message: false
data.filtered.correct <- data.filtered.correct %>%
select(c(trial_index, session_id, task, trial_type, stimulus_key, stimulus, response, question_correct_answer, correct_response, trivia_difference, fractal_correct)) %>%
group_by(session_id) %>%
distinct(trial_index, .keep_all = TRUE)
```
```{r}
#| label: extract fractal image number from stimulus
#| echo: false
#| include: false
#| message: false
img1Finder <- function(stimulus) {
return(grepl("img/1.png", stimulus))
}
img2Finder <- function(stimulus) {
return(grepl("img/2.png", stimulus))
}
img3Finder <- function(stimulus) {
return(grepl("img/3.png", stimulus))
}
img4Finder <- function(stimulus) {
return(grepl("img/4.png", stimulus))
}
img5Finder <- function(stimulus) {
return(grepl("img/5.png", stimulus))
}
img6Finder <- function(stimulus) {
return(grepl("img/6.png", stimulus))
}
img7Finder <- function(stimulus) {
return(grepl("img/7.png", stimulus))
}
img8Finder <- function(stimulus) {
return(grepl("img/8.png", stimulus))
}
img9Finder <- function(stimulus) {
return(grepl("img/9.png", stimulus))
}
img10Finder <- function(stimulus) {
return(grepl("img/10.png", stimulus))
}
img11Finder <- function(stimulus) {
return(grepl("img/11.png", stimulus))
}
img12Finder <- function(stimulus) {
return(grepl("img/12.png", stimulus))
}
img13Finder <- function(stimulus) {
return(grepl("img/13.png", stimulus))
}
img14Finder <- function(stimulus) {
return(grepl("img/14.png", stimulus))
}
img15Finder <- function(stimulus) {
return(grepl("img/15.png", stimulus))
}
img16Finder <- function(stimulus) {
return(grepl("img/16.png", stimulus))
}
img17Finder <- function(stimulus) {
return(grepl("img/17.png", stimulus))
}
img18Finder <- function(stimulus) {
return(grepl("img/18.png", stimulus))
}
img19Finder <- function(stimulus) {
return(grepl("img/19.png", stimulus))
}
img20Finder <- function(stimulus) {
return(grepl("img/20.png", stimulus))
}
img21Finder <- function(stimulus) {
return(grepl("img/21.png", stimulus))
}
img22Finder <- function(stimulus) {
return(grepl("img/22.png", stimulus))
}
img23Finder <- function(stimulus) {
return(grepl("img/23.png", stimulus))
}
img24Finder <- function(stimulus) {
return(grepl("img/24.png", stimulus))
}
img25Finder <- function(stimulus) {
return(grepl("img/25.png", stimulus))
}
img26Finder <- function(stimulus) {
return(grepl("img/26.png", stimulus))
}
img27Finder <- function(stimulus) {
return(grepl("img/27.png", stimulus))
}
img28Finder <- function(stimulus) {
return(grepl("img/28.png", stimulus))
}
img29Finder <- function(stimulus) {
return(grepl("img/29.png", stimulus))
}
img30Finder <- function(stimulus) {
return(grepl("img/30.png", stimulus))
}
data.filtered.fractals.trials <- data.filtered.correct %>%
filter(task == "fractal_response" | grepl("flip_card", stimulus)) %>%
filter(!((task == "fractal_response") & is.na(fractal_correct))) %>%
mutate(fractal_img = ifelse(img1Finder(stimulus), 1,
ifelse(img2Finder(stimulus), 2,
ifelse(img3Finder(stimulus), 3,
ifelse(img4Finder(stimulus), 4,
ifelse(img5Finder(stimulus), 5,
ifelse(img6Finder(stimulus), 6,
ifelse(img7Finder(stimulus), 7,
ifelse(img8Finder(stimulus), 8,
ifelse(img9Finder(stimulus), 9,
ifelse(img10Finder(stimulus), 10,
ifelse(img11Finder(stimulus), 11,
ifelse(img12Finder(stimulus), 12,
ifelse(img13Finder(stimulus), 13,
ifelse(img14Finder(stimulus), 14,
ifelse(img15Finder(stimulus), 15,
ifelse(img16Finder(stimulus), 16,
ifelse(img17Finder(stimulus), 17,
ifelse(img18Finder(stimulus), 18,
ifelse(img19Finder(stimulus), 19,
ifelse(img20Finder(stimulus), 20,
ifelse(img21Finder(stimulus), 21,
ifelse(img22Finder(stimulus), 22,
ifelse(img23Finder(stimulus), 23,
ifelse(img24Finder(stimulus), 24,
ifelse(img25Finder(stimulus), 25,
ifelse(img26Finder(stimulus), 26,
ifelse(img27Finder(stimulus), 27,
ifelse(img28Finder(stimulus), 28,
ifelse(img29Finder(stimulus), 29,
ifelse(img30Finder(stimulus), 30, NA)))))))))))))))))))))))))))))))
data.filtered.fractals.trials <- data.filtered.fractals.trials %>%
select(c("trial_index", "session_id", "task","stimulus", "fractal_img"))
data.count <- filter(data.filtered.fractals.trials, is.na(fractal_img))
data.filtered.correct <- left_join(data.filtered.correct, data.filtered.fractals.trials, by=c("trial_index", "session_id", "stimulus", "task"))
```
```{r}
#| label: update stimulus key, correct answer for all relevant rows
#| echo: false
#| include: false
#| message: false
for (i in 1:nrow(data.filtered.correct)) {
currentKey <- data.filtered.correct$stimulus_key[i]
if (!is.na(currentKey)) {
data.filtered.correct$stimulus_key[i-1] = currentKey
data.filtered.correct$stimulus_key[i-2] = currentKey
}
}
for (i in 1:nrow(data.filtered.correct)) {
currentKey <- data.filtered.correct$question_correct_answer[i]
if (!is.na(currentKey)) {
data.filtered.correct$question_correct_answer[i-1] = currentKey
data.filtered.correct$question_correct_answer[i-2] = currentKey
}
}
```
```{r}
#| label: extract numeric answer of subject response for prediction, curiosity and prior knowledge
#| echo: false
#| include: false
#| message: false
data.filtered.correct <- data.filtered.correct %>%
mutate(prediction_num = NA) %>%
mutate(curiosity_num = NA) %>%
mutate(prior_knowledge_num = NA)
for (i in 1:nrow(data.filtered.correct)) {
if (!is.na(data.filtered.correct$response[i])) {
if (data.filtered.correct$task[i] == "prediction") {
data.filtered.correct$prediction_num[i] = as.integer(data.filtered.correct[i, ]$response[[1]]$prediction[1])
}
else if (data.filtered.correct$task[i] == "likert") {
data.filtered.correct$curiosity_num[i] = as.integer(data.filtered.correct[i, ]$response[[1]]$curiosity[1])
data.filtered.correct$prior_knowledge_num[i] = as.integer(data.filtered.correct[i, ]$response[[1]]$`prior knowledge`)
}
}
}
```
```{r}
#| label: add stimulus key back for trivia questions
#| echo: false
#| include: false
#| message: false
data.filtered.trivia <- data.filtered.correct %>%
filter(task == "trivia")
for (i in 1:nrow(data.filtered.trivia)) {
if (data.filtered.trivia$correct_response[i] == 2007) {
data.filtered.trivia$stimulus_key[i] = "iPhone"
}
else if (data.filtered.trivia$correct_response[i] == 28) {
data.filtered.trivia$stimulus_key[i] = "Indian classical dance"
}
else if (data.filtered.trivia$correct_response[i] == 65) {
data.filtered.trivia$stimulus_key[i] = "Stephen King"
}
else if (data.filtered.trivia$correct_response[i] == 7917.5) {
data.filtered.trivia$stimulus_key[i] = "diameter"
}
else if (data.filtered.trivia$correct_response[i] == 6) {
data.filtered.trivia$stimulus_key[i] = "Vietnamese"
}
else if (data.filtered.trivia$correct_response[i] == 1989) {
data.filtered.trivia$stimulus_key[i] = "Berlin Wall"
}
else if (data.filtered.trivia$correct_response[i] == 5) {
data.filtered.trivia$stimulus_key[i] = "Muslims"
}
else if (data.filtered.trivia$correct_response[i] == 54) {
data.filtered.trivia$stimulus_key[i] = "How many countries are in Africa?"
}
else if (data.filtered.trivia$correct_response[i] == 108) {
data.filtered.trivia$stimulus_key[i] = "stitches"
}
else if (data.filtered.trivia$correct_response[i] == 88) {
data.filtered.trivia$stimulus_key[i] = "constellations"
}
else if (data.filtered.trivia$correct_response[i] == 1907) {
data.filtered.trivia$stimulus_key[i] = "Frida"
}
else if (data.filtered.trivia$correct_response[i] == 13171) {
data.filtered.trivia$stimulus_key[i] = "Great Wall of China"
}
else if (data.filtered.trivia$correct_response[i] == 300) {
data.filtered.trivia$stimulus_key[i] = "human baby"
}
else if (data.filtered.trivia$correct_response[i] == 21) {
data.filtered.trivia$stimulus_key[i] = "How many countries in Africa have French as the official language?"
}
else if (data.filtered.trivia$correct_response[i] == 1912) {
data.filtered.trivia$stimulus_key[i] = "titanic"
}
else if (data.filtered.trivia$correct_response[i] == 73) {
data.filtered.trivia$stimulus_key[i] = "Catholic Bible"
}
else if (data.filtered.trivia$correct_response[i] == 79) {
data.filtered.trivia$stimulus_key[i] = "vegan"
}
else if (data.filtered.trivia$correct_response[i] == 1896) {
data.filtered.trivia$stimulus_key[i] = "Olympic"
}
else if (data.filtered.trivia$correct_response[i] == 1901) {
data.filtered.trivia$stimulus_key[i] = "Nobel"
}
else if (data.filtered.trivia$correct_response[i] == 163) {
data.filtered.trivia$stimulus_key[i] = "Burj Khalifa"
}
else if (data.filtered.trivia$correct_response[i] == 19) {
data.filtered.trivia$stimulus_key[i] = "King Tut"
}
else if (data.filtered.trivia$correct_response[i] == 8) {
data.filtered.trivia$stimulus_key[i] = "Arctic"
}
else if (data.filtered.trivia$correct_response[i] == 12) {
data.filtered.trivia$stimulus_key[i] = "calendar"
}
else if (data.filtered.trivia$correct_response[i] == 11) {
data.filtered.trivia$stimulus_key[i] = "soccer"
}
else {
}
}
```
```{r}
#| Label: merge back to data.filtered.correct
#| echo: false
#| message: false
#| warning: false
data.filtered.trivia <- data.filtered.trivia %>%
select(c('trial_index', 'session_id', 'stimulus_key'))
data.filtered.correct <- left_join(data.filtered.correct, data.filtered.trivia, by=c('trial_index', 'session_id'))
data.filtered.correct$stimulus_key <- coalesce(data.filtered.correct$stimulus_key.x, data.filtered.correct$stimulus_key.y)
data.filtered.correct$correct_response <- as.numeric(data.filtered.correct$correct_response)
data.filtered.correct$correct_answer <- coalesce(data.filtered.correct$question_correct_answer, data.filtered.correct$correct_response)
data.filtered.correct <- data.filtered.correct %>%
select(c('trial_index', 'session_id', 'task', 'trial_type', 'stimulus_key', 'correct_answer', 'trivia_difference', 'fractal_correct', 'prediction_num', 'curiosity_num', 'prior_knowledge_num', 'fractal_img'))
```
```{r}
#| label: calculate IPE values in separate dataframe. There is a single row where the prediction entered by the subject is so large that the difference between their answer and the correct answer is computed to NA in R. We thus hard-coded the actual difference value in the if statement below.
#| echo: false
#| include: false
#| message: false
data.filtered.IPE <- data.filtered.correct %>%
filter(task == "prediction") %>%
mutate(IPE = NA)
for (i in 1:nrow(data.filtered.IPE)) {
data.filtered.IPE$IPE[i] = abs(data.filtered.IPE$correct_answer[i] - data.filtered.IPE$prediction_num[i])
if (is.na(data.filtered.IPE$IPE[i])) {
data.filtered.IPE$IPE[i] = 437289472301
}
}
```
```{r}
#| label: join the IPE column back into main dataframe
#| echo: false
#| include: false
#| message: false
data.filtered.IPE.simplified <- data.filtered.IPE %>%
filter(!is.na(IPE)) %>%
select(c('trial_index', 'session_id', "IPE"))
data.filtered.correct <- left_join(data.filtered.correct, data.filtered.IPE.simplified, by = c('session_id', 'trial_index'))
data.filtered.correct <- data.filtered.correct %>%
select(c('trial_index', 'session_id', "task", "trial_type", "stimulus_key", "curiosity_num", "prior_knowledge_num", "prediction_num", "correct_answer", "IPE", "trivia_difference", "fractal_correct","fractal_img"))
```
```{r}
#| label: Exclude Subjects Who Got >20 Questions Correct in the Initial Round. Someone got all of them wrong therefore only 79 rows!
#| message: false
#| echo: false
data.smart.subs <- data.filtered.IPE.simplified %>%
group_by(session_id) %>%
count(IPE == 0) %>%
filter(`IPE == 0` == "TRUE")
```
```{r}
#| label: Exclude Subjects Who Do Not Have Variable Responses to Write-in/Scale Questions for prediction
#| message: false
#| echo: false
data.consistent.subs <- data.filtered.correct %>%
filter(task == "prediction") %>%
group_by(session_id) %>%
summarize(unique_predictions = n_distinct(prediction_num))
```
```{r}
#| label: Exclude Subjects Who Do Not Have Variable Responses to Write-in/Scale Questions for prior knowledge
#| message: false
#| echo: false
data.consistent.prior.knowledge.subs <- data.filtered.correct %>%
filter(task == "likert") %>%
group_by(session_id) %>%
summarize(unique_prior_knowledge = n_distinct(prior_knowledge_num))
```
Out of the 40 participants from Prolific, one participant got all 30 questions wrong in the first part of the experiment and was excluded from data analysis. No participant correctly predicted over 20 questions in the first part of the experiment and no participant showed invariable responses to the predicting and likert-scaling (curiosity and prior knowledge) part of the experiment. Therefore, the rest of the 39 participants were included in the following data analysis.
Explicit memory formation was evaluated by how well each participant remembered the correct answer to the questions they had already encountered before in the last 10 trials. Namely, the differences between the answers entered by participants and the correct answers to the questions were calculated, where the bigger the difference the farther they were from the correct answer and 0 meant the participants entered a correct answer. The incidental memory was evaluated by how well the participants recognized the fractal patterns they had seen with the presence of another pattern they had not seen before in the first 30 trials of the experiment. If the participant chose the pattern they had seen before, their response was given a TRUE value, and FALSE otherwise. The boolean value was then encoded into 1 and 0 respectively.
Prior to performing data analysis, we recognized that we needed to perform some standardizations for our independent and dependent variables in order to ensure that our comparisons were valid. Specifically, we standardized the prediction error, curiosity, prior knowledge, and explicit memory responses using z-scores and the implicit memory responses by coding a correct pattern recognition as 1 and an incorrect pattern recognition as 0. The z-scores and subsequent explicit and implicit memory regressions follow.
### Z-Scores
#### Prediction Error
To investigate the effect of prediction error on both explicit memory and incidental memory, the prediction error (information prediction error) of each participant on each question in the first 30 trials was calculated by subtracting the prediction they entered when a question was shown from the correct answer to that question. Since only the size of the error is essential, absolute values of the subtractions were taken. There was one participant whose prediction on a particular question was unreasonably large, which made the subtraction of it from the correct answer uncomputable in R. Therefore, the prediction error was manually calculated to be 437289472301 and was filled into the data. Due to the inconsistency in the number of figures in the answers to those trivia questions, standardization on the prediction errors was performed by calculating the z-scores of each participant's prediction error on each question, compared to other participants. For each trivia question, each participant's prediction error on the question was calculated by the difference between their prediction error and the mean prediction error of all participants on that question divided by the standard deviation of prediction error across participants. The distributions of all participants' z-scores for prediction errors for each question were plotted in Figure 1., with the x-axis being 39 distinct participants and the y-axis being their information prediction error z-scores.
```{r}
z.scores.IPE <- data.filtered.correct %>%
filter(task == "prediction") %>%
select(c(trial_index, session_id, stimulus_key, IPE)) %>%
group_by(stimulus_key) %>%
mutate(IPE_mean = mean(IPE)) %>%
mutate(IPE_sd = sd(IPE)) %>%
mutate(z_score_IPE = (IPE - IPE_mean) / IPE_sd)
```
```{r}
#| label: Prediction Error Z-Scores (each participant AND each question)
#| message: false
#| echo: false
#| warning: false
#| include: true
#| fig-cap: The distributions of all participants' z-scores of information prediction error (IPE) for each question. For each plot, the x-axis shows the session_id of each participant and the y-axis shows the z-scores of information prediction error (IPE) of each participant on that question. The z-scores range from -2 to 6. The more closely the dots are to each other, the less variations in prediction error there was for all participants on that question.
ggplot(z.scores.IPE, aes(x = session_id, y = z_score_IPE)) +
ggtitle("Distributions of prediction errors across participants for each question") +
theme(plot.title = element_text(hjust = 0.5)) +
geom_point(size = 0.5) +
facet_wrap(~ stimulus_key)
```
Similarly, the differences between the answers entered by participants and the correct answers in the last 10 trials of the experiment were standardized, and the distributions of all participants' z-scores for their errors in each of the 10 questions were plotted in Figure 2., with the x-axis being 39 distinct participants and the y-axis being their trivia z-scores. However, since the 10 trivia questions were randomly generated for each participant, only 24 questions were tested across all participants.
```{r}
#| label: 10 trivia questions Z-Scores (each participant AND each question)
#| message: false
#| echo: false
#| warning: false
#| fig.cap: The distributions of all participants' z-scores of thier errors in remembering the correct answer for each question. For each plot, the x-axis shows the session_id of each participant and the y-axis shows the z-scores of each participant on that question. The z-scores range from -1 to 3. The more closely the dots are to each other, the less variations in prediction error there was for all participants on that question. Since questions were randomly selected for each participant, not all 30 questions were tested.If nothing is being plotted, it indicates that there was no variations between all participants' errors in remembering the correct answer for that question, meaning that all participants got it correct.
z.scores.trivia <- data.filtered.correct %>%
filter(task == "trivia" & !is.na(stimulus_key)) %>%
select(c(trial_index, session_id, stimulus_key, trivia_difference)) %>%
group_by(stimulus_key) %>%
mutate(trivia_difference_mean = mean(trivia_difference)) %>%
mutate(trivia_difference_sd = sd(trivia_difference)) %>%
mutate(z_score_trivia = (trivia_difference - trivia_difference_mean) / trivia_difference_sd)
ggplot(z.scores.trivia, aes(x = session_id, y = z_score_trivia)) +
ggtitle("Distribution of errors in trivia tests across participants for each question") +
theme(plot.title = element_text(hjust = 0.5)) +
geom_point(size = 0.5) +
facet_wrap(~ stimulus_key) +
theme(plot.caption = element_text(hjust = 0.5))
```
#### Curiosity
To investigate the effect of the level of curiosity on both explicit and incidental memory, we retrieved each participant's curiosity rating for each question when they first encountered it. We then converted these ratings into z-scores based on their curiosity of each question compared to their mean curiosity rating across all questions. This was necessary because it is not meaningful to compare a participant's curiosity for a question with others' curiosity ratings for the same question. Instead, it is more meaningful to compare the participant's curiosity for the question with their own mean curiosity across other questions, since curiosity is a concept of internal motivation -- others' internal curiosity cannot affect the participant. A participant's curiosity effects on their memory formation are therefore relative to its own baseline values, not to others' curiosity values.
The distributions of each participant's curiosity z-scores are plotted in @fig-curiosity-z-scores., with the forty small plots representing the forty participants, every x-axis representing the 30 trivia questions, and every y-axis representing the participants' curiosity z-scores. There were four participants that put the same curiosity rating for every question, generating zero variability in their data and therefore no z-scores:
```{r}
#| label: Curiosity Z-Scores (each participant)
#| message: false
#| echo: false
#| warning: false
z.scores.curiosity <- data.filtered.correct %>%
filter(task == "likert") %>%
select(trial_index, session_id, stimulus_key, curiosity_num) %>%
group_by(session_id) %>%
mutate(curiosity_mean = mean(curiosity_num)) %>%
mutate(curiosity_sd = sd(curiosity_num)) %>%
mutate(z_score_curiosity = (curiosity_num - curiosity_mean) / curiosity_sd)
```
```{r}
#| label: fig-curiosity-z-scores
#| fig-cap: The distributions of all participants' z-scores of thier curiosity scales across all 30 questions.For each plot, the x-axis shows the stimulus key of each question and the y-axis shows the z-scores of the participant's curiosity level on that question. The z-scores range from -5 to 2.5. The more closely the dots are to each other, the less variations in prediction error there was for all questions for the participant. If nothing is plotted, it indicates that the participant was consistently curious across all questions, meaning that they put the same number on the scale as their curiosity level for each trivia.
#| message: false
#| echo: false
#| warning: false
#| include: true
ggplot(z.scores.curiosity, aes(x = stimulus_key, y = z_score_curiosity)) +
ggtitle("Distribution of curiosity level across questions for each participant") +
theme(plot.title = element_text(hjust = 0.5)) +
geom_point(size = 0.5) +
facet_wrap(~ session_id)
```
```{r}
#| label: Prior knowledge Z-Scores (each participant)
#| message: false
#| echo: false
#| warning: false
#| include: false
z.scores.prior.knowledge <- data.filtered.correct %>%
filter(task == "likert") %>%
select(trial_index, session_id, stimulus_key, prior_knowledge_num) %>%
group_by(session_id) %>%
mutate(prior_knowledge_mean = mean(prior_knowledge_num)) %>%
mutate(prior_knowledge_sd = sd(prior_knowledge_num)) %>%
mutate(z_score_prior_knowledge = (prior_knowledge_num - prior_knowledge_mean) / prior_knowledge_sd)
```
```{r}
#| label: fig-prior-knowledge-z-scores
#| fig-cap: The distributions of all questions' z-scores of participants' prior knowledge ratings across all 40 participants. For each plot, the x-axis shows the session ID of each participant and the y-axis shows the z-scores of the participants' curiosity level for that question. The z-scores range from -5 to 2.5. The more closely the dots are to each other, the less variations in prediction error there was for all questions for the participant. If nothing is plotted, it indicates that all participants were indicated that they have the same level of prior knowledge for the question, meaning that all of them put the same number on the scale as their prior knowledge level for the question
#| message: false
#| echo: false
#| warning: false
#| include: true
ggplot(z.scores.prior.knowledge, aes(x = session_id, y = z_score_prior_knowledge)) +
ggtitle("Distribution of prior knowledge level across participants for each question") +
theme(plot.title = element_text(hjust = 0.5)) +
geom_point(size = 0.5) +
facet_wrap(~ stimulus_key)
```
### Regressions
```{r}
#| label: merge curiosity z score, IPE and prior knowledge z score into trivia dataframe
#| message: false
#| echo: false
data.filtered.trivia.simplified <- z.scores.trivia %>%
select(c('session_id', 'stimulus_key', 'z_score_trivia'))
z.scores.curiosity.simplified <- z.scores.curiosity %>%
select(c('session_id', 'stimulus_key', 'z_score_curiosity'))
z.scores.IPE.simplified <- z.scores.IPE %>%
select(c('session_id', 'stimulus_key', 'z_score_IPE'))
z.scores.prior.knowledge.simplified <- z.scores.prior.knowledge %>%
select(c('session_id','stimulus_key','z_score_prior_knowledge'))
data.filtered.mixed.model.merged <- left_join(drop_na(na.omit(data.filtered.trivia.simplified)), z.scores.curiosity.simplified, by = c('session_id', 'stimulus_key'))
data.filtered.mixed.model.merged <- left_join(data.filtered.mixed.model.merged, z.scores.prior.knowledge.simplified, by = c('session_id', 'stimulus_key'))
data.filtered.mixed.model.merged <- left_join(data.filtered.mixed.model.merged, z.scores.IPE.simplified, by = c('session_id', 'stimulus_key'))
data.filtered.mixed.model.merged <- drop_na(na.omit(data.filtered.mixed.model.merged))
```
Two regressions were conducted, one on explicit memory and one on incidental memory. For explicit memory, the regression aims to examine the relationship between the dependent variable "z_score_trivia", which represents how well the participants remembered the correct answers to the questions they've seen before, and three independent variables "z_score_curiosity", "z_score_IPE", and the interaction between the two independent variables. As shown, for a one-unit increase in "z_score_curiosity", there is an expected increase of 0.08027 units in "z_score_trivia". Similarly, for a one-unit increase in "z_score_IPE", there is an expected increase of 0.11516 units in "z_score_trivia". The coefficient for the interaction term between "z_score_curiosity" and "z_score_IPE" suggests that the relationship between "z_score_curiosity" and "z_score_trivia" is moderated by "z_score_IPE". Specifically, for a one-unit increase in both "z_score_curiosity" and "z_score_IPE", there is an expected increase of 0.06131 units in "z_score_trivia" above and beyond the effects of each variable individually. The independent variable "z_score_IPE" is significant at the 0.05 level (p-value = 0.0497), while the other two independent variables, "z_score_curiosity" and the interaction term, are not significant at conventional levels (p-value \> 0.1). In other words, the model as a whole does not provide a good fit to the data, and both prediction errors and curiosity levels are not sufficient to explain much of the variability in the performance of explicit memory.
```{r}
explicit.memory.mixed.model <- lmer(z_score_trivia ~ z_score_curiosity * z_score_IPE * z_score_prior_knowledge + (1 + z_score_curiosity + z_score_IPE + z_score_prior_knowledge | session_id), data = data.filtered.mixed.model.merged)
tab_model(explicit.memory.mixed.model)
```
The distribution of z-scores for the errors in the last 10 trivia questions against the z-scores of IPE was plotted in Figure 4. with a best-fit line.
```{r}
#| label: Explicit Memory Regression Plot
#| message: false
#| echo: false
ggplot(data.filtered.mixed.model.merged, aes(x = z_score_prior_knowledge, y = z_score_trivia)) +
geom_point(size = 0.5) +
geom_smooth() +
ggtitle("The effects of prediction error on explicit memory") +
theme(plot.title = element_text(hjust = 0.5)) +
labs(caption = "Figure 4.")
```
```{r}
#| label: get fractal image number for each fractal trial across all subjects
#| echo: false
#| include: false
#| message: false
data.filtered.fractals <- filter(data.filtered.correct, task == "fractal_response" & !is.na(fractal_correct)) %>%
select(c('session_id', 'fractal_correct', 'fractal_img'))
stimulus.key.fractal.pair <- data.filtered.correct %>%
filter(!is.na(fractal_img)) %>%
filter(task != "fractal_response") %>%
select(c("session_id","stimulus_key","fractal_img"))
data.filtered.fractals.merged <- left_join(data.filtered.fractals, stimulus.key.fractal.pair, by=c("session_id","fractal_img")) %>%
select(-c("fractal_img"))
data.filtered.incidental.merged <- left_join(data.filtered.fractals.merged, z.scores.curiosity.simplified, by=c("session_id","stimulus_key"))
data.filtered.incidental.merged <- left_join(data.filtered.incidental.merged, z.scores.IPE.simplified, by=c("session_id","stimulus_key"))
data.filtered.incidental.merged <- left_join(data.filtered.incidental.merged, z.scores.prior.knowledge.simplified, by = c('session_id', 'stimulus_key')) %>%
select(-c("stimulus_key"))
data.filtered.incidental.merged$fractal_correct = as.numeric(data.filtered.incidental.merged$fractal_correct)
```
```{r}
#| label: Incidental Memory Regression
#| message: false
#| echo: false
#| include: true
incidental.memory.mixed.model <- lmer(fractal_correct ~ z_score_curiosity * z_score_IPE * z_score_prior_knowledge + (1 + z_score_curiosity + z_score_IPE + z_score_prior_knowledge | session_id), data = data.filtered.incidental.merged)
tab_model(incidental.memory.mixed.model)
```
For incidental memory, the regression aims to examine the relationship between the dependent variable "fractal_correct", which represents whether the participant recognized the fractal pattern they have seen before, and three independent variables "z_score_curiosity", "z_score_IPE", and the interaction between the two independent variables. None of the three independent variables, or their interaction, have a statistically significant relationship with the dependent variable fractal_correct, as indicated by their p-values being greater than 0.05. Therefore, there is no evidence of a significant linear relationship between either the prediction error or the curiosity level and the performance of incidental memory in this model.
## Discussion
This study aimed to investigate the effects of prediction error as well as the effects of curiosity on memory performance, both explicitly and incidentally. However, the study failed to provide support for both hypotheses. The regressions failed to provide a model to explain the variability in the performance of explicit memory and incidental memory based on the two independent variables provided. With a p-value of 0.0497, the significant effect found between prediction errors and explicit memory performance was almost insignificant at the 0.05 level, and the model as a whole was insignificant at the 0.05 level for both regressions.
Since significant previous research suggests that curiosity affects explicit memory of a stimulus (Wittmann et al., 2005; Kang et al., 2009; Gruber et al., 2014; Fernández et al., 2016), there are a few potential explanations for why this study did not find this effect. To start, in the second (surprise!) round of trivia questions (our operationalization of explicit memory), participants received a random selection of the thirty questions they had already seen, but these were not restricted to questions that they had initially provided incorrect guesses for. This reduced the number of questions that each participant had the opportunity to remember (perhaps because they were initially very curious about the topic). A question that a participant guessed correctly on in the initial testing round, and then remembered again in the second round is not valuable in measuring memory recall; participants are most likely using prior knowledge of the correct answer instead. Notably, this unintentional experimental design flaw likely impacted the analysis of the effect of prediction error on explicit memory as well. We are not exempt from that examination simply because that result was statistically significant.
Additionally, while we deliberately sought out trivia questions that 1) had numerical responses, 2) varied in the number of digits in the response and in relative difficulty, 3) pertained to a broad number of categories, including: science/technology, art/entertainment, literature, nature/animals, culture, history, religion, geography, food, and sports, and 4) were representative of the diverse backgrounds and cultures of people in the United States potentially participating in the experiment, we failed to consider that there were three pairs of questions with the same numerical responses. For example, the answers to "How many native species of kangaroos are found in Australia?" and "How many main islands make up Japan?" were both 4, and, thus, when we attempted to match participants' numerical responses to the second round of trivia questions to their initial curiosities about that question, we were unable to do so for the six questions with duplicate responses. Also, we did not get z-scores for the following three questions because every participant who received these in their second round of questioning got them correct and thus the standard deviations were zero: "How many bones is a human baby born with?" (300 because I know you're curious!), "What year did the Berlin Wall fall?" (1989; maybe you knew that one), and "What year did the Titanic sink?" (1912; maybe you knew that one too). Interestingly, the standard deviations for these questions were not zero in the initial testing round, indicating that they were certainly not 'giveaway' questions. While we cannot be sure as to why this may have occurred, we predict that for the Berlin Wall and Titanic questions, participants who initially got it wrong were somewhat close to the correct answer (maybe something of a tip-of-the-brain experience), and, thus, when presented with the opportunity to guess again, got it correct. This is unfortunate, but possible (even likely!) when analyzing a phenomenon like memory that is affected by a lot more than just curiosity. However, we do not think this is the case for Baby Bones, and it is even possible that all of these people were initially really curious about this question, later got it correct, and then, much later, we realized that the lack of standard deviation meant that we did not get a z-score for a question that might have been really valuable in our analysis of explicit memory, both for curiosity and prediction error.
In terms of our methodological choices for curiosity, we assessed participants' curiosity using a Likert Scale presented immediately after one assessing prior knowledge. After a participant selected a number for prior knowledge, the next screen, measuring curiosity, automatically began with the same number selected. This could have resulted in a situation where a participant who wanted to save time was inclined to keep the same selection for curiosity, even if it was actually different from their prior knowledge estimation. And, even if they were not in a damn rush to get their \$4, making a selection after a choice has been already made is very different from making a clean selection. It feels like 'changing your answer,' even though this is curiosity, not your sixth grade social studies test. These are some of the possible reasons why we did not find an (expected) effect of curiosity on explicit memory, and a (less expected, but still possible) effect of prediction error on explicit memory.
Finally, previous research that found an effect of curiosity on incidental memory (Gruber et al., 2014), used faces as their incidental stimuli, while we used colorful fractal images. We believed that faces were too obvious as an incidental stimulus, and that using a colorful, flippable card on a bright blue background would be less obvious (but not totally ignorable: more like medium-obvious, of course). It is impossible to obtain a perfectly 'incidental' stimulus, and, thus, it is impossible to determine whether the lack of a significant effect of curiosity or prediction error on incidental memory in this study was due to the choice of stimulus, other timing, background, or participant confounds, or because curiosity does not, in fact, affect incidental memory.
In addition to the above considerations, there are a number of future research studies that can be conducted to further investigate the possible effects of prediction error and curiosity on memory. A research team with more funding and the ability to carry out in-person research could easily improve the power of this study by utilizing a larger sample size, generating an experiment with many more questions in all three sections, and re-recruiting participants a few days (rather than ten minutes) later for the memory assessment. As always, an independent, unbiased replication of this study is also extremely valuable in determining the validity of our findings. Finally, multiple types of incidental memory stimuli must be considered to determine which, if any, are affected by curiosity. We cannot declare that curiosity affects incidental memory if this is only the case for faces, or another very particular type of stimulus. Ultimately, this kind of exploration has the capacity to expand our understanding of how prediction error, curiosity, and memory fit into broader research about human information processing and decision making.
## References
Cervera, R. L., Wang, M. Z., & Hayden, B. Y. (2020). Systems neuroscience of curiosity. Current Opinion in Behavioral Sciences, 35, 48--55. https://doi.org/10.1016/j.cobeha. 2020.06.011
Fernández, R. S., Boccia, M. M., & Pedreira, M. E. (2016). The fate of memory: Reconsolidation and the case of prediction error. Neuroscience & Biobehavioral Reviews, 68, 423--441. https://doi.org/10.1016/j.neubiorev.2016.06.004
Gruber, M. J., Gelman, B. D., & Ranganath, C. (2014). States of curiosity modulate hippocampus-dependent learning via the dopaminergic circuit. Neuron, 84(2), 486--496. https://doi.org/10.1016/j.neuron.2014.08.060
Kang, M. J., Hsu, M., Krajbich, I. M., Loewenstein, G., McClure, S. M., Wang, J. T., & Camerer, C. F. (2009). The Wick in the Candle of Learning: Epistemic Curiosity Activates Reward Circuitry and Enhances Memory. Psychological Science, 20(8), 963--973. https://doi.org/10.1111/j.1467-9280.2009.02402
van Lieshout, L. L. F., de Lange, F. P., & Cools, R. (2020). Why so curious? quantifying mechanisms of information seeking. Current Opinion in Behavioral Sciences, 35, 112--117. https://doi.org/10.1016/j.cobeha.2020.08.005
Wade, S., & Kidd, C. (2019). The role of prior knowledge and curiosity in learning. Psychonomic Bulletin & Review, 26(4), 1377--1387. https://doi.org/10.3758/s13423 -019-01598-6