R:层次聚类分析-dist、hclust、heatmap等

Python012

R:层次聚类分析-dist、hclust、heatmap等,第1张

1、常规聚类过程:

(2)首先用dist()函数计算变量间距离

dist.r = dist(data, method=" ") 

其中method包括6种方法,表示不同的距离测度:"euclidean", "maximum", "manhattan", "canberra", "binary" or "minkowski"。相应的意义自行查找。

(2)再用hclust()进行聚类

hc.r = hclust(dist.r, method = “ ”) 

其中method包括7种方法,表示聚类的方法:"ward", "single", "complete","average", "mcquitty", "median" or "centroid"。相应的意义自行查找。

(3)画图

plot(hc.r, hang = -1,labels=NULL) 或者plot(hc.r, hang = 0.1,labels=F)

hang 等于数值,表示标签与末端树杈之间的距离,

若是负数,则表示末端树杈长度是0,即标签对齐。

labels 表示标签,默认是NULL,表示变量原有名称。labels=F :表示不显示标签。

2、热图聚类过程:

(1)首先用dist()函数计算变量间距离

dist.r = dist(data, method=" ")

(2)用heatmap()函数进行热点图聚类

对于heatmap中具体参数,这里不做过多介绍,可在帮助文档中找说明。除此heatmap函数之外,gplots包中的heatmap.2()函数,也可以做热点图聚类。

heatmap(as.matrix(dist.r))

3、多维标度和聚类的结果:

MDS方法对距离矩阵进行降维,用不同的颜色来表示聚类的结果。

dist.r = dist(data, method=" ")

hc.r = hclust(dist.r)

#cutree函数提取每个样本所属的类别

result = cutree(hc.r,k=4)

#cmdscale数据降维

temp = cmdscale(dist.r, k=2)

x = temp[,1]

y = temp[,2]

#作图

library(ggplot2)

p = ggplot(data.frame(x,y),aes(x,y))

p+geom_point(size=3,alpha=0.8,aes(colour = factor(result)))

根据股票市场收益率序列呈尖峰厚尾、偏态、波动集聚和杠杆效应等特征,本文构建Skew-GED(SGED)分布下的变参数ARIMA+EGARCH动态混合预测模型来挖掘和分析收益率序列的内在规律,运用r语言通过实时最优化动态模型的参数估计,分别对5只股票日对数收益率序列的未来收益情况进行每日预测每日更新,输出交易信号;最后通过滚动时间窗进行推进分析,解决可能存在的过度拟合问题,结果表明动态模型能更好地描述收益率特性,提高预测准确性。

【关键词】变参数ARIMA+EGARCH动态模型;参数优化;推进分析;股票收益率预测

一、引言

波动性是股票市场最为重要特性之一,因此,探讨其波动规律、把握其运行趋势成为当今学术界与实务界研究的热点。

股票收益率波动模型的研究主要有:ARMA 类模型、ARCH 类模型及二者的混合模型,模型中波动误差分布的假定主要有正态分布、T 分布、GED 分布和SKT 分布。国内外大量研究表明,收益率序列波动通常具有集聚性、分布的尖峰厚尾性以及有偏性。本文以5只股票为例,通过对股票日对数收益率序列的分析,发现股票日对数收益率波动存在明显的“尖峰厚尾”现象、波动集聚和非对称特征。通过建立收益率序列的ARIMA 模型处理中期记忆特征,然后再利用EGARCH模型处理异方差的非对称以及波动率聚集特征,采用S-GED分布解决股票收益率波动的“尖峰厚尾”现象以及有偏分布问题,就能够很好地解决股票收益率的这些特性,取得较理想的拟合及预测效果。

本文利用Skew-GED(SGED)分布下的变参数ARIMA+EGARCH动态预测模型对给定的5只股票收益率进行预测,为股票收益率预测和股票投资提供一种思路。任何一种预测方法都要回归现实,接受实践的检验,本文的预测部分证明了该模型具有一定的预测精度,在一定程度上能够为投资者和金融市场相关人员及机构提供决策依据。

二、股票收益率预测建模

2.1模型建立原理

2.1.1进行股票收益率的预测

在股票市场中,准确的股票收益率预测是市场交易各方共同关心的重要问题。多数金融研究针对的是资产收益率而不是资产价格。Campbell,Lo和MacKinlay(1997)给出了使用收益率的两个主要理由:第一、对普通投资者来说,资产收益率完全体现了该资产的投资机会,且与其投资规模无关;第二,收益率序列比价格序列更容易处理,因为前者有更好的统