|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago |
README.md
Visualisera distributioner
![]() |
---|
Visualisera distributioner - Sketchnote av @nitya |
I den föregående lektionen lärde du dig några intressanta fakta om en dataset om fåglar i Minnesota. Du hittade felaktiga data genom att visualisera avvikare och tittade på skillnaderna mellan fågelkategorier baserat på deras maximala längd.
Quiz före föreläsningen
Utforska datasetet om fåglar
Ett annat sätt att gräva i data är att titta på dess distribution, eller hur datan är organiserad längs en axel. Kanske vill du till exempel lära dig om den generella distributionen, för detta dataset, av den maximala vingbredden eller den maximala kroppsmassan för fåglarna i Minnesota.
Låt oss upptäcka några fakta om distributionerna av data i detta dataset. I din R-konsol, importera ggplot2
och databasen. Ta bort avvikare från databasen precis som i det föregående ämnet.
library(ggplot2)
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
birds_filtered <- subset(birds, MaxWingspan < 500)
head(birds_filtered)
Namn | VetenskapligtNamn | Kategori | Ordning | Familj | Släkte | Bevarandestatus | MinLängd | MaxLängd | MinKroppsmassa | MaxKroppsmassa | MinVingbredd | MaxVingbredd | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Svartbukig visselanka | Dendrocygna autumnalis | Änder/Gäss/Vattenfåglar | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
1 | Rödbrun visselanka | Dendrocygna bicolor | Änder/Gäss/Vattenfåglar | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
2 | Snögås | Anser caerulescens | Änder/Gäss/Vattenfåglar | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
3 | Ross' gås | Anser rossii | Änder/Gäss/Vattenfåglar | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
4 | Större vitkindad gås | Anser albifrons | Änder/Gäss/Vattenfåglar | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Generellt kan du snabbt se hur data är fördelad genom att använda ett spridningsdiagram, som vi gjorde i den föregående lektionen:
ggplot(data=birds_filtered, aes(x=Order, y=MaxLength,group=1)) +
geom_point() +
ggtitle("Max Length per order") + coord_flip()
Detta ger en översikt över den generella fördelningen av kroppslängd per fågelordning, men det är inte det optimala sättet att visa verkliga fördelningar. Den uppgiften hanteras vanligtvis genom att skapa ett histogram.
Arbeta med histogram
ggplot2
erbjuder mycket bra sätt att visualisera datafördelning med hjälp av histogram. Denna typ av diagram liknar ett stapeldiagram där fördelningen kan ses via en uppgång och nedgång av staplarna. För att bygga ett histogram behöver du numerisk data. För att skapa ett histogram kan du plotta ett diagram och definiera typen som 'hist' för histogram. Detta diagram visar fördelningen av MaxKroppsmassa för hela datasetets numeriska data. Genom att dela upp datamängden i mindre fack kan det visa fördelningen av datavärdena:
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) +
geom_histogram(bins=10)+ylab('Frequency')
Som du kan se, faller de flesta av de 400+ fåglarna i detta dataset inom intervallet under 2000 för deras Max Kroppsmassa. Få mer insikt i datan genom att ändra bins
-parametern till ett högre nummer, något som 30:
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency')
Detta diagram visar fördelningen på ett lite mer detaljerat sätt. Ett diagram som är mindre snedvridet åt vänster kan skapas genom att säkerställa att du endast väljer data inom ett visst intervall:
Filtrera din data för att få endast de fåglar vars kroppsmassa är under 60, och visa 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')
✅ Prova några andra filter och datapunkter. För att se den fullständiga fördelningen av datan, ta bort ['MaxBodyMass']
-filtret för att visa märkta fördelningar.
Histogrammet erbjuder också några trevliga färg- och märkningsförbättringar att prova:
Skapa ett 2D-histogram för att jämföra relationen mellan två fördelningar. Låt oss jämföra MaxBodyMass
vs. MaxLength
. ggplot2
erbjuder ett inbyggt sätt att visa konvergens med hjälp av ljusare färger:
ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) +
geom_bin2d() +scale_fill_continuous(type = "viridis")
Det verkar finnas en förväntad korrelation mellan dessa två element längs en förväntad axel, med en särskilt stark konvergenspunkt:
Histogram fungerar bra som standard för numerisk data. Vad händer om du behöver se fördelningar enligt textdata?
Utforska datasetet för fördelningar med hjälp av textdata
Detta dataset innehåller också bra information om fågelkategorin och dess släkte, art och familj samt dess bevarandestatus. Låt oss gräva i denna bevarandestatusinformation. Hur ser fördelningen ut för fåglarna enligt deras bevarandestatus?
✅ I datasetet används flera akronymer för att beskriva bevarandestatus. Dessa akronymer kommer från IUCN Red List Categories, en organisation som katalogiserar arters status.
- CR: Kritiskt hotad
- EN: Hotad
- EX: Utdöd
- LC: Minst bekymrad
- NT: Nära hotad
- VU: Sårbar
Dessa är textbaserade värden så du behöver göra en transformering för att skapa ett histogram. Använd den filtreradeBirds-databasen och visa dess bevarandestatus tillsammans med dess Minsta Vingbredd. Vad 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"))
Det verkar inte finnas någon bra korrelation mellan minsta vingbredd och bevarandestatus. Testa andra element i datasetet med denna metod. Du kan prova olika filter också. Hittar du någon korrelation?
Täthetsdiagram
Du kanske har märkt att histogrammen vi har tittat på hittills är "stegade" och inte flödar smidigt i en båge. För att visa ett smidigare täthetsdiagram kan du prova ett täthetsdiagram.
Låt oss arbeta med täthetsdiagram nu!
ggplot(data = birds_filtered_1, aes(x = MinWingspan)) +
geom_density()
Du kan se hur diagrammet speglar det tidigare för Minsta Vingbredd-data; det är bara lite smidigare. Om du ville återbesöka den hackiga MaxKroppsmassa-linjen i det andra diagrammet du byggde, kunde du jämna ut den mycket väl genom att återskapa den med denna metod:
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_density()
Om du ville ha en smidig, men inte alltför smidig linje, redigera adjust
-parametern:
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_density(adjust = 1/5)
✅ Läs om de parametrar som finns tillgängliga för denna typ av diagram och experimentera!
Denna typ av diagram erbjuder vackert förklarande visualiseringar. Med några få rader kod kan du till exempel visa max kroppsmassa täthet per fågelordning:
ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) +
geom_density(alpha=0.5)
🚀 Utmaning
Histogram är en mer sofistikerad typ av diagram än grundläggande spridningsdiagram, stapeldiagram eller linjediagram. Gör en sökning på internet för att hitta bra exempel på användningen av histogram. Hur används de, vad visar de, och inom vilka områden eller forskningsfält tenderar de att användas?
Quiz efter föreläsningen
Granskning & Självstudier
I denna lektion använde du ggplot2
och började arbeta med att visa mer sofistikerade diagram. Gör lite forskning om geom_density_2d()
en "kontinuerlig sannolikhetstäthetskurva i en eller flera dimensioner". Läs igenom dokumentationen för att förstå hur det fungerar.
Uppgift
Ansvarsfriskrivning:
Detta dokument har översatts med hjälp av AI-översättningstjänsten Co-op Translator. Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiserade översättningar kan innehålla fel eller inexaktheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.