主成分分析中可以有很多定性变量吗

Python013

主成分分析中可以有很多定性变量吗,第1张

主成分分析法是数据挖掘中常用的一种降维算法,是Pearson在1901年提出的,再后来由hotelling在1933年加以发展提出的一种多变量的统计方法,其最主要的用途在于“降维”,通过析取主成分显出的最大的个别差异,也可以用来削减回归分析和聚类分析中变量的数目,与因子分析类似。

所谓降维,就是把具有相关性的变量数目减少,用较少的变量来取代原先变量。如果原始变量互相正交,即没有相关性,则主成分分析没有效果。

在生物信息学的实际应用情况中,通常是得到了成百上千个基因的信息,这些基因相互之间会有影响,通过主成分分析后,得到有限的几个主成分就可以代表它们的基因了。也就是所谓的降维。

R语言有非常多的途径做主成分分析,比如自带的princomp()和psych包的principal()函数,还有gmodels包的fast.prcomp函数。

2 拆解主成分分析步骤

实际应用时我们通常会选择主成分分析函数,直接把input数据一步分析到位,只需要看懂输出结果即可。但是为了加深理解,这里一步步拆解主成分分析步骤,讲解原理。

2.1 测试数据

数据集USJudgeRatings包含了律师对美国高等法院法官的评分。数据框包含43个样本,12个变量!

下面简单看一看这12个变量是什么,以及它们的相关性。

library(knitr)

kable(head(USJudgeRatings))

这12个变量的介绍如下:

[,1]CONTNumber of contacts of lawyer with judge.

[,2]INTGJudicial integrity.司法诚实性

[,3]DMNRDemeanor.风度;举止;行为

[,4]DILGDiligence.勤奋,勤勉;注意的程度

[,5]CFMGCase flow managing.

[,6]DECIPrompt decisions.

[,7]PREPPreparation for trial.

[,8]FAMIFamiliarity with law.

[,9]ORALSound oral rulings.

[,10] WRITSound written rulings.

[,11] PHYSPhysical ability.

[,12] RTENWorthy of retention.

这些是专业领域的用词,大家可以先不用纠结具体细节。

2.2 为什么要做主成分分析

不管三七二十一就直接套用统计方法都是耍流氓,做主成分分析并不是拍脑袋决定的。 在这个例子里面,我们拿到了这43个法官的12个信息,就可以通过这12个指标来对法官进行分类,但也许实际情况下收集其他法官的12个信息比较麻烦,所以我们希望只收集三五个信息即可,然后也想达到比较好的分类效果。或者至少也得剔除几个指标吧,这个时候主成分分析就能派上用场啦。这12个变量能得到12个主成分,如果前两个主成分可以揭示85%以上的变异度,也就是说我们可以用两个主成分来代替那12个指标。

在生物信息学领域,比如我们测了1000个病人的2万个基因的表达矩阵,同时也有他们的健康状态信息。那么我们想仔细研究这些数据,想得到基因表达与健康状态的某种关系。这样我就可以对其余几十亿的人检测基因表达来预测其健康状态。如果我们进行了主成分分析,就可以选择解释度比较高的主成分对应的基因,可能就几十上百个而已,大幅度的降低广泛的基因检测成本。

2.3 step1:数据标准化(中心化)

dat_scale=scale(USJudgeRatings,scale=F)

options(digits=4, scipen=4)

kable(head(dat_scale))

scale()是对数据中心化的函数,当参数scale=F时,表示将数据按列减去平均值,scale=T表示按列进行标准化,公式为(x-mean(x))/sd(x),本例采用中心化。

2.4 step2:求相关系数矩阵

dat_cor=cor(dat_scale)

options(digits=4, scipen=4)

kable(dat_cor)

从相关系数看,只有 CONT 变量跟其它变量没有相关性。

当然,这样的矩阵不易看清楚规律,很明显,画个热图就一眼看出来了。

2.5 step3:计算特征值和特征向量

利用eigen函数计算相关系数矩阵的特征值和特征向量。这个是主成分分析法的精髓。

dat_eigen=eigen(dat_cor)

dat_var=dat_eigen$values ## 相关系数矩阵的特征值

options(digits=4, scipen=4)

dat_var

## [1] 10.133504 1.104147 0.332902 0.253847 0.084453 0.037286 0.019683

## [8] 0.015415 0.007833 0.005612 0.003258 0.002060

pca_var=dat_var/sum(dat_var)

pca_var

## [1] 0.8444586 0.0920122 0.0277418 0.0211539 0.0070377 0.0031072 0.0016402

## [8] 0.0012846 0.0006528 0.0004676 0.0002715 0.0001717

pca_cvar=cumsum(dat_var)/sum(dat_var)

pca_cvar

## [1] 0.8445 0.9365 0.9642 0.9854 0.9924 0.9955 0.9972 0.9984 0.9991 0.9996

## [11] 0.9998 1.0000

可以看出,PC1(84.4%)和PC2(9.2%)共可以解释这12个变量的93.6的程度,除了CONT外的其他的11个变量与PC1都有较好的相关性,所以PC1与这11个变量基本斜交,而CONT不能被PC1表示,所以基本与PC1正交垂直,而PC2与CONT基本平行,表示其基本可以表示CONT。

2.6 step4:崖低碎石图和累积贡献图

library(ggplot2)

p=ggplot(,aes(x=1:12,y=pca_var))

p1=ggplot(,aes(x=1:12,y=pca_cvar))

p+geom_point(pch=2,lwd=3,col=2)+geom_line(col=2,lwd=1.2)

打开APP查看高清大图

img

p1+geom_point(pch=2,lwd=3,col=2)+geom_line(col=2,lwd=1.2)

打开APP查看高清大图

img

崖低碎石图(scree plot)即贡献率图,是希望图形一开始很陡峭,如悬崖一般,而剩下的数值都很小,如崖底的碎石一样。

崖低碎石图和累积贡献率图是对主成分贡献率和累积贡献率的一种直观表示,用以作为选择主成分个数的参考。本例中第一个主成分解释总变异的84.4%,可以只选择第一个主成分,但第二主成分也不小,因此选择前两个主成分。

主成分的个数选择没有一定之规,需按实际情况具体分析,一般要求累积贡献率大于85%或特征值大于1.

但是在实际的生物信息学应用中,通常达不到这个要求。

2.7 step5:主成分载荷

主成分载荷表示各个主成分与原始变量的相关系数。

pca_vect= dat_eigen$vector ## 相关系数矩阵的特征向量

loadings=sweep(pca_vect,2,sqrt(pca_var),"*")

rownames(loadings)=colnames(USJudgeRatings)

options(digits=4, scipen=4)

kable(loadings[,1:2])

CONT 0.0028 0.2830

INTG -0.2652 -0.0552

DMNR -0.2636 -0.0599

DILG -0.2797 0.0110

CFMG -0.2780 0.0511

DECI -0.2774 0.0388

PREP -0.2843 0.0098

FAMI -0.2818 -0.0004

ORAL -0.2874 -0.0011

WRIT -0.2858 -0.0095

PHYS -0.2580 0.0270

RTEN -0.2847 -0.0119

结果表明,CONT指标跟其它指标表现完全不一样,第一个主成分很明显跟除了CONT之外的所有其它指标负相关,而第二个主成分则主要取决于CONT指标。

2.8 step6:主成分得分计算和图示

将中心化的变量dat_scale乘以特征向量矩阵即得到每个观测值的得分。

pca_score=as.matrix(dat_scale)%*%pca_vect

head(pca_score[,1:2])

## [,1][,2]

## AARONSON,L.H. 0.5098 -1.7080

## ALEXANDER,J.M. -2.2676 -0.8508

## ARMENTANO,A.J. -0.2267 -0.2903

## BERDON,R.I.-3.4058 -0.5997

## BRACKEN,J.J.6.5937 0.2478

## BURNS,E.B. -2.3336 -1.3563

将两个主成分以散点图形式展示,看看这些样本被这两个主成分是如何分开的

p=ggplot(,aes(x=pca_score[,1],y=pca_score[,2]))+geom_point(color=USJudgeRatings[,1],pch=USJudgeRatings[,2])

p

打开APP查看高清大图

img

对于主成分分析,不同数据会有不同的分析方法,应具体情况具体分析。

总结一下PCA的算法步骤:

设有m条n维数据。

1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6)Y=PX即为降维到k维后的数据

PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同正交方向上没有相关性。

PCA也存在一些限制,例如它可以很好的解除线性相关,但是对于高阶相关性就没有办法了,对于存在高阶相关性的数据,可以考虑Kernel PCA,通过Kernel函数将非线性相关转为线性相关,关于这点就不展开讨论了。另外,PCA假设数据各主特征是分布在正交方向上,如果在非正交方向上存在几个方差较大的方向,PCA的效果就大打折扣了。

最后需要说明的是,PCA是一种无参数技术,也就是说面对同样的数据,如果不考虑清洗,谁来做结果都一样,没有主观参数的介入,所以PCA便于通用实现,但是本身无法个性化的优化。

CS脚本!!!

脚本没有那么神秘感,其实就是一些参数的集合,变态不变态,就看你怎么修改了,宝刀在好人手里是除奸的,可

在坏人手里就是.....

脚本就看你怎么用了

首先介绍脚本的基本知识:

什么是bind?

Bind就是分配一个命令到指定的键,它同样能够分配一个alias到指定的键。

比如:

bind "MOUSE1" "+attack"

表示分配+attack(攻击)这个命令到指定的键MOUSE1(鼠标左键)

什么是alias?

Alias就是给一组命令定义一个名称,当你定义过后,CS就认为此alias为一个普通的命令,你可以用bind命

令分配一个键给这个alias,也可以在其他的alias中使用它。

比如:

alias hw "say Hello World!"

则当你在控制台(console)中输入hw这条命令回车执行后你就对服务器里所有的玩家说了Hello World!这句

话,你还可以用bind命令:

bind v "hw"当你按过v键后你同样对服务器里所有的玩家说了Hello World!这句话。

又比如:

alias buym "buymenuselect 3menuselect 1"

alias buyv "buymenuselect 8menuselect 1"

alias buysay "buymbuyvhw"

bind j "buysay"

则表示当你执行buysay命令(如按下由bind分配好的j键)后购买MP5和普通防弹衣然后对服务器里所有的玩

家说Hello World!这句话。此alias实现的方法为:第一步执行buym命令,buym命令已经定义好为"打开购买

菜单选择菜单第3项再选择菜单第1项"即实现了购买MP5的功能,第二步执行buyv命令,buyv命令已经定义

好为"打开购买菜单选择菜单第8项再选择菜单第1项"即实现了购买普通防弹衣的功能,第三步执行之前已经

定义好的hw命令:对服务器里所有的玩家说Hello World!这句话。把这三步命令定义为一个新的命令buysay

然后用bind命令分配一个键(此处为j键)给这个alias(此处为buysay)则当你按下j键后就实现了这三步命

令的功能。

注意:alias语句不能超过259个字符即下面这行字符的长度在Half-Life:Counter-Strike里:

"-----------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------"

什么是脚本(Script)?

脚本(Script)就是含有bind和alias等命令的集合,你可以把这个集合存为一个独立的文件然后在需要的时候

执行,这样就可以方便你在CS中的使用。脚本可以存为后缀名为.cfg的文件放在cstrike文件夹下,执行时在

控制台输入:

exe然后按下TAB键在输入 脚本文件名.cfg即可。比如将以上的脚本存为buys.cfg文件,则在控制台中输入:

exe在按下TAB键然后输入 xxx.cfg则可以实现我们所需要的功能。

比如:我们执行了一系列命令,执行这一系列命令有一个过程。

用一个命令把这一过程定义(alias)好,最后分配(bind)一个键位给这个命令,以后只要按分配好的键位,就

可以实现这一过程。所有的脚本都是通过这一方法实现的。

所有可以用Bind命令设定的键位:

字母键

ABCDEFGHIJKLMNOPQRSTUVWXYZ

数字键

1234567890

鼠标键

MOUSE1 MOUSE2 MOUSE3 MOUSE4 AUX5 AUX6

MWHEELUP MWHEELDOWN

手柄键

JOY1 JOY2 JOY3 JOY4 AUX5 AUX6

特殊键

Ente rSpace Shift Ctrl Pause

Alt Backspace Tab Escape

功能键

F1 F2 F3 F4 F5 F6

F7 F8 F9 F10 F11 F12

编辑键

Ins

Del

Home

End

Pgdn

Pgup

方向键

Leftarrow

Rightarrow

Uparrow

Downarrow

小键盘键

kp_leftarrow

kp_del

kp_end

kp_downarrow

kp_pgup

kp_ins

kp_5

kp_plus

kp_uparrow

kp_enter

kp_pgdn

kp_rightarrow

kp_slash

kp_minus

kp_home

其他键

,

.

/

*

[

]

-

=

~

注意:小键盘上我们使用kp_end、kp_downarrow等等键位名称代替数字键名Num 1、Num 2,其他类似。

所有可以设定的命令/变量

命令/变量的名称 服务端/客户端使用 基本的设定种类 注释

+attack 客户端 玩家 攻击

+attack2 客户端 玩家 特殊攻击/功能(如开瞄准镜、单倍放大等等)

+back 客户端 玩家 退后

+duck 客户端 玩家 蹲下

+forward 客户端 玩家 前进

+jump 客户端 玩家 跳跃

+klook 客户端 玩家 用键盘看

+left 客户端 玩家 向左转

+lookdown 客户端 玩家 向下看

+lookup 客户端 玩家 向上看

+mlook 客户端 鼠标 用鼠标看

+movedown 客户端 玩家 向下移动(如爬梯子、游泳)

+moveleft 客户端 玩家 向左平移

+moveright 客户端 玩家 向右平移

+moveup 客户端 玩家 向上移动(如爬梯子、游泳)

+reload 客户端 玩家 换子弹

+right 客户端 玩家 向右转

+showscores 客户端 玩家 显示玩家的分数和Ping值

+speed 客户端 玩家 让玩家走路如果奔跑时;奔跑如果走路时

+strafe 客户端 玩家 平移键

+use 客户端 玩家 使用键(拆炸弹、救人质等等)

adjust_crosshair 客户端 玩家 改变准星颜色

alias "cmd1cmd2" 客户端 玩家 定义命令批量处理变量

allowupload 客户端 上传/下载 是否允许上传本地的文件到服务器。

ambient_fade 100 客户端 音频 设定周围声音多远距离消失

ambient_level 0.300 客户端 音频 设定周围声音的等级

appenddemo 客户端 demo 在该录像文件后继续录像,不覆盖原录像

bind 客户端 玩家 设定键位用于执行命令

bottomcolor 6 客户端 玩家 设定玩家人物模型的底部颜色

brightness 1 客户端 视频 设定亮度

buy 客户端 玩家 打开购买武器菜单

buyequip 客户端 玩家 打开购买装备菜单

buyammo1 客户端 玩家 买主弹药

buyammo2 客户端 玩家 买手枪弹药

cancelselect 客户端 玩家 取消选择

changeteam 客户端 玩家 打开队伍选择菜单

cl_allowdownload 0 客户端 上传/下载 客户端是否允许下载

cl_allowupload 0 客户端 上传/下载 客户端是否允许上传

cl_anglespeedkey 0.670 客户端 玩家 设定方向键改变视角的速度

cl_backspeed 400 客户端 玩家 客户端设定后退的速度

cl_bob 0.010 客户端 玩家 客户端设定奔跑时手臂摆动的幅度

cl_bobcycle 0.800 客户端 玩家 客户端设定奔跑时手臂摆动的频率

cl_bobup 0.500 客户端 玩家 客户端设定奔跑时手臂摆动的范围

cl_download_ingame 0 客户端 上传/下载 客户端设定是否允许在游戏里下载

cl_forwardspeed 400 客户端 玩家 客户端设定前进的速度

cl_gaitestimation 1 客户端 玩家 开启估计玩家的运动步幅

cl_gg 0 客户端 玩家 开关游戏的标准模式

cl_himodels 客户端 玩家 客户端设定是否允许使用高质量模型

cl_messages 客户端 玩家 客户端设定显示服务器信息

cl_movespeedkey 0.300 客户端 玩家 设定键盘移动速度

cl_nopred 0 客户端 玩家 开关玩家的预先选择

cl_pitchdown 客户端 玩家 设定玩家向下看的最大角度,默认:89

cl_pitchspeed 225 客户端 玩家 设定角速度

cl_pitchup 客户端 玩家 设定玩家向上看的最大角度,默认:89

cl_showfps 1 客户端 玩家 显示你的FPS值

cl_shownet 0 客户端 玩家 显示你的网络传输包值

cl_slist 10 客户端 玩家 设定列出的服务器个数

cl_solid_players 1 客户端 玩家 开关固定玩家模型

cl_upspeed 320 客户端 玩家 设定向上移动(如爬梯子、游泳)的速度

cl_waterdist 4 客户端 玩家 设定在水下最深所能到达的距离

cl_yawspeed 210 客户端 玩家 设定转身的速度(由服务器最大值设定)

clear 客户端 玩家 清除控制台上的信息

cmd 客户端 玩家 执行命令

cmdlist 客户端/服务端 所有 列出所有命令

connect 客户端 玩家 连接到服务器用输入IP的方式

cvarlist 客户端/服务端 所有 列出所有变量

developer 0 客户端 开发者 开关调试信息

disconnect 客户端 玩家 从服务器上断开连接

drawradar 客户端 玩家 显示雷达

drop 客户端 玩家 扔掉当前武器/装备

echo "message" 客户端 玩家 显示"message"中的文字信息

enableconsole 客户端 玩家 允许控制台

escape 客户端 玩家 取消键

exit 客户端/服务端 所有 退出游戏

fakelag 0 客户端 玩家 模拟Lag延迟

fakeloss 0 客户端 玩家 模拟Loss网络丢包

force_centerview 客户端 玩家 强制玩家回到正前方的视角

fps_lan 客户端 玩家 设定局域网游戏中的最大FPS值

fps_modem 客户端 玩家 设定互联网游戏中的最大FPS值

fps_single 客户端 玩家 设定单人游戏中的最大FPS值

fullinfo 客户端 玩家 显示用户信息

fullserverinfo 客户端 玩家 显示服务器信息

gamma 3 客户端 视频 设定gamma亮度值

getcertificate 客户端 玩家 从www.WON.net上获取CD-Key认证

getsv 客户端 玩家 列出服务器的IP地址和服务器的总数

gl_alphamin 0.250 客户端 视频 设定最小alpha混合等级

gl_clear 0 客户端 视频 开关对画面上各个模型连接的部分的连贯渲染

gl_cull 1 客户端 视频 是否只对可以看到的画面进行渲染

gl_d3dflip 0 客户端 视频 在Direct3D模式中开关反向渲染命令

gl_dither 1 客户端 视频 开关颜色抖动

gl_dump 客户端 视频 列出显卡的信息

gl_flipmatrix 0 客户端 视频 开关特殊的准星修正当适用3DNow和3D fx Mini OpenGL驱动时

gl_keeptjunctions 0 客户端 视频 开关显示材质间的缝隙

gl_lightholes 0 客户端 视频 光洞效果开关

gl_max_size 256 客户端 视频 贴图材质的最大解析度

gl_monolights 0 客户端 视频 开关统一光源(无阴影)OpenGL适用

gl_overbright 0 客户端 视频 开关最大亮度模式

gl_palette_tex 0 客户端 视频 开关调色贴图值、材质

gl_picmip 0 客户端 视频 环境贴图效果(0-3)

gl_playermip 0 客户端 视频 玩家模型的贴图效果(0-3)

gl_polyoffset 4 客户端 视频 设定多边形补偿

gl_round_down 3 客户端 视频 设定材质循环

gl_smoothmodels 0 客户端 视频 玩家模型光滑处理开关

gl_spriteblend 0 客户端 视频 开关子画面混合

gl_texels 客户端 视频 报告传输到显卡的texel数量

gl_texsort 0 客户端 视频 开关一个texel的种类

gl_texturemode [type] 客户端 视频 设定渲染模式[type]的类型: gl_nearest_mipmap_nearest,

gl_linear_mipmap_nearest (这两个进行双线性过滤处理)和 gl_nearest_mipmap_linear,

gl_linear_mipmap_linear (这两个进行三线性过滤处理)

gl_zmax 4096 客户端 视频 设定Z-Buffer缓存的最大值

gl_ztrick 1 客户端 视频 开关3D fx的加速渲染模式

graphheight 64 客户端 玩家 设定r_netgraph的显示高度

graphhigh 512 客户端 玩家 设定r_netgraph显示的最大值

graphmean 1 客户端 玩家 设定r_netgraph显示的平均值

graphmedian 128 客户端 玩家 设定r_netgraph显示的中间值

hideconsole 客户端 玩家 隐藏控制台

hideradar 客户端 玩家 隐藏雷达

hisound 1 客户端 音频 是否使用高品质音频

hud_centerid 0 客户端 玩家 是否在屏幕中间显示玩家的ID名字

hud_fastswitch 0 客户端 玩家 是否快速切换武器

hud_saytext_time 5 客户端 玩家 设定文字在屏幕上停留的时间

impulse 100 客户端 玩家 开关战术手电

impulse 201 客户端 玩家 喷图

lastinv 客户端 玩家 切换到上一次使用的武器

invnext 客户端 玩家 切换到下一种武器

invprev 客户端 玩家 切换到上一种武器

kill 客户端 玩家 在游戏中自杀

所以说改脚本其实是为自己设计的最强作弊软件.不外如此.

金融市场的一项主要功能实际上是允许经济界的不同参与者交易其风险,而近二十年来,由于受经济全球化和金融一体化、现代金融理论及信息技术、金融创新等因素的影响,全球金融市场迅猛发展,金融市场呈现出前所未有的波动性,金融机构面临着日趋严重的金融风险。

近年来频繁发生的金融危机造成的严重后果充分说明了这一点。

一、波动性方法

自从1952年Markowitz提出了基于方差为风险的*3资产组合选择理论后,方差(均方差)就成了一种极具影响力的经典的金融风险度量。方差计算简便,易于使用,而且已经有了相当成熟的理论。当然,波动性方法也存在以下缺点:

(1)把收益高于均值部分的偏差也计入风险,这可能大家很难接受;

(2)以收益均值作为回报基准,也与事实不符;

(3)只考虑平均偏差,不适合用来描述小概率事件发生所导致的巨大损失,而金融市场中的“稀少事件”产生的极端风险才是金融风险的真正所在。

二、VaR模型(Value at Risk)

风险价值模型产生于1994年,比较正规的定义是:在正常市场条件下和一定的置信水平a上,测算出在给定的时间段内预期发生的最坏情况的损失大小X。在数学上的严格定义如下:设X是描述证券组合损失的随机变量,F(x)是其概率分布函数,置信水平为a,则:VaR(a)=-inf{x|F(x)≥a}。该模型在证券组合损失X符合正态分布,组合中的证券数量不发生变化时,可以比较有效的控制组合的风险。

因此,2001年的巴塞耳委员会指定VaR模型作为银行标准的风险度量工具。但是VaR模型只关心超过VaR值的频率,而不关心超过VaR值的损失分布情况,且在处理损失符合非正态分布(如厚尾现象)及投资组合发生改变时表现不稳定。

三、灵敏度分析法

灵敏度方法是对风险的线性度量,它测定市场因子的变化与证券组合价值变化的关系。对于市场因子的特定变化量,通过这关系种变化关系可得到证券组合价值的变化量。针对不同的金融产品有不同的灵敏度。比如:在固定收入市场的久期,在股票市场的“β”,在衍生工具市场“δ”等。灵敏度方法由于其简单直观而得到广泛的应用但是它有如下的缺陷:

(1)只有在市场因子变化很小时,这种近似关系才与现实相符,是一种局部性测量方法;

(2)对产品类型的高度依赖性;

(3)不稳定性。如股票的“贝塔”系数存在不稳定的缺陷,用其衡量风险,有很大的争议;

(4)相对性。敏感度只是相对的比例概念,并没有回答损失到底有多大。

四、一致性风险度量模型(Coherentmeasure of risk)

Artzner et al.(1997)提出了一致性风险度量模型,认为一个完美的风险度量模型必须满足下面的约束条件:

(1)单调性;

(2)次可加性;

(3)正齐次性;

(4)平移不变性。

次可加性条件保证了组合的风险小于等于构成组合的每个部分风险的和,这一条件与我们进行分散性投资可以降低非系统风险相一致,是一个风险度量模型应具有的重要的属性,在实际中如银行的资本金确定和*3化组合确定中也具有重要的意义。目前一致性风险度量模型有:

(1)CVaR模型(Condition Value at Risk):条件风险价值(CVaR)模型是指在正常市场条件下和一定的置信水平a上,测算出在给定的时间段内损失超过VaRa的条件期望值。CVaR模型在一定程度上克服了VaR模型的缺点不仅考虑了超过VaR值的频率,而且考虑了超过VaR值损失的条件期望,有效的改善了VaR模型在处理损失分布的后尾现象时存在的问题。当证券组合损失的密度函数是连续函数时,CVaR模型是一个一致性风险度量模型,具有次可加性,但当证券组合损失的密度函数不是连续函数时,CVaR模型不再是一致性风险度量模型,即CVaR模型不是广义的一致性风险度量模型,需要进行一定的改进。

(2)ES模型(Expected Shortfall):ES模型是在CVaR基础上的改进版,它是一致性风险度量模型。如果损失X的密度函数是连续的,则ES模型的结果与CVaR模型的结果相同;如果损失X的密度函数是不连续的,则两个模型计算出来的结果有一定差异。

(3)DRM模型(Distortion Risk-Measure):DRM通过一个测度变换得到一类新的风险度量指标。DRM模型包含了诸如VaR、CVaR等风险度量指标,它是一类更广义的风险度量指标。

(4)谱风险测度:2002年,Acerbi对ES进行了推广,提出了谱风险测度(Spectral Risk Measure)的概念,并证明了它是一致性风险度量。但是该测度实际计算的难度很大,维数过高时,即使转化成线性规划问题,计算也相当困难。

五、信息熵方法

由不确定性把信息熵与风险联系在一起引起了众多学者的研究兴趣,例如Maasoumi,Ebrahim,Massoumi and Racine,Reesor.R等分别从熵的不同角度考虑了风险的度量,熵是关于概率的一个单调函数,非负,计算量相对较少,熵越大风险越大。

六、未来的发展趋势

近年来行为金融学逐渐兴起,它将心理学的研究成果引入到标准金融理论的研究,弥补了标准金融理论中存在的一些缺陷,将投资心理纳入到证券投资风险度量,提出了两者基于行为金融的认知风险度量方法,并讨论了认知风险与传统度量方差的关系。2004年Murali Rao给出一种新的不确定性度量--累积剩余熵。累积剩余熵是用分布函数替换了Shannon熵的概率分布律或密度函数,它具有一些良好的数学性质,这个定义推广了Shannon熵的概念让离散随机变量和连续随机变量的熵合二为一,也许会将风险度量的研究推向一个新的台阶。

总之,金融风险的度量对资产投资组合、资产业绩评价、风险控制等方面有着十分重要的意义。针对不同的风险源、风险管理目标,产生了不同的风险度量方法,它们各有利弊,反映了风险的不同特征和不同侧面。在风险管理的实践中,只有综合不同的风险度量方法,从各个不同的角度去度量风险,才能更好地识别和控制风险,这也是未来风险度量的发展趋势。