{"cells":[{"metadata":{"_uuid":"fec91261620a83834a8f7ad20abbdef23f63d90d"},"cell_type":"markdown","source":"__________________________________________\n**This is a work in progress. If you're liking this kernel so far, or it was helpful for you, please upvote!**\n__________________________________________\n\n# PLAsTiCC dataset EDA\n\n## Setup\n\n### Load packages"},{"metadata":{"_uuid":"bb1c63d3da8ba9b4242b67967a69e8d52f94c5a5","_execution_state":"idle","trusted":true,"_kg_hide-output":true},"cell_type":"code","source":"# Load libraries\nlibrary(tidyverse) # metapackage with lots of helpful functions\nlibrary(gridExtra) # help with graphs\nlibrary(data.table) # used to read data sources faster","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"e4cdc56bb3c6b4b91bea0ce7c9c7a5ae29153ed9"},"cell_type":"markdown","source":"### Load files"},{"metadata":{"trusted":true,"_uuid":"73d064bfb6f803efaced6c174dbe4e9f8dcb8c6e"},"cell_type":"code","source":"# Load files\ntraining.metadata <- fread(\"../input/training_set_metadata.csv\")\ntrain <- fread(\"../input/training_set.csv\")","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"a5ffaca918887961122a3c9c3bff4c396d83b79d"},"cell_type":"markdown","source":"## EDA\n### Training set metadata"},{"metadata":{"_uuid":"f3d9057d3f0fdc3cd6ec8659b4f351f4ef2751d5"},"cell_type":"markdown","source":"Column definition (from data_note.pdf):\n\n* object id: the Object ID, unique identifier.  \n* ra: right ascension, sky coordinate: longitude, units are degrees.\n* decl: declination, sky coordinate: latitude, units are degrees.\n* gal l: Galactic longitude, units are degrees.\n* gal b: Galactic lattitude, units are degrees.\n* ddf: A Boolean flag to identify the object as coming from the DDF survey area (with value ddf = 1 for the DDF).\n* hostgal specz: the spectroscopic redshift of the source 8 . This is an extremely accurate measure of redshift, provided for the training set and a small fraction of the test set.\n* hostgal photoz: The photometric redshift of the host galaxy of the astronomical source; hostgal photoz should be regarded as a far less accurate version of hostgal specz.\n* hostgal photoz err: The uncertainty on the hostgal photoz based on LSST survey projections.\n* distmod: The distance (modulus) calculated from the hostgal photoz since this redshift is given for all objects. Computing the distance modulus requires knowledge of General Relativity, and assumed values of the dark energy and dark matter content of the Universe, as mentioned in the introduction section.\n* MWEBV = MW E(B-V): this ‘extinction’ of light is a property of the Milky Way (MW) dust along the line of sight to the astronomical source, and is thus a function of the sky coordinates of the source ra, decl. This is used to determine a passband dependent dimming and reddening of light from astronomical sources as described in subsection 2.1, and is given as float32 numbers.\n* target: The class of the astronomical source."},{"metadata":{"trusted":true,"_uuid":"d44f9079f3bfa88902de767808b65d3527bd9b49"},"cell_type":"code","source":"training.metadata <- training.metadata %>% mutate(target = as.factor(target), ddf = as.factor(ddf))\nstr(training.metadata)\nsummary(training.metadata)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"587bc749845d8011f264c3d565410972edd04061"},"cell_type":"markdown","source":"Check for duplicate records:"},{"metadata":{"trusted":true,"_uuid":"4a0a9dc764d518dd86dc799e028bb22f99f35e35"},"cell_type":"code","source":"nrow(training.metadata %>% distinct()) - # unique rows\nnrow(training.metadata) # total rows","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"57d376d74ad48b605f30064b683fc84f1753119b"},"cell_type":"markdown","source":"There are no duplicate records. Next we check for NA values."},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"c94e9bf31a9137374778593214735d757ed43974"},"cell_type":"code","source":"options(repr.plot.width = 5, repr.plot.height = 5)\n\ntraining.metadata %>%\n    summarise_all(\n        funs(sum(is.na(.)))\n    ) %>%\ngather() %>%\nggplot() +\ngeom_col(aes(x = key, y = value, fill = key)) +\ngeom_text(aes(y = value, x = key, label = value), size = 2) +\ntheme_minimal() +\ntheme(\n    axis.text.x = element_text(angle = 45, hjust = 1),\n    axis.text.y = element_blank(), axis.ticks.y = element_blank(),\n    legend.position = \"none\"\n    ) +\nlabs(x =\"\", y = \"Amount NA\", title = \"Columns with NA values\")","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"b7509f6ad6907b4342457abf77c0bdee2d144729"},"cell_type":"markdown","source":"We kave only distmod with NA values. Let's try to check why these are NA:"},{"metadata":{"trusted":true,"_uuid":"5e4812514e9ed915e155be303b53b9e421faa124"},"cell_type":"code","source":"training.metadata %>%\nfilter(is.na(distmod)) %>%\nhead()","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"e10e66e2d25bd0d46e442b93302a8a9eb7ec4ad8"},"cell_type":"markdown","source":"All of these objects seem to have no redshift value. That makes sense because distance is a calculation derived from redshift. Let's double check to be sure:"},{"metadata":{"trusted":true,"_uuid":"62a78baa19e7e1b0aac7e9c10fe15cf7bd6319be"},"cell_type":"code","source":"distmod.na <- training.metadata %>% filter(is.na(distmod))\nsummary(distmod.na)\nrm(distmod.na)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"b2144980dd34d7b732360fefb5e2ad94f90db472"},"cell_type":"markdown","source":"The assumption is correct, resdshift for these objects is 0. According to the dataset introduction file, \"the given redshift for objects in our own Milky Way galaxy is given as zero\". So, these data points should actually be objects within our Milky Way. I'll take the opportunity to create a new variable now for this:"},{"metadata":{"trusted":true,"_uuid":"6822cf08f948820008abaffa42e17e2ba15cf4d8"},"cell_type":"code","source":"training.metadata <- training.metadata %>%\nmutate(\n    Milky.Way = as.logical(ifelse(is.na(distmod), 1, 0))\n)\nhead(training.metadata)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"cfa2c738a05cd57778257870207055939963ce53"},"cell_type":"markdown","source":"#### Target"},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"9eeaaa24764f51f1badc23b5411e7babb183b60a"},"cell_type":"code","source":"options(repr.plot.width = 5, repr.plot.height = 5)\n\ntraining.metadata %>% count(target) %>%\nggplot() +\ngeom_col(aes(x = target, y = n, fill = target)) +\ngeom_text(aes(y = n, x = target, label = n), size = 2) +\ntheme_minimal() +\ntheme(legend.position = \"none\") +\n\nlabs(x =\"\", title = \"Amount of objects per target category\")","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"654c70502c8a5a767a2227120a92d0e71769169b"},"cell_type":"markdown","source":"There are 14 categories on training set, biggest categories are: 90, 42, 16, 65."},{"metadata":{"_uuid":"03556aca8b85a93b4f17e3f4b69d3e5f321ebbde"},"cell_type":"markdown","source":"#### Galactic coordinate"},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"a4164dd4309f6f85886f6442dd55e7a4eea3e6c2"},"cell_type":"code","source":"options(repr.plot.width = 10, repr.plot.height = 5)\n\ntmp.1 <- ggplot(training.metadata, aes(x = gal_l, y = gal_b, color = target)) +\ngeom_point(alpha = 0.25) + \ntheme_minimal() +\ntheme(legend.position = \"none\") +\n    labs(title = \"Galactic coordinate and target\", x = \"Longitude\", y = \"Latitude\")\n\n\ntmp.2 <- ggplot(training.metadata, aes(x = gal_l, y = gal_b, color = target)) +\ngeom_point(alpha = 0.25) + \ntheme_minimal() +\nfacet_wrap(~target) + \ntheme(legend.position = \"none\") +\n    labs(title = \"Galactic coordinate and target\", x = \"Longitude\", y = \"Latitude\")\n\ngrid.arrange(tmp.1, tmp.2, ncol = 2)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"216259490301dda57fdb8f3b770cb7b3741e8d9b"},"cell_type":"markdown","source":"Objects seem to be pretty scattered, regardless of target category."},{"metadata":{"_uuid":"ceb5744353da631e3d9ac406e9def4ddef58317a"},"cell_type":"markdown","source":"#### Sky coordinate\n\nThis shall have same scattered pattern as galactic coordinates, but let's double check:"},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"65b954634f04d3a5171a9501451ddc8acfd8152b"},"cell_type":"code","source":"options(repr.plot.width = 10, repr.plot.height = 5)\n\ntmp.1 <- ggplot(training.metadata, aes(x = ra, y = decl, color = target)) +\ngeom_point(alpha = 0.25) + \ntheme_minimal() +\ntheme(legend.position = \"none\") +\n    labs(title = \"Sky coordinate and target\", x = \"Longitude\", y = \"Latitude\")\n\n\ntmp.2 <- ggplot(training.metadata, aes(x = ra, y = decl, color = target)) +\ngeom_point(alpha = 0.25) + \ntheme_minimal() +\nfacet_wrap(~target) + \ntheme(legend.position = \"none\") +\n    labs(title = \"Sky coordinate and target\", x = \"Longitude\", y = \"Latitude\")\n\ngrid.arrange(tmp.1, tmp.2, ncol = 2)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"e66db47ca504c25466fbb5a0dacdc9887abbee47"},"cell_type":"markdown","source":"#### Deep Drilling Fields (DDF) survey area"},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"8a6a1a376da1a903b563ef97a3f689e05bdb0952"},"cell_type":"code","source":"options(repr.plot.width = 6, repr.plot.height = 2.5)\ntraining.metadata %>%\ncount(ddf) %>%\nmutate(Percentage = round(n / sum(n), 2)) %>%\nggplot() +\ngeom_col(aes(x = ddf, y = Percentage, fill = ddf)) +\ngeom_text(aes(y = Percentage, x = ddf, label = paste((Percentage*100), \"%\"))) +\ntheme_minimal() +\nlabs(title = \"DDF survey area\") +\ntheme(axis.text.x = element_blank(), axis.ticks.y = element_blank(), legend.position = \"none\") +\ncoord_flip()","execution_count":null,"outputs":[]},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"d3f7aa885680506ceaebd828ead11a4ee8e497fe"},"cell_type":"code","source":"options(repr.plot.width = 10, repr.plot.height = 5)\n\ntraining.metadata %>% count(target, ddf) %>%\nggplot() +\ngeom_col(aes(x = target, y = n, fill = target)) +\nfacet_wrap(~ ddf) +\ngeom_text(aes(y = n, x = target, label = n), size = 2) +\ntheme_minimal() +\ntheme(legend.position = \"none\") +\n\nlabs(x =\"\", title = \"Amount of objects per target category (DDF)\")","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"a9785acc20c98b2b444734336c35280e81f964eb"},"cell_type":"markdown","source":"73% of the data is outside of the ddf survey area and inside the Wide-Fast-Deep (WFD) survey area. Uncertainty is higher in WFD, but it contains more objects as the above shows.  \n\nWhen we analyze category split per survey area, objects in category 15 are not seen much in WFD area."},{"metadata":{"trusted":true,"_uuid":"82628b29c301571d1db7dbbe5394db7e21610cd1","_kg_hide-input":true},"cell_type":"code","source":"options(repr.plot.width = 10, repr.plot.height = 5)\n\ntmp.1 <- training.metadata %>%\nfilter(ddf == 1) %>%\nggplot(aes(x = ra, y = decl, color = target)) +\ngeom_point(alpha = 0.25) + \ntheme_minimal() +\nfacet_wrap(~target) + \ntheme(legend.position = \"none\") +\n    labs(title = \"Deep Drilling Fields (DDF) survey area and target\", x = \"Longitude\", y = \"Latitude\")\n\n\ntmp.2 <-  training.metadata %>%\nfilter(ddf == 0) %>%\nggplot(aes(x = ra, y = decl, color = target)) +\ngeom_point(alpha = 0.25) + \ntheme_minimal() +\nfacet_wrap(~target) + \ntheme(legend.position = \"none\") +\n    labs(title = \"Wide-Fast-Deep (WFD) survey area and target\", x = \"Longitude\", y = \"Latitude\")\n\ngrid.arrange(tmp.1, tmp.2, ncol = 2)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"4f2a382d0076c562576bd54982801366c8ab690e"},"cell_type":"markdown","source":"Objects are dispersed differently inside and outside DDF survey area but categories inside each survey area are spread around roughly the same pattern."},{"metadata":{"_uuid":"eda4245f04d07eef347ec0b306491a075959d45c"},"cell_type":"markdown","source":"#### Redshift"},{"metadata":{"trusted":true,"_uuid":"b9159e7b6aa2fc3c64862214a651e09172c9776e","_kg_hide-input":true},"cell_type":"code","source":"options(repr.plot.width = 10, repr.plot.height = 5)\n\ntmp.1 <- training.metadata %>%\nggplot() +\ngeom_boxplot(aes(y = hostgal_specz, x = target, color = target)) +\ntheme_minimal() +\ntheme(legend.position = \"none\") +\nlabs(title = \"Spectroscopic Redshift\")\n\n\ntmp.2 <- training.metadata %>%\nggplot() +\ngeom_boxplot(aes(y = hostgal_photoz, x = target, color = target)) +\ntheme_minimal() +\ntheme(legend.position = \"none\") +\nlabs(title = \"Photometric Redshift\")\n\ngrid.arrange(tmp.1, tmp.2, ncol = 2)\n","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"af682afa9eaa5c9574c8c431906d8d8dda8cee38"},"cell_type":"markdown","source":"It looks like we can use redshift to identify some categories.\n\nWe can expect very little information of spectroscopic redshift information on the test set. However, photometric redshift (\"a far less accurate version of hostgal specz\") should be present on the test set and we should still be able to use to identify some categories based on it. Considering there is some uncertainty on photometric redshift, with metrics seen below:"},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"ed8870e22fdeac9736a96d30b6219e08c19c7873"},"cell_type":"code","source":"options(repr.plot.width = 10, repr.plot.height = 5)\n\ntraining.metadata %>%\nggplot() +\ngeom_boxplot(aes(y = hostgal_photoz_err, x = target, color = target)) +\ntheme_minimal() +\ntheme(legend.position = \"none\") +\nfacet_wrap(~ddf) +\nlabs(title = \"The uncertainty on the photometric redshift (by survey region)\")","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"0c3a4d0e4972947a773b3b8eeb47381350ad26e1"},"cell_type":"markdown","source":"#### Distance (distmod)\nThis is a metric derived from photometric redshift. So, hopefully patterns of data distribution should be similar to redshift analysis above."},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"e414b82729c1520446ed9182daf1b8ae8cf12e73"},"cell_type":"code","source":"options(repr.plot.width = 10, repr.plot.height = 5)\n\ntraining.metadata %>%\nggplot() +\ngeom_boxplot(aes(y = distmod, x = target, color = target)) +\ntheme_minimal() +\ntheme(legend.position = \"none\") +\nfacet_wrap(~ddf) +\nlabs(title = \"The distance (modulus) by survey area\")","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"6e44d248c282056ba2ce1a3bf0ad28712d377a36"},"cell_type":"markdown","source":"#### Milky Way extinction (MWEBV)"},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"01179de1255764ad1cb3bd8d685dddc95eabc894"},"cell_type":"code","source":"options(repr.plot.width = 10, repr.plot.height = 10)\n\ntmp.1 <- ggplot(training.metadata, aes(x = ra, y = decl, color = mwebv)) +\ngeom_point(alpha = 0.25) + \ntheme_minimal() +\nfacet_wrap(~Milky.Way) + \ntheme(legend.position = \"none\") +\n    labs(title = \"Light extinction in Milky Way\", x = \"Longitude\", y = \"Latitude\")\n\n\ntmp.2 <- ggplot(training.metadata, aes(x = ra, y = decl, color = mwebv)) +\ngeom_point(alpha = 0.25) + \ntheme_minimal() +\nfacet_wrap(~target) + \ntheme(legend.position = \"none\") +\n    labs(title = \"Light extinction by target\", x = \"Longitude\", y = \"Latitude\")\n\ngrid.arrange(tmp.1, tmp.2, ncol = 1)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"a5f9da6fde382e9d9e7761447cd375f4c61d5473"},"cell_type":"markdown","source":"Areas with high concentration of dust are pretty much the same across different factors seen above. We might be able to use this data point though to help in category analysis since there are some slight differences for mwebv between categories."},{"metadata":{"_uuid":"36db264e05a251d095d7d2e0dc1fde1c6ac64f9f"},"cell_type":"markdown","source":"#### Milky Way\nThis is a new variable created, based on 0 value for redshift."},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"2373b7e49f07684107035cf3e865b7f7ea503f7b"},"cell_type":"code","source":"options(repr.plot.width = 5, repr.plot.height = 5)\n\ntraining.metadata %>% count(target, Milky.Way) %>%\nggplot() +\ngeom_col(aes(x = target, y = n, fill = Milky.Way)) +\ngeom_text(aes(y = n, x = target, label = n), size = 2) +\ntheme_minimal() +\nlabs(x =\"\", title = \"Amount of objects per target category\")\n","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"1eeeed46d126b4bdfbd55766835901f33aa6ffb7"},"cell_type":"markdown","source":"Some categories (6, 16, 53, 65, 92) are only present in our Milky Way."},{"metadata":{"_uuid":"feb66ce6c5048ba4611f07b1bab13e0ab4a844b3"},"cell_type":"markdown","source":"### Training set\n\nColumn definition (from data_note.pdf):\n\n* object id: Same key as in the metadata table abov.\n* mjd: the time in Modified Julian Date (MJD) of the observation.\n* passband: The specific LSST passband integer, such that u, g, r, i, z, y = 0, 1, 2, 3, 4, 5 in which it was viewed.\n* flux: the measured flux (brightness) in the passband of observation as listed in the passband column. The flux is corrected for MWEBV.\n* flux err: the uncertainty on the measurement of the flux listed above.\n* detected: If detected= 1, the object’s brightness is significantly different at the 3σ level relative to the reference template.\n\nWe will adjust columns according to definition above:"},{"metadata":{"trusted":true,"_uuid":"0589ad340b5c3c03cd80df5e7bb7d99c01fc17d8"},"cell_type":"code","source":"train.clean <- train %>% mutate(\n    passband = as.factor(passband),\n    detected = as.factor(detected),\n    date = as.Date(as.POSIXct('1858-11-17')+(mjd*24*60*60)),\n    mjd = NULL\n)\nstr(train.clean)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"7e94992f484bad73b3c60f67d4981d14e27e76a3"},"cell_type":"markdown","source":"Next, we will join this table with metadata."},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"8dd683e0a92f11781683448b46891e4565455a26"},"cell_type":"code","source":"train.complete <- training.metadata %>%\nselect(object_id, ra, decl, ddf, Milky.Way, target) %>%\nright_join(train.clean, by = \"object_id\")\nhead(train.complete)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d9c5abdba687c560b2143d20170b4fb3f4bbc978"},"cell_type":"markdown","source":"####  Passband brightness over time"},{"metadata":{"_kg_hide-input":true,"trusted":true,"_uuid":"6c779b1dad549c717b5970f7380420a2b93defad"},"cell_type":"code","source":"options(repr.plot.width = 5, repr.plot.height = 3)\n\ntrain.complete %>% filter(target == 6) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 6\")\ntrain.complete %>% filter(target == 15) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 15\")\ntrain.complete %>% filter(target == 16) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 16\")\ntrain.complete %>% filter(target == 42) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 42\")\ntrain.complete %>% filter(target == 52) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 52\")\ntrain.complete %>% filter(target == 53) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 53\")\ntrain.complete %>% filter(target == 62) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 62\")\ntrain.complete %>% filter(target == 64) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 64\")\ntrain.complete %>% filter(target == 65) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 65\")\ntrain.complete %>% filter(target == 67) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 67\")\ntrain.complete %>% filter(target == 88) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 88\")\ntrain.complete %>% filter(target == 90) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 90\")\ntrain.complete %>% filter(target == 92) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 92\")\ntrain.complete %>% filter(target == 95) %>% ggplot() + geom_line(aes(x = date, y = flux, color = passband)) + theme_minimal() +\nlabs(title = \"Target 95\")","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"f2d91a0670daf83c1a659433b31693023beae9f2"},"cell_type":"markdown","source":"Brightness signature per target group is pretty distinct."},{"metadata":{"_uuid":"93ca01fa2c42769255cd1d1e4ccb5d6eb4c42bd4"},"cell_type":"markdown","source":"#### Uncertainty measurement of flux"},{"metadata":{"trusted":true,"_uuid":"cd884d70f47a2d5fa151a06bfd2b5763690a8bb8"},"cell_type":"code","source":"options(repr.plot.width = 10, repr.plot.height = 5)\n\ntrain.complete %>%\nggplot() +\ngeom_boxplot(aes(y = flux_err, x = target, color = target)) +\ntheme_minimal() +\ntheme(legend.position = \"none\") +\nlabs(title = \"flux uncertainty\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1835795bf84ab86be606c173fa98af2ed34facbd"},"cell_type":"markdown","source":"__________________________________________\n**This is a work in progress. If you're liking this kernel so far, or it was helpful for you, please upvote!**\n__________________________________________"}],"metadata":{"kernelspec":{"display_name":"R","language":"R","name":"ir"},"language_info":{"mimetype":"text/x-r-source","name":"R","pygments_lexer":"r","version":"3.4.2","file_extension":".r","codemirror_mode":"r"}},"nbformat":4,"nbformat_minor":1}