Wobec braku dobrych wstępnych domysłów na temat liczby komponentów, które należy zamówić w niezależnej analizie komponentów, chcę zautomatyzować proces selekcji. Myślę, że rozsądnym kryterium może być liczba, która minimalizuje globalne dowody korelacji między obliczonymi składnikami. Oto pseudokod tego podejścia:
for each candidate number of components, n:
run ICA specifying n as requested number of components
for each pair (c1,c2) of resulting components:
compute a model, m1: lm(c1 ~ 1)
compute a model, m2: lm(c1 ~ c2)
compute log likelihood ratio ( AIC(m2)-AIC(m1) ) representing the relative likelihood of a correlation between c1 & c2
compute mean log likelihood ratio across pairs
Choose the final number of components as that which minimizes the mean log likelihood of component relatedness
Uważam, że powinno to automatycznie karać kandydatów większych niż „prawdziwa” liczba składników, ponieważ ICA wynikające z takich kandydatów powinny być zmuszone do rozpowszechniania informacji z pojedynczych prawdziwych składników wśród wielu szacowanych składników, zwiększając średni dowód korelacji między parami składników.
Czy to ma sens? Jeśli tak, to czy istnieje szybszy sposób na uzyskanie zagregowanej miary pokrewieństwa między szacowanymi składnikami niż sugerowane powyżej podejście do średniej logarytmicznej (które może być dość powolne obliczeniowo)? Jeśli to podejście nie ma sensu, jak mogłaby wyglądać dobra alternatywna procedura?