数模:线性回归初探

线性回归自己以前是用过了啦,效果也不错,不过在公共选修课上发现自己在规范上仍有所欠缺。。

所以还是来复习一下。。


在此之前发现这个专题其实也没那么简单。。还是有很深的学问,贴个链接以后学习。。

http://blog.163.com/shikang999@126/blog/static/172624896201463111856714/


首先是线性回归:

%线性回归
x=[4.0 4.0 4.8 5.4 6.0 6.0 7.0 7.2 7.6 8.0 9.0 10]';
n=length(x);
X=[ones(n,1) x];
Y=[3.0 3.8 2.6 2.8 2.0 2.9 1.9 2.2 1.9 1.2 1.5 1.6]';
b=regress(Y,X);
yhat=b(1)+b(2).*x;
yave=sum(Y)/n;

%显著性分析所需数据
sqr=@(x) x.*x
SR=sum(sqr(yhat-yave));
SE=sum(sqr(Y-yhat));

%作图直观感受效果
scatter(x,Y,7,'k','filled');
hold on;
plot(x,yhat);


主要是regress函数,里面还带了很多参数的,其中有相关指数残差置信区间等。。然而窝不会用。。。


然后主要是显著性分析啦。。

公选课上给了这么一张表


这个被称为显著性分析必出现的分析表,把这表分析完就能直接得结论,简介明了。。

N为样本容量,然后其他参数见下图


上面的程序已经把SR和ST算出来了,剩下就是套公式填完其他表。。

然后还有一个显著性一栏,这个是要查表的。。该值表示,可以直接在概率论附录查。。


最后关于预测,和之前不用,我们预测出来的不应该是一个值,而是一个估计区间,估计区间为(y-d,y+d)

其中y为预测值

d计算方法如下:


当N足够大时,还可用如下公式进行近似计算:


α为实际值超出区间的概率,其取值取决于题目要求吧




然后线性回归就差不多这样。。接下来是非线性回归。。。

先上代码。。

%非线性回归
x=[2.0 3.0 4.5 5.4 6.0 6.8 7.6 8.2 9.5 10]';
y=[2.1 1.9 3.2 4.1 3.1 4.3 4.0 4.6 3.9 4.5]';
n=length(x);
beta0=[1 2]';
f=@(beta,x)  beta(1)+beta(2).*log(x)
[beta,r,J]=nlinfit(x,y,f,beta0);
yhat=f(beta,x);
yave=sum(y)./n;


%显著性分析所需数据
sqr=@(x) x.*x
SR=sum(sqr(yhat-yave));
SE=sum(sqr(y-yhat));

%作图显示效果
scatter(x,y,5,'k','filled');
hold on;
plot(x,f(beta,x));

主要是nlinfit来进行拟合,这个函数的过程窝猜是通过一步步逼近答案的方式得到近似解。。因为需要给定一个初始的beta解。。然后这个beta的给定据说会影响求解的快慢。。其实咱们求解也并不需要多快。。

nlinfit的返回值除了系数beta之外。。还有r和J不过窝不会用就是。。还是打表好。。

然后最麻烦的当然是函数的选取。。这个函数的选取一般取几个类型。。分别是:

  1. 双曲线函数
  2. 幂函数
  3. 指数函数
  4. 负指数函数
  5. 对数函数
  6. 逆函数
  7. S型曲线

(这几个函数的图像待补充。。)










事实上拟合的过程中并不需要太精准。。大概趋势相同就行。。毕竟例题给的拟合效果貌似也不是太好。。其实也没必要太好,不然也会出现过拟合的情况。。




猜你喜欢

转载自blog.csdn.net/qkoqhh/article/details/80110980