levyangel 发表于 2011-1-9 20:42:18

求高手指点

原本是最小二乘拟合的问题,但我不知道怎么表达两个残差平方和的和,于是
采用优化,使得它们的和最小,代码如下
Title "Type your title here";
//Parameters a>0,b>0,b>c;
variable t,x,y;
MinFunction Sum(i=1:17)((-X+a*(1-exp(-b*t)))^2 )+
Sum(i=1:17)((-Y+a*(1-(1+c*t)*exp(-b*t)))^2);
data;
1123
2233
34312
46432
58453
69778
710989
811198
9112107
10114109
11 116113
12 123120
13126125
14128127
15132127
16141135
17144143
不知哪里出了问题,用1stopt运行后得不出估算值。我刚接触1stopt软件,什么都不懂。若能用拟合的方法做最好,我需要估算值和拟合值。请大家帮忙看看,多谢!

shamohu 发表于 2011-1-9 21:16:19


variable t,x,y;
SharedModel;
Function X=a*(1-exp(-b*t));
         Y=a*(1-(1+c*t)*exp(-b*t));
data;
1123
2233
34312
46432
58453
69778
710989
811198
9112107
10114109
11 116113
12 123120
13126125
14128127
15132127
16141135
17144143

均方差(RMSE): 10.2415266104888
残差平方和(SSE): 3566.22148865388
相关系数(R): 0.994983895649036
相关系数之平方(R^2): 0.989992952600931

参数         最佳估算
-------------------- -------------
a 168.362519711088
b 0.119259463501506
c 0.0278974589529714
====== 输出结果 =====

文件:数据文件 - 1
No 目标x 计算x 目标y 计算y
1 12 18.9277392575373 3 14.758888603688
2 23 35.7275743115968 3 28.327218421573
3 43 50.6387295216001 12 40.7861457078017
4 64 63.8735350409006 32 52.2136263974037
5 84 75.6204503312867 53 62.6841099626036
6 97 86.0467477663548 78 72.2683425522927
7 109 95.3008945374202 89 81.0332587121818
8 111 103.514666779557 98 89.041944256791
9 112 110.805026022252 107 96.3536556636698
10 114 117.275784684745 109 103.023883750357
11 116 123.019084332177 113 109.104451432208
12 123 128.116707742457 120 114.643637093371
13 126 132.641243467257 125 119.686316576377
14 128 136.657119470122 127 124.274118044784
15 132 140.221520560381 127 128.445585029844
16 141 143.385202686814 135 132.236343863773
17 144 146.193215686379 143 135.679272452609

levyangel 发表于 2011-1-9 22:11:57

2# shamohu


谢谢斑竹的解答!不好意思,我还有两个疑问:两个残差平方和的和,就是两个和相加,怎么得出拟合值呢?另外这种问题用优化是不是不行?希望您能帮忙指点一下,谢谢了

levyangel 发表于 2011-1-9 22:23:17

2# shamohu

也就是x+y的计算值
页: [1]
查看完整版本: 求高手指点