SVD 分解を使用して共分散行列を計算しようとしていますが、正しく機能していません。私は次の機能を構築しました。
誰でも私が犯した間違いを指摘するのを手伝ってもらえますか.
前もって感謝します
svdcov = function(x){
svdmat = svd(x)
## d is the singular values sometimes denoted as s
## u is left singular
## v is right singular
dvec = matrix(data=NA,nrow=length(x),ncol=1)
dvec[,1] = svdmat$d
covmat = t(t(svdmat$v%*%dvec)%*%t(svdmat$u)%*%svdmat$u)%*%t(dvec)%*%svdmat$v
colnames(covmat) = colnames(x)
rownames(covmat) = colnames(x)
return(covmat)
}