Quiero hacer un PCA en R con valores de lluvia mensuales. Como no llueve durante el invierno, algunos valores en mis columnas son 0.
Cuando ejecuto la PCA, aparece el siguiente mensaje en la consola: Error en cov.wt (z): "x" solo debe contener valores finitos
Creo que lo que R me está diciendo aquí es que no le gustan mis 0 valores.
Entonces, intenté cambiar mis valores de 0 a "números reales" multiplicando todo por 1.0000000001. Pero incluso si hago eso y ejecuto R nuevamente con los nuevos valores, aparece el mismo mensaje.
Leí que tendría que deshacerme de lafilas con cualquier valor faltante en ellas (que puedo "t") o usar un código PCA que pueda tratar con valores faltantes imputándolos de alguna manera. Pero mis 0 "son valores reales, no valores faltantes.
Encuentro mucha información en la web sobre cómolidiar con valores perdidos o valores de NA pero nada sobre cómo lidiar con valores cero. ¿Alguien tiene alguna sugerencia de cómo puedo hacer esto? ¡Muchas gracias por su ayuda!
Respuestas
0 para la respuesta № 1Mi conjetura es que "Error en cov.wt (z): "x" solo debe contener valores finitos "se queja de que algunas covarianzas no son finitas, es decir, NA / NaN. Esto puede suceder si tiene variables que tienen una desviación estándar de 0.
Código de ejemplo:
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