我有这个脚本,它对变量数量进行简单的 PCA 分析,最后将两个坐标和另外两个列(存在,NZ_Field)附加到输出文件。我以前做过很多次,但现在它给了我这个错误:
我知道这意味着存在负特征值。我查看了建议使用 na.omit 的类似帖子,但它没有用。我在这里上传了“biodata.Rdata”文件:
协方差矩阵不是非负定的
https://www.dropbox.com/s/1ex2z72lilxe16l/biodata.rdata?dl=0
我很确定这不是因为数据中缺少值,因为我使用了具有不同“存在”和“NZ_Field”列的相同数据。
非常感谢任何帮助。
load("biodata.rdata")
#save data separately
coords=biodata[,1:2]
biovars=biodata[,3:21]
presence=biodata[,22]
NZ_Field=biodata[,23]
#Do PCA
bpc=princomp(biovars ,cor=TRUE)
#re-attach data with auxiliary data..coordinates, presence and NZ location data
PCresults=cbind(coords, bpc$scores[,1:3], presence, NZ_Field)
write.table(PCresults,file= "hlb_pca_all.txt", sep= ",",row.names=FALSE)