如何使用0(零)值的PCA

时间:2015-03-16 12:51:50

标签: r pca

我想在R中做一个具有月降雨量值的PCA。由于冬季没有下雨,我的栏目中有很多值为0.

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

我认为R在这里告诉我的是它不喜欢我的0值。

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

我读到我需要删除其中包含任何缺失值的行(我不能)或使用可以通过某种方式处理它们来处理缺失值的PCA代码。但我的0是实际值,而不是缺失值。

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

1 个答案:

答案 0 :(得分:0)

我的猜测是" 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