关于GUI,还有一点需要补充。就是从图形中生成matlab编程。比如之前所画的那个图形,基于数据count.dat,可以在图形上表示均值等统计量,如果你想表示的都已经呈现在图上了,那么可以通过GUI生成一个函数,这个函数的运行可以直接生成一个图形,并包含你所有标示的统计量,不用再一步步的通过画图的过程进行。具体是点击所生成的图形上File,然后点击Generate Code (我用的是matlab 2012a,其他版本可能稍有不同,但是一般是以Generate开头的),就可以生成一个方程,可以重新取一个方程的名字,保存到你的路径中去。
下次再绘图的时候,直接利用这个方程,就可以生成你想要的图形。
好了,接下来是用matlab做线性回归分析。
线性回归的概念相信大家都已经熟悉了,这里就不再多说。在进行回归分析之前, 有必要做一些相关性分析,来看是否变量之间存在相关性。尤其是对于线性回归,相关性表示的两个变量之间的线性关系,所以如果两个变量之间没有相关性,线性模型就不适合这个数据。
两个变量之间的协方差或者相关系数都可以表示两个变量之间的线性关系,协方差是绝对的度量,相关系数是相对的度量。
corrcoef (这个方程计算的是相关系数矩阵)
cov (这个方程给出的是协方差矩阵)
对于一个数据矩阵,仍以count.dat为例,
>>cov(count);
返回的是一个协方差矩阵,cov是将每一列当做一个变量,返回的结果是变量之间的协方差矩阵,对角线上的元素是每个变量自身的方差,其他的是对应的两个变量之间的协方差。
相关系数是表示两个变量之间相关性的一个相对程度的测量指标,其取值范围在-1到1之间。
>>corrcoef(count);
返回的是一个相关系数矩阵,对角线上的元素都是1,其他的元素表示的对应的两个变量之间的线性相关性。
对变量之间的相关性有了初步的了解,如果确实是存在一定程度的线性相关性,就可以用线性模型来分析数据。Matlab提供了多种线性回归的方法。其中一种是用GUI(graphical user interface)。
GUI进行数据分析要先将数据按照升序排列,如果数据集很大,而且没有经过排序,GUI会花费很长的时间才能返回结果。所以可以事先将数据进行排列。对于两个未经排序的数据向量x和y,可以定义:
- >>[x_sorted,i]=sort(x);
- >>y_sorted=y(i);
从这里可以看出,这种排序是按照x和y其中一个数据进行的,因此有必要保留x排序生成的编号。
下面用例子来说明GUI在回归分析中的应用:
- >>loadcensus %加载的是美国人口普查的数据,1790-1990。
- >>plot(cdate,pop,’ro’) %用GUI进行回归分析之前要先将数据画图,因为GUI进行回归
- %分析需要通过图形才能进行。
- %cdate是人口普查的年份,间隔是十年,是自变量。pop是每次
- %人口普查的人数,是因变量。
- %数据是按照年份排序的。
准备数据,画图完成之后,进入数据分析。
点击图形上的Tools>BasicFitting(是倒数第二个选项)。点开之后可以发现plot fit下面有很多模型拟合的方法,选中Cubic,然后matlab会弹出一个警告,说:
Polynomial isbadly conditioned. Removing
repeated datapoints or centering and scaling
may improveresults.
这表示模型的参数估计对随机误差的变化非常的敏感,估计结果不稳健。可以通过将年份的变量进行变换提高模型估计的精确度。具体的做法是对于年份的每一个观察值,先减去均值,然后再除以标准差。处理后的数据均值为0,标准差为1。
在Basic Fitting -1 中,这可以通过直接选中“Centerand scale x data”来实现。
然后再选择Cubic,就不会再出现警告了。可以观察到的时候,在变换数据的前后,图形上的拟合曲线是不变的。这是因为GUI仅是用变换过的数据进行计算,在图形显示时,GUI会将结果重新变换回来,回到原来的单位。
通过勾选其他的选项,还可以在图形上显示回归方程,以及残差。
点击Basic Fitting -1 的对话框上向右的箭头可以展开其他的视图。可以显示模型的参数。在新弹出的对话框中点击Fit的下拉菜单,可以选择其他的拟合方式,但是在这里选择不会改变图形上显示的拟合方式,仅仅改变下面对话框中所显示的模型和参数。
点击“save to workspace”可以将结果导入到workspace中。
用GUI还可以根据估计的结果进行插值法运算或者其他的推断。
例如,你想用插值法推断1965年美国的人口数(1965不在数据中),在basicfitting 对话框中将所有向右的箭头都点开,在最右边有一个对话框,可以让你输入x值,点击“evaluate”,然后返回拟合值。还可以点击“plot evaluated results”,将拟合的值画图。
最后同样可以从图形中生成一个M文件。点击“File>Generatecode”,就可以将刚才的GUI过程进行编程。然后可以重新定义个方程的名字,保存。下次直接运行这个方程,就可以获得所有的信息。
不过,GUI进行回归分析只能在2维的情况下进行,也就是只有一个自变量,一个因变量。所以,对于多元回归分析,我们还是得依靠编程语言。