2016-06-20 174 views
1

岭回归与OLS回归的差异很小。在数学上,OLS回归使用公式在Matlab中的岭回归和OLS回归

enter image description here

其中岭回归使用

enter image description here

我想用岭回归,以避免多重共,但回来这都大幅非常奇怪的结果公式比简单地使用regress()更糟糕。在matlab中,要调用函数脊,必须输入X,Y和k的值。理论上,如果k被设置为零,这些方程应该是相同的;但是当两者都在我的代码中回调时,使用相同的X和Y值,我会得到两个非常不同的B矩阵(如下所示)。有人可以解释为什么会发生?

b_ridge = ridge(Y_current,X, 0) 

    12.4525 
    9.0099 
    0.2808 
    -1.5426 
    -1.1107 

b_regress = regress(Y_current,X) 

    3.5586 
    0.8805 
    0.1670 
    -0.3934 
    -0.8526 
+1

是否可以提供我们对'Y_current'和'X'的想法是? – edwinksl

回答

4

Acording到ridge文档:

结果定心和缩放x列之后计算因而具有平均为0,标准偏差1.

下面是一个使用柱的例子矢量:

>> x = randn(5,1); 
>> y = randn(5,1); 
>> ridge(y, x, 0) 
ans = 
    -0.045681220595243 
>> regress(y, x) 
ans = 
    -0.028738686366027 
>> regress(y, (x-mean(x))/std(x)) 
ans = 
    -0.045681220595243 
+1

感谢您的回答!我正在四处寻找,通过删除放入X的列的比例因子并将缩放因子输入设置为0,可以得到与回归相同的结果。再次感谢! b_regress = regress(Y_current,X); b_ridge = ridge(Y_current,X(:,2:5),0,0); – Schmax