>'''Never use an absolute value on sensor data'''. {{attachment:diff_sensors.gif||height="289",width="549"}} == Constrained sources == We also observe important differences between (A-B) and (|A|-|B|). At 175ms, we almost reach the highest distance between the red and green curves, but it corresponds to a zero in the rectified difference. {{attachment:diff_constr.gif||height="289",width="549"}} '''(A-B)''': Correct amplitude, ambiguous sign. * This measure represents better the distance between the two conditions curves. However, its sign is ambiguous and cannot be used to claim that "the brain response is stronger in condition A than in condition B" (|A|>|B|, cases a/b/e in the table below) or "is stronger in condition B than in condition A" (|B|>|A|, cases c/d). As illustrated in the [[http://neuroimage.usc.edu/brainstorm/Tutorials/SourceEstimation#Sign_of_constrained_minimum_norm_values|source estimation tutorial]], the sign of the current density maps depends on the orientation of the source. <

><

> {{attachment:diff_sign_table.gif||height="113",width="327"}} * This is an appropriate measure to use when the polarity of the signal is important to you, for example when suppression of a negative peak (A-B<0) would be viewed differently than suppression of a positive peak (A-B>0) or a polarity change (sign(A) different from sign(B)). * Suppression of positive signals from A to B (case a) produces the same value as an increase in the negative signal from A to B (case d). Similarly cases b and c will produce the same value. For this reason interpretation of the results requires that you also examine the actual polarities of the two signals at locations in time and space where significant effects are detected. '''|A|-|B|''': Ambiguous amplitude, meaningful sign. * This measure is insensitive to polarity so not adapted to represent the distance between the two conditions, but its sign is meaningful. * The sign indicates the direction of magnitude change and avoids the ambiguity encountered in the earlier measure (case a vs case d) but cannot differentiate between suppression of positive and negative signals (cases a and b). * This measure will avoid the confound due to the ambiguity of the sign of the constrained sources, but will also be less sensitive to cases in which differences in response involve differences in polarity and/or latency than the former measure (e.g. case e in the above table). ==== Conclusion: Which one should you use? ==== * '''(A-B)''': To detect when and where the signals are different. * '''(|A|-|B|)''': When studying one particular effect, if you are interested to know which condition generates a larger response at a specific time point. It is meaningful only if you already know that A and B have the same sign. == Unconstrained sources == The exact same observations apply to the unconstrained sources, using the norm of the three orientations instead of the absolute values. X and Y represent the source vectors with three components each (x,y,z) for conditions A and B. '''Norm(X-Y)''': This measure will detect vector differences between the two signals which can occur if the magnitude and/or orientation changes. It differs from (Norm(X)-Norm(Y)) in being sensitive to changes in apparent source orientation, but cannot differentiate increases from decreases in amplitude. '''Norm(X)-Norm(Y)''': This is the unconstrained equivalent to |A|-|B|, i.e. it will produce a signed value that reflects increases or decreases in magnitude from A to B and should be interpreted similarly. Unlike Norm(X-Y) it is not sensitive to rotation of the source from A to B unless there is an accompanying amplitude change. But on the other hand, because the value is signed, we can differentiate between increases and decreases in amplitude. {{attachment:diff_unconstr.gif||height="424",width="679"}} == Source normalization == The examples above only show minimum norm current density maps that haven't been normalized. The same logic applies to normalized source values, as long as you do not rectify the signals during the computation the normalization. As a reminder, you should normalize the source maps if you are intending to compare different subjects, it will help bringing them to the same range of values. The list below shows the valid operations for the Z-score normalization, but the same is applicable for dSPM, sLORETA and MNp. Constrained sources: * '''Zscore(A) - Zscore(B)''': Correct amplitude, ambiguous sign. * '''abs(Zscore(A)) - abs(Zscore(B))''': Ambiguous amplitude, meaningful sign. Unconstrained sources: * '''norm(Zscore(A) - Zscore(B))''': Correct amplitude, no sign. * '''norm(Zscore(A)) - norm(Zscore(B))''': Ambiguous amplitude, meaningful sign. Always avoid using the following measures: * Z-score(abs(sources)) * Z-score(norm(sources)) == Difference deviant-standard == Before running complicated statistical tests that will take hours of computation, you can start by checking what the difference of the average responses looks like. If in this difference you cannot observe the effects you are expecting, it's not worth moving forward with finer analysis: the recordings are not clean enough, you don't have enough data or your initial hypothesis is wrong. ==== Absolute difference: |A|-|B| ==== We are going to use the Process2 tab, at the bottom of the Brainstorm figure. It works exactly like the Process1 tab but with two lists of input files, referred to as FilesA (left) and FilesB (right). * In Process2, drag and drop the '''non-normalized deviant average''' on the left (FilesA) and the non-normalized '''standard average''' on the right (FilesB). * Run the process "'''Difference > Difference A-B'''".<

>Select the option "'''Use absolute values'''", which will convert the unconstrained source maps (three dipoles at each cortex location) into a flat cortical map by taking the norm of the three dipole orientations before computing the difference.<

><

> {{attachment:diff_process_abs.gif||height="331",width="493"}} * Rename the new file in "'''deviant|norm - standard|norm'''", double-click on it and explore it in time. This is a flat cortex map (only 15000 values), with positive and negative values. It should be displayed using a colormap that shows relative values (right-click > Colormap > Uncheck the option "Absolute values"). <

><

> {{attachment:diff_contact_abs.gif||height="283",width="615"}} * We are looking at the rectified difference (norm(deviant)-norm(standard)) so positive/red regions indicate higher activity levels for the deviant beeps, and negative/blue regions higher activity for the standard beeps. * '''Before 50ms''': The motor activity in the deviant is probably due to the previous stims. * '''P50''': Stronger response in the primary auditory cortex for the standard condition. * '''MMN '''(125ms): Stronger response for the deviant (left temporal, left inferior frontal). * '''150ms''': Stronger response in the auditory system for the standard condition. * '''175ms''': Stronger response in the motor regions for the standard condition (motor inihibition). * '''After 200ms''': Stronger response in the deviant condition (motor preparation and movement). * Plot the time series for scout A1 (relative and absolute values).<

>The relevant information here is the sign of the difference (option Values:Relative).<

><

> {{attachment:diff_scout_abs.gif||height="144",width="602"}} ==== Relative difference: (A-B) ==== * Run again the process "'''Difference > Difference A-B'''".<

>This time, '''do not s''''''elect''' the option "'''Use absolute values'''", it will compute the difference separately for each orientation.<

><

> {{attachment:diff_process_rel.gif||height="222",width="313"}} * Rename the new file in "'''deviant - standard'''", double-click on it and explore it in time. This file still has the three values for each vertex of the cortex surface. The values for each point and each orientation can be positive or negative, but only the norm of the three orientation can be displayed on the cortex. You will only see positive values in this figure, therefore it is better to configure the colormap accordingly (right-click > Colormap > Check the option "Absolute values"). <

><

> {{attachment:diff_contact_rel.gif||height="287",width="613"}} * We can see with much more contrast the areas and times where the two conditions are different, but we lose the ability to say which one is stronger. This is not a very helpful display by itself, but it is the measure we will use in most cases when computing statistical tests between conditions. * Plot the time series for scout A1 (relative values and norm). <

>The relevant information here is the norm of the three orientations (option Values:Absolute).<

><

> {{attachment:diff_scout_rel.gif||height="140",width="600"}} == Difference of means == Another process can compute the average and the difference at the same time. We are going to compute the difference of all the trials from both runs at the sensor level. This is usually not recommended because the subject might have moved between the runs. Averaging the recordings across runs is not accurate but can give a good first approximation, in order to make sure we are on the right tracks. * In Process2, select the following files:<

>Files A: all the '''deviant trials''' from both runs (78 files)<

>Files B: '''all the standard trials''' from each run (384 files). * Select the process "'''File > Uniform number of files'''", with the default number of files and the option "Uniform". This will select the same number of files from FilesA and FilesB. The list with the larger number of files (FilesB) is sampled uniformly to get the same number of files on both sides.<

><

> {{attachment:select2_process.gif||height="427",width="440"}} * Add the process "'''Test > Difference of means'''", select the option "'''Arithmetic average'''". <

>The option "weighted average" has no importance because we are averaging only single trials.<

><

> {{attachment:diff_mean_process.gif||height="286",width="306"}} * Run the pipeline. Rename the new file in "deviant - standard", double-click on it to display it. The difference does not show anymore the early responses (P50, P100) which are similar for the two conditions, but emphasizes the difference in the later process (MMN/P200 and P300). <

><

> {{attachment:diff_mean_ts.gif||height="167",width="668"}} <

>'''Left''': Average of 80 deviant trials.<

>'''Center''': Average of 80 standard trials.<

>'''Right''': Difference of the two, computed in this process. == Time-frequency == In the case of time-frequency maps there is no sign ambiguity of the values, so computing a difference is slightly simpler. There are two possible cases: difference between power maps or between normalized maps (Z-score or ERS/ERD). '''Original time-frequency maps''' * The power of the TF maps are only positive values, so you can simply compute the difference between the power maps, it will give you all the interesting information. * Use the difference of the power: power(TF(A)) - power(TF(B)) * This is what you would use for the statistics within a subject. '''Normalized time-frequency maps''' (Z-score or ERS/ERD) * The values represent deviations with respect with a baseline, they can be positive or negative. Therefore we are in the same configuration as with the sensor data. * Use the difference of the normalized values: Zscore(power(TF(A))) - Zscore(power(TF(B))) * This could be used for comparing visually two averages, or for statistics across subjects. <)>> <