全部版块 我的主页
论坛 经济学人 二区 外文文献专区
2022-5-25 10:38:22
让NAbe进行相应的库存盘点。设κA=圆形(NA/(d- 1) )(31)然后,我们将κA>1的每个子行业划分为κA组。表10总结了14次运行的模拟结果。这明显提高了性能。表11给出了统计聚类前后十大人口最多的子行业的总结,基于我们的反向测试中每个21个交易日间隔结束时的60个数据点(回想一下,我们有1260=60×21个交易日–见第4节)。聚类前各子产业平均数为165.45,聚类后各子产业平均数为184.1。7结论性意见在本文中,我们讨论了构建统计行业分类的各种细微差别。在引擎盖下,我们有聚类算法。然而,正是这些细微差别造成了巨大的差异。E、 例如,如果我们天真地对Ris进行聚类,我们得到的结果与clusteringeRis=Ris/σi相比是高度次优的,而clusteringeRis=Ris/σi的表现又不如clusteringbRis=Ris/σi。在这方面,让我们在这里绑上一个“松散的一端”:如果我们对Ris=Ris/σi进行聚类,会怎么样?它的表现不如clusteringbRis。因此,一个典型的三级“自下而上”分类,目标聚类数为K=100、K=30和K=10,基于聚类风险和聚集100个样本,得出以下结果:ROC=40.686、SR=15.789和CPS=2.075。因此,抑制收益率Risbyσiindeed似乎是最佳的——对于我们上面讨论的直觉。我们在统计风险模型中也看到了同样的情况。在这方面,在异质风险模型(Kakushadze,2015b)和更一般的(异质CAPM)构建(Kakushadze和Yu,2016a)的背景下探索这条途径将是很有意思的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-25 10:38:25
在后一个框架中,使用聚合(非二进制)矩阵是很有意思的Ohmia(见第3.3.3小节)。这些想法超出了本文的范围,我们希望在其他地方再谈这些想法。自下而上群集A的R代码。1单级聚类代码在本小节中,我们给出了R源代码(用于统计计算的R包,http://www.r-project.org)对于单层“自下而上”聚类(见第3.3.1小节)。该代码简单明了,自解释性强,只需遵循第3节中的公式和逻辑即可。主要功能是qrm。stat.ind.class(ret,k,iter.max=10,num.try=100,demean.ret=F),它在内部调用两个辅助函数。功能qrm。计算标准。ret(ret)将第3.2.1小节之后的N×d矩阵ret(返回时间序列Ris,i=1,…,N,s=1,…,d)标准化,并输出SBRIs(见等式(6))。功能qrm的输入。计算kmeans。ind(x,centers,iter.max)与内置的R函数kmeans()相同,并输出一个列表:res$ind是N×K二进制行业分类矩阵Ohmia=δG(i),a,其中G:{1,…,N}7→ {1,…,K}将股票映射到由a=1,Kres$centers是集群中心的K×d矩阵yas;res$集群isan-vector G(i);聚类数K通过参数中心传递给这个函数,如kmeans()所示。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-25 10:38:28
功能qrm的输入。stat.ind.class()为:如上所述;簇的目标数目k;k的最大次数表示迭代次数iter。最大值(与kmeans()中的值相同),默认iter。最大值=10,然而,在我们所有的回溯测试中,我们设置了iter。最大值=100(100%收敛);num.try=100(默认值),是要聚合的独立k均值采样数(见第3.3.3小节),num.try=1个对应的tono聚合(即单个k均值采样);降低身份ret=F(默认)对应于服用香草Ris,而demean。ret=T对应于在运行代码的其余部分之前对其进行横截面贬低(见第3.3.2小节)。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-25 10:38:32
主功能输出N×K二次产业分类矩阵(K≤ K) 。qrm。计算标准。ret<-函数(ret){s<-应用(ret,1,sd)u<-日志u<-u-(中值(u)-3*mad(u))u<-扩展(u)take<-u>1u[!take]<-1x<-ret/s/ureturn(x)}qrm。计算kmeans。ind<-函数(x,centers,iter.max){从第3.3.3小节回忆起,kc可以小于K,除非num.try=1.res<-new.env()y<-kmeans(x,centers,iter.max=iter.max)x<-y$clusterk<-nrow(y$centers)z<-矩阵(NA,length(x),K)(j in 1:K)z[,j]<-as.数值(x==j)z<-z[,colSums(z)>0]res<-zres$ind S$群集<-y$群集返回(res)}qrm。stat.ind.class<-函数(ret,k,iter.max=10,num.try=100,demean.ret=F){if(demean.ret)ret<-t(t(ret)-colMeans(ret))norm.ret<-qrm.calc.norm.ret(ret)(i in 1:num.try){res<-qrm.calc.kmeans.ind(norm.ret,k,iter.max)if(num.try==1)return(res$ind)(i==1){comb.cent res$centerscomb.ind<-res$ind}其他{comb.cent<-rbind(comb.cent,res$centers)comb.ind<-cbind(comb.ind,res$ind)}}res<-qrm。计算kmeans。ind(comb.cent,k,iter.max)cl<-res$clusterz<-矩阵(0,nrow(ret),k)(i in 1:长度(cl))z[,cl[i]]<-z[,cl[i]+comb。ind[,i]q<-colSums(z)(i in 1:nrow(z)){take<-z[i,]==max(z[i,])take<-take&q==max(q[take])ix<-1:ncol(z)ix<-min(ix[take])z[i,]<-0z[i,ix]<-1}z<-z[,colSums(z)>0]return(z)}A.2多级聚类代码在本小节中,我们给出了构建多级“自下而上”统计行业分类的R源代码职位(见第3.3.1小节)。只有一个功能qrm。统计索引类。全部(ret,k,iter.max=10,num.try=100,do.demean=rep(F,长度(k)),norm。cl.ret=F),它在内部调用主函数qrm。子节A.1中的stat.ind.class(),具有相同的输入ret,iter。最大和数值。尝试以下新输入:k是P向量ku,u=1。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-25 10:38:35
,P,其中P是层数(见第3.3.1小节);做demean=rep(F,length(k))是一个布尔P向量,用于设置输入demean。qrm中的ret。stat.ind.class()(在我们的回溯测试中,我们将do.demean的所有元素设置为TRUE,但第一个元素除外);标准cl.ret=F对应于等式(10)后面的选项(i)和norm。cl.ret=T对应于选项(ii)(我们在回溯测试中主要使用选项(i)——见第4节)。输出是一个列表:ind.list[[i]]是N×Ku(不是Ku-1×Ku)二元行业分类矩阵,级别i=u,即将库存映射到级别-u集群Ca(u)。qrm。统计索引类。所有<-函数(ret,k,iter.max=10,num.try=100,do.demean=rep(F,length(k)),norm。cl.ret=F{ind.list<-list()(i/1:长度(k)){ind.list[[i]]<-qrm.stat.ind.class(ret,k[i],iter.max=iter.max,num.try=num.try,demean.ret=do.demean[i])如果(norm.cl.ret)ret<-t(ind.list[[i]])%*%qrm.calc.ret(ret)elseret<-t(ind.list[[i]])%*%i>1){ind.list[[i]]<ind.list[[i-1]]%*%ind.list[[i]]take<-ind.list[[i]]>0ind.list[[i]][take]<-1}}return(ind.list)}A.3动态固定集群数量的代码在本小节中,我们给出了用动态固定的集群数量构建多级“自下而上”统计行业分类的R源代码(见第5节和第5.2小节)。主要功能qrm。统计索引类。dyn(ret,p,iter.max=10,num.try=100,top.down=F)具有与上述相同的输入,不同之处在于:p是级别数,并且在顶部时。down=F它在内部调用functionqrm。统计索引类。A.2小节中的all(),而在顶部。down=T它在内部调用函数qrm。附录B中的stat.class()。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-25 10:38:40
main函数在内部也调用函数qrm。eigen(ret,calc.cor=T),它提供了一种更有效的方法,通过内部调用R函数qrm,计算基于ret的样本协方差(当calc.cor=F时)或相关性(当calc.cor=T时)矩阵的特征对,而不是构建的inR函数eigen()。计算特征值。来自(Kakushadze和Yu,2016b)附录C的eff(ret,calc.cor=F)(当d≤ N+1)。它还在内部调用R内函数qrm。计算cov。mat(x,calc.cor=F)(当d>N+1时)。输出为列表ind.list,与第a.2小节中的相同。qrm。统计索引类。dyn<-函数(ret,p,iter.max=10,num.try=100,top.down=F){k1<-四舍五入(nrow(ret)/(ncol(ret)-1)如果(p>1){y<-qrm.eigen(ret,calc.cor=T)$valueskp<-四舍五入(qrm.calc.erank(y,F))如果(k1<-k<-其他{q<-((p-1):0)/(p-1)如果k<-四舍五入(k1^q*kp ^(1-q))}如果(k[p]==1)k<-k[-p]do。demean<-代表(T,长度(k))do。demean[1]<-Fif(上下){k1<-c(k[-1],1)k<-round(k/k1)[长度(k):1]ind.list<-qrm.stat.class(ret,k,iter.max=iter.max,num.try=num.try)}elseind。列表<-qrm。统计索引类。所有(ret,k,iter.max=iter.max,num.try=num.try,do.demean=do.demean)返回(ind.list)}qrm。本征<-函数(ret,calc.cor=F){如果(ncol(ret)-1<=nrow(ret))返回(qrm.calc.eigen.eff(ret,calc.cor=calc.cor))返回(本征(qrm.calc.cov.mat(ret,calc.cor=calc.cor))}qrm。计算cov。mat<-函数(x,calc.cor=F){tr<-应用(x,1,sd)x<-x/trx<-x-行均值(x)y<-x%*%t(x)/(ncol(x)-1)返回(y)}A.4混合产业分类代码在本小节中,我们给出了第6节中讨论的混合产业分类的R源代码。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-25 10:38:43
只有一个功能qrm。改进ind.class(ret,ind,iter.max=10,num.try=100),它在内部调用小节A.1 qrm中的主函数。stat.ind.class()具有相同的输入ret,iter。max和num.try,以及以下新输入:ind是N×K*二元行业分类矩阵对应于“基本”行业分类的最细粒度级别(例如BIC中的子行业)。输出为N×K*二元行业分类矩阵ind1。这里是K*≥ K*. 通常为K*> K*, 因此,在聚类后,我们得到了更细粒度的行业分类。如果K*= K*, 那么ind1与ind.qrm相同。改进ind.class<-函数(ret,ind,iter.max=10,num.try=100){ind1<-rep(NA,nrow(ret))(i in 1:ncol(ind)){k<-round(sum(ind[,i])/(ncol(ret)-1)),如果(k<2){ind1<-cbind(ind1,ind[,i])next}take<-ind[,i]>0x<-ret[take,]y<-qrm。stat.ind.class(x,k,iter.max=iter.max,num.try=num.try)if(length(y)>sum(take))tmp<-矩阵(0,nrow(ret),ncol(y))elsetmp<-矩阵(0,nrow(ret),1)tmp【take,】<-yind1<-cbind(ind1,tmp)}ind1<-ind1[,-1]return(ind1)}B自顶向下聚类的R代码在本附录中,我们给出了构建多级“自顶向下”统计行业分类的R源代码(见第3.3.4小节):qrm。stat.class(ret,k,iter.max=10,num.try=100)在内部调用qrm。stat.ind.class()在第A.1节中定义,使用相同的输入ret,iter。max和num.try,以及以下新输入:k=(LP,LP-1.五十、 L)是反向P向量Lu,u=1,P,在第3.3.4小节中定义,P是级别数。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-25 10:38:47
输出为listind。与第A.2小节中相同的P成员列表。qrm。stat.class<-函数(ret,k,iter.max=10,num.try=100){k<-c(1,k)n<-nrow(ret)p<-长度(k)ind<-list()ind.list<-list(),for(lvl in 1:p)ind[[lvl]]<-矩阵(1,n,1)for(lvl in 2:p){for(a in 1:ncol(ind[[lvl-1]]){take<-ind[lvl-1][,a]>0tmp.k<-求和(take如果(tmp.k<=k[lvl]){ind[[lvl]]<-cbind(ind[[lvl]],as.numeric(take))next}x<-矩阵(ret[take,],tmp.k,ncol(ret))norm。x<-qrm。计算标准。ret(x)tmp。ind<-qrm。如果(长度(tmp.ind)>tmp,则stat.ind.class(x,k【lvl】,iter.max,num.try=num.try)。k) tmp<-矩阵(0,n,ncol(tmp.ind))elsetmp<-矩阵(0,n,1)tmp[取,]<-tmp。indind[[lvl]]<-cbind(ind[[lvl]],tmp)}ind[[lvl]]]<-ind[[lvl][,-1]}for(p:2中的lvl)ind.list[[p-lvl+1]]<-ind[[lvl]]return(ind.list)}C松弛聚类的R代码在本附录中,我们给出了构建基于多层统计行业分类的松弛算法的R源代码(见第3.3.5小节)。第一个函数,qrm。统计群集。所有(ret,k,do.demean=rep(F,长度(k)),标准。cl.ret=F),本质上与函数qrm相同。统计索引类。A.2小节中的all(),但在内部调用函数qrm。stat.clust(ret,k,demean.ret=F,return.clust=F)。后者使用k簇构建基于松弛的单层分类。额外的输入是return。clust:设置为TRUE时,此函数输出N向量G(i),而不是N×K二进制行业分类矩阵(默认值)。回想一下G:{1,…,N}7→{1。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群