Fixed Prototype Pilot

Published

June 14, 2024

Stage Detail
Training Stage
Objective Study the effect of training-pattern variability on classification learning and generalization in the dot-pattern paradigm.
Procedure Subjects trained to classify a set of training patterns into three categories.
Training patterns repeated across 10 training blocks with randomized presentation order within each block.
Four between-subject conditions varying by training pattern distortion levels: low, medium, high, and mixed distortions.
Each condition involved 27 training patterns (9 per category), generated by distorting category prototypes using the Posner-Keele (1968) statistical-distortion algorithm.
Feedback Corrective feedback provided for 2 seconds below the presented pattern in the learning phase.
Testing Stage
Objective Test classification of novel patterns and a subset of training patterns.
Procedure Test patterns included 27 old distortions, 3 prototypes, 9 new low-level distortions, 18 new medium-level distortions, 27 new high-level distortions, and 3 additional high-level distortions.
Each pattern presented once in a random order, totaling 87 trials per subject.
Patterns displayed at the center of the screen and remained visible until a key press.
Distortion Levels
Generation Category prototypes distorted using the Posner-Keele (1968) statistical-distortion algorithm.
Training patterns for four conditions generated with varying levels of distortion: low, medium, high, and mixed distortions.
Test patterns consisted of distortions across low, medium, and high levels, with additional hard-to-classify distortions.
Mingjia’s Report
Display code
pacman::p_load(dplyr,purrr,tidyr,ggplot2, here, patchwork, conflicted, knitr,grateful)
conflict_prefer_all("dplyr", quiet = TRUE)
source(here::here("R/fun_plot.R"))
fp24 <- readRDS(here("data","fixed_proto24.rds"))

theme_set(theme_nice_b())

yt <- round(seq(0,1,length.out=7), 2)
xt <- seq(1,10,1)
eg <- list(geom_hline(yintercept = c(.33, .66),linetype="dashed", alpha=.5),
           scale_y_continuous(breaks=yt,limits=c(0,1)),
           scale_x_continuous(breaks=xt))
Display code
fp24 |> filter(Phase==2) |>
  group_by(sbjCode, condit, Pattern_Token) |>
  summarize(Corr=mean(Corr)) |>
  ggplot(aes(x=Pattern_Token, y=Corr, fill=condit, group=condit)) +  
  stat_summary(geom="bar",fun=mean, position=position_dodge())+
  stat_summary(geom="errorbar", fun.data=mean_se, position=position_dodge()) +
  labs(title="Testing Performance - Fixed Proto.", y="Accuracy") 
fp24 |> filter(Phase==2) |>
  group_by(sbjCode, condit, Pattern_Token) |>
  summarize(Corr=mean(Corr)) |>
  ggplot(aes(x=condit, y=Corr, fill=Pattern_Token, group=Pattern_Token)) +  
  stat_summary(geom="bar",fun=mean, position=position_dodge())+
  stat_summary(geom="errorbar", fun.data=mean_se, position=position_dodge()) +
  labs(title="Testing Performance - Fixed Proto.", y="Accuracy") 
fp24 |> filter(Phase==1) |>
  group_by(sbjCode, condit, Pattern_Token,Block) |>
  summarize(Corr=mean(Corr),.groups="keep") |>
  ggplot(aes(x=Block, y=Corr, col=condit, group=condit)) +  
  stat_summary(geom="line",fun=mean)+
  stat_summary(geom="errorbar", fun.data=mean_se,width=.1) +
  labs(title="Training Performance.", y="Accuracy") +
  #eg +  
  theme(legend.position = "top") + eg