Scoring Span Expts, SymmSpan


Author
Message
cgoetz
cgoetz
Esteemed Member (1.6K reputation)Esteemed Member (1.6K reputation)Esteemed Member (1.6K reputation)Esteemed Member (1.6K reputation)Esteemed Member (1.6K reputation)Esteemed Member (1.6K reputation)Esteemed Member (1.6K reputation)Esteemed Member (1.6K reputation)Esteemed Member (1.6K reputation)
Group: Forum Members
Posts: 7, Visits: 1

Hey guys (Dave),


So I'm currently working with the SymmSpan task and I'm trying to figure out some scoring issues. The SymmSpan is coded to output data with several values including: totalrecalledsets and values.sspan. The totalrecalledsets is useful, because it increases only if you answer an entire load correctly, at which point it will increase by one. The values.sspan increases by the value of the load when answered entirely correctly, so it will increase by 2 for a 100% accuracy on a load 2, by 5 on a 100% accuracy on load 5. 


What I would like is to be able judge how subjects performed within each load, however, so possible output might look like:


Load 2 - 2 of 3 loads correct, 66%


Load 3 - 3 of 3 loads correct, 100%


Load 4 - 1 of 3 loads correct, 33%


Load 5 - 0 of 3 loads correct, 0%



Could you help me figure out a way to get such an output? I hope I've been clear enough in explaining what we're going for, it's basically a totalrecalledsets value for each load. I suppose it might be possible to just code a new value for each load?



Any help is appreciated!


Thanks,


Calvin


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K

You should be able to either do this with any capable stats application (SPSS, SAS, R, etc.) by extracting & aggregating the data according to the various set sizes you're interested in or (b) modify the Inquisit script to compute these stats for you at runtime. For (b) you merely need to extend what's already there; i.e., introduce a bunch more values and conditional logic. Once you've developed a decent understanding of how the original script works, this should not be hard to do.


Regards,


~Dave


Amy Finn
Amy Finn
Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)
Group: Forum Members
Posts: 4, Visits: 1










Hi Dave!


What we are really hoping for is a simple output that just
states whether a given trial is correct or incorrect.  It would even be nice to have raw responses
logged so we could use matlab or something else to score this easily in other
ways (as you suggest).


The issue with the current outputs that Calvin mentions is
that the number added depend on 2 factors: load and if all of the responses
within a trial are correct.


Since these outputs all sum accuracy, it should be simple
enough to get it to write raw trial accuracies. Could you direct us to a way
that could do that? In the feedback to subjects they get this the display {x
out of x correct/trial}, is there a way we could also simply write this to the
data file?


Can you please explain (b) further and how this would
require more conditional logic. Sorry for my confusion and thanks for any help
you can provide! I really appreciate it!! 


Amy



Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K

In the feedback to subjects they get this the display {x
out of x correct/trial}, is there a way we could also simply write this to the
data file?


Look at <text SquareFeedback> in the script


<text SquareFeedback>
/ items = ("You recalled <%values.correctsquares%> out of <%values.squarecount%> squares correctly.")
[...]
</text>


You'll want to log those values to the data file then.


Amy Finn
Amy Finn
Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)
Group: Forum Members
Posts: 4, Visits: 1

Great thank you. So then the question is how do we get it to record that data. I don't think we can simply do /recorddata = true. Can we? 


Specifically, what would you add to this, to get the value to be logged in the output? 




<trial square_feedback>


/ pretrialpause = 500


/ ontrialbegin = [values.correctsquares=0]


/ ontrialbegin = [if(values.symmetrycurrenterrors>=3)values.symmetryerrorswitch=2 else values.symmetryerrorswitch=1]


/ ontrialbegin = [if(script.currentblock!="PracSquare")


   values.symmetryaccuracy=round(((values.symmetryproblemcount-values.symmetrytotalerrors)/values.symmetryproblemcount)*100)]


/ ontrialbegin = [


   if(item.RecalledSquares.item.1 != "" && item.PresentedSquares.item.1==item.RecalledSquares.item.1)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.2 != "" && item.PresentedSquares.item.2==item.RecalledSquares.item.2)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.3 != "" && item.PresentedSquares.item.3==item.RecalledSquares.item.3)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.4 != "" && item.PresentedSquares.item.4==item.RecalledSquares.item.4)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.5 != "" && item.PresentedSquares.item.5==item.RecalledSquares.item.5)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.6 != "" && item.PresentedSquares.item.6==item.RecalledSquares.item.6)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.7 != "" && item.PresentedSquares.item.7==item.RecalledSquares.item.7)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.8 != "" && item.PresentedSquares.item.8==item.RecalledSquares.item.8)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.9 != "" && item.PresentedSquares.item.9==item.RecalledSquares.item.9)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.10 != "" && item.PresentedSquares.item.10==item.RecalledSquares.item.10)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.11 != "" && item.PresentedSquares.item.11==item.RecalledSquares.item.11)values.correctsquares=values.correctsquares+1; 


   if(item.RecalledSquares.item.12 != "" && item.PresentedSquares.item.12==item.RecalledSquares.item.12)values.correctsquares=values.correctsquares+1]


/ ontrialbegin = [if(values.correctsquares==values.currentsetsize)


   {values.sspan=values.sspan+values.correctsquares; values.totalrecalledsets=values.totalrecalledsets+1}]


/ ontrialbegin = [values.totalcorrectsquares=values.totalcorrectsquares+values.correctsquares]


/ ontrialend = [values.symmetrycurrenterrors=0]


/ ontrialend = [if(script.currentblock=="PracSquare" && counter.PracSquareSetSize.unselectedcount==0)


   {values.stopblock=1}]


/ ontrialend = [if(script.currentblock=="PracBoth" && counter.PracBothSetSize.unselectedcount==0)


   {values.stopblock=1}]


/ ontrialend = [if(script.currentblock=="TestBoth" && counter.TestBothSetSize.unselectedcount==0)


   {values.stopblock=1}]


/ stimulusframes = [1=WhiteScreen, SquareFeedback, SymmetryFeedback, SymmetryScore, scoredebug]


/ validresponse = (noresponse)


/ trialduration = 4000


/ branch = [trial.InitSetSize]


/ recorddata = true


</trial>



<text SquareFeedback>


/ items = ("You recalled <%values.correctsquares%> out of <%values.squarecount%> squares correctly.")


/ fontstyle = ("Verdana", 3.5%, true)


/ position = (50%, 45%)


/ erase = true(white)


</text>



**************



Amy Finn
Amy Finn
Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)
Group: Forum Members
Posts: 4, Visits: 1

I imagine there is some nice write command at the bottom? Sorry - this code is more complicated than others since there are so many embedded elements. 



Amy Finn
Amy Finn
Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)Partner Member (546 reputation)
Group: Forum Members
Posts: 4, Visits: 1

Sorry - we got it. Calvin had it write out values.correctsquares and now we have the data we need! Thank you


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search