[学习笔记]多元线性回归的matlab实现

1. Matlab函数
函数:regress [b,bint,r,rint,stats]=regress(y,x);
参数:x、y
X:矩阵x表示预测变量,要注意的是如果有常数项,要在矩阵x中包含一个由1构成的列。通常的处理是 x = [ones(n,1),x1] x1表示原有的预测变量,n表示数据的组数。
返回值:b、bint、r、rint、stats
b:多元线性回归的系数估计值
bint:还返回系数估计值的 95% 置信区间的矩阵 bint。
r :还返回由残差组成的向量 r。
rint :返回矩阵 rint,其中包含可用于诊断离群值的区间。
Stats:返回向量 stats,其中包含 R2 统计量、F 统计量及其 p 值,以及误差方差的估计值。
矩阵 X 必须包含一个由 1 组成的列,以便软件正确计算模型统计量。

2.实现简单的一元线性回归
例1. 合金的强度 y 与其中的碳含量 x 有比较密切的关系,今从生产中收集了一批数据如下表 1
%x=[0.1:0.01:0.18]’;
%y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0]’;
[学习笔记]多元线性回归的matlab实现_第1张图片

x=0.1:0.01:0.18; y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0]; x1=[0.1:0.01:0.18]'; y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0]'; x=[ones(9,1),x1]; 
[b,bint,r,rint,stats]=regress(y,x); 
x=0.1:0.01:0.18; y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0]; b=b';x_0=0.1:0.01:0.18;
 y_0=b(2)*x+b(1); 
 plot(x,y,'+',x_0,y_0)

[学习笔记]多元线性回归的matlab实现_第2张图片
[学习笔记]多元线性回归的matlab实现_第3张图片

分析:beta0=27.4722,beta1=137.5000
置信区间是beta0[18.6851,36.2594],beta1[75.7755,199.2245];R2=0.7985,F = 27.7469, p = 0.0012,S2=4.0883。

3. 以此类推到多元线性回归
例 2 某厂生产的一种电器的销售量 y 与竞争对手的价格 1 x 和本厂的价格 2 x 有关。表 2 是该商品在 10 个城市的销售记录。试根据这些数据建立 y 与 1 x 和 2 x 的关系式,对得到的模型和系数进行检验。若某市本厂产品售价 160(元),竞争对手售价 170(元),预测商品在该市的销售量。

x1=[120 140 190 130 155 175 125 145 180 150]';
 x2=[100 110 90 150 210 150 250 270 300 250]'; 
 y=[102 100 120 77 46 93 26 69 65 85]'; 	x=[ones(10,1),x1,x2];
  [b,bint,r,rint,stats]=regress(y,x); b,bint,stats

你可能感兴趣的:(matlab,数学建模)