Comment utiliser la fonction Jitter dans R pour les nuages de points
Ce tutoriel explique quand et comment utiliser la fonction de gigue dans R pour les nuages de points.
Quand utiliser la gigue
Les nuages de points sont excellents pour visualiser la relation entre deux variables continues. Par exemple, le nuage de points suivant nous aide à visualiser la relation entre la taille et le poids pour 100 athlètes :
#define vectors of heights and weights weights <- runif(100, 160, 240) heights <- (weights/3) + rnorm(100) #create data frame of heights and weights data <- as.data.frame(cbind(weights, heights)) #view first six rows of data frame head(data) # weights heights #1 170.8859 57.20745 #2 183.2481 62.01162 #3 235.6884 77.93126 #4 231.9864 77.12520 #5 200.8562 67.93486 #6 169.6987 57.54977 #create scatterplot of heights vs weights plot(data$weights, data$heights, pch = 16, col = 'steelblue')
Cependant, nous pouvons parfois souhaiter visualiser la relation entre une variable continue et une autre variable presque continue.
Par exemple, supposons que nous ayons l’ensemble de données suivant qui montre le nombre de matchs qu’un joueur de basket-ball a commencé sur les 10 premiers matchs d’une saison ainsi que sa moyenne de points par match :
#create data frame games_started <- sample(1:10, 300, TRUE) points_per_game <- 3*games_started + rnorm(300) data <- as.data.frame(cbind(games_started, points_per_game)) #view first six rows of data frame head(data) # games_started points_per_game #1 9 25.831554 #2 9 26.673983 #3 10 29.850948 #4 4 12.024353 #5 4 11.534192 #6 1 4.383127
Les points par partie sont une variable continue, mais les parties commencées sont une variable discrète. Si nous essayons de créer un nuage de points de ces deux variables, voici à quoi cela ressemblerait :
#create scatterplot of games started vs average points per game
plot(data$games_started, data$points_per_game, pch = 16, col = 'steelblue')
À partir de ce nuage de points, nous pouvons dire que les parties commencées et la moyenne des points par partie ont une relation positive, mais il est un peu difficile de voir les points individuels dans l’intrigue car beaucoup d’entre eux se chevauchent.
En utilisant la fonction Jitter , nous pouvons ajouter un peu de « bruit » aux jeux de variables sur l’axe X lancés afin que nous puissions voir plus clairement les points individuels sur le tracé :
#add jitter to games started plot(jitter(data$games_started), data$points_per_game, pch = 16, col = 'steelblue')
Nous pouvons éventuellement ajouter un argument numérique à jitter pour ajouter encore plus de bruit aux données :
#add jitter to games started plot(jitter(data$games_started, 2), data$points_per_game, pch = 16, col = 'steelblue')
Nous devons cependant faire attention à ne pas ajouter trop de gigue, car cela pourrait trop déformer les données d’origine :
plot(jitter(data$games_started, 20), data$points_per_game, pch = 16, col = 'steelblue')
Le jittering offre une meilleure vue des données
L’instabilité est particulièrement utile lorsqu’un des niveaux de la variable discrète a beaucoup plus de valeurs que les autres niveaux.
Par exemple, dans l’ensemble de données suivant, il y a trois cents joueurs de basket-ball qui ont commencé 2 des 5 premiers matchs de la saison, mais seulement une centaine de joueurs qui ont commencé 1, 3, 4 ou 5 matchs :
games_started <- sample(1:5, 100, TRUE) points_per_game <- 3*games_started + rnorm(100) data <- as.data.frame(cbind(games_started, points_per_game)) games_twos <- rep(2, 200) points_twos <- 3*games_twos + rnorm(200) data_twos <- as.data.frame(cbind(games_twos, points_twos)) names(data_twos) <- c('games_started', 'points_per_game') all_data <- rbind(data, data_twos)
Lorsque nous visualisons le nombre de parties jouées par rapport à la moyenne des points par partie, nous pouvons dire qu’il y a plus de joueurs qui ont joué 2 parties, mais il est difficile de dire exactement combien d’autres ont joué 2 parties :
plot(all_data$games_started, all_data$points_per_game, pch = 16, col = 'steelblue')
Cependant, une fois que nous avons ajouté la gigue à la variable de début de partie , nous pouvons voir combien de joueurs supplémentaires ont commencé 2 parties :
plot(jitter(all_data$games_started), all_data$points_per_game,
pch = 16, col = 'steelblue')
Augmenter légèrement la quantité de gigue révèle encore plus cette différence :
plot(jitter(all_data$games_started, 1.5), all_data$points_per_game, pch = 16, col = 'steelblue')
Instabilité pour les visualisations uniquement
Comme mentionné précédemment, le jittering ajoute du bruit aléatoire aux données, ce qui peut être bénéfique lorsque nous souhaitons visualiser des données dans un nuage de points. En utilisant la fonction de gigue, nous pouvons obtenir une meilleure image de la véritable relation sous-jacente entre deux variables dans un ensemble de données.
Cependant, lorsque vous utilisez une analyse statistique telle que la régression, cela n’a pas de sens d’ajouter du bruit aléatoire aux variables d’un ensemble de données, car cela aurait un impact sur les résultats d’une analyse.
Ainsi, la gigue est uniquement destinée à être utilisée pour la visualisation des données, pas pour l’analyse des données.