Корреляция зависит от образцов
У меня есть переменная 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