PDA

查看完整版本 : [MATLAB数学相关] 线性回归程序中又出现的错误 望大侠指点 在线等


ckjsyyq041
2009-05-31, 22:54
z=[78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95];
Y=[1132.62,1146.38,1159.93,1175.79,1212.33,...
1866.95,1642.86,2004.82,2122.01,2199.35,2357.24,...
2664.90,2937.10,3149.48,3483.37,4348.95,5218.10,6242.20]';
X=[3624.10 519.280 40.9900 4015.00;
4038.20 537.820 113.530 40581.0;
4517.80 571.700 152.990 42361.0;
4860.30 629.890 192.220 43280.0;
5301.80 700.020 215.840 44706.0;
5957.10 755.590 257.840 46004.0;
7206.70 947.350 296.290 47597.0;
8989.10 2040.79 280.510 79873.0;
10201.4 2090.73 156.950 51282.0;
11954.5 2140.36 212.380 52783.0;
14922.3 2390.47 176.180 54334.0;
16917.8 2727.40 179.410 55329.0;
18598.4 2821.87 299.530 56740.0;
21662.5 2990.17 240.100 58360.0;
26651.9 3296.91 265.150 59482.0;
34650.5 4255.3 191.04 60220;
46532.9 5126.88 280.18 61470;
57277.3 6038.04 369.19 62388];
X=[ones(18,1) X];
[C,bint,r,rint,stats]=regress(Y,X,0.05);

y1=767.774+0.0542618*X1+0.367994*X2+1.10127*X3-0.00365175*X4;

plot(Y,z,'.',y1,z,'--');
这是求出4个参数的回归系数后想和原来的数据进行一下对比 然后画图 不过不知道朗格办了 上面程序不对
望大侠给指点一下哈

slgu
2009-06-02, 17:29
该y只与x1, x2有关,与其它x无关,清运行下列以小程序:
clear,clc
x1=[3624.1, 4038.2, 4517.8, 4860.3, 5301.8, 5957.1, 7206.7, 8989.1, 10201.4, 11954.5, 14922.3, 16917.8, 18598.4, 21662.5, 26651.9, 34650.5, 46532.9, 57277.3]';
x2=[519.28, 537.82, 571.7, 629.89, 700.02, 755.59, 947.35, 2040.79, 2090.73, 2140.36, 2390.47, 2727.4, 2821.87, 2990.17, 3296.91, 4255.3, 5126.88, 6038.04]';
y=[1132.62, 1146.38, 1159.93, 1175.79, 1212.33, 1866.95, 1642.86, 2004.82, 2122.01, 2199.35, 2357.24, 2664.9, 2937.1, 3149.48, 3483.37, 4348.95, 5218.1, 6242.2]';
n=size(y,1);
X=[ones(n,1),x1,x2];
str=num2str([1:n]');ry=range(y);
b=X\y
fx=@(b,x1,x2)b(1)+b(2)*x1+b(3)*x2;
figure(1)
clf
plot3(x1,x2,y,'o')
stem3(x1,x2,y,'filled')
text(x1,x2,y+ry/50,str,'fontsize',14)
hold on
[x11,x22]=meshgrid(min(x1):range(x2)/80:max(x1),min(x2):range(x2)/80:max(x2));
y1=fx(b,x11,x22);
surf(x11,x22,y1);
shading interp
alpha(.8)
axis tight

ckjsyyq041
2009-06-04, 08:59
非常感谢你能 帮忙 但我还有几个问题 程序运行时有错误,另外你写的这个我好多都没见过 能不能加上注释啊 另外有一个问题就是 上面是用到了4个参数 你怎么说只用x1和x2 呢?

slgu
2009-06-04, 09:22
1)低版本时,fx=@(b,x1,x2)......这一句可能不能运行,这意为临时函数,在低版本时应改成用自定义函数(永久函数)定义。
2)x3,x4对目标函数y没有作用,理应在方程中剔除。
3)有关注释的问题,你可以暂时去除(在行前加%),看看它有什么效果。