Upload
jurjen-helmus
View
30
Download
0
Embed Size (px)
Citation preview
College 4 – Managing Data
Hoofdstukken
Kortom: Wat is er blijven hangen van het vorige college?
Het doel van dit college is• Data kunt ombouwen naar nieuwe bruikbare
data• Datasets kunt scheiden zodat je je reproductive
research kunt uitvoeren• Aggregate functions met dplyr• Window functions in R (lead,lag,cumsum,etc)
Window functions
Time serie changes
Opdracht volgende week
Managing data volgens Pr Dt Sc
Hfst4 managing data
MANAGING DATA1. Cleaning / missing data
1. To drop or not to drop 2. Fixen categorische variabelen3. Missing in numerieke data4. Random missing values5. Systematic missing values (zie exploring data!!!!)
2. Data transformations1. Normaliseren 2. Converteren in ranges3. Rescalen op een index (timeseries)4. Transformers voor gevorderden
3. Samples
Missing data – to drop or not to drop
Missing data – niet droppen maar re-mappen
Let op, je stop dit in een nieuwe variabele zodat je altijd nog bij je originele data kunt.
Random missing data – dan maar het gemiddelde
Hoe stel je vast dat een variabele random mist?
Let op welke voorwaarden stel je impliciet (liefst natuurlijk expliciet) als je de NA vervang door het gemiddelde?
Zou je ook een andere waarde kunnen toekennen op basis van een 2e variabele? Hoe?Denk aan exploring data en dan de pairs functie
Systematisch missende data kun je omkatten naar een nieuwe categorische variabele
Autobots, transform your
data
Hoeveel modaal verdien je?Nou 2x model voor de provincie waar ik woon. (Drenthe vs N-Holland)
Van continu naar discreetFor some continuous variables, their exact value matters less than whether they fall into a certain range.
Centreren van dataNormaliseren en centreren van data is handig als de relatieve waarden in een dataset meer zeggen dan de absolute waarden
For example, you might be less interested in a customer’s absolute age than you are in how old or young they are relative to a “typical” customer.
Normaliseren
Is een 35 jarige klant jong?
En uiteraard normaliseren
Let op er zijn uiteraard ook packages die dit automatisch doen (eg scales)
Sampling DATA
Met rando variable reproducible research!!!!!
Waarom prefereren we de dummy variabele boven de sample functie?
Toch even de sampling functie laten zien
Je weet toch…. Gewoon omdat het kan ;)
sample_n(flights, 10)#> # A tibble: 10 x 19#> year month day dep_time sched_dep_time dep_delay arr_time#> <int> <int> <int> <int> <int> <dbl> <int>#> 1 2013 7 8 2205 2019 106 103#> 2 2013 9 12 1602 1545 17 NA#> 3 2013 11 4 1459 1459 0 1642#> 4 2013 10 25 1354 1350 4 1534#> ... with 6 more rows, and 12 more variables: sched_arr_time <int>,#> arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,#> origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,#> minute <dbl>, time_hour <time>sample_frac(flights, 0.01)#> # A tibble: 3,368 x 19#> year month day dep_time sched_dep_time dep_delay arr_time#> <int> <int> <int> <int> <int> <dbl> <int>#> 1 2013 5 14 850 850 0 1237#> 2 2013 11 8 832 840 -8 1016#> 3 2013 12 1 1155 1155 0 1309#> 4 2013 1 1 929 925 4 1220#> ... with 3,364 more rows, and 12 more variables: sched_arr_time <int>,#> arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,#> origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,#> minute <dbl>, time_hour <time>
Sampling data met een entiteit meermaals in de datasetStel je hebt een dataset met transacties van personen/huishoudens dan wil je niet samplen op de transacties maar op de personen/huishoudens. Hoe zou je dat doen?
GEVORDERDE DATA TRANSFORMATIES
%>%
library(nycflights13)dim(flights)#> [1] 336776 19head(flights)#> # A tibble: 6 x 19#> year month day dep_time sched_dep_time dep_delay arr_time#> <int> <int> <int> <int> <int> <dbl> <int>#> 1 2013 1 1 517 515 2 830#> 2 2013 1 1 533 529 4 850#> 3 2013 1 1 542 540 2 923#> 4 2013 1 1 544 545 -1 1004#> ... with 2 more rows, and 12 more variables: sched_arr_time <int>,#> arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,#> origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,#> minute <dbl>, time_hour <time>
De 1e functie die de data scientist uitvoert
Hebben we nu te maken met een timeseries of niet?
De 2e functie die de data scientist uitvoert
Wat valt jullie op?
EVEN TIMESERIES MAKEN MET DPLYRairportcounts <- flights %>% filter(dest %in% c('ALB', 'BDL', 'BTV')) %>% group_by(year, month, dest) %>% summarise(count = n())
library(lubridate)airportcounts <- airportcounts %>% mutate(Date = ymd(paste(year, "-", month, "-01", sep="")))head(airportcounts) # list only the first six observationsxyplot(count ~ Date, groups=dest, type=c("p","l"), lwd=2, auto.key=list(columns=3), xlab="Year", ylab="Number of flights per month", data=airportcounts)
1
2
3
VAN TRANSACTIES NAAR PROPERTIEScarrier_properties<-flights %>% select(3:19) %>% group_by(carrier) %>% summarise(aantal_vlucht=n(), aantal_vliegtuigen=length(unique(tailnum)), aantal_vertrek=length(unique(origin)), aantal_bestemming=length(unique(dest)), gem_afstand=mean(distance), gemiddelde_delay=mean(arr_delay,na.rm=TRUE), gemiddelde_delay=mean(dep_delay,na.rm=TRUE), aantal_delay=sum(arr_delay>0,na.rm=TRUE), aantal_niet=sum(arr_delay<=0,na.rm=TRUE), onbekend=sum(is.na(arr_delay),na.rm=TRUE) )
carrier_properties<-flights %>% select(3:19) %>% group_by(carrier) %>% summarise(aantal_vlucht=n(), aantal_vliegtuigen=length(unique(tailnum)), aantal_vertrek=length(unique(origin)), aantal_bestemming=length(unique(dest)), gem_afstand=mean(distance), gemiddelde_delay=mean(arr_delay,na.rm=TRUE), gemiddelde_delay=mean(dep_delay,na.rm=TRUE), aantal_delay=sum(arr_delay>0,na.rm=TRUE), aantal_niet=sum(arr_delay<=0,na.rm=TRUE), onbekend=sum(is.na(arr_delay),na.rm=TRUE) )
WINDOW FUNCTIONS
A window function is a variation on an aggregation function. Where an aggregation function, like sum() and mean(), takes n inputs and return a single value, a window function returns n values. The output of a window function depends on all its input values, so window functions don’t include functions that work element-wise, like + or round().
Window functions include variations on aggregate functions, like cumsum() and cummean(),
functions for ranking and ordering, like rank(),
and functions for taking offsets, like lead() and lag().
Window functions
https://cran.r-project.org/web/packages/dplyr/vignettes/window-functions.html
https://www.r-bloggers.com/cross-validation-for-predictive-analytics-using-r/
nextdelay<-flights %>% select(1:3,6,tailnum)%>% group_by(tailnum) %>% arrange(year,month,day) %>% mutate(next_flight_delay=lead(dep_delay))
lead/lag voor delay
LEAD LAG IS SUPER BELANGRIJK … EN HANDIG
https://www.r-bloggers.com/cross-validation-for-predictive-analytics-using-r/
Cumsum voor delay opbouw
# cum delay flights$arr_delay <-ifelse(is.na(flights$arr_delay),0,flights$arr_delay)
cumdelay<-flights %>% select( 1:3,carrier,arr_delay) %>% group_by(carrier) %>% arrange(year,month,day) %>% mutate(cummulatief_delay=cumsum(arr_delay)) %>% filter(carrier =="9E")
cumdelay <-data.frame(cumdelay,nr=1:length(cumdelay$year))
cumdelay %>% ggplot(aes(x=nr,y=cummulatief_delay)) + geom_line()
https://www.r-bloggers.com/cross-validation-for-predictive-analytics-using-r/
Cumsum voor delay opbouw
# cum delay flights$arr_delay <-ifelse(is.na(flights$arr_delay),0,flights$arr_delay)
cumdelay<-flights %>% select( 1:3,carrier,arr_delay) %>% group_by(carrier) %>% arrange(year,month,day) %>% mutate(cummulatief_delay=cumsum(arr_delay)) %>% filter(carrier =="9E")
cumdelay <-data.frame(cumdelay,nr=1:length(cumdelay$year))
cumdelay %>% ggplot(aes(x=nr,y=cummulatief_delay)) + geom_line()
Opdracht komende 2 weken
1. ETL / Exploreer / Manage de nycflights13 data2. Beschouw de dataset als timeseries van diverse variabelen en toon met grafieken aan of er pieken en
dalen in de variabele zijn3. Leg uit welke carrier het beste presteert naar de door jullie geoperationaliseerde normen4. Zijn er vliegtuigen die significant beter presteren dan andere, bijvoorbeeld door goed presterende
teams?5. Welk verband is er te vinden tussen te laat/vroeg vertrekken en te laat/vroeg aankomen?6. Zijn er carriers significant die sneller vliegen dan andere carriers (op een zelfde lijn)?7. Welk effect heeft het weer op het verloop van de vlucht?8. Als jij CEO van een carrier zou moeten adviseren over zijn business, wat zou je adviseren over de
volgende aspecten (toon met grafieken aan waarom)1. Aantal verschillende type vliegtuigen in de vloot2. Aantal origin/destinations in portfolio3. Hoe om te aan met seizoensinvloeden
Tips:• Wat doe je met de NA’s en waarom? Zijn alle variabelen van de juiste class?• Beschouw je negatieve delay (vroeger vertrekken) als dezelfde variabele als pos delay?• Welke wijze zou je delay’s kunnen ombouwen naar categorische variabelen• Steel jat en ontleen zolang je de code die je gebruikt zelf kunt uitleggenBronnen:https://cran.r-project.org/web/packages/nycflights13/nycflights13.pdf https://www.google.nl/search?q=exploring+nyc%EF%AC%82ights13