[已解决] 利用1stOpt1.5 pro来进行多元非线性拟合

[复制链接]
Pointee 发表于 2016-5-13 15:44:18
本帖最后由 Pointee 于 2016-5-13 17:02 编辑

下面是主程序:

Variable y,x1,x2,x3,x4,x5;
Function y=beta0+x1*beta1+x2*beta2+Sqrt(x3)*beta3+Sqrt(x4)*beta4+Ln(x5)*beta5;

Data;
5910        9450.3                4.6        371600        179544                9380
7950        10599.5           6.2        595550        340040            27216
9400        12400.09          7.3        668900        432077                   74429
11100        14258.87          8.5        694200        1096924           136106
13700        16602.08          10.5        843000        4109020           256696
21000        20337.08          16        1503800        11931277          368927
29800        23912.02          22.6        2878000        16826198          640287
38400        25962.56          28.9        3231838        16818401          866367.2
45730        30567.5           34.3        1908122        8656525           1098957
51310        36017.61          38.3        2300000        7748459           1389529
56400        39544.31          42.1        2680702        13412079          1890792
61758        43320.13          45.8        3201625        18440611          3406824
64875        46628.51          47.9        3348926        20600526          4118663
68826        52116.83          50.3        4230000        31020514          5392116

由于我是初次使用1stOpt这个软件,对于运行的结果不是太确定,希望懂的大神能帮我看看。主要是看这5个变量和y拟合的怎么样,相关性如何;请大神指导一二;

QQ截图20160513170535.png
QQ截图20160513170558.png

5程序.txt

809 Bytes, 下载次数: 177

最佳答案


jingzhaos 发表于 2016-5-13 19:43:34
  1. y=data(:,1);
  2. x=data(:,2:end);
  3. x(:,3)=sqrt(x(:,3));
  4. x(:,4)=sqrt(x(:,4));
  5. x(:,5)=log(x(:,5));
  6. stepwisefit(x,y)
复制代码

结果:
  1. Initial columns included: none
  2. Step 1, added column 2, p=3.147e-23
  3. Step 2, added column 1, p=0.000673942
  4. Step 3, added column 5, p=0.0076509
  5. Final columns included:  1 2 5
  6.     'Coeff'         'Std.Err.'    'Status'    'P'         
  7.     [    0.1414]    [  0.0204]    'In'        [4.0675e-05]
  8.     [1.2700e+03]    [ 17.3076]    'In'        [5.3925e-15]
  9.     [    0.1492]    [  0.2813]    'Out'       [    0.6086]
  10.     [    0.0070]    [  0.0701]    'Out'       [    0.9221]
  11.     [ -217.5908]    [ 65.3930]    'In'        [    0.0077]
  12. b =
  13.    1.0e+03 *
  14.     0.0001
  15.     1.2700
  16.     0.0001
  17.     0.0000
  18.    -0.2176
复制代码

18 条回复


Pointee 发表于 2016-5-13 16:00:25
不好意思,data数据格式有点问题,我重新上传txt'文件

jingzhaos 发表于 2016-5-13 16:21:00
你这也没有x1什么事儿呀?

Pointee 发表于 2016-5-13 17:02:58
jingzhaos 发表于 2016-5-13 16:21
你这也没有x1什么事儿呀?

谢谢提醒,已经修改过来了。

jingzhaos 发表于 2016-5-13 17:33:51
总体效果不错,不过没有单因素的影响情况

Pointee 发表于 2016-5-13 18:03:57
jingzhaos 发表于 2016-5-13 17:33
总体效果不错,不过没有单因素的影响情况

请问“没有单因素的影响情况”是什么意思?是指变量间没有相关性吗?我现在的问题是需要用BP网络来映射这个关系模型,请问这5个变量能作为输入节点吗?

jingzhaos 发表于 2016-5-13 18:18:02
我的意思是 有的变量对模型影响不大,相关性差,可以从模型中可以除去。对BP神经网络不熟悉。

Pointee 发表于 2016-5-13 19:16:30
哦,首先第一个问题:相关性差您指的是beta系数太小的那三个变量吗?beta1,beta3,beta4这三个系数对应的变量吗?
QQ截图20160513170558.png

jingzhaos 发表于 2016-5-13 19:43:34
  1. y=data(:,1);
  2. x=data(:,2:end);
  3. x(:,3)=sqrt(x(:,3));
  4. x(:,4)=sqrt(x(:,4));
  5. x(:,5)=log(x(:,5));
  6. stepwisefit(x,y)
复制代码

结果:
  1. Initial columns included: none
  2. Step 1, added column 2, p=3.147e-23
  3. Step 2, added column 1, p=0.000673942
  4. Step 3, added column 5, p=0.0076509
  5. Final columns included:  1 2 5
  6.     'Coeff'         'Std.Err.'    'Status'    'P'         
  7.     [    0.1414]    [  0.0204]    'In'        [4.0675e-05]
  8.     [1.2700e+03]    [ 17.3076]    'In'        [5.3925e-15]
  9.     [    0.1492]    [  0.2813]    'Out'       [    0.6086]
  10.     [    0.0070]    [  0.0701]    'Out'       [    0.9221]
  11.     [ -217.5908]    [ 65.3930]    'In'        [    0.0077]
  12. b =
  13.    1.0e+03 *
  14.     0.0001
  15.     1.2700
  16.     0.0001
  17.     0.0000
  18.    -0.2176
复制代码
回复此楼

Pointee 发表于 2016-5-14 00:47:51

这是把x3和x4剔除掉了吗?不好意思啊,刚刚接触回归分析,并不是很懂这些参数的含义

jingzhaos 发表于 2016-5-14 06:16:19
是这个意思。

Pointee 发表于 2016-5-14 11:46:51

非常感谢大神对问题耐心的回复

Pointee 发表于 2016-5-15 12:24:13

大神,我又重新修改了模型,顺便附上1stOpt代码:
Title "Nlinfit";

Variable y,x1,x2,x3,x4,x5;
Function y=beta0+x1*beta1+x2*beta2+Sin(x3*beta3+pi/4)*beta4+Sin(x4*beta5+pi/4)*beta6+Ln(x5)*beta7;

Data;
210        6834.8                0.17        5300                18396                143
890        7199.3                0.71        15153                48695                351
2250        7902.2                1.8        265405                122099                2799
3370        8670.1                2.6        277100                127319                7597.5
5910        9450.3                4.6        371600                179544                9380
7950        10599.5           6.2        595550                340040            27216
9400        12400.09          7.3        668900                432077                   74429
11100        14258.87          8.5        694200                1096924           136106
13700        16602.08          10.5        843000                4109020           256696
21000        20337.08          16        1503800                11931277          368927
29800        23912.02          22.6        2878000                16826198          640287
38400        25962.56          28.9        3231838                16818401          866367.2
45730        30567.5           34.3        1908122                8656525           1098957
51310        36017.61          38.3        2300000                7748459           1389529
56400        39544.31          42.1        2680702                13412079          1890792
61758        43320.13          45.8        3201625                18440611          3406824
64875        46628.51          47.9        3348926                20600526          4118663
68826        52116.83          50.3        4230000                31020514          5392116


然后我用拟合得到的beta3,和beta5 在matlab里面来做逐步回归分析:
y=data(:,1);
x=data(:,2:end);
beta = [0.000151838938962941,0.000150968438164523];


x(:,3)=sin(beta(1)*x(:,3)+pi./4);
x(:,4)=sin(beta(2)*x(:,4)+pi./4);

x(:,5)=log(x(:,5));
stepwisefit(x,y)


结果:
Initial columns included: none
Step 1, added column 2, p=8.75718e-31
Step 2, added column 1, p=0.00049773
Step 3, added column 5, p=0.000311133
Step 4, added column 4, p=0.0489698
Step 5, added column 3, p=0.00129795
Final columns included:  1 2 3 4 5
    'Coeff'         'Std.Err.'    'Status'    'P'         
    [    0.1806]    [  0.0150]    'In'        [4.8333e-08]
    [1.2176e+03]    [ 13.8305]    'In'        [3.0806e-18]
    [  162.4628]    [ 38.9539]    'In'        [    0.0013]
    [  273.8913]    [ 56.7451]    'In'        [4.1430e-04]
    [  -73.3497]    [ 17.6241]    'In'        [    0.0013]


ans =

   1.0e+03 *

    0.0002
    1.2176
    0.1625
    0.2739
   -0.0733


这又说明了什么问题呢?原来剔除的x3,x4现在又相关了吗?

jingzhaos 发表于 2016-5-15 12:44:01
这与你的处理有关,你原来对x3好象是开方,现在是正弦处理后的结果完全不一样

Pointee 发表于 2016-5-15 12:57:48
jingzhaos 发表于 2016-5-15 12:44
这与你的处理有关,你原来对x3好象是开方,现在是正弦处理后的结果完全不一样 ...

对的,原来的模型是开方,现在我观察了x3对于与y的散点图后觉得可能正弦更能符合。但是这个逐步分析的p值能说明现在所有的变量对这个模型都是相关的吗?相关性如何?烦请大神解释一下

jingzhaos 发表于 2016-5-15 13:10:35
本帖最后由 jingzhaos 于 2016-5-15 13:11 编辑

是,一般p越小相关性越好,一般小于1%就相当好了。默认是按5%决定是否进入的

Pointee 发表于 2016-5-15 13:14:41
jingzhaos 发表于 2016-5-15 13:10
是,一般p越小相关性越好,一般小于1%就相当好了。默认是按5%决定是否进入的 ...

好的,十分感谢大神的耐心指导

liuyang59 发表于 2021-11-15 18:27:29
jingzhaos 发表于 2016-5-15 13:10
是,一般p越小相关性越好,一般小于1%就相当好了。默认是按5%决定是否进入的 ...

麻烦问一下,我用的1stopt拟合,超过三个参数的时候拟合即自动关闭程序。能否麻烦您帮忙拟合一下函数关系?

1445184308 发表于 2021-11-18 20:30:59
jingzhaos 发表于 2016-5-13 16:21
你这也没有x1什么事儿呀?

您好,我有一个曲线拟合的问题想请您帮助解决,我已在站内发帖求助,用MATLAB拟合的误差很大。1stOpt我尝试了很多次,电脑打不开
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表