Many experiments in cognitive/experimental psychology involve presenting several conditions (e.g., A and B) to the same subject (i.e. a within-subjects design) as a sequence of trials. Most people will have learned that in situations like this, counterbalancing of condition order is critical in order to avoid confounding order with condition. For example:
SEQUENCE 1: A B A B A B A B A B A B A B A B
Sequence 1 is a really bad condition order because B is always preceded by A. Thus, any observed results during B trials in the sequence could be caused by the preceding A condition rather than just condition B itself. Similarly, A is nearly always preceded by B (except for the first trial) and thus any measurements associated with condition A could have been driven by a carryover effect from the preceding condition A. Now consider another sequence:
SEQUENCE 2: A B B A B A A B A B A A A A B B A (randomly generated)
Sequence 2, is better than Sequence 1. B isn't always preceded by A. Sometimes it is preceded by another instance of condition B. In fact, if you go through and count, B is preceded by A 5 times whereas B is preceded by itself 2 times. We may also want to know how often A is preceded by itself and B to assess whether the interpretation of condition A could be compromised by carryover effects. A very efficient way to visualise the carryover relationships between conditions in a sequence is to generate an adjacency matrix. This is a table which shows how often each condition is preceded by each other condition. An adjacency matrix For Sequence 2, is shown in Figure 1 below.
Figure 1: This adjacency matrix/table shows you how many times each condition is preceded by each other condition in Sequence 2. See the text for a description of how to interpret it.
In this table, different columns represent a given trial, n, and the columns represent the trial preceding it, n-1. Thus, if I look at the entry in the cell specified by column A and row A, this correspond to how many condition A trials were preceded by another condition A trial. In this case, there were 4 such trials. We can see that there were 5 condition A trials preceded by condition B trials. Thus, condition A is nearly equally preceded by A and B trials. However, you can see that condition B trials are mostly preceded by condition A trials which could make it difficult to rule out carryover effects when assessing condition B results. Ideally, for a perfectly carryover counterbalanced design, all of the numbers in the adjacency matrix would be equal.
Sequence 2 was generated as a random sequence of A's and B's. Randomization is probably the most popular method of counterbalancing condition orders. However, you can see that it doesn't work perfectly for any given condition order. In fact, it can result in quite unbalanced condition orders. Nonetheless, we can usually assume that over large numbers of participants, with each participant having a different condition order, that these imbalances balance out across participants (between-subjects).
However, it is possible to generate truly carryover counterbalanced condition orders and this is the function of G-SOC. For balanced designs (i.e., equal number of each condition type), G-SOC can generate a fully counterbalanced sequence. For instance:
SEQUENCE 3: A B A A B B A A A B B B B A A B A (generated by G-SOC)
Figure 2: This adjacency matrix/table shows you how many times each condition is preceded by each other condition in Sequence 3. See the text for a description of how to interpret it.
You can see from the adjacency matrix for Sequence 3 (Figure 2 above) that this sequence is fully carryover counterbalanced, i.e., that each condition is preceded by each other condition equally often. G-SOC can generate many of these sequences, each different and drawn uniformly from the set of all possible sequences. Thus, it would be possible to generate a different, randomly selected, and perfectly counterbalanced condition order for each of your participants. For experiments where carryover effects are likely to be a factor, G-SOC is likely to be of use in balancing these within each participant and this many reduce carryover-induced noise in uncounterbalanced sequences.