用lingo做一元线性回归
<p></p><p>根据最小二乘法的原理,发现LINGO还可以解决一部分统计学的问题,呵呵</p><p></p><p></p><p>model:<br/>!一元线性回归;<br/>!最小二乘法拟合;<br/>sets:</p><p>!因变量;<br/>YY/1..10/:y;</p><p>!自变量;<br/>XX/1..10/:x;</p><p>link(YY,XX):a,b;</p><p>endsets</p><p>!数据;<br/>data:<br/>x=68 53 70 84 60 72 51 83 70 64;<br/>y=288 298 349 343 290 354 283 324 340 286;<br/>enddata<br/>!残差平方;<br/>@for(link(i,i):a(i,i)=(y(i)-b0-b1*x(i))^2);</p><p>@for(link(i,i):b(i,i)=x(i)*y(i));</p><p>!目标函数;<br/> !残差平方和;<br/><a href="mailto:min=@sum(link(i,i):a(i,i">min=@sum(link(i,i):a(i,i</a>));<br/>!残差平方和;<br/><a href="mailto:Qe=@sum(link(i,i):a(i,i">Qe=@sum(link(i,i):a(i,i</a>));</p><p>!约束;<br/> !正规方程;<br/>10*b0+b1*(@sum(XX(i):x(i)))=@sum(YY(i):y(i));<br/>b0*(@sum(XX(i):x(i)))+b1*(@sum(XX(i):x(i)^2))=@sum(link(i,i):b(i,i));</p><p>end</p> <p>这问题用lingo,未免过于舍近求远</p> <p>如果用matlab,要简单一些:</p><p>clear all</p><p>format long</p><p>x=;<br/>y=;<br/>=polyfit(x,y,1)</p><p></p><p> 运行结果:</p><p>p =</p><p> 1.0e+002 *</p><p> 0.01800729594163 1.93950752393981</p><p><br/>r = </p><p> R: <br/> df: 8<br/> normr: 64.16353650107411</p><p>线性回归模型为:y=1.800729594163*x+193.950752393981</p> 多年之后,当我再看到这帖子的时候,我明白了楼主讨论这个LINGO用处的优越性。
哎哟,不错!~~~
页:
[1]