Comment calculer la corrélation dans R avec des valeurs manquantes
Vous pouvez utiliser les méthodes suivantes pour calculer les coefficients de corrélation dans R lorsqu’une ou plusieurs variables ont des valeurs manquantes :
Méthode 1 : calculer le coefficient de corrélation avec les valeurs manquantes présentes
cor(x, y, use='complete.obs')
Méthode 2 : calculer la matrice de corrélation avec les valeurs manquantes présentes
cor(df, use='pairwise.complete.obs')
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Exemple 1 : calculer le coefficient de corrélation avec les valeurs manquantes présentes
Supposons que nous essayions d’utiliser la fonction cor() pour calculer le coefficient de corrélation de Pearson entre deux variables lorsque des valeurs manquantes sont présentes :
#create two variables
x <- c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85)
y <- c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75)
#attempt to calculate correlation coefficient between x and y
cor(x, y)
[1] NA
La fonction cor() renvoie NA puisque nous n’avons pas précisé comment gérer les valeurs manquantes.
Pour éviter ce problème, nous pouvons utiliser l’argument use=’complete.obs’ afin que R sache qu’il doit utiliser uniquement des observations par paires où les deux valeurs sont présentes :
#create two variables
x <- c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85)
y <- c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75)
#calculate correlation coefficient between x and y
cor(x, y, use='complete.obs')
[1] -0.4888749
Le coefficient de corrélation entre les deux variables s’avère être de -0,488749 .
Notez que la fonction cor() utilisait uniquement des combinaisons par paires où les deux valeurs étaient présentes lors du calcul du coefficient de corrélation.
Exemple 2 : calculer la matrice de corrélation avec les valeurs manquantes présentes
Supposons que nous essayions d’utiliser la fonction cor() pour créer une matrice de corrélation pour un bloc de données avec trois variables lorsque des valeurs manquantes sont présentes :
#create data frame with some missing values
df <- data.frame(x=c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85),
y=c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75),
z=c(57, 57, 58, 59, 60, 78, 81, 83, NA, 90))
#attempt to create correlation matrix for variables in data frame
cor(df)
x y z
x 1 NA NA
y NA 1 NA
z NA NA 1
La fonction cor() renvoie NA à plusieurs endroits puisque nous n’avons pas précisé comment gérer les valeurs manquantes.
Pour éviter ce problème, nous pouvons utiliser l’argument use=’pairwise.complete.obs’ afin que R sache qu’il doit utiliser uniquement des observations par paires où les deux valeurs sont présentes :
#create data frame with some missing values
df <- data.frame(x=c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85),
y=c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75),
z=c(57, 57, 58, 59, 60, 78, 81, 83, NA, 90))
#create correlation matrix for variables using only pairwise complete observations
cor(df, use='pairwise.complete.obs')
x y z
x 1.0000000 -0.4888749 0.1311651
y -0.4888749 1.0000000 -0.1562371
z 0.1311651 -0.1562371 1.0000000
Les coefficients de corrélation pour chaque combinaison par paire de variables dans la base de données sont maintenant affichés.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment trouver la valeur P du coefficient de corrélation dans R
Comment calculer la corrélation de Spearman dans R
Comment calculer la corrélation glissante dans R