#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

# Training study with training criterion

Hello,

I am new to OpenSesame and can't seem to figure out how to implement an experiment with a training phase and a test phase, whereby participants have to pass a certain accuracy score in the training phase before moving on to the test phase.

The training phase consists of a maximum of 8 blocks. Each block consists of 48 trials. Training criterion is 85%. If participants never reach criterion (per block, not accumulated across blocks), then they complete 8 training blocks and after that move on to the test phase. However, if at the end of any given block participants reach 85% (or higher) in that block, then they move on to the test phase (without completing the rest of the training blocks). This means that participants will differ in how many training blocks they complete.

I have seen this post on meta loops, and the problem is similar but differs in that I do not want to rerun the same block but either move on to the next training block (which differs from the preceding one) or move on to the test phase (and skip the rest of the training blocks).

Best wishes,
Natalie

• Hi Natalie,

It sounds like you can simply use a Break If statement in the practice loop (i.e. the loop that has a length of 8 blocks): `[acc] >= 85`

Does that work?

Sebastiaan

There's much bigger issues in the world, I know. But I first have to take care of the world I know.
cogsci.nl/smathot

When I add the Break If statement to the training loop then the statement applies only to the most recent block loop in the block sequence (but is ignored for the first few block loops). However, I need to apply the statement after each block loop (to be able to determine when a participant 'breaks out' of the training loop and continues with the test phase).

To be more precise, this is the current structure of the training phase:

The training loop consists of a block sequence which in turn consists of 2 block loops (each consisting of a different trial sequence). Participants receive feedback on their accuracy in a particular block after each block loop. What I want to achieve is: If participants reach 85% (or higher) in block loop 1, then they skip block loop 2 and proceed to the test phase. However, if they reach less than 85% in block loop 1, then they proceed to block loop 2 (the final experiment will have 8 block loops, this is just to illustrate the design).

This is how I added the Break If statement:

How can I get OS to check after each block loop whether [acc] >= 85 (and if yes then proceed to test, if no then proceed with next block loop)? Any advice would be much appreciated!

Thanks again!

Natalie

• Hi Natalie,

If the problem is that block_loop_2 should be skipped when `[acc] >= 85` (but I'm not entirely whether that's the only issue?) then using a Run-If statement, again `[acc] >= 85`, for block_loop_2 (in block_sequence) should do the trick.

Cheers!
Sebastiaan

There's much bigger issues in the world, I know. But I first have to take care of the world I know.
cogsci.nl/smathot

• Great, it did indeed do the trick! In fact, I don't need the Break-If statement in the training loop anymore. Instead, I added the following Run-If statement in the training block sequence (now telling OS to only run block 2 when accuracy is less than 85%) and it works:

Thanks very much for your help and quick responses, Sebastiaan!

Best,
Natalie