0.9 数学、金融、统计相关
(66) 有没有直接计算峰度和偏度的函数?
使用kurtosis和skewness函数可以直接计算峰度和偏度。
(67) 如何做线性回归棋型?
使用lscov函数(或左除“\”运算)可以直接求解线性回归模型,lscov函数的简要用法如下:


(68) 如何使用逐步回归?
参考Stepwise Regression函数,或者在MATLAB命令窗口键入“ stepwise ”开启逐步回归GUI界面,如图0-10所示。

(69) 如何做聚类分析?
K均值聚类算法可以用kmeans函数实现,具体算法过程在这里不详述,可以参考相关书籍,见下例:


kmeans函数实现的效果图如图0-11所示。

模糊C均值聚类算法可以用fcm函数实现,其语法格式如下:

输入变量:

输出变量:

具体实例如下:

运行结果:


以上实例形成的效果图如图0-12所示。

如何做主成分分析?
princomp函数可以进行主成分分析,具体过程可以参看下例:


运行结果如图0-13所示。

这里使用的是MATLAB自带的城市(cities)数据,里面的ratings数据是一个329x9的矩阵,表示329个城市的数据,每个城市有9个属性描述,上面是ratings数据的箱式图,下面使用princomp函数进行主成分分析。



代码运行结果如图0-14所示。

图0-14中的线表示累积变量解释程度,可以看出前7个主成分可以表示出原始数据的90%,所以在90%的意义下只需提取前7个主成分即可达到主成分提取的目的。下面进行一些结果的可视化:

运行结果如图0-15所示。

(71) 如何对样本数据进行正态检验?
参考jbtest函数,MATLAB统计工具箱中主要的分布检验函数如下。
● jbtest:正态性的Jarque-Bera检验。
● kstest:单样本Kolmogorov-Smimov检验。
● kstest2:双样本Kolmogorov-Smirnov检验。
● lillietest:正态性的Lilliefors检验。
(72) 如何做配对t检验?
参考ttest、ttest2函数,MATLAB统计工具箱中主要的假设检验函数如下。
● ranksum:秩和检验。
● signrank:符号秩检验。
● signtest: 符号检验。
● ttest:单样本t检验。
● ttest2:双样本t检验。
● ztest:z检验。
(73) 多项式回归应该用什么函数?
使用polyfit函数可以进行多项式拟合,见下例:

运行结果为:

即最后求出的拟合多项式为
, 拟合结果如图0-16所示。

(74) 如何使用方差分析(ANOVA)?
方差分析的目的是确定在因素的不同处理(方法、变量)下,相应变量(类别、结果)的均值是否有显著差异。MATLAB提供了适用于单因素方差分析函数anoval以及双因素方差分析函数anova2函数。
(75) logistic回归相关函数是什么?
logistic回归是关于相应变量为0-1定性变量的广义线性回归问题,在MATLAB中广义线性回归模型可以用glmfit函数实现,将广义线性回归模型的分布族设为二项分布(binomial)即可实现logistic回归,具体参看glmfit函数。
(76) 如何做Decision Tree?
决策树(Decision Tree)学习是以实例为基础的归纳学习算法。算法从一组无序的、无规则的事例中推理出决策树表示形式的分类规则,决策树也能表示为多个If-Then规则。一般在决策树中采用“自顶向下,分而治之”的递归方式,将搜索空间分为若干个互不相交的子集,在决策树的内部节点(非叶子节点)进行属性值的比较,并根据不同的属性值判断从该节点向下的分支,在树的叶节点得到结论。
MATLAB统计工具箱中的ClassificationTree.fit函数可实现基于训练集数据创建一个决策树分类器。
(77) box-cox如何变换?
参考boxcox函数。
(78) 如何使用MATLAB做生存分析?
参考coxphfit函数。
(79) 如何利用MATLAB获取免费的金融数据?
MATLAB有一个数据获取工具箱(Datafeed Toolbox),Datafeed Toolbox提供从主要的金融数据提供商处获取的当天、历史和实时的市场数据工具。将金融数据与MATLAB集成起来,用户可开发实时模型反应当前金融市场行为。这个工具箱也提供导出MATLAB数据到数据服务提供商的函数,用户可建立从MATLAB到数据服务提供商提供的历史数据或者预定实时数据流的连接。证券查找对话框可以使工程师在MATLAB环境中查找指定证券的代码(仅针对Bloomberg)。工程师可以使用证券的简要缩写码和代码来表示一个证券。
Database Toolbox支持如下的金融数据服务提供商:

其中雅虎财经(Yahoo! Finance)的数据接口是完全免费的,你可以从雅虎财经下载全球的股票与期货数据进行建模测试。比如下载中国股市的数据,你只而知道相应股裂的代码(在Yahoo! Finance中上海证券交易所股票代码后需要加一个“.SS”,深圳证券交易所股票代码后简要加一个“.SZ") 。见下例,获取三友化工(600409.SS,SanyouChemical)在某一时段的股票问收盘数据:

上述操作也可以在Datafeed Toolbox GUI界而上完成。在MATLAB命令窗口中键入“dftool" 可以调出Datafeed Toolbox GUI界面,如阁0-17所示。

(80) 利用MATLAB可以实现支持向量机(SVM)模型吗?
较新版本的MATLAB中有svmtrain、svmclassify等函数可以实现SVM,但笔者推荐使用LlBSVM工具箱,其他更方便自由地实现SVM模型。
更多关于SVM的理论和应用方面的知识可以查看下面的免费视频链接进行学习:
《支持向量机(SVM)相关免费学习视频集锦》, http://www.matlabsky.com/thread-36823-1-I.html。
(81) 如何计算一个资金流的最大回撤?
根据最大回撒的定义,设Equity为资金流,在索引(下标)Index处可以找出之前的资金流的最大值,设该最大值为Max。如果Index处的资金流为最大值,则lndex 处的最大回撒为0,否则Index处的最大回撒为(Equtity(lndex)-Max)/Max。
下面的RetraceRatio.m函数可以实现最大回撒的计算:

下面使用该函数计算某一资金流(权益)的最大回撤,见下例:

运行结果如图0-18所示。
