R语言矩阵特征值分解(谱分解)和奇异值分解(SVD)特征向量分析有价证券数据

最近我们被客户要求撰写关于特征值分解的研究报告,包括一些图形和统计输出。

R语言是一门非常方便的数据分析语言,它内置了许多处理矩阵的方法。 

作为数据分析的一部分,我们要在有价证券矩阵的操作上做一些工作,只需几行代码。

有价证券数据矩阵在这里

​
 

D=read.table("secur.txt",header=TRUE)
M=marix(D[,2:10])
head(M[,1:5])

谱分解

对角线化和光谱分析之间的联系可以从以下文字中看出

​
 

> P=eigen(t(M)%*%M)$vectors
> P%*%diag(eigen(t(M)%*%M)$values)%*%t(P)
 

​

首先是这个矩阵的谱分解与奇异值分解之间的联系

​
> sqrt(eigen(t(M)%*%M)$values)
 

和其他矩阵乘积的谱分解

​
> sqrt(eigen(M%*%t(M))$values)

现在,为了更好地理解寻找有价证券的成分,让我们考虑两个变量 

 

> sM=M[,c(1,3)]
> plot(sM)
 

我们对变量标准化并减少变量(或改变度量)非常感兴趣

 

> sMcr=sM
> for(j in 1:2) sMcr[,j]=(sMcr[,j]-mean(sMcr[,j]))/sd(sMcr[,j])
> plot(sMcr)
 

在对轴进行投影之前,先介绍两个函数

> pro_a=funcion(x,u
+   ps=ep(NA,nrow(x))
+   for(i i 1:nrow(x)) ps[i=sm(x[i*u)
+   return(ps)
+ }

> prj=function(x,u){
+   px=x
+   for(j in 1:lngh(u)){
+     px[,j]=pd_cal(xu)/srt(s(u^2))u[j]  
+   }
+   return(px)
+ }
 

例如,如果我们在 x 轴上投影,

​
 

> point(poj(scr,c(1,0))
 

​

然后我们可以寻找轴的方向,这为我们提供具有最大惯性的点

> iner=function(x) sum(x^2)
> Thta=seq(0,3.492,length=01)
> V=unlslly(Theta,functinheta)ietie(roj(sMcrc(co(thet)sinheta)))
> plot(Theta,V,ype='l')
 

​

> (ange=optim(0,fun(iothet) -ertieprojsMcrc(s(teta),
si(ta)))$ar)


​

通过画图,我们得到

 

> plot(Mcr)

请注意,给出最大惯性的轴与谱分解的特征向量有关(与最大特征值相关的轴)。

>(cos(ngle),sin(ange))
[1] 0.7071 0.7070
> eigen(t(sMcr)%*%sMcr)

在开始主成分分析之前,我们需要操作数据矩阵,进行预测。


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值