2011-09-16 20 views
17

Tengo una matriz enorme con muchos valores perdidos. Quiero obtener la correlación entre las variables.Tratando con los valores faltantes para el cálculo de correlaciones

1. es la solución

cor(na.omit(matrix)) 

mejor que a continuación?

cor(matrix, use = "pairwise.complete.obs") 

Ya he seleccionado solo las variables que tienen más del 20% de valores perdidos.

2. ¿Cuál es el mejor método para tener sentido?

Respuesta

12

Yo votaría por la segunda opción. Parece que tiene una gran cantidad de datos faltantes y, por lo tanto, estaría buscando una estrategia sensata de imputación múltiple para completar los espacios. Consulte el texto de Harrell "Estrategias de modelado de regresión" para obtener una gran cantidad de orientación sobre "cómo hacer esto correctamente".

6

creo que la segunda opción tiene más sentido,

Usted podría considerar el uso de la función Rcorr en el paquete Hmisc.

Es muy rápido, y solo incluye observaciones completas por pares. El objeto devuelto contiene una matriz

  1. de las puntuaciones de correlación
  2. con el número de observación utilizada para cada valor de correlación
  3. de un valor de p para cada correlación

Esto significa que se puede ignorar los valores de correlación basados ​​en un pequeño número de observaciones (cualquiera que sea ese umbral para usted) o en base al valor p.

library(Hmisc) 
x<-matrix(nrow=10,ncol=10,data=runif(100)) 
x[x>0.5]<-NA 
result<-rcorr(x) 
result$r[result$n<5]<-0 # ignore less than five observations 
result$r 
Cuestiones relacionadas