2012-02-21 1 views
5

현재 Matlab을 사용하여 서로 다른 신호를 생성하고 혼합 행렬 A를 곱하여 혼합 한 다음 FastICA을 사용하여 원래 신호를 얻으려고합니다.ICA - 공분산 행렬의 통계적 독립성 및 고유 값

지금까지 복구 된 신호는 원래 예상했던 신호와 비교할 때 정말 좋지 않습니다.

내가 잘못하고 있는지 확인하려고합니다. I가 발생하고있어 신호는 다음과 같다. (진폭 범위 [0,1]에서) ICA 성공하려면

Original Signals

한 상태

s1 = (-x.^2 + 100*x + 500)/3000; % quadratic 
s2 = exp(-x/10); % -ve exponential 
s3 = (sin(x)+ 1) * 0.5; % sine 
s4 = 0.5 + 0.1 * randn(size(x, 2), 1); % gaussian 
s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth 
많아야 하나 개의 신호는 가우시안 있다는 , 나는 이것을 신호 생성에서 관찰했다.

그러나 다른 조건은 모든 신호가 통계적으로 독립적이라는 것입니다.

두 개의 신호 A & B가 주어진다는 것을 알면, 한 신호가 다른 신호와 관련하여 어떤 정보도 제공하지 않는다는 것을 의미합니다. 즉 P (A | B) = P (A) 여기서 P 확률은입니다.

내 질문은 다음과 같습니다. 신호가 통계적으로 독립적입니까? 내가 이것을 결정할 수있는 방법이 있습니까? 아마도 지켜야 할 속성일까요?

내가 발견 한 또 다른 것은

내가 공분산 행렬의 고유 값을 계산하는 경우 (혼합 신호를 포함하는 행렬 계산)이다, eigenspectrum은 하나의 (주) 주성분이 있음을 보여주는 것 같다. 이것이 정말로 무엇을 의미합니까? 내가 5 개의 (아마도) 독립적 인 신호를 가지고 있기 때문에 5가 없어야합니까? 다음 혼합 행렬을 사용하는 경우 예를 들어

:

A = 

0.2000 0.4267 0.2133 0.1067 0.0533 
0.2909 0.2000 0.2909 0.1455 0.0727 
0.1333 0.2667 0.2000 0.2667 0.1333 
0.0727 0.1455 0.2909 0.2000 0.2909 
0.0533 0.1067 0.2133 0.4267 0.2000 

고유 값은 : 0.0000 0.0005 0.0022 0.0042 0.0345 (! 단지 4)

혼합 행렬와 단위 행렬 (즉, 혼합 된 신호가 사용 원본과 동일), 고유함은 0.0103 0.0199 0.0330 0.0811 0.1762입니다. 나머지보다 훨씬 큰 하나의 값이 있습니다.

감사합니다.

내 질문에 대한 답변이 고통 스럽지만 분명히 통계치 인 ICA 및 Matlab에 대해 사과하는 경우 사과드립니다. 다시 한번 감사드립니다.

EDIT - I x = 0:0.1:100 즉, 0.2의 단계에서, 범위 [0.2, 100]에서, 각각의 신호 샘플 (500)을 갖는다. X =으로 + N (나는 순간 소음을 추가하고 있지 않다),하지만 난 즉 eig(cov(X')), X의 전치의 eigenspectrum를 참조하고 다음 ICA 모델을 감안할 때 -

편집 할 수 있습니다.

답변

0

신호가 상호 독립적인지 확인하기 위해 기술 된 것을 볼 수 있습니다. here 일반적으로 두 개의 랜덤 변수는 직각이면 독립적입니다.이것은 다음을 의미합니다. E {s1 * s2} = 0 임의의 변수 s1에 임의의 변수 s2를 곱한 값의 기대치가 0임을 의미합니다. 이 직교성 조건은 통계 및 확률에서 매우 중요하며 모든 곳에서 나타납니다. 불행히도 한 번에 2 개의 변수에 적용됩니다. 다 변수 기술이 있지만 편안함을 느끼지는 못합니다. 내가 팠던 또 다른 링크는 one이었고 응용 프로그램이 무엇인지 확실하지 않았지만 그 논문은 매우입니다. 고유 벡터와

cov(A) = 
0.0619 -0.0284 -0.0002 -0.0028 -0.0010 
-0.0284 0.0393 0.0049 0.0007 -0.0026 
-0.0002 0.0049 0.1259 0.0001 -0.0682 
-0.0028 0.0007 0.0001 0.0099 -0.0012 
-0.0010 -0.0026 -0.0682 -0.0012 0.0831 

, VD가 값 : I는 공분산 행렬을 계산하면

내가 얻을

여기
[V,D] = eig(cov(A)) 

V = 

-0.0871 0.5534 0.0268 -0.8279 0.0063 
-0.0592 0.8264 -0.0007 0.5584 -0.0415 
-0.0166 -0.0352 0.5914 -0.0087 -0.8054 
-0.9937 -0.0973 -0.0400 0.0382 -0.0050 
-0.0343 0.0033 0.8050 0.0364 0.5912 
D = 
0.0097   0   0   0   0 
    0 0.0200   0   0   0 
    0   0 0.0330   0   0 
    0   0   0 0.0812   0 
    0   0   0   0 0.1762 

내 코드입니다 :

x = transpose(0.2:0.2:100); 
s1 = (-x.^2 + 100*x + 500)/3000; % quadratic 
s2 = exp(-x/10); % -ve exponential 
s3 = (sin(x)+ 1) * 0.5; % sine 
s4 = 0.5 + 0.1 * randn(length(x), 1); % gaussian 
s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth 
A = [s1 s2 s3 s4 s5]; 
cov(A) 
[V,D] = eig(cov(A)) 

나를 알고하자 더 이상 도울 수 있습니다.

EDIT 고유 값 및 벡터를 올바르게 참조하면 0.2 샘플링 간격 추가 코드가 사용됩니다.

+0

나는 x = 0.2 : 0.2 : 100을 사용했다. (나는이 원래의 질문에이 디테일을 추가했다. 그것을 지적 해 주셔서 감사한다.) 어떻게 그 공분산 행렬에 왔습니까? 질문에 게시 한 혼합 행렬 A의 공분산 행렬이 다릅니다. 또한 eig (cov (A))를 사용하면 행렬의 고유 벡터가 아닌 고유 값을 얻을 수 있습니다. 이 외에도, 나는 A의 공분산 행렬의 고유 값을 언급하지 않고, 혼합 신호의 공분산 행렬의 고유 값을 언급했습니다. 이 질문을 명확하게하기 위해이 질문에 추가하겠습니다. – Rachel

+0

아, 링크 해 주셔서 감사합니다.하지만 더 자세히 설명해 주시겠습니까? 내가 말했듯이, 나는 통계적인 초보자이다. 많은 신호가 통계적으로 독립적인지 여부를 확인하는 데 사용되는 일반적인 방법이 있는지 알고 싶습니다. – Rachel

+0

의견을 보내 주셔서 감사합니다. 내 문제는 고유치를 계산하는 것이 아니라 고유치가 왜 그런지에 관한 문제였습니다. 고유 값 중 하나가 상대적으로 크다는 것을 알 수 있습니다.통계적으로 독립된 신호의 경우 고유 값이 어느 정도 평등하다고 생각할 수 있습니다. 이것이 사실인지 알고 싶습니다. 또한 신호가 독립적인지 여부를 확인하는 구체적인 방법을 찾지 못했습니다. – Rachel

1

신호가 상호 연관되어 있습니다 (독립적이지는 않습니다). 박쥐 오른쪽에서, 톱니와 사인은 같은 기간입니다. 다른 하나의 완벽한 상관 관계의 가치를 말해 줄 것입니다.

그들 중 하나의 기간을 변경하면 더 독립적이 될 것입니다.

또한 S1과 S2는 약간의 상관 관계가 있습니다.

고유 값에 대해서는 먼저 신호가 독립적이지 않습니다 (위 참조).

둘째, 필터 행렬 A의 컨디션이 좋지 않아서 고유 값이 더 확산됩니다. 그 중입니다

E[ A y y' A' ] = E[ A I A' ] = A A' 

고유 값 : 그래서

eig(A*A') 
ans = 

    0.000167972216475 
    0.025688510850262 
    0.035666735304024 
    0.148813869149738 
    1.042451912479502 

당신이있어

는 완전히 독립적 다섯 파이프하더라도 (IID, 궁시렁 궁시렁) 공분산이 될 것 신호 실제로 모든 신호를 하나의 기본 기능/자유도로 필터링/스 ishing징하고 물론 어떤 방법을 사용하더라도 복구하기가 어렵습니다.

+0

@Nate에 대한 귀하의 의견을 보내 주셔서 감사합니다. 네가 괜찮 으면 몇 가지 질문이있다. 우선, "완전히 독립적 인 5 개의 신호 (iid, yada yada)"가 무엇을 의미합니까? 신호가 실제로 독립적인지 어떻게 알 수 있습니까? 그리고 (iid, yada, yada) 무엇입니까? – Rachel