1.插值法
上代碼!!!(我抄百度文檔上的 https://wenku.baidu.com/view/52e6ad5602768e9950e73814.html)
x=1200:400:4000; y=1200:400:3600; z=[1130 1250 1280 1230 1040 900 500 700; 1320 1450 1420 1400 1300 700 900 850; 1390 1500 1500 1400 900 1100 1060 950; 1500 1200 1100 1350 1450 1200 1150 1010; 1500 1200 1100 1550 1600 1550 1380 1070; 1500 1550 1600 1550 1600 1600 1600 1550; 1480 1500 1550 1510 1430 1300 1200 980]; figure(1); meshz(x,y,z) xlabel('X'),ylabel('Y'),zlabel('Z') title('網格面') xi=1200:40:4000; yi=1200:40:3600; figure(2) z1i=interp2(x,y,z,xi,yi','nearest');%最鄰近插值 surfc(xi,yi,z1i) xlabel('X'),ylabel('Y'),zlabel('Z') title('最鄰近插值') figure(3) z2i=interp2(x,y,z,xi,yi'); surfc(xi,yi,z2i) xlabel('X'),ylabel('Y'),zlabel('Z')%分段線性插值 title('分段線性插值') figure(4) z3i=interp2(x,y,z,xi,yi','cubic'); surfc(xi,yi,z3i) xlabel('X'),ylabel('Y'),zlabel('Z')%立方插值 title('立方插值') figure(5) z4i=interp2(x,y,z,xi,yi','spline'); surfc(xi,yi,z4i) xlabel('X'),ylabel('Y'),zlabel('Z')%三次樣條插值% title('三次樣條插值') figure(6) z5i=interp2(x,y,z,xi,yi','linear'); surfc(xi,yi,z4i) xlabel('X'),ylabel('Y'),zlabel('Z')%線性插值 title('線性插值') figure(7) subplot(3,2,1),contour(xi,yi,z1i,10,'r'); subplot(3,2,2),contour(xi,yi,z2i,10,'r'); subplot(3,2,3),contour(xi,yi,z3i,10,'r'); subplot(3,2,4),contour(xi,yi,z4i,10,'r'); subplot(3,2,5),contour(xi,yi,z5i,10,'r');%compare figure(8) contour(xi,yi,z1i,10,'r') title('最鄰近插值') figure(9) contour(xi,yi,z2i,10,'r') title('分段線性插值') figure(10) contour(xi,yi,z3i,10,'r') title('立方插值') figure(11) contour(xi,yi,z4i,10,'r') title('三次樣條插值') figure(12) contour(xi,yi,z5i,10,'r') title('線性插值')
2.曲線擬合
假定某地某天的氣溫變化記錄數據見下表,誤差不超過0.5℃,試找出其這一天的氣溫變化規律。
時刻/h |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
溫度/℃ |
15 |
14 |
14 |
14 |
14 |
15 |
16 |
18 |
20 |
22 |
23 |
25 |
28 |
31 |
時刻/h |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
|
|
|
溫度/℃ |
32 |
31 |
29 |
27 |
25 |
24 |
22 |
20 |
18 |
07 |
16 |
|
|
|
對的溫度進行分析,采用多項式擬合的數學方法,建立溫度和時刻的模型
x=0:1:24; y=[15 14 14 14 14 15 16 18 20 22 23 25 28 31 32 31 29 27 25 24 22 20 18 07 16]; plot(x,y,'r*') hold on a=polyfit(x,y,5); z=a(1)*x.^5+a(2)*x.^4+a(3)*x.^3+a(4)*x.^2+a(5)*x+a(6); plot(x,z) grid; hold off
3.逐步回歸
財政收入預測問題:財政收入與國民收入、工業總產值、農業總產值、總人口、就業人口、固定資產投資等因素有關。下表列出了1952-1981年的原始數據,試構造回歸預測模型,並利用1982-1990的數據驗證模型。
年份 |
國民收入(億元) |
工業總產值(億元) |
農業總產值(億元) |
總人口(萬人) |
就業人口(萬人) |
固定資產投資(億元) |
財政收入(億元) |
1952 |
598 |
349 |
461 |
57482 |
20729 |
44 |
184 |
1953 |
586 |
455 |
475 |
58796 |
21364 |
89 |
216 |
1954 |
707 |
520 |
491 |
60266 |
21832 |
97 |
248 |
1955 |
737 |
558 |
529 |
61465 |
22328 |
98 |
254 |
1956 |
825 |
715 |
556 |
62828 |
23018 |
150 |
268 |
1957 |
837 |
798 |
575 |
64653 |
23711 |
139 |
286 |
1958 |
1028 |
1235 |
598 |
65994 |
26600 |
256 |
357 |
1959 |
1114 |
1681 |
509 |
67207 |
26173 |
338 |
444 |
1960 |
1079 |
1870 |
444 |
66207 |
25880 |
380 |
506 |
1961 |
757 |
1156 |
434 |
65859 |
25590 |
138 |
271 |
1962 |
677 |
964 |
461 |
67295 |
25110 |
66 |
230 |
1963 |
779 |
1046 |
514 |
69172 |
26640 |
85 |
266 |
1964 |
943 |
1250 |
584 |
70499 |
27736 |
129 |
323 |
1965 |
1152 |
1581 |
632 |
72538 |
28670 |
175 |
393 |
1966 |
1322 |
1911 |
687 |
74542 |
29805 |
212 |
466 |
1967 |
1249 |
1647 |
697 |
76368 |
30814 |
156 |
352 |
1968 |
1187 |
1565 |
680 |
78534 |
31915 |
127 |
303 |
1969 |
1372 |
2101 |
688 |
80671 |
33225 |
207 |
447 |
1970 |
1638 |
2747 |
767 |
82992 |
34432 |
312 |
564 |
1971 |
1780 |
3156 |
790 |
85229 |
35620 |
355 |
638 |
1972 |
1833 |
3365 |
789 |
87177 |
35854 |
354 |
658 |
1973 |
1978 |
3684 |
855 |
89211 |
36652 |
374 |
691 |
1974 |
1993 |
3696 |
891 |
90859 |
37369 |
393 |
655 |
1975 |
2121 |
4254 |
932 |
92421 |
38168 |
462 |
692 |
1976 |
2052 |
4309 |
955 |
93717 |
38834 |
443 |
657 |
1977 |
2189 |
4925 |
971 |
94974 |
39377 |
454 |
723 |
1978 |
2475 |
5590 |
1058 |
96259 |
39856 |
550 |
922 |
1979 |
2702 |
6065 |
1150 |
97542 |
40581 |
564 |
890 |
1980 |
2791 |
6592 |
1194 |
98705 |
41896 |
568 |
826 |
1981 |
2927 |
6862 |
1273 |
100072 |
73280 |
496 |
810 |
首先,以國民收入 、工業總產值 、農業總產值 、總人口 、就業人口 、固定資產投資 的數據為全部自變量,采用最小二乘法擬合一個多元回歸模型,有
由上述結果得到: 檢驗通過,復判定系數與調整復判定系數的差距不大;但在t 檢驗中有若干自變量對y 的解釋作用不明顯,在此采用逐步回歸的方法對自變量集合進行調整。
利用Matlab統計工具箱中用作逐步回歸的命令stepwise(一直點Next Step),進行統計分析,得到如圖所示的結果:
由上圖可以看出:紅色表明從模型中移去的變量為x2,4,8,移除這三個變量后,再利用最小二乘法擬合一個多元回歸模型,有
兩個回歸模型相比較,得到:后者的復判定系數與調整復判定系數的差距更小,與實際更加符合,因此所做的調整是有意義的,對於預測更加有利。
代碼
多元回歸模型建立的程序(沒看懂這個是干嘛的,而且運行報錯警告: 矩陣接近奇異值,或者縮放錯誤。結果可能不准確。RCOND = 5.420589e-17。 ):
clc,clear load data.txt %表中的數據按照原來的排列存放在純文本文件data.txt中 [n,m]=size(data);m=m-1; x=[ones(30,1),data(:,1:6)]; y=data(:,7); [b,bint,r,rint,stats]=regress(y,x) %stats(4)返回的是殘差的樣本方差 r2=stats(1) %提出復判定系數 ad_r2=1-(1-r2)*(n- 1)/(n-m-1) %計算調整復判斷系數 f=stats(2) %提出F統計量 tm=inv(x'*x); %計算X'*X的逆矩陣 tm=diag(tm); %提出逆矩陣的對角線元素 rmse=sqrt(stats(4)) %計算剩余標准差(殘差的樣本標准差) t=b./sqrt(tm)/ rmse %求t統計量的值
逐步回歸代碼
clc,clear x0=[1952 598 349 461 57482 20729 44 184 1953 586 455 475 58796 21364 89 216 1954 707 520 491 60266 21832 97 248 1955 737 558 529 61465 22328 98 254 1956 825 715 556 62828 23018 150 268 1957 837 798 575 64653 23711 139 286 1958 1028 1235 598 65994 26600 256 357 1959 1114 1681 509 67207 26173 338 444 1960 1079 1870 444 66207 25880 380 506 1961 757 1156 434 65859 25590 138 271 1962 677 964 461 67295 25110 66 230 1963 779 1046 514 69172 26640 85 266 1964 943 1250 584 70499 27736 129 323 1965 1152 1581 632 72538 28670 175 393 1966 1322 1911 687 74542 29805 212 466 1967 1249 1647 697 76368 30814 156 352 1968 1187 1565 680 78534 31915 127 303 1969 1372 2101 688 80671 33225 207 447 1970 1638 2747 767 82992 34432 312 564 1971 1780 3156 790 85229 35620 355 638 1972 1833 3365 789 87177 35854 354 658 1973 1978 3684 855 89211 36652 374 691 1974 1993 3696 891 90859 37369 393 655 1975 2121 4254 932 92421 38168 462 692 1976 2052 4309 955 93717 38834 443 657 1977 2189 4925 971 94974 39377 454 723 1978 2475 5590 1058 96259 39856 550 922 1979 2702 6065 1150 97542 40581 564 890 1980 2791 6592 1194 98705 41896 568 826 1981 2927 6862 1273 100072 73280 496 810]; x=x0(:,2:7); y=x0(:,8); stepwise(x,y,[1:6])
4.