Run Infomax or extended-Infomax on a matrix of data. Uses a mini-batch stochastic
gradient descent algorithm. The matrix can be prewhitened in several ways. The default is to perform
sphering using the inverse of the square root of the covariance matrix of the
original data, the method used by the 'EEGLAB' and 'MNE-Python' toolboxes in
other languages. Whitening methods implemented in the package whitening are
PCA, ZCA, ZCA-cor, and PCA-cor. Please see the whitening package
for further information on their implementation of these methods.
run_infomax(
x,
centre = TRUE,
pca = NULL,
anneal = 0.98,
annealdeg = 60,
tol = 1e-07,
lrate = NULL,
blocksize = NULL,
kurtsize = 6000,
maxiter = 200,
extended = TRUE,
whiten = c("sqrtm", "ZCA", "PCA", "ZCA-cor", "PCA-cor", "none"),
verbose = TRUE
)
Arguments
| x |
matrix of data; features in columns, samples in rows. |
| centre |
Mean-centre columns before running the algorithm. Defaults to
TRUE. |
| pca |
A scalar. Use PCA dimensionality reduction. Often helpful when the
data is rank deficient. |
| anneal |
Annealing rate at which learning rate reduced. |
| annealdeg |
Angle at which learning rate reduced. |
| tol |
Tolerance for convergence of ICA. Defaults to 1e-07. |
| lrate |
Initial learning rate. NULL |
| blocksize |
Size of blocks of data used for learning. |
| kurtsize |
Size of blocks for kurtosis checking. Defaults to 6000 or
length of data, whichever is smaller. |
| maxiter |
Maximum number of iterations. Defaults to 200. |
| extended |
Run extended-Infomax. Defaults to TRUE. |
| whiten |
Whitening method to use. See notes on usage. |
| verbose |
Print informative messages for each update of the algorithm. |
Value
A list containing:
S: Matrix of source estimates
M: Estimated mixing matrix
W: Estimated unmixing matrix
iter: Number of iterations completed
References
Bell, A.J., & Sejnowski, T.J. (1995). An
information-maximization approach to blind separation and blind
deconvolution. Neural Computation, 7, 1129-159
Makeig, S., Bell, A.J., Jung, T-P and Sejnowski, T.J., "Independent component analysis of
electroencephalographic data," In: D. Touretzky, M. Mozer and M. Hasselmo
(Eds). Advances in Neural Information Processing Systems 8:145-151, MIT
Press, Cambridge, MA (1996).
Author
Matt Craddock matt@mattcraddock.com
Examples
#> Removing column means...
#> Step: 1, lrate: 0.007213, wchange: 0.40176171, angledelta: 0.0
#> Step: 2, lrate: 0.007213, wchange: 0.30898889, angledelta: 0.0
#> Step: 3, lrate: 0.007213, wchange: 0.09925584, angledelta: 94.4
#> Step: 4, lrate: 0.007069, wchange: 0.03233663, angledelta: 43.6
#> Step: 5, lrate: 0.007069, wchange: 0.00827125, angledelta: 61.4
#> Step: 6, lrate: 0.006928, wchange: 0.00380327, angledelta: 146.7
#> Step: 7, lrate: 0.006789, wchange: 0.00127687, angledelta: 76.4
#> Step: 8, lrate: 0.006653, wchange: 0.03292234, angledelta: 101.8
#> Step: 9, lrate: 0.006520, wchange: 0.02174335, angledelta: 164.1
#> Step: 10, lrate: 0.006390, wchange: 0.00143240, angledelta: 46.3
#> Step: 11, lrate: 0.006390, wchange: 0.00192741, angledelta: 31.5
#> Step: 12, lrate: 0.006390, wchange: 0.01679226, angledelta: 159.3
#> Step: 13, lrate: 0.006262, wchange: 0.00909932, angledelta: 73.5
#> Step: 14, lrate: 0.006137, wchange: 0.01100249, angledelta: 145.7
#> Step: 15, lrate: 0.006014, wchange: 0.01048766, angledelta: 98.1
#> Step: 16, lrate: 0.005894, wchange: 0.00273001, angledelta: 151.1
#> Step: 17, lrate: 0.005776, wchange: 0.00864097, angledelta: 143.5
#> Step: 18, lrate: 0.005661, wchange: 0.00868352, angledelta: 151.4
#> Step: 19, lrate: 0.005547, wchange: 0.00660042, angledelta: 42.9
#> Step: 20, lrate: 0.005547, wchange: 0.01898672, angledelta: 126.6
#> Step: 21, lrate: 0.005436, wchange: 0.00272493, angledelta: 108.2
#> Step: 22, lrate: 0.005328, wchange: 0.00398342, angledelta: 77.6
#> Step: 23, lrate: 0.005221, wchange: 0.01164268, angledelta: 96.4
#> Step: 24, lrate: 0.005117, wchange: 0.01717969, angledelta: 107.6
#> Step: 25, lrate: 0.005014, wchange: 0.00344455, angledelta: 128.3
#> Step: 26, lrate: 0.004914, wchange: 0.00302066, angledelta: 87.4
#> Step: 27, lrate: 0.004816, wchange: 0.00714341, angledelta: 172.9
#> Step: 28, lrate: 0.004719, wchange: 0.00412319, angledelta: 153.6
#> Step: 29, lrate: 0.004625, wchange: 0.00120804, angledelta: 146.3
#> Step: 30, lrate: 0.004533, wchange: 0.00222478, angledelta: 64.0
#> Step: 31, lrate: 0.004442, wchange: 0.00231503, angledelta: 143.4
#> Step: 32, lrate: 0.004353, wchange: 0.00176718, angledelta: 64.4
#> Step: 33, lrate: 0.004266, wchange: 0.00763487, angledelta: 177.2
#> Step: 34, lrate: 0.004181, wchange: 0.00671005, angledelta: 161.8
#> Step: 35, lrate: 0.004097, wchange: 0.00247586, angledelta: 82.7
#> Step: 36, lrate: 0.004015, wchange: 0.00237678, angledelta: 112.1
#> Step: 37, lrate: 0.003935, wchange: 0.04654952, angledelta: 126.2
#> Step: 38, lrate: 0.003856, wchange: 0.01065035, angledelta: 168.2
#> Step: 39, lrate: 0.003779, wchange: 0.01068438, angledelta: 40.1
#> Step: 40, lrate: 0.003779, wchange: 0.00564857, angledelta: 138.8
#> Step: 41, lrate: 0.003703, wchange: 0.00243226, angledelta: 128.5
#> Step: 42, lrate: 0.003629, wchange: 0.00206821, angledelta: 135.7
#> Step: 43, lrate: 0.003557, wchange: 0.00350697, angledelta: 95.9
#> Step: 44, lrate: 0.003486, wchange: 0.00714390, angledelta: 120.2
#> Step: 45, lrate: 0.003416, wchange: 0.00625535, angledelta: 165.7
#> Step: 46, lrate: 0.003348, wchange: 0.00652122, angledelta: 129.5
#> Step: 47, lrate: 0.003281, wchange: 0.00163643, angledelta: 163.9
#> Step: 48, lrate: 0.003215, wchange: 0.00255286, angledelta: 102.3
#> Step: 49, lrate: 0.003151, wchange: 0.00278327, angledelta: 164.9
#> Step: 50, lrate: 0.003088, wchange: 0.00142293, angledelta: 12.9
#> Step: 51, lrate: 0.003088, wchange: 0.00502192, angledelta: 119.8
#> Step: 52, lrate: 0.003026, wchange: 0.00585193, angledelta: 153.4
#> Step: 53, lrate: 0.002965, wchange: 0.00942520, angledelta: 146.1
#> Step: 54, lrate: 0.002906, wchange: 0.00124618, angledelta: 131.7
#> Step: 55, lrate: 0.002848, wchange: 0.00174847, angledelta: 121.9
#> Step: 56, lrate: 0.002791, wchange: 0.00062289, angledelta: 96.7
#> Step: 57, lrate: 0.002735, wchange: 0.00087559, angledelta: 38.2
#> Step: 58, lrate: 0.002735, wchange: 0.00823085, angledelta: 160.0
#> Step: 59, lrate: 0.002681, wchange: 0.00103450, angledelta: 152.2
#> Step: 60, lrate: 0.002627, wchange: 0.00298394, angledelta: 31.9
#> Step: 61, lrate: 0.002627, wchange: 0.00197075, angledelta: 120.2
#> Step: 62, lrate: 0.002574, wchange: 0.00079063, angledelta: 130.8
#> Step: 63, lrate: 0.002523, wchange: 0.00014555, angledelta: 70.6
#> Step: 64, lrate: 0.002472, wchange: 0.00027422, angledelta: 160.8
#> Step: 65, lrate: 0.002423, wchange: 0.00058042, angledelta: 57.9
#> Step: 66, lrate: 0.002423, wchange: 0.00110567, angledelta: 155.5
#> Step: 67, lrate: 0.002375, wchange: 0.00401017, angledelta: 138.5
#> Step: 68, lrate: 0.002327, wchange: 0.00103905, angledelta: 167.9
#> Step: 69, lrate: 0.002281, wchange: 0.00074961, angledelta: 110.5
#> Step: 70, lrate: 0.002235, wchange: 0.00126778, angledelta: 122.9
#> Step: 71, lrate: 0.002190, wchange: 0.00084790, angledelta: 171.8
#> Step: 72, lrate: 0.002146, wchange: 0.00023502, angledelta: 115.9
#> Step: 73, lrate: 0.002103, wchange: 0.00118653, angledelta: 110.4
#> Step: 74, lrate: 0.002061, wchange: 0.00415219, angledelta: 153.2
#> Step: 75, lrate: 0.002020, wchange: 0.00066915, angledelta: 154.5
#> Step: 76, lrate: 0.001980, wchange: 0.00269301, angledelta: 38.9
#> Step: 77, lrate: 0.001980, wchange: 0.00078464, angledelta: 140.1
#> Step: 78, lrate: 0.001940, wchange: 0.00090439, angledelta: 31.2
#> Step: 79, lrate: 0.001940, wchange: 0.00042053, angledelta: 65.2
#> Step: 80, lrate: 0.001901, wchange: 0.00193299, angledelta: 109.5
#> Step: 81, lrate: 0.001863, wchange: 0.00039309, angledelta: 86.0
#> Step: 82, lrate: 0.001826, wchange: 0.00058562, angledelta: 62.2
#> Step: 83, lrate: 0.001790, wchange: 0.00059043, angledelta: 167.9
#> Step: 84, lrate: 0.001754, wchange: 0.00044847, angledelta: 114.5
#> Step: 85, lrate: 0.001719, wchange: 0.00019771, angledelta: 149.6
#> Step: 86, lrate: 0.001684, wchange: 0.00030092, angledelta: 156.1
#> Step: 87, lrate: 0.001651, wchange: 0.00132750, angledelta: 168.7
#> Step: 88, lrate: 0.001618, wchange: 0.00057468, angledelta: 95.7
#> Step: 89, lrate: 0.001585, wchange: 0.00026641, angledelta: 145.4
#> Step: 90, lrate: 0.001554, wchange: 0.00240914, angledelta: 58.2
#> Step: 91, lrate: 0.001554, wchange: 0.00027859, angledelta: 94.5
#> Step: 92, lrate: 0.001522, wchange: 0.00058289, angledelta: 64.1
#> Step: 93, lrate: 0.001492, wchange: 0.00010335, angledelta: 173.1
#> Step: 94, lrate: 0.001462, wchange: 0.00005670, angledelta: 106.4
#> Step: 95, lrate: 0.001433, wchange: 0.00057647, angledelta: 88.7
#> Step: 96, lrate: 0.001404, wchange: 0.00030730, angledelta: 157.1
#> Step: 97, lrate: 0.001376, wchange: 0.00025081, angledelta: 108.1
#> Step: 98, lrate: 0.001349, wchange: 0.00021157, angledelta: 121.6
#> Step: 99, lrate: 0.001322, wchange: 0.00025661, angledelta: 80.5
#> Step: 100, lrate: 0.001295, wchange: 0.00028904, angledelta: 147.0
#> Step: 101, lrate: 0.001269, wchange: 0.00052162, angledelta: 140.7
#> Step: 102, lrate: 0.001244, wchange: 0.00051164, angledelta: 142.2
#> Step: 103, lrate: 0.001219, wchange: 0.00010432, angledelta: 170.6
#> Step: 104, lrate: 0.001195, wchange: 0.00002537, angledelta: 94.3
#> Step: 105, lrate: 0.001171, wchange: 0.00024836, angledelta: 135.6
#> Step: 106, lrate: 0.001147, wchange: 0.00006506, angledelta: 134.1
#> Step: 107, lrate: 0.001124, wchange: 0.00009401, angledelta: 57.0
#> Step: 108, lrate: 0.001124, wchange: 0.00014721, angledelta: 83.0
#> Step: 109, lrate: 0.001102, wchange: 0.00011790, angledelta: 124.1
#> Step: 110, lrate: 0.001080, wchange: 0.00017751, angledelta: 75.8
#> Step: 111, lrate: 0.001058, wchange: 0.00009962, angledelta: 132.1
#> Step: 112, lrate: 0.001037, wchange: 0.00008014, angledelta: 71.1
#> Step: 113, lrate: 0.001016, wchange: 0.00006054, angledelta: 112.6
#> Step: 114, lrate: 0.000996, wchange: 0.00006651, angledelta: 46.3
#> Step: 115, lrate: 0.000996, wchange: 0.00018732, angledelta: 114.5
#> Step: 116, lrate: 0.000976, wchange: 0.00005050, angledelta: 101.7
#> Step: 117, lrate: 0.000957, wchange: 0.00005726, angledelta: 52.9
#> Step: 118, lrate: 0.000957, wchange: 0.00000767, angledelta: 163.7
#> Step: 119, lrate: 0.000938, wchange: 0.00004807, angledelta: 78.3
#> Step: 120, lrate: 0.000919, wchange: 0.00007385, angledelta: 92.5
#> Step: 121, lrate: 0.000900, wchange: 0.00005367, angledelta: 133.0
#> Step: 122, lrate: 0.000882, wchange: 0.00001117, angledelta: 166.7
#> Step: 123, lrate: 0.000865, wchange: 0.00000596, angledelta: 85.4
#> Step: 124, lrate: 0.000847, wchange: 0.00020660, angledelta: 99.4
#> Step: 125, lrate: 0.000830, wchange: 0.00003612, angledelta: 132.1
#> Step: 126, lrate: 0.000814, wchange: 0.00003325, angledelta: 74.9
#> Step: 127, lrate: 0.000798, wchange: 0.00006194, angledelta: 164.6
#> Step: 128, lrate: 0.000782, wchange: 0.00006071, angledelta: 159.0
#> Step: 129, lrate: 0.000766, wchange: 0.00001497, angledelta: 93.4
#> Step: 130, lrate: 0.000751, wchange: 0.00005862, angledelta: 53.6
#> Step: 131, lrate: 0.000751, wchange: 0.00001312, angledelta: 67.1
#> Step: 132, lrate: 0.000736, wchange: 0.00010174, angledelta: 97.3
#> Step: 133, lrate: 0.000721, wchange: 0.00003932, angledelta: 146.3
#> Step: 134, lrate: 0.000707, wchange: 0.00001188, angledelta: 39.4
#> Step: 135, lrate: 0.000707, wchange: 0.00003263, angledelta: 109.1
#> Step: 136, lrate: 0.000692, wchange: 0.00000435, angledelta: 113.9
#> Step: 137, lrate: 0.000679, wchange: 0.00003757, angledelta: 98.2
#> Step: 138, lrate: 0.000665, wchange: 0.00000509, angledelta: 101.5
#> Step: 139, lrate: 0.000652, wchange: 0.00001042, angledelta: 92.0
#> Step: 140, lrate: 0.000639, wchange: 0.00000265, angledelta: 122.0
#> Step: 141, lrate: 0.000626, wchange: 0.00001253, angledelta: 142.1
#> Step: 142, lrate: 0.000613, wchange: 0.00001194, angledelta: 111.2
#> Step: 143, lrate: 0.000601, wchange: 0.00002552, angledelta: 136.5
#> Step: 144, lrate: 0.000589, wchange: 0.00002070, angledelta: 110.3
#> Step: 145, lrate: 0.000577, wchange: 0.00000288, angledelta: 89.8
#> Step: 146, lrate: 0.000566, wchange: 0.00000297, angledelta: 133.3
#> Step: 147, lrate: 0.000554, wchange: 0.00001696, angledelta: 123.6
#> Step: 148, lrate: 0.000543, wchange: 0.00000831, angledelta: 21.0
#> Step: 149, lrate: 0.000543, wchange: 0.00001757, angledelta: 157.9
#> Step: 150, lrate: 0.000532, wchange: 0.00000324, angledelta: 87.3
#> Step: 151, lrate: 0.000522, wchange: 0.00001152, angledelta: 137.8
#> Step: 152, lrate: 0.000511, wchange: 0.00001247, angledelta: 63.5
#> Step: 153, lrate: 0.000501, wchange: 0.00000703, angledelta: 98.4
#> Step: 154, lrate: 0.000491, wchange: 0.00000266, angledelta: 105.3
#> Step: 155, lrate: 0.000481, wchange: 0.00000334, angledelta: 57.1
#> ICA running time: 0.139 s