我正在尝试使用 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)
}