2016-02-01 2 views
0

У меня есть разреженная матрица A(m,n), где n - это переменные и m наблюдения. Я хочу вычислить корреляцию Пирсона среди всех n переменных.Вычислить корреляцию Пирсона, избегая нулевых значений

У меня есть некоторые недостающие наблюдения, например. если A(2,3) недоступен, это означает, что у меня нет такого наблюдения, поэтому, если, например, мне нужно вычислить корреляцию между столбцом 3 и столбцом 4, я должен отказаться от строки 2, даже если доступен A(2,4). Вот как обычно вычисляется корреляция Пирсона.

В MATLAB вместо функции corrcoef() учитываются все значения, в том числе отсутствующие (которые считаются нулями). Есть ли простой способ избежать этого? Очень похожий вопрос можно найти здесь Pearson Correlation without using zero element in Matlab, но рабочее решение предоставляется только для сравнения между двумя векторами, а не для общей матрицы A(m,n), где n > 2.

ответ

0

Jonas's answer на вопрос, который вы связаны работы для вас, а если вы обобщать:

Col1 = 2; 
Col2 = 3; 
A=magic(3); A(1,1)=0; 
gooddata = A(:,Col1)~=0 & A(:,Col2)~=0; 
pearson = corr(A(gooddata,Col1),A(gooddata,Col2)); 

Таким образом, петельные было бы:

for ii = 1:length(A(1,:)) 
    for jj = ii:length(A(1,:)) 
     gooddata = A(:,ii)~=0 & A(:,jj)~=0; 
     pearson(ii,jj) = corr(A(gooddata,ii),A(gooddata,jj)); 
    end 
end 
+0

Я не уверен, что если бы я получил ответ на свой вопрос, Мне не нужно, чтобы все элементы были равны нулю, мне нужно сохранить строки, в которых оба значения для двух столбцов, которые я рассматриваю, не равны нулю. Если я попробую ваш код, добавив в матрицу нулевой элемент: a = magic (3); а (1,1) = 0; то a (~ any (a, 1)) дает мне пустую матрицу – Eugenio

+0

Спасибо, но это не дает решения проблемы: в вашем примере, когда я вычисляю корреляцию между col 2 и 3, мне нужны все три строки, но первый из них был удален из-за нуля в A (1,1) – Eugenio

+0

, это работает для вычисления одной корреляции, я должен вычислить корреляции для большой матрицы с тысячами столбцов, и я ищу простой способ сделать это без петель – Eugenio

Смежные вопросы