/ / ¿Qué tenía de malo ejecutar princomp () en R? - r, infinito, pca

¿Qué estaba mal con la ejecución de princomp () en R? - r, infinito, pca

Estaba ejecutando PCA con princomp (). Mi conjunto de datos se llama vt.

pca = princomp(as.matrix(vt))
Error in cov.wt(z) : "x" must contain finite values only

Sin embargo, cuando compruebo si obtuve valores infinitos, no hay ninguno.

sum(is.infinite(as.matrix(vt)))
[1] 0

¿Qué estaba mal con mi análisis?

vt es un data.frame con todos los valores numéricos.

is.numeric(as.matrix(vt))
[1] TRUE

Respuestas

1 para la respuesta № 1

La solución parecería ser la eliminación de los valores faltantes. Hay dos formas de eliminar los valores faltantes del conjunto de datos. Puedes eliminarlos usando na.omit() funcionar explícitamente antes de llamar princomp() o puede usar una interfaz de fórmula para princomp() con un argumento na.action=na.omit. Ha utilizado la interfaz matricial para princomp()y na.action no es una opción para la interfaz de matriz, por lo tanto, no funciona en su caso. Ver? Princomp para más detalles.

Considera lo siguiente:

# Add one missing value to USArrests data set
USArrests[1,1]<-NA

# Does not work (matrix interface)
princomp(USArrests)
# Error in cov.wt(z) : "x" must contain finite values only

# Does work (formula interface)
princomp(~., data=USArrests, na.action=na.omit)

# Does work (remove missing values before PCA)
princomp(na.omit(USArrests))

Así que en tu caso algo como:

pca = princomp(~., data=as.matrix(vt), na.action=na.omit)

debería hacer el truco.