matlab 回归求系数

来源:百度知道 编辑:UC知道 时间:2024/05/25 21:08:58
lnY=A+a1*lnx1+a2*lnx2+a3*lnx3+b
Y,x1,x2,x3有12组数据已知,求系数A,a1,a2,a3,b
albert_tianjin,这个不对吧,ln怎么都没了?

x(1)=
[59810.5
70142.5
78060.8
83024.3
88479.2
98000.5
108068.2
119095.7
135174
159586.7
184088.6
213131.7
251483.2]
x2=
[23499.9
24133.8
26967.2
26849.7
29896.2
39273.2
42183.6
51378.2
70483.5
95539.1
116921.8
140971.4466
166740.1884]
x3=
[20019.3
22913.5
24941.1
28406.2
29854.7
32917.7
37213.5
43499.9
55566.6
70477.4
88773.6
109998.2
137323.9]
Y=
[19040
19922
20781
21616
22412
23151
23940
24780
25639
26476
27331
28310
29350]
就让b=1就行,怎么能求出这些系数的标准差?

x1=[
59810.5
70142.5
78060.8
83024.3
88479.2
98000.5
108068.2
119095.7
135174
159586.7
184088.6
213131.7
251483.2];
x2=[
23499.9
24133.8
26967.2
26849.7
29896.2
39273.2
42183.6
51378.2
70483.5
95539.1
116921.8
140971.4466
166740.1884];
x3=[
20019.3
22913.5
24941.1
28406.2
29854.7
32917.7
37213.5
43499.9
55566.6
70477.4
88773.6
109998.2
137323.9];
Y=[
19040
19922
20781
21616
22412
23151
23940
24780
25639
26476
27331
28310
29350];

lny=log(Y);
lnx1=log(x1);
lnx2=log(x2);
lnx3=log(x3);

%式子写成lnY=a1*lnx1+a2*lnx2+a3*lnx3+a4,即a4=A+b

K=[lnx1,lnx2,lnx3,ones(size(x1))];
a=K\lny

%拟合的值
yfit=exp(a(1)*lnx1+a(2)*lnx2+a(3)*lnx3+a(4));
plot(Y,yfit,'*