一.程序源码
1. %%针对 matlab 提供的 census.mat 数据文件,将其中的数据进行多项式拟合,
2. %%给出数学模型及详细的的拟合过程
3. clear;clc;
4. load census.mat %导入数据
5. %计算样本的相关系数矩阵,并画散点图,证明二者有较强的相关性
6. figure(1);
7. plot(cdate,pop,'om')
8. title('U.S. Population from 1790 to 1990');
9. xlabel('Census Year');
10. ylabel('Population (millions)');
11. corrcoef(cdate,pop);
12. %样本数据标准化
13. sdate=(cdate-mean(cdate))./std(cdate);
14. %根据不同的拟合次数先画拟合图和残差图,以选择合适的模型
15. k=2;
16. for i=1:4
17. t=polyfit(sdate,pop,i);
18. fit_y=polyval(t,sdate);
19. figure(k);k=k+1;
20. plot(cdate,fit_y,'+-',cdate,pop,'om');
21. title('U.S. Population from 1790 to 1990')
22. legend('Polynomial Model','Data','Location','NorthWest');
23. xlabel('Census Year');
24. ylabel('Population (millions)');
25. hold off;
26. figure(k);k=k+1;
27. res = pop - fit_y;
28. plot(cdate,res,'+m')
29. title(['Residuals for the Quadratic Polynomial Model(n=',num2str(i),')’]
);
30. end
31. %计算 3 次拟合的残差和拟合优度
32. t=polyfit(sdate,pop,3);
33. fit_y=polyval(t,sdate);
34. yresid = pop - fit_y;
35. SSresid = sum(yresid.^2);
36. SStotal = (length(pop)-1) * var(pop);
37. rsq = 1 - SSresid/SStotal