请问我下面的程序那里出错了,用的是牛顿环法。
s1=nls(y~b0+x1^b1+x2^b2,data=c1,start=list(b0=1,b1=2,b2=1))
summary(s1)
r自带的结果:
Estimate Std. Error t value Pr(>|t|)
b0 2.25309 0.30297 7.437 1.78e-09 ***
b1 0.50375 0.07178 7.018 7.67e-09 ***
b2 0.10824 0.19833 0.546 0.588
我自己写的程序:
b0=1;b1=2;b2=1;
w=y-b0-x1^b1-x2^b2
exp1=expression(b0+x1^b1+x2^b2)
c2=data.frame(z1=eval(D(exp1,"b0")),z2=eval(D(exp1,"b1")),z3=eval(D(exp1,"b2")))
e0=1;e1=1;e2=1
while(e0^2+e1^2+e2^2>=0.05){
reg2=lm(w~z1+z2+z3-1,data=c2)
e0=coef(reg2)[1];e1=coef(reg2)[2];e2=coef(reg2)[3]
b0=b0+e0;b1=b1+e1;b2=b2+e2;
c2=data.frame(z1=eval(D(exp1,"b0")),z2=eval(D(exp1,"b1")),z3=eval(D(exp1,"b2")))
w=residuals(reg2)
}
b0
b1
b2
运行结果:
b0
0.439291
> b1
1.519478
> b2
0.3713611
>
请高手赐教!
万分感谢!