Transformer des variables continues en catégories (2)
Un cas particulier de la transformation précédente consiste à découper une variable continue en classes définies par les quantiles de cette variable. On utilise souvent cette transformation pour analyser des réponses à des enquêtes ou des notes. Si vous demandez aux personnes d’évaluer quelque chose de une à cinq étoiles, la médiane n’est pas forcément de trois étoiles. Dans ce cas, il peut être utile de répartir les notes par quantile. Par exemple, vous pouvez créer cinq groupes (quintiles) en coupant aux 0e, 20e, 40e, 60e, 80e et 100e centiles.
La méthode base R consiste à utiliser cut() + quantile(). L’équivalent sparklyr utilise la transformation ft_quantile_discretizer(). Elle prend un argument num_buckets, qui détermine le nombre de classes. Les approches base R et sparklyr sont montrées côte à côte. Comme précédemment, right = FALSE et include.lowest sont définis.
survey_response_group <- cut(
survey_score,
breaks = quantile(survey_score, c(0, 0.25, 0.5, 0.75, 1)),
labels = c("hate it", "dislike it", "like it", "love it"),
right = FALSE,
include.lowest = TRUE
)
survey_data %>%
ft_quantile_discretizer("survey_score", "survey_response_group", num_buckets = 4)
Comme avec ft_bucketizer(), les classes obtenues sont des nombres commençant à zéro. Si vous souhaitez les manipuler dans R, convertissez-les explicitement en factor.
Cet exercice fait partie du cours
Introduction à Spark avec sparklyr en R
Instructions
Une connexion Spark a été créée pour vous sous le nom spark_conn. Un tibble lié aux métadonnées des pistes stockées dans Spark a été pré‑défini sous le nom track_metadata_tbl. duration_labels est un vecteur de caractères décrivant des durées.
- Créez une variable nommée
familiarity_by_durationà partir detrack_metadata_tbl.- Sélectionnez les champs
durationetartist_familiarity. - Utilisez
ft_quantile_discretizer()pour créer un nouveau champ,duration_bin, à partir de 5 classes de quantiles deduration. - Collectez le résultat.
- Convertissez le champ
duration_binen facteur avec les étiquettesduration_labels.
- Sélectionnez les champs
- Tracez un diagramme en boîtes
ggplot()deartist_familiarityparduration_bin.- Le premier argument de
ggplot()est l’argument de données,familiarity_by_duration. - Le deuxième argument de
ggplot()est l’esthétique, qui prendduration_binetartist_familiarityenveloppés dansaes(). - Ajoutez
geom_boxplot()pour dessiner les boîtes.
- Le premier argument de
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# track_metadata_tbl, duration_labels have been pre-defined
track_metadata_tbl
duration_labels
familiarity_by_duration <- track_metadata_tbl %>%
# Select duration and artist_familiarity
___ %>%
# Bucketize duration
___ %>%
# Collect the result
___ %>%
# Convert duration bin to factor
___
# Draw a boxplot of artist_familiarity by duration_bin
ggplot(___, aes(___, ___)) +
___()