[回归分析][13]--岭回归

[回归分析][13]--岭回归

  这一次讲一下用mathematica来做岭回归。
  岭回归的作用也是为了消除变量间的相关性的。

  说一下步骤:
  1.先对数据进行长度单位化(即均值为0,长度为1)
  2.构造新的变量,如:
    
  3.对新的变量做普通最小二乘,画出岭迹图,确定k(0<k<1)。
  4.系数转化
  

例子:
下面为这次例子的数据
{{149.3, 4.2, 108.1, 15.9}, {161.2, 4.1, 114.8, 16.4}, {171.5, 3.1, 
  123.2, 19.}, {175.5, 3.1, 126.9, 19.1}, {180.8, 1.1, 132.1, 
  18.8}, {190.7, 2.2, 137.7, 20.4}, {202.1, 2.1, 146., 22.7}, {212.4, 
  5.6, 154.1, 26.5}, {226.1, 5., 162.3, 28.1}, {231.9, 5.1, 164.3, 
  27.6}, {239., 0.7, 167.6, 26.3}}

1.对数据长度单位化
datastd = Transpose[data];
datastd = datastd[[#]] - Mean[datastd[[#]]] & /@ {1, 2, 3, 4};
datastd = Normalize[datastd[[#]]] & /@ {1, 2, 3, 4};
datastd = Transpose[datastd]

2.构造新的变量
aa = DiagonalMatrix[Table[Sqrt[k], 3]];
bb = Map[Append[#, 0] &, aa, 1];
cc = Join[datastd, bb];
cc // TableForm

3.画出岭迹图,确定k
xishu = LinearModelFit[cc /. {k -> #}, {x1, x2, x3}, {x1, x2, x3}, 
      IncludeConstantBasis -> False]["BestFitParameters"] & /@ 
   Table[i, {i, 0, 1, 0.01}];
ListPlot[Transpose[xishu], PlotRange -> All, ImageSize -> Large, 
 PlotLegends -> Automatic]

可以看到大概在第四点后开始平稳,即k=0.04

4.计算原系数
xishu = LinearModelFit[cc /. {k -> 0.04}, {x1, x2, x3}, {x1, x2, x3}, 
    IncludeConstantBasis -> False]["BestFitParameters"];
{b1, b2, b3} = (StandardDeviation[data[[All, -1]]]/
      StandardDeviation[data[[All, #]]])*xishu[[#]] & /@ {1, 2, 3}
Mean[data[[All, -1]]] - b1*Mean[data[[All, 1]]] - 
 b2*Mean[data[[All, 2]]] - b3*Mean[data[[All, 3]]]


以上,所有
2016/12/18


转载于:https://www.cnblogs.com/wmn7q/p/7265532.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值