我有一个变量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而不是其他2个变量。我如何量化这种依赖性?
提前谢谢。
编辑:这就是我的意思"量化"或"相关性"。我想检测哪个变量确定了y的非常小的变化,即在前面的例子中,x2和x3使y的变化小于x1。
答案 0 :(得分: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