楼主: 我的素质低
10612 43

[学习分享] 〖前人指路〗非线性、逐步回归,MATLAB实现 [推广有奖]

已卖:2774份资源

学术权威

83%

还不是VIP/贵宾

-

TA的文库  其他...

〖素质文库〗

结构方程模型

考研资料库

威望
8
论坛币
23391 个
通用积分
28308.6707
学术水平
2705 点
热心指数
2881 点
信用等级
2398 点
经验
228516 点
帖子
2968
精华
52
在线时间
2175 小时
注册时间
2012-11-24
最后登录
2024-1-13

一级伯乐勋章 初级学术勋章 初级热心勋章 初级信用勋章 中级热心勋章 中级学术勋章 中级信用勋章 高级学术勋章 高级热心勋章 高级信用勋章 特级学术勋章

楼主
我的素质低 学生认证  发表于 2014-10-13 12:41:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

(你Know与不Know,它就在那里)





非线性回归:nlinfit  

+

逐步回归:stepwise







——本帖收录于〖素质文库〗


(四大专题:〖前人指路〗、〖Only one〗、〖On Spss〗、〖On Matlab〗)









一、非线性回归



  1. [beta,r,J]=nlinfit(x,y,'modelfun',beta0)    非线性回归系数的命令
  2. nlintool(x,y,'modelfun',beta0,alpha)    非线性回归GUI界面
复制代码



     1、参数说明



beta:估计出的回归系数;

r:残差;

J:Jacobian矩阵;

x,y:输入数据x、y分别为矩阵和n维列向量,对一元非线性回归,x为n维列向量;

modelfun:M函数、匿名函数或inline函数,定义的非线性回归函数;

beta0:回归系数的初值;





     2、预测和预测误差估计

[Y,DELTA]=nlpredci('modelfun', x,beta,r,J)

获取x处的预测值Y及预测值的显著性为1-alpha的置信区间Y±DELTA





     3、实例演示说明

解:

     (1)对将要拟合的非线性模型,建立M函数如下

  1. function yhat=modelfun(beta,x)
  2. %beta是需要回归的参数
  3. %x是提供的数据
  4. yhat=beta(1)*exp(beta(2)./x);
复制代码


     (2)输入数据

  1. x=2:16;
  2. y=[6.42 8.20 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76];
  3. beta0=[8 2]';
复制代码


     (3)求回归系数

  1. [beta,r ,J]=nlinfit(x',y',@modelfun,beta0);
  2. beta
  3. beta =
  4.               11.6036
  5.               -1.0641
复制代码


     即得回归模型为 图片1.png





     (4)预测及作图



  1. [YY,delta]=nlpredci('modelfun',x',beta,r ,J);
  2. plot(x,y,'k+',x,YY,'r')
复制代码



图片2.jpg



     二、逐步回归


     逐步回归的命令



stepwise(x,y,inmodel,alpha)  根据数据进行分步回归

stepwise     直接调出分步回归GUI界面

     输入参数说明

x:自变量数据, 阶矩阵;

y:因变量数据, 阶矩阵;

inmodel:矩阵的列数的指标,给出初始模型中包括的子集(缺省时设定为全部自变量);

alpha:显著性水平(缺省时为0.5);




     2、实例演示分析


水泥凝固时放出的热量y与水泥中4种化学成分x1、x2、x3、 x4有关,今测得一组数据如下,试用逐步回归法确定一个线性模型

图片3.png

      



     1、数据输入

  1. x1=[7 1 11 11 7 11 3 1 2 21 1 11 10]';
  2. x2=[26 29 56 31 52 55 71 31 54 47 40 66 68]';
  3. x3=[6 15 8 8 6 9 17 22 18 4 23 9 8]';
  4. x4=[60 52 20 47 33 22 6 44 22 26 34 12 12]';
  5. y=[78.5 74.3 104.3 87.6 95.9 109.2 102.7 72.5 93.1 115.9 83.8 113.3 109.4]';
  6. x=[x1 x2 x3 x4];
复制代码


     2、逐步回归



①先在初始模型中取全部自变量




  1. stepwise(x,y)
复制代码


图片4.jpg



——MATLAB技术论坛




Fantuanxiaot 坛友 补充的非线性回归中的稳健回归!!


函数

  1. function S=Nonlinearmodel(beta,x)
  2. S=beta(1)*exp(beta(2)*x);
复制代码






主程序

  1. x=[10:0.5:20]';
  2. y=2*exp(0.5*x)+normrnd(0,1,21,1);
  3. beta0=[1 1]';
  4. options=statset('MaxIter',200,'Robust','on','WgtFun','huber');
  5. [beta,resid,jacobimatrix,covbeta,MSE]=nlinfit(x,y,'Nonlinearmodel',beta0,options);%非线性稳健回归
  6. [yy,delta]=nlpredci('Nonlinearmodel',x,beta,resid,'jacobian',jacobimatrix);
  7. ci=nlparci(beta,resid,jacobimatrix);
  8. nlintool(x,y,'Nonlinearmodel',beta0,0.05);
复制代码






基于内联函数的例子

  1. [free]x=poissrnd(2,30,1);
  2. y=poissrnd(3,30,1);
  3. X=[x y];
  4. Z=2*exp(x+y)+rand(30,1);
  5. beta0=[1.6 1.2 1.4];
  6. EXPFUN=inline('b(1)*exp(b(2)*G(:,1)+b(3)*G(:,2))','b','G');
  7. options=statset('MaxIter',200,'Robust','on','WgtFun','huber');
  8. [beta,resid,jacobimatrix,covbeta,MSE]=nlinfit(X,Z,EXPFUN,beta0,options);
  9. ci=nlparci(beta,resid,jacobimatrix);
  10. [yy,delta]=nlpredci(EXPFUN,X,beta,resid,'jacobian',jacobimatrix);[/free]
复制代码







二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:matlab实现 MATLAB matla atlab 逐步回归

已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
lixuewei3 + 60 + 1 + 1 精彩帖子
日新少年 + 2 + 2 + 2 精彩帖子
fantuanxiaot + 5 + 5 + 5 + 5 精彩帖子
观世鹰 + 40 + 2 + 2 精彩帖子

总评分: 经验 + 100  论坛币 + 5  学术水平 + 10  热心指数 + 10  信用等级 + 7   查看全部评分

本帖被以下文库推荐

心晴的时候,雨也是晴;心雨的时候,晴也是雨!
扣扣:407117636,欢迎一块儿吐槽!!

沙发
fantuanxiaot 发表于 2014-10-14 13:10:55

回帖奖励 +1

好!!!!!!!!!!

藤椅
fantuanxiaot 发表于 2014-10-14 13:16:25
我再接着版主补充一下 非线性回归中的稳健回归!


函数
function S=Nonlinearmodel(beta,x)
S=beta(1)*exp(beta(2)*x);



主程序
x=[10:0.5:20]';
y=2*exp(0.5*x)+normrnd(0,1,21,1);
beta0=[1 1]';
options=statset('MaxIter',200,'Robust','on','WgtFun','huber');
[beta,resid,jacobimatrix,covbeta,MSE]=nlinfit(x,y,'Nonlinearmodel',beta0,options);%非线性稳健回归
[yy,delta]=nlpredci('Nonlinearmodel',x,beta,resid,'jacobian',jacobimatrix);
ci=nlparci(beta,resid,jacobimatrix);
nlintool(x,y,'Nonlinearmodel',beta0,0.05);



基于内联函数的例子
x=poissrnd(2,30,1);
y=poissrnd(3,30,1);
X=[x y];
Z=2*exp(x+y)+rand(30,1);
beta0=[1.6 1.2 1.4];
EXPFUN=inline('b(1)*exp(b(2)*G(:,1)+b(3)*G(:,2))','b','G');
options=statset('MaxIter',200,'Robust','on','WgtFun','huber');
[beta,resid,jacobimatrix,covbeta,MSE]=nlinfit(X,Z,EXPFUN,beta0,options);
ci=nlparci(beta,resid,jacobimatrix);
[yy,delta]=nlpredci(EXPFUN,X,beta,resid,'jacobian',jacobimatrix);

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
zbin7451f + 100 + 5 + 5 + 5 精彩帖子
我的素质低 + 100 + 30 + 5 + 5 + 5 对论坛有贡献

总评分: 经验 + 200  论坛币 + 30  学术水平 + 10  热心指数 + 10  信用等级 + 10   查看全部评分

板凳
fantuanxiaot 发表于 2014-10-14 13:18:19

回帖奖励 +1

报纸
lilinzdn 发表于 2014-10-15 21:34:10

回帖奖励 +1

谢谢分享

地板
lilinzdn 发表于 2014-10-15 21:36:41

回帖奖励 +1

顶一下

7
lyl335759155 发表于 2014-10-16 22:54:16

回帖奖励 +1

顶一下

8
lyl335759155 发表于 2014-10-16 22:55:25

回帖奖励 +1

谢谢分享

9
gaojianwqjk 发表于 2014-10-23 00:26:48

回帖奖励 +1

10
★德古拉斯 发表于 2014-10-31 10:33:47
很好很强大

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 03:40