Transformer des variables continues en catégories (2)
Un cas particulier de la transformation précédente consiste à découper une variable continue en intervalles définis par les quantiles de la variable. On utilise souvent cette transformation pour analyser des réponses à des sondages ou des notes d'évaluation. Si vous demandez aux gens de noter quelque chose de une à cinq étoiles, la médiane n'est pas toujours trois étoiles. Dans ce cas, il peut être utile de répartir leurs notes par quantiles. Par exemple, vous pouvez créer cinq groupes quintiles en coupant aux 0e, 20e, 40e, 60e, 80e et 100e centiles.
La façon de base en R consiste à utiliser cut() + quantile(). L'équivalent dans sparklyr utilise la transformation ft_quantile_discretizer(). Elle prend l'argument num_buckets, qui détermine le nombre d'intervalles. Les approches de base R et de sparklyr sont présenté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 intervalles produits sont des nombres, à partir de zéro. Si vous souhaitez les utiliser dans R, convertissez-les explicitement en factor.
Cette activité fait partie du cours
Introduction à Spark avec sparklyr en R
Instructions de l’exercice
Une connexion Spark a été créée pour vous sous le nom spark_conn. Une tibble liée aux métadonnées de pistes stockées dans Spark a été pré‑définie sous le nom track_metadata_tbl. duration_labels est un vecteur de caractères décrivant des durées.
- Créez une variable appelé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 intervalles par quantile deduration. - Rapatriez le résultat avec
collect(). - Convertissez le champ
duration_binen facteur avec les étiquettesduration_labels.
- Sélectionnez les champs
- Tracez un diagramme en boîtes avec
ggplot()deartist_familiarityparduration_bin.- Le premier argument de
ggplot()est l'argument des 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 tracer les boîtes.
- Le premier argument de
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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(___, ___)) +
___()