岭回归分析matlab

岭回归分析是一种专用于多重共线性数据分析的有偏估计回归方法,是最小二乘回归的改良版本。

过程:

画出岭迹图,选出零参数k

①复习size函数

size():获取矩阵的行数和列数

(1)s=size(A),

当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。
(2)[r,c]=size(A),

 当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。

(3)size(A,n)

如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数, c=size(A,2) 该语句返回的时矩阵A的列数。

②给出样本点

xx1=[0.455 0.35 0.53 0.44 0.33 0.425 0.53 0.545 0.475 0.55 0.525 0.43 0.49 0.535 0.47 0.5 0.355 0.44]
xx2=[0.365 0.265 0.42 0.365 0.255 0.3 0.415 0.425 0.37 0.44 0.38 0.35 0.38 0.405 0.355 0.4 0.28 0.34]
xx3=[0.095 0.09 0.135 0.125 0.08 0.095 0.15 0.125 0.125 0.15 0.14 0.11 0.135 0.145 0.1 0.13 0.085 0.1]
x1=xx1.'
x2=xx2.'
x3=xx3.'

x4=[0.514;0.2255;0.677;0.516;0.205;0.3515;0.7775;0.768;0.5095;0.8945;0.6065;0.406;0.5415;0.6845;0.4755;0.6645;0.2905;0.451]
x5=[0.2245;0.0995;0.2565;0.2155;0.0895;0.141;0.237;0.294;0.2165;0.3145;0.194;0.1675;0.2175;0.2725;0.1675;0.258;0.095;0.188]
x6=[0.101;0.0485;0.1415;0.114;0.0395;0.0775;0.1415;0.1495;0.1125;0.151;0.1475;0.081;0.095;0.171;0.0805;0.133;0.0395;0.087]
x7=[0.15;0.07;0.21;0.155;0.055;0.12;0.33;0.26;0.165;0.32;0.21;0.135;0.19;0.205;0.185;0.24;0.115;0.13]
y=[15;7;9;10;7;8;20;16;9;19;14;10;1;10;10;12;7;10]

x=[x1,x2,x3,x4,x5,x6,x7]

(这里错了个知识点,[]方括号中有逗号或者无符号的为一行,有分号的为各个列)

③ridge函数

b=ridge(y,x,k,s);
%b是岭回归模型中的系数向量β=[β0,β1,β2,...,βn],β0是常数项,β1到βn是自变量x1到xn对应的系数
%y是因变量向量
%x是自变量矩阵,x=[x1,...,xn],每个xi都是列向量
%k是岭参数,岭参数不同,岭回归模型不同,要选取合适的岭参数
%s这个位置的参数只能填0或1,或者不填默认为0。0表示输出的系数β该是多少就是多少,1表示输出系数β是标准化后的
④画出岭迹图

%先画出岭迹图,以便选取合适的岭参数
k=0:1e-3:10;%岭参数 1e-3 表示1*10^(-3);
b=ridge(y,x,k);%回归系数

%岭迹图,一般选取开始平稳的“拐点”处的k值
plot(k,b)
xlabel('k')
ylabel('β')
title('岭迹图')
legend('x1','x2','x3','x4','x5','x6','x7')

图像如下:

可近似选出零参数为2(喇叭口处)。

 ⑤根据方差扩大因子法求零参数

 

暂且存疑。

但有篇文章利用python第三方库,做出来了。 

岭回归和LASSO回归模型(简记Logistic回归分类模型)_lasso回归和logistic回归_积跬步,慕至千里的博客-CSDN博客⑥利用残差平方和来求岭参数

β^是RSS残差平方和

%每个k对应的残差平方和的图,要选取会使残差平方和小的k值
knum=size(b,2);%返回b矩阵的列数
sse=zeros(knum);
y_gu=zeros(18,knum);%zero(x,y)返回x行y列的全为0的矩阵
for j=1:knum
    t=0;
    for i=1:18
        y_gu(i,j)=b(1,j)*x1(i)+b(2,j)*x2(i)+b(3,j)*x3(i)+b(4,j)*x4(i)+b(5,j)*x5(i)+b(6,j)*x6(i)+b(7,j)*x7(i);
        t=(y_gu(i,j)-y(i))^2+t;
    end
    sse(j)=t;
end

plot(k,sse)
xlabel('k')
ylabel('SSE')
title('残差平方和与k的关系图')

这里t即为:

 β0为0。

得出图像

可看出k=2时候残差平方和最小。

 ⑦根据岭参数求拟合函数

%下面均是岭参数k=2情况
b1=ridge(y,x,2,0);%2是岭参数。最后一个位置的参数,是否输出标准化系数,0否1是
y_gu=[[ones(18,1),x(:,:)]*b1];%用岭回归模型求出来的函数估计值(向量)

b1是岭回归参数

 为什么要加一列全为1的向量?得出y的结果的系数如下:

11.2317152350659
6.09727532479928
11.9127174239283
9.62296971804759
6.17090651801044
8.62880671936201
16.1156780913486
15.4469422021247
9.41259458592154
16.6098515895808
11.5302004721925
8.16479225956399
8.87073169971142
12.0733941422319
10.9864518842157
13.4428431274547
8.32613853121737
9.35599047522341

  • 23
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值