You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12 KiB

Visualisering av fordelinger

 Sketchnote av (@sketchthedocs)
Visualisering av fordelinger - Sketchnote av @nitya

I forrige leksjon lærte du noen interessante fakta om et datasett om fuglene i Minnesota. Du oppdaget feilaktige data ved å visualisere uteliggere og så på forskjellene mellom fuglekategorier basert på deres maksimale lengde.

Quiz før leksjonen

Utforsk fugledatasettet

En annen måte å grave i data på er ved å se på fordelingen, eller hvordan dataene er organisert langs en akse. Kanskje du for eksempel ønsker å lære om den generelle fordelingen i dette datasettet av maksimal vingespenn eller maksimal kroppsmasse for fuglene i Minnesota.

La oss oppdage noen fakta om fordelingen av data i dette datasettet. I din R-konsoll, importer ggplot2 og databasen. Fjern uteliggere fra databasen slik som i forrige tema.

library(ggplot2)

birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")

birds_filtered <- subset(birds, MaxWingspan < 500)
head(birds_filtered)
Navn VitenskapeligNavn Kategori Orden Familie Slekt Bevaringsstatus MinLengde MaksLengde MinKroppsmasse MaksKroppsmasse MinVingespenn MaksVingespenn
0 Svartbukfløyteand Dendrocygna autumnalis Ender/Gjess/Vannfugler Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Brunfløyteand Dendrocygna bicolor Ender/Gjess/Vannfugler Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Snøgås Anser caerulescens Ender/Gjess/Vannfugler Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Rossgås Anser rossii Ender/Gjess/Vannfugler Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Større hvitkinngås Anser albifrons Ender/Gjess/Vannfugler Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

Generelt kan du raskt se hvordan data er fordelt ved å bruke et spredningsdiagram, slik vi gjorde i forrige leksjon:

ggplot(data=birds_filtered, aes(x=Order, y=MaxLength,group=1)) +
  geom_point() +
  ggtitle("Max Length per order") + coord_flip()

maks lengde per orden

Dette gir en oversikt over den generelle fordelingen av kroppslengde per fugleorden, men det er ikke den optimale måten å vise sanne fordelinger på. Den oppgaven håndteres vanligvis ved å lage et histogram.

Arbeide med histogrammer

ggplot2 tilbyr svært gode måter å visualisere datafordeling ved hjelp av histogrammer. Denne typen diagram ligner et stolpediagram hvor fordelingen kan sees gjennom stigning og fall av stolpene. For å lage et histogram trenger du numeriske data. For å lage et histogram kan du plotte et diagram og definere typen som 'hist' for histogram. Dette diagrammet viser fordelingen av MaksKroppsmasse for hele datasettets numeriske data. Ved å dele opp datasettet i mindre grupper kan det vise fordelingen av verdiene:

ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + 
  geom_histogram(bins=10)+ylab('Frequency')

fordeling over hele datasettet

Som du kan se, faller de fleste av de 400+ fuglene i dette datasettet innenfor området under 2000 for deres Maks Kroppsmasse. Få mer innsikt i dataene ved å endre bins-parameteren til et høyere tall, for eksempel 30:

ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency')

fordeling-30bins

Dette diagrammet viser fordelingen på en litt mer detaljert måte. Et diagram som er mindre skjevt mot venstre kan opprettes ved å sørge for at du bare velger data innenfor et gitt område:

Filtrer dataene dine for å få kun de fuglene som har kroppsmasse under 60, og vis 30 bins:

birds_filtered_1 <- subset(birds_filtered, MaxBodyMass > 1 & MaxBodyMass < 60)
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + 
  geom_histogram(bins=30)+ylab('Frequency')

filtrert histogram

Prøv noen andre filtre og datapunkter. For å se hele fordelingen av dataene, fjern ['MaxBodyMass']-filteret for å vise merkede fordelinger.

Histogrammet tilbyr også noen fine farge- og merkeforbedringer å prøve:

Lag et 2D-histogram for å sammenligne forholdet mellom to fordelinger. La oss sammenligne MaxBodyMass vs. MaxLength. ggplot2 tilbyr en innebygd måte å vise konvergens ved hjelp av lysere farger:

ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) +
  geom_bin2d() +scale_fill_continuous(type = "viridis")

Det ser ut til å være en forventet korrelasjon mellom disse to elementene langs en forventet akse, med ett spesielt sterkt punkt av konvergens:

2d plot

Histogrammer fungerer godt som standard for numeriske data. Hva om du trenger å se fordelinger basert på tekstdata?

Utforsk datasettet for fordelinger ved hjelp av tekstdata

Dette datasettet inkluderer også god informasjon om fuglekategori og dens slekt, art og familie, samt dens bevaringsstatus. La oss grave i denne bevaringsinformasjonen. Hva er fordelingen av fuglene i henhold til deres bevaringsstatus?

I datasettet brukes flere forkortelser for å beskrive bevaringsstatus. Disse forkortelsene kommer fra IUCN Red List Categories, en organisasjon som katalogiserer arters status.

  • CR: Kritisk truet
  • EN: Truet
  • EX: Utdødd
  • LC: Livskraftig
  • NT: Nær truet
  • VU: Sårbar

Dette er tekstbaserte verdier, så du må gjøre en transformasjon for å lage et histogram. Bruk den filtrerteBirds-datarammen til å vise dens bevaringsstatus sammen med dens Minimum Vingespenn. Hva ser du?

birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EX'] <- 'x1' 
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'CR'] <- 'x2'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EN'] <- 'x3'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'NT'] <- 'x4'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'VU'] <- 'x5'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'LC'] <- 'x6'

ggplot(data=birds_filtered_1, aes(x = MinWingspan, fill = ConservationStatus)) +
  geom_histogram(position = "identity", alpha = 0.4, bins = 20) +
  scale_fill_manual(name="Conservation Status",values=c("red","green","blue","pink"),labels=c("Endangered","Near Threathened","Vulnerable","Least Concern"))

vingespenn og bevaringsstatus

Det ser ikke ut til å være en god korrelasjon mellom minimum vingespenn og bevaringsstatus. Test andre elementer i datasettet ved hjelp av denne metoden. Du kan også prøve forskjellige filtre. Finner du noen korrelasjon?

Tetthetsdiagrammer

Du har kanskje lagt merke til at histogrammene vi har sett på så langt er 'trappetrinnsformede' og ikke flyter jevnt i en bue. For å vise et jevnere tetthetsdiagram kan du prøve et tetthetsdiagram.

La oss jobbe med tetthetsdiagrammer nå!

ggplot(data = birds_filtered_1, aes(x = MinWingspan)) + 
  geom_density()

tetthetsdiagram

Du kan se hvordan diagrammet gjenspeiler det forrige for Minimum Vingespenn-data; det er bare litt jevnere. Hvis du ønsket å gå tilbake til den hakkete MaksKroppsmasse-linjen i det andre diagrammet du laget, kunne du jevne den ut veldig godt ved å gjenskape den ved hjelp av denne metoden:

ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + 
  geom_density()

kroppsmasse tetthet

Hvis du ønsket en jevn, men ikke for jevn linje, rediger adjust-parameteren:

ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + 
  geom_density(adjust = 1/5)

mindre jevn kroppsmasse

Les om parameterne som er tilgjengelige for denne typen diagram og eksperimenter!

Denne typen diagram tilbyr vakkert forklarende visualiseringer. Med noen få linjer kode kan du for eksempel vise maks kroppsmasse tetthet per fugleorden:

ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) +
  geom_density(alpha=0.5)

kroppsmasse per orden

🚀 Utfordring

Histogrammer er en mer sofistikert type diagram enn grunnleggende spredningsdiagrammer, stolpediagrammer eller linjediagrammer. Gjør et søk på internett for å finne gode eksempler på bruk av histogrammer. Hvordan brukes de, hva viser de, og innen hvilke felt eller områder brukes de vanligvis?

Quiz etter leksjonen

Gjennomgang og selvstudium

I denne leksjonen brukte du ggplot2 og begynte å jobbe med å vise mer sofistikerte diagrammer. Gjør litt research på geom_density_2d() en "kontinuerlig sannsynlighetstetthetskurve i en eller flere dimensjoner". Les gjennom dokumentasjonen for å forstå hvordan det fungerer.

Oppgave

Bruk ferdighetene dine


Ansvarsfraskrivelse:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.