Корреляция зависит от образцов

У меня есть переменная y, которая зависит от некоторых переменных x1 ∈ [x1_min,x1_max], x2 ∈ [x2_min,x2_max], x3 ∈ [x3_min,x3_max], и y также может быть матрицей, то есть y=y(x1,x2,x3). Я хочу определить, какие из x1, x2, x3 менее актуальны для определения значения y.

Я использую следующий код в Matlab:

x = rand(1000,3);  % x1, x2, x3 are the columns of x
y = fct(x);    % A generic function of x1, x2, x3
[corr_mat, p_val] = corrcoef(x,y);
[i,j] = find(p_val > 0.5);
disp([i,j])

Проблема в том, что полученные индексы сильно зависят от случайных выборок (даже если я увеличу количество выборок). Как я могу получить более точную меру?

В качестве простого альтернативного примера y=x1+x2+x3, с x1∈[50,80], x2∈[0,1], x3∈[0,1]. Ясно, что значение y зависит гораздо больше от x1, чем от двух других переменных. Как мне определить эту зависимость?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Вот что я имею в виду с "количественной оценки" или "актуальность". Я хочу определить, какая переменная определяет очень небольшие изменения в y, то есть в предыдущем примере x2 и x3 заставляют y меняться меньше, чем x1.

1 ответ

Вам нужно использовать ковариацию, а не коэффициент корреляции. Коэффициент корреляции нормализуется по дисперсии каждой переменной, чтобы придать одинаковый вес всем переменным, когда они имеют разные диапазоны, и это именно то, чего вы хотите избежать.

x1 = 50+30*rand(1000,1); 
x2 = rand(1000,1); 
x3 = rand(1000,1); 

y = x1+x2+x3;

c=cov([x1 x2 x3 y]);
c(1:3,4) % Covariances of x[1-3] and y
Другие вопросы по тегам