Testing Infomax ICA with Simulated Data
Here, we run the testica() script on simulated data to judge its expected unmixing performance. Here, we model fourteen noise sources (mixed at 14 channels in 624 data points, as in the sample data decomposed in this tutorial). We model the sources as having positive-kurtosis (super-gaussian) amplitude distributions (left panel, input 'shape' parameter 1.4), and exponentially decreasing amplitudes (right panel, input 'exppow' parameter -0.05)
![]()
![]()
To evaluate the results, testica() first matches the derived component mixing weights (i.e., the columns of winv = inv(weights*sphere); from the decomposition) with the actual simulated values using the toolbox function matcorr(). Rearranging the order of the columns of winv to best match the original component order, and adjusting their signs to best match the original component signs, produces a new mixing matrix (say Winv). If this matrix perfectly matches winv (perfect decomposition), then also the product matrix
neareye = inv(winv)*Winv;is the identity matrix (eye()). The figure below shows the actual recovered product matrix after normalization (scaling each row to make the diagonal elements all 1). The predominance of diagonal values (unmixing fraction) over the off-diagonal values (still-mixed fraction) shows that the largest sources were recovered cleanly ...
% testica(chans,frames,sources,exppow,shape); testica(chans,epochs*frames,14,-0.05,1.4);![]()
Open the function help window
View log of changes to this tutori al.
Comments and suggestions on this tutorial
are welcome. Email scott@salk.edu