根据最小二乘法的原理,发现LINGO还可以解决一部分统计学的问题,呵呵
model:
!一元线性回归;
!最小二乘法拟合;
sets:
!因变量;
YY/1..10/:y;
!自变量;
XX/1..10/:x;
link(YY,XX):a,b;
endsets
!数据;
data:
x=68 53 70 84 60 72 51 83 70 64;
y=288 298 349 343 290 354 283 324 340 286;
enddata
!残差平方;
@for(link(i,i):a(i,i)=(y(i)-b0-b1*x(i))^2);
@for(link(i,i):b(i,i)=x(i)*y(i));
!目标函数;
!残差平方和;
min=@sum(link(i,i):a(i,i));
!残差平方和;
e=@sum(link(i,i):a(i,i">Qe=@sum(link(i,i):a(i,i));
!约束;
!正规方程;
10*b0+b1*(@sum(XX(i):x(i)))=@sum(YY(i):y(i));
b0*(@sum(XX(i):x(i)))+b1*(@sum(XX(i):x(i)^2))=@sum(link(i,i):b(i,i));
end
这问题用lingo,未免过于舍近求远
如果用matlab,要简单一些:
clear all
format long
x=[68 53 70 84 60 72 51 83 70 64];
y=[288 298 349 343 290 354 283 324 340 286];
[p,r]=polyfit(x,y,1)
运行结果:
p =
1.0e+002 *
0.01800729594163 1.93950752393981
r =
R: [2x2 double]
df: 8
normr: 64.16353650107411
线性回归模型为:y=1.800729594163*x+193.950752393981
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |