Hoe de jitter-functie in r te gebruiken voor puntenwolken


In deze tutorial wordt uitgelegd wanneer en hoe u de jitter- functie in R voor puntenwolken kunt gebruiken.

Wanneer jitter gebruiken?

Spreidingsdiagrammen zijn uitstekend geschikt voor het visualiseren van de relatie tussen twee continue variabelen. Het volgende spreidingsdiagram helpt ons bijvoorbeeld de relatie tussen lengte en gewicht voor 100 atleten te visualiseren:

 #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')

Soms willen we echter misschien de relatie visualiseren tussen een continue variabele en een andere bijna continue variabele.

Stel dat we bijvoorbeeld de volgende gegevensset hebben die het aantal wedstrijden weergeeft dat een basketbalspeler is begonnen gedurende de eerste tien wedstrijden van een seizoen, samen met het gemiddelde aantal punten per wedstrijd:

 #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

Punten per spel zijn een continue variabele, maar gestarte spellen zijn een discrete variabele. Als we proberen een spreidingsdiagram van deze twee variabelen te maken, ziet het er zo uit:

 #create scatterplot of games started vs average points per game
plot(data$games_started, data$points_per_game, pch = 16, col = 'steelblue')

Op basis van dit spreidingsdiagram kunnen we zeggen dat het begin van het spel en het gemiddelde aantal punten per spel een positieve relatie hebben, maar het is een beetje moeilijk om de individuele punten in het plot te zien, omdat veel ervan elkaar overlappen.

Met behulp van de Jitter- functie kunnen we wat „ruis“ toevoegen aan de gegenereerde variabelensets op de X-as, zodat we de afzonderlijke punten op de grafiek duidelijker kunnen zien:

 #add jitter to games started
plot( jitter (data$games_started), data$points_per_game, pch = 16, col = 'steelblue')

We kunnen optioneel een numeriek argument aan jitter toevoegen om nog meer ruis aan de gegevens toe te voegen:

 #add jitter to games started
plot( jitter (data$games_started, 2 ), data$points_per_game, pch = 16, col = 'steelblue')

We moeten echter oppassen dat we niet te veel jitter toevoegen, omdat dit de originele gegevens te veel zou kunnen vervormen:

 plot( jitter (data$games_started, 20 ), data$points_per_game, pch = 16, col = 'steelblue')

Jittering zorgt voor een beter zicht op gegevens

Instabiliteit is vooral handig wanneer een van de niveaus van de discrete variabele veel meer waarden heeft dan de andere niveaus.

In de volgende dataset zijn er bijvoorbeeld driehonderd basketbalspelers die aan twee van de eerste vijf wedstrijden van het seizoen zijn begonnen, maar slechts ongeveer 100 spelers die aan 1, 3, 4 of 5 wedstrijden zijn begonnen:

 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)

Wanneer we het aantal gespeelde games visualiseren in verhouding tot de gemiddelde punten per game, kunnen we zeggen dat er meer spelers zijn die 2 games hebben gespeeld, maar het is moeilijk om precies te zeggen hoeveel anderen 2 games hebben gespeeld:

 plot(all_data$games_started, all_data$points_per_game, pch = 16, col = 'steelblue')

Zodra we echter jitter toevoegen aan de variabele voor het begin van het spel , kunnen we zien hoeveel extra spelers 2 games zijn gestart:

 plot( jitter (all_data$games_started), all_data$points_per_game,
     pch=16, col='steelblue')

Als u de hoeveelheid jitter iets verhoogt, wordt dit verschil nog duidelijker:

 plot( jitter (all_data$games_started, 1.5 ), all_data$points_per_game,
     pch=16, col='steelblue')

Jitter alleen voor visualisaties

Zoals eerder vermeld, voegt jitter willekeurige ruis toe aan gegevens, wat nuttig kan zijn als we gegevens in een puntenwolk willen visualiseren. Door de jitterfunctie te gebruiken, kunnen we een beter beeld krijgen van de werkelijke onderliggende relatie tussen twee variabelen in een dataset.

Bij het gebruik van statistische analyses zoals regressie heeft het echter geen zin om willekeurige ruis toe te voegen aan de variabelen in een dataset, omdat dit de resultaten van een analyse zou beïnvloeden.

Jitter is dus alleen bedoeld om te worden gebruikt voor datavisualisatie, niet voor data-analyse.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert