R 如何使用0(零)值进行PCA

R 如何使用0(零)值进行PCA,r,pca,R,Pca,我想用月降雨量做一个主成分分析。因为冬天没有雨,所以我列中的很多值都是0 当我运行PCA时,控制台中会出现以下消息:cov.wt(z)中的错误:'x'必须仅包含有限值 我想R在这里告诉我的是,它不喜欢我的0值 因此,我试图通过将所有值乘以1.0000000001,将我的0值改为“实数”。但是,即使我这样做并使用新值再次运行R,它也会弹出相同的消息 我读到,我需要要么清除其中有任何缺失值的行(我不能),要么使用PCA代码,通过某种方式输入缺失值来处理缺失值。但是我的0是实际值,而不是缺少的值 我在

我想用月降雨量做一个主成分分析。因为冬天没有雨,所以我列中的很多值都是0

当我运行PCA时,控制台中会出现以下消息:cov.wt(z)中的错误:'x'必须仅包含有限值

我想R在这里告诉我的是,它不喜欢我的0值

因此,我试图通过将所有值乘以1.0000000001,将我的0值改为“实数”。但是,即使我这样做并使用新值再次运行R,它也会弹出相同的消息

我读到,我需要要么清除其中有任何缺失值的行(我不能),要么使用PCA代码,通过某种方式输入缺失值来处理缺失值。但是我的0是实际值,而不是缺少的值

我在网上找到了很多关于如何处理缺失值或NA值的信息,但没有找到关于如何处理零值的信息。有人对我如何做到这一点有什么建议吗?非常感谢你的帮助

我的猜测是,“cov.wt(z)中的误差:'x'必须只包含有限值”抱怨某些协方差是非有限的,即NA/NaN。如果变量的标准偏差为0,则可能发生这种情况

示例代码:

latent = rnorm(10)
data = data.frame(rep(0,10), #10 0's
                  latent+rnorm(10),  #latent and noise
                  latent+rnorm(10),     #
                  latent+1.5*rnorm(10)) #
colnames(data) = c("zeros","var1","var2","var3")

library(psych)
principal(data)     #error!
principal(data[-1]) #no errors

如果将
prcomp
与默认值一起使用,则变量仍然居中。另外,
1.0000000001*0==0
。但是,我在这里没有看到编程问题。这可能更像是一个统计问题。