Quantcast
Channel: R-bloggers
Viewing all 12081 articles
Browse latest View live

How to do Excel VLOOKUP in R (using left_join, merge)

$
0
0

[This article was first published on r-bloggers on Programming with R, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

This tutorial helps you code Excel’s VLOOKUP (Exact Match) functionality in R using dplyr’s left_join() and Base-R’s merge(). Please let me know your feedback if this can help Excel users try out R and get confident about doing Data Analytics in R

Youtube – https://www.youtube.com/watch?v=GsxlOwa4dSg

Video Tutorial

Code

# library tidyverse for data manipulation and plot

library(tidyverse)

# reading input dataset

co2 <- read_csv("C:/users/abdrs/Downloads/food_consumption.csv")


countries <- read_csv("C:/users/abdrs/Downloads/Countries-Continents.csv")


countries$some_number <- 6

# method 1

co2 <- co2 %>% 
  left_join(countries, by = c('country' = 'Country')) 

# method 2

co2 <- merge(co2, countries,  
      by.x = 'country',
      by.y = "Country")
var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) { var s = d.createElement(t); s.type = 'text/javascript'; s.async = true; s.src = '//cdn.viglink.com/api/vglnk.js'; var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: r-bloggers on Programming with R.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.


Anzacathon: the benefits of Open Data

$
0
0

[This article was first published on DanielPocock.com | R-project, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

25 April is Anzac Day in Australia, New Zealand and many communities around the world where Anzacs have served. Given the shift to online collaboration in 2020, Anzacathon has been set up to help people engage online.

One of the key themes of Anzacathon is data: finding new ways to use the data and also demonstrating the benefits of community engagement with open data.

With that in mind, I’m providing some tutorials for users of PostgreSQL and R to access the data and some simple examples to use it.

Data access over IPFS

The raw data files are shared over IPFS. They are in SQLite format, as this provides a convenient mechanism to query the data with SQL commands directly over IPFS.

The pgloader tool provides a convenient way to load SQLite databases directly from IPFS into a PostgreSQL schema. There is no need to download the SQLite files, we can simply mount IPFS like a filesystem. A sample configuration for PostgreSQL users is provided.

For R users, there is an RSQLite module that allows R to access SQLite data. Once again, there is no need to download the data, any file in IPFS can be opened directly using fuse.

R users who want to use this method first need to follow the first part of the PostgreSQL setup instructions, up to the point where you start the IPFS daemon process.

Finding the lone Anzacs

Every year, there are huge gatherings at Gallipoli and other sites where large numbers of Anzacs died. Due to Coronavirus, those gatherings won’t take place in 2020.

Therefore, we have the opportunity to discover lesser known places where Anzacs have died. In one place I discovered in the French alps, there is a single Australian airman buried alongside his British colleagues. After a quick search of the National Archives and a hike up the mountain with my camera, I created a visual story about their mystery.

How many more cemeteries in France and other places contain a single Anzac like this? We can’t ask that question through any of the web sites but it is very easy with SQLite or PostgreSQL:

SELECT cemeterymemorial, country, COUNT(cemeterymemorial) 
FROM cwgc_casualty 
GROUP BY cemeterymemorial, country 
HAVING COUNT(cemeterymemorial) = 1;

The query lists 1,143 cemeteries around the world having a single Anzac.

We could further refine that to focus on a single country, such as France:

SELECT cemeterymemorial, country, COUNT(cemeterymemorial) 
FROM cwgc_casualty 
WHERE country = 'France' 
GROUP BY cemeterymemorial, country 
HAVING COUNT(cemeterymemorial) = 1;

Of 1,143 cemeteries around the world, 192 are in France.

Using a subquery, we can see the names, services numbers and dates when those Anzacs died:

SELECT cemeterymemorial, country, forename, surname, TRIM(servicenumberexport, '''') as servicenumber, date_of_death, date_of_death2 
FROM cwgc_casualty 
WHERE cemeterymemorial IN ( 
  SELECT cemeterymemorial 
  FROM cwgc_casualty 
  GROUP BY cemeterymemorial 
  HAVING COUNT(cemeterymemorial) = 1);

For convenience, I’m providing that list as a spreadsheet that you can download and explore.

With that list, it is fairly easy to get the name and service number of the relevant Anzac and look up the scanned copy of his paper file at the National Archives. Given the unique circumstances of these casualties, their files often contain something notable. For example, some of them were on particularly dangerous missions deep behind enemy lines during the time France was occupied.

Anzacs within a given radius (PostgreSQL / PostGIS)

The CWGC web site allows people to search for Anzacs by specificying regions, such as the department within France. There are 95 departments, far more than the 6 states in Australia. It can be a lot more convenient to search by distance/radius from of a point where you live or plan to travel.

Fortunately, we have the PostGIS extension. The PostGIS FAQ includes a specific example, the best way to find all objects within a radius of another object, using the ST_DWithin function.

The PostgreSQL setup documentation includes the necessary code to enable PostGIS and add extra columns to the tables containing the PostGIS objects encapsulating latitude ang longitude values.

This is a basic example of how to use ST_DWithin to obtain sites within a specified radius, returning the distances in kilometers:

SELECT cemetery_desc, 
  ROUND(ST_Distance(location_gis, ('SRID=4326;POINT(46.5535 6.6523)')::geography)/1000) AS d 
FROM iwmcemeteries 
WHERE ST_DWithin(location_gis,('SRID=4326;POINT(46.5535 6.6523)')::geography, 100000) 
ORDER BY d;

The schema also includes a view, anzac_sites, that uses the SQL UNION mechanism to concatenate both the CWGC and TracesOfWar tables. We can access results from both tables using a single query like this:

SELECT source, description, 
  ROUND(ST_Distance(location_gis, ('SRID=4326;POINT(46.5535 6.6523)')::geography)/1000) AS d 
FROM anzac_sites 
WHERE ST_DWithin(location_gis,('SRID=4326;POINT(46.5535 6.6523)')::geography, 100000) 
ORDER BY d;

Anzac family names (using R)

To begin, it is necessary to install the R modules RSQLite and Plyr. On a Debian system, that can be done with:

apt install r-cran-rsqlite r-cran-plyr

and on any other type of system:

install.packages("RSQLite") 
install.packages("plyr")

As discussed above, make sure that the IPFS daemon is running. See the first part of the PostgreSQL setup instructions.

Start the R command line and from there, it is possible to verify you have access to the data over IPFS:

library(DBI) 
cwgc_cemeteries <- dbConnect(RSQLite::SQLite(), "/ipfs/QmRgD8xHJXKGwE1S1YySUKQGt25EK8R2W1HTCCEA7sKDLy") 
dbListTables(cwgc_cemeteries) 
cwgc_casualty <- dbConnect(RSQLite::SQLite(), "/ipfs/QmPVkHJrSYoeig71EzrxU45zTMbFefQgwdRDSHv7fpjChA") 
dbListTables(cwgc_casualty)

To verify this, we can load the entire content of one table into a data frame count the frequency of surnames:

data <- dbReadTable(cwgc_casualty, "cwgc_casualty") 
summary(data) 
 
library(plyr) 
fd = count(data, 'surname') 
index <- with(fd, order(freq, surname)) 
tail(fd[index,])

The results will look something like this:

       surname freq 
18130   TAYLOR  467 
19939   WILSON  549 
9558     JONES  590 
2303     BROWN  628 
19901 WILLIAMS  635 
17182    SMITH 1376

While this may be a trivial example, it demonstrates that we can use datasets from the IPFS cloud directly in R.

Making data personal

A British police chief suggested on 30 March that messages about flattening the curve were not getting through to many people. Five days later, the British PM was admitted to hospital with Coronavirus. Most of Britain spent the next week intensely following the news as he went in and out of intensive care. This example demonstrates the power of personal stories and examples over statistics and charts.

Using the tools described above, we can examine this data set at scale and also hone in on personal stories and acute examples of tragedy. Reading through the National Archives, there are plenty of personal letters from parents, spouses and children of missing Anzacs. It is particularly important to be respectful with a data set like this.

Why not attack Coronavirus this weekend?

The EUvsVirus hackathon takes place the same weekend as Anzac Day. Some people asked me why I don’t put energy into that instead.

There are many answers to that question.

One that is on the top of my mind is that I like to finish things. Together with a dedicated group of volunteers in Kosovo, we had started looking at this data in 2019 and I feel this is a great way to take what I’ve learnt and hand it off to the crowd.

There have already been a number of dedicated events like the Bio-hackathon. For people unfamiliar with the science, it can be difficult to simultaneously learn about data science and bioinformatics. The Anzac data set provides an opportunity to boost skills with data science while working with an important data set that many people can already understand.

Innovations from this hackathon, such as the use of IPFS to share data sets between participants are directly transferrable to bio-hackathons and many other use cases.

Initial directions for studying the data

Here are some thoughts that come to mind:

  • Which of these casualties were buried at a time and place behind enemy lines? There are stories of French citizens taking great risks to give allied soldiers a proper funeral.
  • The notes often refer to their place of birth or enlistment. Can we build a report by place of birth / enlistment?
  • How can we systematically gather links to third party documents and news reports and link them to the relevant diggers? This could be a Natural Language Processing (NLP) problem.
  • Using the keywords extracted from Traces of War, how can we identify monuments relevant to Anzacs or in close proximity to Anzac graves?
  • A classification problem: examining the descriptions in the Traces of War data set to identify whether they correspond to infrastructure (such as a fort) or to a monument
var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) { var s = d.createElement(t); s.type = 'text/javascript'; s.async = true; s.src = '//cdn.viglink.com/api/vglnk.js'; var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: DanielPocock.com | R-project.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Le Monde puzzle [#1139]

$
0
0

[This article was first published on R – Xi'an's Og, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Aweekly Monde current mathematical puzzle that reminded me of an earlier one (but was too lazy to check):

The integer n=36 enjoys the property that all the differences between its ordered divisors are also divisors of 36. Find the only 18≤m≤100 that enjoys this property such that all its prime dividers areof multiplicity one. Are there other such m’s?

The run of a brute force R search return 42 as the solution (codegolf welcomed!)

y=z=1:1e5for(x in y)z[y==x]=!sum(x%%diff((1:x)[!x%%(1:x)]))y=y[z==1]for(k in generate_primes(2,max(y)))y=y[!!y%%k^2]

where generate_primes is a primes R function. Increasing the range of y’s to 10⁵ exhibits one further solution, 1806.

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: R – Xi'an's Og.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Lubridate/ggplot date helpers

$
0
0

[This article was first published on R – scottishsnow, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

This post collates a couple of functions to help with dates. I often work with daily data which spans multiple years, but want to visualise annual patterns. To do this I can extract the julian day for each date – i.e. the day of the year. Here are a couple of ways to do this:

# Olden daysformat(Sys.Date(), format="%j")# Tidyverselibrary(lubridate)yday(Sys.Date())

This site is a great resource for more date formats. Otherwise, you can view the lubridate website for guides.

Great, so far. However, most folk like their axis labels spelt out for them and prefer to see month labels on an annual axis instead of a numeric day. Let’s grab some data to demonstrate. Here’s the citation, with download and cleaning below:

Fetterer, F., K. Knowles, W. N. Meier, M. Savoie, and A. K. Windnagel. 2017, updated daily. Sea Ice Index, Version 3. [N seaice extent daily]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/10.7265/N5K072F8. [2020-04-24].

library(tidyverse)download.file("ftp://sidads.colorado.edu/DATASETS/NOAA/G02135/north/daily/data/N_seaice_extent_daily_v3.0.csv",              "Downloads/arctic_ice.csv")df_names = read_csv("Downloads/arctic_ice.csv",                    col_names = F,                    n_max = 1)df = read_csv("Downloads/arctic_ice.csv",              skip = 2,              col_names = as.character(df_names)) %>%   janitor::clean_names() %>%   mutate(date = paste(year, month, day, sep = "-"),         date = as.Date(date),         extent = replace(extent, missing > 0, NA)) %>%   select(date, extent)wrap_width = scales::wrap_format(150)ice_cite = wrap_width("Fetterer, F., K. Knowles, W. N. Meier, M. Savoie, and A. K. Windnagel. 2017, updated daily. Sea Ice Index, Version 3. [N seaice extent daily]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/10.7265/N5K072F8. [2020-04-24].")

We’ve now got a two column tibble containing date and sea ice extent. We can see this by plotting our data. (Something similar can be achieved with base graphics using plot(df)):

ggplot(df, aes(date, extent)) +    geom_line() +    labs(title = "N. hemisphere sea ice extent",         x = "Year",         y = "Extent (10^6 sq km)",         caption = ice_cite) +  theme(text = element_text(size = 15))

What do our data look like when we overlay years? i.e. the problem posed at the beginning of this post.

df %>%   mutate(year = year(date),         date = yday(date)) %>%   ggplot(aes(date, extent,             group = year,             colour = year)) +  geom_line() +  scale_colour_viridis_c() +  labs(title = "Annual fluctuation in N. hemisphere sea ice extent",       subtitle = "Day of year on x axis",       x = "Day of year",       y = "Extent (10^6 sq km)",       colour = "Year",       caption = ice_cite) +  theme(text = element_text(size = 15))

The above looks fine. Perfect for exploratory data analysis. We can quickly see an annual pattern. However, other viewers may wish or expect to see month labels on the x axis. We can do this by setting up a tibble with values we’d like on the axis. With this in place we can call this as breaks and labels for the axis (no doubt there is a fancy function way of doing this). It’s not perfect, the labels appear at the start of each month and given months have differing lengths it’s not easy to place them in the middle (one option is to use the 15th of each month). It could make sense to have variable grid line spacing, where the lines match the month breaks, but this would be awkward to implement and be unexpected to viewers!

doy = date(c("2016-02-01",             "2016-04-01",             "2016-06-01",             "2016-08-01",             "2016-10-01"))  doy = tibble(mon = month(x, label = T),               jul = yday(x))df %>%   mutate(year = year(date),         date = yday(date)) %>%   ggplot(aes(date, extent,             group = year,             colour = year)) +  geom_line() +  scale_x_continuous(breaks = doy$jul, labels = doy$mon) +  scale_colour_viridis_c() +  labs(title = "Annual fluctuation in N. hemisphere sea ice extent",       subtitle = "Month on x axis",       x = "",       y = "Extent (10^6 sq km)",       colour = "Year",       caption = ice_cite) +  theme(text = element_text(size = 15))

The above is OK, but as mentioned the label position is problematic. We can solve this by hacking at the ggplot theme. We could also label the beginning of every month with this solution, but I haven’t here.

df %>%   mutate(year = year(date),         date = yday(date)) %>%   ggplot(aes(date, extent,             group = year,             colour = year)) +  geom_line() +  scale_x_continuous(breaks = doy$jul, labels = doy$mon) +  scale_colour_viridis_c() +  labs(title = "Annual fluctuation in N. hemisphere sea ice extent",       subtitle = "Month on x axis",       x = "",       y = "Extent (10^6 sq km)",       colour = "Year",       caption = ice_cite) +  theme(text = element_text(size = 15),        axis.ticks.length.x = unit(0.5, "cm"),        axis.text.x = element_text(vjust = 5.5,                                   hjust = -0.2))

Finally, we can apply this idea to seasons:

season_lab = tibble(jul = yday(as.Date(c("2019-03-01",                                     "2019-06-01",                                     "2019-09-01",                                     "2019-12-01"))),                    lab = c("Spring", "Summer", "Autumn", "Winter"))df %>%   mutate(year = year(date),         date = yday(date)) %>%   ggplot(aes(date, extent,             group = year,             colour = year)) +  geom_line() +  scale_x_continuous(breaks = season_lab$jul, labels = season_lab$lab) +  scale_colour_viridis_c() +  labs(title = "Annual fluctuation in N. hemisphere sea ice extent",       subtitle = "Season on x axis",       x = "",       y = "Extent (10^6 sq km)",       colour = "Year",       caption = ice_cite) +  theme(text = element_text(size = 15),        axis.ticks.length.x = unit(0.5, "cm"),        axis.text.x = element_text(vjust = 5.5,                                   hjust = -0.2))

And even do a function to convert dates into seasons for fancy plotting/tables/etc.:

season = function(in_date){  br = yday(as.Date(c("2019-03-01",                      "2019-06-01",                      "2019-09-01",                      "2019-12-01")))  x = yday(in_date)  x = cut(x, breaks = c(0, br, 366))  levels(x) = c("Winter", "Spring", "Summer", "Autumn", "Winter")  x}df %>%   mutate(year = year(date),         sea = season(date)) %>%   group_by(year, sea) %>%   summarise(obs = n(),            q25 = quantile(extent, 0.25),            q50 = quantile(extent, 0.5),            q75 = quantile(extent, 0.75)) %>%   filter(obs > 40) %>%   ggplot(aes(year, q50)) +  geom_pointrange(aes(ymin = q25, ymax = q75)) +  facet_wrap(~sea, scales = "free_y") +  labs(title = "Seasonal change in N. hemisphere sea ice extent",       subtitle = "Showing median and interquartile range",       x = "Year",       y = "Extent (10^6 sq km)",       caption = ice_cite) +  theme(text = element_text(size = 15),        axis.ticks.length.x = unit(0.5, "cm"),        axis.text.x = element_text(vjust = 5.5,                                   hjust = -0.2))

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: R – scottishsnow.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

U is for Useful Trick

$
0
0

[This article was first published on Deeply Trivial, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

This will be a very short post for a line of code I’ve found unbelievably useful as I analyze data for work. I’m working with datasets containing millions of rows of data. (The most recent one I worked with had about 13 million records.) Because R loads datasets into memory, you can run out of RAM pretty quickly when working with data that large. As I start getting access to more services for databasing and cloud computing, I’m hoping to move some of that data out of my own memory, and onto something with more memory. But for now, I found this quick fix.

I increased my paging file (virtual memory) on my computer as high as it will let me, but R doesn’t automatically increase its memory limits. But a single line of code will do that for you.

invisible(utils::memory.limit(64000))

Set that value to whatever your virtual memory is set for. (Note that this value is in MB.) Huge thanks for this Stack Overflow post that taught me how to do this.

Monday, I’ll talk about some functions that allow you more quickly read (and write) large files.

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: Deeply Trivial.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Encoding your categorical variables based on the response variable and correlations

$
0
0

[This article was first published on T. Moudiki's Webpage - R, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Sometimes in Statistical/Machine Learning problems, we encounter categorical explanatory variables with high cardinality. Let’s say for example that we want to determine if a diet is good or bad, based on what a person eats. In trying to answer this question, we’d construct a response variable containing a sequence of characters good or bad, one for each person; and an explanatory variable for the model would be:

x = c("apple", "tomato", "banana", "apple", "pineapple", "bic mac","banana", "bic mac", "quinoa sans gluten", "pineapple", "avocado", "avocado", "avocado", "avocado!", ...)

Some Statistical/Machine learning models only accept numerical data as input. Hence the need for a way to transform those categorical inputs into numerical vectors. One way to deal with a covariate such as x is to use one-hot encoding, as depicted below:

image-title-here

In the case of x having 100 types of fruits in it, one-hot encoding will lead to 99 explanatory variables for the model, instead of, possibly one. This means: more disk space required, more computer memory needed, and a longer training time. Apart from the one-hot encoder, there are a lot of categorical encoders out there. I wanted a relatively simple one, so I came up with the one described in this post. It’s a target-based categorical encoder, which makes use of the correlation between a randomly generated pseudo-target and the real target (a.k.a response; a sequence good or bads as seen before).

Data and packages for the demo

We’ll be using the CO2 dataset available in base R for this demo. According to its description: the CO2 data frame has 84 rows and 5 columns of data from an experiment on the cold tolerance of the grass species Echinochloa crus-gall.

# Packages requiredlibrary(randomForest)# DatasetXy<-datasets::CO2Xy$uptake<-scale(Xy$uptake)# centering and scaling the responseprint(dim(Xy))print(head(Xy))print(tail(Xy))

Now we create a response variables and covariates, based on CO2 data:

y<-Xy$uptakeX<-Xy[,c("Plant","Type","Treatment","conc")]

First encoder: “One-hot”

Using base R’s function model.matrix, we transform the categorical variables from CO2 to numerical variables. It’s not exactly “One-hot” as we described it previously, but a close cousin, because the covariate Plant possesses some sort of ordering (it’s “an ordered factor with levels Qn1 < Qn2 < Qn3 < … < Mc1 giving a unique identifier for each plant”):

X_onehot<-model.matrix(uptake~.,data=CO2)[,-1]print(dim(X_onehot))print(head(X_onehot))print(tail(X_onehot))
## [1] 84 14##      Plant.L   Plant.Q    Plant.C   Plant^4    Plant^5   Plant^6## 1 -0.4599331 0.5018282 -0.4599331 0.3687669 -0.2616083 0.1641974## 2 -0.4599331 0.5018282 -0.4599331 0.3687669 -0.2616083 0.1641974## 3 -0.4599331 0.5018282 -0.4599331 0.3687669 -0.2616083 0.1641974## 4 -0.4599331 0.5018282 -0.4599331 0.3687669 -0.2616083 0.1641974## 5 -0.4599331 0.5018282 -0.4599331 0.3687669 -0.2616083 0.1641974## 6 -0.4599331 0.5018282 -0.4599331 0.3687669 -0.2616083 0.1641974##       Plant^7    Plant^8     Plant^9    Plant^10     Plant^11## 1 -0.09047913 0.04307668 -0.01721256 0.005456097 -0.001190618## 2 -0.09047913 0.04307668 -0.01721256 0.005456097 -0.001190618## 3 -0.09047913 0.04307668 -0.01721256 0.005456097 -0.001190618## 4 -0.09047913 0.04307668 -0.01721256 0.005456097 -0.001190618## 5 -0.09047913 0.04307668 -0.01721256 0.005456097 -0.001190618## 6 -0.09047913 0.04307668 -0.01721256 0.005456097 -0.001190618##   TypeMississippi Treatmentchilled conc## 1               0                0   95## 2               0                0  175## 3               0                0  250## 4               0                0  350## 5               0                0  500## 6               0                0  675##      Plant.L   Plant.Q    Plant.C    Plant^4    Plant^5    Plant^6## 79 0.3763089 0.2281037 -0.0418121 -0.3017184 -0.4518689 -0.4627381## 80 0.3763089 0.2281037 -0.0418121 -0.3017184 -0.4518689 -0.4627381## 81 0.3763089 0.2281037 -0.0418121 -0.3017184 -0.4518689 -0.4627381## 82 0.3763089 0.2281037 -0.0418121 -0.3017184 -0.4518689 -0.4627381## 83 0.3763089 0.2281037 -0.0418121 -0.3017184 -0.4518689 -0.4627381## 84 0.3763089 0.2281037 -0.0418121 -0.3017184 -0.4518689 -0.4627381##       Plant^7    Plant^8    Plant^9    Plant^10   Plant^11 TypeMississippi## 79 -0.3701419 -0.2388798 -0.1236175 -0.04910487 -0.0130968               1## 80 -0.3701419 -0.2388798 -0.1236175 -0.04910487 -0.0130968               1## 81 -0.3701419 -0.2388798 -0.1236175 -0.04910487 -0.0130968               1## 82 -0.3701419 -0.2388798 -0.1236175 -0.04910487 -0.0130968               1## 83 -0.3701419 -0.2388798 -0.1236175 -0.04910487 -0.0130968               1## 84 -0.3701419 -0.2388798 -0.1236175 -0.04910487 -0.0130968               1##    Treatmentchilled conc## 79                1  175## 80                1  250## 81                1  350## 82                1  500## 83                1  675## 84                1 1000

Second encoder: Target-based

Now, we present the encoder discussed in the introduction. It’s a target-based categorical encoder, which uses the correlation between a randomly generated pseudo-target and the real target.

Construction of a pseudo-target via Cholesky decomposition

Most target encoders rely directly on the response variable, which leads to a potential risk called leakage. Target encoding is indeed a form of more or less subtle overfitting. Here, in order to somehow circumvent this issue, we use Cholesky decomposition. We create a pseudo-target based on the real targetuptake (centered and scaled, and stored in variable y), and specifically ask that, this pseudo-target has a fixed correlation of -0.4 (could be anything) with the response:

# reproducibility seedset.seed(518)# target covariance matrixrho<--0.4# desired target C<-matrix(rep(rho,4),nrow=2,ncol=2)diag(C)<-1# Cholesky decomposition(C_<-chol(C))print(t(C_)%*%C_)X2<-rnorm(n)XX<-cbind(y,X2)# induce correlation through Cholesky decompositionX_<-XX%*%C_colnames(X_)<-c("real_target","pseudo_target")

Print the induced correlation between the randomly generated pseudo-target and the real target:

cor(y,X_[,2])
##            [,1]## [1,] -0.4008563

Now, a glimpse at X_, a matrix containing the real target and the pseudo target in columns:

print(dim(X_))print(head(X_))print(tail(X_))
## [1] 84  2##      real_target pseudo_target## [1,]  -1.0368659    -0.6668123## [2,]   0.2946905     0.3894672## [3,]   0.7015550     0.3485984## [4,]   0.9234810    -1.2769424## [5,]   0.7477896    -1.1996023## [6,]   1.1084194     0.4008157##       real_target pseudo_target## [79,]  -0.8519275    -0.3455701## [80,]  -0.8611744     1.7142739## [81,]  -0.8611744     0.1521795## [82,]  -0.8611744    -0.3912856## [83,]  -0.7687052     0.9726421## [84,]  -0.6762360     0.8791499

A few checks

By repeating the procedure that we just outlined with 1000 seeds going from 1 to 1000, we obtain a distribution of achieved correlations between the real target and the pseudo target:

image-title-here

## $breaks##  [1] -0.75 -0.70 -0.65 -0.60 -0.55 -0.50 -0.45 -0.40 -0.35 -0.30 -0.25## [12] -0.20 -0.15 -0.10 -0.05## ## $counts##  [1]   1   0   5  34  74 158 244 227 138  68  31  11   7   2## ## $density##  [1] 0.02 0.00 0.10 0.68 1.48 3.16 4.88 4.54 2.76 1.36 0.62 0.22 0.14 0.04## ## $mids##  [1] -0.725 -0.675 -0.625 -0.575 -0.525 -0.475 -0.425 -0.375 -0.325 -0.275## [11] -0.225 -0.175 -0.125 -0.075## ## $xname## [1] "achieved_correlations"## ## $equidist## [1] TRUE## ## attr(,"class")## [1] "histogram"
print(summary(achieved_correlations))
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. ## -0.70120 -0.45510 -0.40270 -0.40040 -0.34820 -0.08723

Encoding

In order to encode the factors, we use the pseudo-target y_ defined as:

y_<-X_[,'pseudo_target']

Our new, numerically encoded covariates are derived by calculating sums of the pseudo-target y_ (we could think of other types of aggregations), groupped by factor level for each factor. The new matrix of covariates is named X_Cholesky:

print(dim(X_Cholesky))print(head(X_Cholesky))print(tail(X_Cholesky))
## [1] 84  4##          Plant      Type Treatment conc## [1,] -1.853112 -18.08574 -7.508514   95## [2,] -1.853112 -18.08574 -7.508514  175## [3,] -1.853112 -18.08574 -7.508514  250## [4,] -1.853112 -18.08574 -7.508514  350## [5,] -1.853112 -18.08574 -7.508514  500## [6,] -1.853112 -18.08574 -7.508514  675##          Plant     Type  Treatment conc## [79,] 2.628531 9.658954 -0.9182766  175## [80,] 2.628531 9.658954 -0.9182766  250## [81,] 2.628531 9.658954 -0.9182766  350## [82,] 2.628531 9.658954 -0.9182766  500## [83,] 2.628531 9.658954 -0.9182766  675## [84,] 2.628531 9.658954 -0.9182766 1000

Notice that X_Cholesky has 4 covariates, that X_onehot had 14 covariates, and imagine a situation with a higher cardinality for each factor.

Fit a model to one-hot encoded and target based covariates

In this section, we compare both types of encoding using cross-validation with Root Mean Squared Errors (RMSE).

Datasets

# Dataset with one-hot encoded covariates Xy1<-data.frame(y,X_onehot)# Dataset with pseudo-target-based encoding of covariates Xy2<-data.frame(y,X_Cholesky)

Comparison

Using a Random Forest here as a simple illustration without hyperparameter tuning, but tree-based models will typically handle this type of data. Not linear models, nor Neural Networks or Support Vector Machines.

Random Forests with 100 seeds, going from 1 to 100 are adjusted:

n_reps<-100n_train<-length(y)`%op%`<-foreach::`%do%`
pb<-utils::txtProgressBar(min=0,max=n_reps,style=3)errs<-foreach::foreach(i=1:n_reps,.combine=rbind)%op%{# utils::setTxtProgressBar(pb, i)set.seed(i)index_train<-sample.int(n_train,size=floor(0.8*n_train))obj1<-randomForest(y~.,data=Xy1[index_train,])obj2<-randomForest(y~.,data=Xy2[index_train,])c(sqrt(mean((predict(obj1,newdata=as.matrix(Xy1[-index_train,-1]))-y[-index_train])^2)),sqrt(mean((predict(obj2,newdata=as.matrix(Xy2[-index_train,-1]))-y[-index_train])^2)))}close(pb)colnames(errs)<-c("one-hot","target-based")
print(colMeans(errs))print(apply(errs,2,sd))print(sapply(1:2,function(j)summary(errs[,j])))
##      one-hot target-based ##    0.4121657    0.4574857##      one-hot target-based ##   0.09710344   0.07584037##           [,1]   [,2]## Min.    0.1877 0.2850## 1st Qu. 0.3566 0.4039## Median  0.4037 0.4464## Mean    0.4122 0.4575## 3rd Qu. 0.4784 0.4913## Max.    0.6470 0.6840

There are certainly some improvements to be brought to this methodology, but the results discussed in this post already look quite encouraging to me.

Note: I am currently looking for a gig. You can hire me on Malt or send me an email: thierry dot moudiki at pm dot me. I can do descriptive statistics, data preparation, feature engineering, model calibration, training and validation, and model outputs’ interpretation. I am fluent in Python, R, SQL, Microsoft Excel, Visual Basic (among others) and French. My résumé? Here!

Licence Creative Commons Under License Creative Commons Attribution 4.0 International.

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: T. Moudiki's Webpage - R.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Free Springer Books during COVID19

$
0
0

[This article was first published on r – paulvanderlaken.com, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Book publisher Springer just released over 400 book titles that can be downloaded free of charge following the corona-virus outbreak.

Here’s fhe full overview: https://link.springer.com/search?facet-content-type=%22Book%22&package=mat-covid19_textbooks&facet-language=%22En%22&sortOrder=newestFirst&showAll=true

Most of these books will normally set you back about $50 to $150, so this is a great deal!

There are many titles on computer science, programming, business, psychology, and here are some specific titles that might interest my readership:

Note that I only got to page 8 of 21, so there are many more free interesting titles out there!

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: r – paulvanderlaken.com.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

New R Package ‘foo’ — Updated

$
0
0

[This article was first published on triKnowBits, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

# RUN THESE LINES IN ONE SESSION …


# Navigate where you want your folder to be located setwd(“C:/Users/myhandle/Documents/Github”) # Run create_package in ‘usethis’ package and read below what happens usethis::create_package(“foo”) # A bunch of stuff shows up in the console including line below. # ✔ Opening ‘foo/’ in new RStudio session

# WHEN SWITCHED TO A DIFFERENT SESSION, RUN THESE LINES BELOW


# Add a test environment and add your first test script usethis::use_testthat() setwd(“R”) # this is where you need to be usethis::use_test(“firsttest”) # edit your first test; close setwd(“..”) # That will create a file ‘test-firsttest.R’ in foo\tests\testthat # LICENSE…not necessary, but Check Package will issue warning without it #  Open DESCRIPTION — just click in RStudio #  Assuming GPL-3 … #  Replace #   License: What license it uses # with #   License: GPL-3 | file LICENSE # # Put a LICENSE file in the root. In RStudio, File, New File, Text File #   “GPL3 License file” # as the sole contents works for me, or the license here: #  https://www.gnu.org/licenses/gpl-3.0.txt # File, Save As, LICENSE # roxygenise to create help files, run tests, etc. roxygen2::roxygenise() # Your package is ready to be checked. # In RStudio Menu, go to Build, Check (as in “check package integrity”) # All should check ok, no errors, no problems. # Write some code. # Then roxygen2::roxygenise() and Build, Check # Repeat # When ready to build the actual package # In RStudio Menu, go to Build, Install and Restart


That’s it.

Note: Whenever you add new functionality from another package, don’t forget to change the DESCRIPTION file — roxygen can’t do that for you

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: triKnowBits.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.


Customizable Dash front-ends for word2vec and NLP backends

$
0
0

[This article was first published on R – Modern Data, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

“When is Mom’s birthday?” “Remind me to pick up flowers and a cake this afternoon.” “How do I get to the nearest flower shop?” “Find the best bakeries near me.” “Find a route to Mom’s house.”

In our modern times, personal assistants are not exclusive to executives in high-powered jobs; we can now talk directly to our phones and ask them for what we need. This is made possible due to the advancements of the human-technology interface.

The quality of this interface rests on two directions of communication: human-given directives and technology-produced outputs. Unfortunately, humans and computers rarely speak the same language. Since you’d be hard-pressed to find someone who is fluent in machine code, the bottleneck for communication in this particular case is the ability, or lack thereof, that computers have to understand the way that humans talk. 

In this article, we’ll be going through a subset of the steps involved in machine learning by highlighting some of the techniques used in one of our demo applications. You can find the app in our gallery.

Enter NLP

Natural language processing, or NLP, is what allows us to parameterize human speech while preserving the correct semantic meaning of a string of words—like “When is Mom’s birthday?” It has a multitude of use cases that range from personal-assistant software to predictive text and semantic analysis.

Creating an NLP model is a process that involves many different steps. To facilitate knowledge transfer and encourage future development, we need a way to visualize, explore, and share the results. Continue reading below to see how we were able to do this with the machine learning app above, using Dash in conjunction with our Dash Enterprise offerings.

Building and evaluating an NLP model with Dash

NLP employs a wide variety of complex algorithms. Three such examples are word2vec, UMAP, and t-SNE. The word2vec algorithm encodes words as N-dimensional vectors—this is also known as “word embedding.” UMAP and t-SNE are two algorithms that reduce high-dimensional vectors to two or three dimensions (more on this later in the article). In the application, we are using word2vec to encode words as 300-dimensional vectors, and using UMAP and t-SNE to reduce those 300 dimensions to three.

There are many directions that one can take when developing a natural language processing model. In the case of our machine learning application, we are mainly looking to understand what the effects of different parameters are on the “correctness” of the dimension reduction.

An ideal dimension reduction algorithm will preserve the spatial relationships between words that were established with word2vec. To roughly evaluate the accuracy of our algorithm, we display the 3D coordinates of each word as a point in a 3D graph created with plotly.py. Then, we allow the user to select a word by clicking on its corresponding point in the graph; this will highlight its nearest neighbours in the original 300-dimensional space. In addition, there is a bar graph on the right that will display the Euclidean distance in the original space from the neighbors to the selected word. If our model is a good one, the highlighted words should be clustered together closely around our selection.

App screenshot 1

Before we proceed with actually building the app, let’s get down some foundational principles of the steps that we need to take to create it.

Finding a suitable dataset

Since there are essentially two steps to this process (computing a word embedding and subsequently reducing its dimensionality), we need a training dataset for word2vec before we can use it to compute the word embedding. For the dimensionality reduction step, we require another dataset. Both of these datasets should be large to produce meaningful results.

A good dataset, on top of being large, will contain examples of the way that actual humans communicate naturally. When selecting a dataset, it’s also important to acknowledge that it might have some inherent bias, based on the population from which the writing samples have been taken. 

In our machine learning application, we have chosen to use a word2vec model that was trained on a dataset from Google News; for the dimensionality reduction, we have included two datasets—one from Twitter and another from Wikipedia.

Now that we have our data, we can begin the analysis process.

Converting words to points in space with word2vec

We understand words based on their meanings and their relationships to other words. For instance, we know that a “king” is a male monarch, and that “king” is to “queen” as “man” is to “woman.” However, words on their own rarely convey enough meaning to be useful. To understand sentences as full thoughts, we supplement this information with contextual clues; this allows us to resolve ambiguities for sets of words that look the same but have different meanings. Consider the phrases “she will lead the new product proposal meeting” and “she will lead us on this hike.” Based on the context, we can infer that “lead” refers to being in charge or in control in the first case. In the second case, it has a more physical meaning of being a guide along a path.

The ideal output of the word2vec algorithm is a representation of words as vectors that preserve contextual patterns and analogous relationships. Words that are often seen in close proximity to one another will have semantic closeness translated to physical closeness in space; for example, the words “telephone” and “number” may be close to one another. Additionally, the vectors between analogous pairs of words will have similar characteristics—the magnitude and direction of the vector from, for example, “king” to “queen” will be the same as the magnitude and direction of the vector from “man” to “woman.” In the case of our example of contextual clues, we might find the word “lead” close to both of the words “meeting” and “hike” since it is found in both of those contexts.

We’ve chosen to have the word2vec algorithm map words to a 300-dimensional vector space in our app. When words are encoded along this many different dimensions, we have a lot of information about them; however, a 300-dimensional space isn’t easy for humans to understand.

Dimension reduction with UMAP and t-SNE

UMAP and t-SNE are two algorithms that serve the purpose of reducing high-dimensional vectors— like those generated by our word2vec algorithm—to dimensionalities that make more sense to us. In the case of this app, we’ve chosen to reduce the data to three dimensions (keep in mind, however, that it’s also possible to reduce it to two dimensions). As was mentioned earlier, a good dimension reduction algorithm will preserve the closeness of sets of points that are near one another in the original higher-dimensional space.

Putting it all together with Dash

Step one: Finding a suitable dataset

In our app, we have provided two preloaded datasets that are typically used in word embedding examples: one taken from a selection of tweets and one from articles on Wikipedia.

App screenshot 2

As a developer, you may not want the user to be limited to a fixed selection of datasets. In the “Advanced” tab, we have made use of a dcc.Upload component which will allow the user to upload any text file that they have available to them.

App screenshot 3App screenshot 4

Step two: Converting words to points in space using word2vec

There are many different variables that can influence our specific implementation of the word2vec algorithm to better understand the relationships between words. As an example, in the “advanced” tab of this application, we’ve included the option of using the skip-gram (SG) or the continuous bag-of-words (CBOW) approach when computing the word embedding. SG attempts to predict the context of any given word; for instance, if you give it the word “rainy”, it might predict the context as being “it was a [rainy] day.” CBOW attempts to predict a word, given a context; if you give it the phrase “it was a […] day”, it might predict the missing word to be “rainy.”

In our “Overview” tab, we’ve used a word2vec model that was trained on data from Google News articles. In the “Advanced” tab, we have the option of training a model ourselves with the gensim library from Python. We train the model using text from the selected dataset (in this case, “Alice”) and our selection of SG or CBOW. 

Python code
App screenshot 5

Since these two methods will likely produce different results, we’ve also added in our Snapshot Engine tool. This takes a “snapshot” of the state of the app and assigns to it a unique URL; so, if we want to share the results that we got using a particular set of parameters, we don’t have to communicate all of that extra information ourselves; we can simply generate a snapshot and send the corresponding URL. We can also take a look at an archive of all of the snapshots that have been created in the past in the “Snapshots” tab, for a comprehensive history of how the app has been used.

App screenshot 6

Step three: Dimension reduction with UMAP and t-SNE

In this particular app, to save time, we’ve pre-computed the t-SNE mappings for each combination of the modelling parameters in the “Overview” tab. However, it is also possible to use UMAP. In the “Advanced” tab, we’ve used the sklearn and umap libraries from Python to compute the dimension reduction according to the algorithm that the user has chosen. 

Python code 2

Regardless of which algorithm you use, however, performance is an important consideration—both algorithms are fairly expensive in terms of processing time. Additionally, we could choose to have some more flexibility without sacrificing too much of the end-user experience. Since we’ve chosen to deploy this app using Dash Enterprise’s App Manager, we could leverage the task-scheduling capabilities of Celery to asynchronously run the computations in the background, which would allow the user to continue interacting with the app. Additionally, as mentioned earlier, we can save the results we get with a particular set of parameters by using the Snapshot Engine. This will allow us to directly view the results and interact with them in the future without having to re-run this time-intensive computation.

App screenshot 7

We can take a snapshot here if we want, and then access it later via the generated URL—the entire view will be preserved.

App screenshot 8

We now have a fully-functional application that encourages exploration and experimentation. Furthermore, we’re able to collaborate with others when developing our model by being able to quickly share our results. 

Why Dash?

There are many libraries already available in Python and R that have been created specifically to implement the algorithms that we’ve discussed. Dash is available in both of these languages, which allows us to seamlessly integrate computation and visualization.

Specifically, the machine learning app that we’ve created serves as a robust, but intuitive interface, to the complex mathematics that go into word embeddings and dimension reduction for natural language processing. Along the way, we’ve used many features of Dash and Dash Enterprise:

  • Interactive components, like dropdowns and sliders, that allow us to quickly view different datasets and change parameters that we use to train our models;
  • An interactive scatter plot that is connected to other parts of the app that allows us to highlight only the data that we are interested in (namely, the n nearest neighbours of a given word);
  • The Snapshot Engine, which allows us to save and quickly share configurations that we use for the models in this app, as well as specific views of the 3D scatter plot;
  • The App Manager, which hosts the app so that it can be shared by multiple users, and which allows for asynchronous task scheduling for the computationally expensive process of dimension reduction; 
  • The Design Kit, which allows us to easily make this application as visually stunning as it is functional, regardless of whether the user is on a laptop, tablet, or mobile phone. 

Interested in learning more about this application, Dash, or Dash Enterprise? Schedule a virtual Dash workshop to upskill your machine learning & data science team during this era of remote work or join us during our live weekly Dash demos.

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: R – Modern Data.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Demo of reproducible geographic data analysis: mapping Covid-19 data with R

$
0
0

[This article was first published on the Geocomputation with R website, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Introduction

The coronavirus pandemic is a global phenomenon that will affect the lives of the majority of the world’s population for years to come. Impacts range from physical distancing measures already affecting more than half of Earth’s population and knock-on impacts such as changes in air quality to potentially life threatening illness, with peer reviewed estimates of infection fatality rates showing the disease disproportionately affects the elderly and people with underlying health conditions.

Like other global phenomena such as climate change, the impacts of the pandemic vary greatly by geographic location, with effective and early implementation of physical distancing measures and effective contact tracing associated with lower death rates, according to preliminary research, as illustrated in the animation below (source: Washington Post).

This article demonstrates how to download and map open data on the evolving coronavirus pandemic, using reproducible R code. The aim is not to provide scientific analysis of the data, but to demonstrate how ‘open science’ enables public access to important international datasets. It also provides an opportunity to demonstrate how techniques taught in Geocomputation with R can be applied to real-world datasets.

Before undertaking geographic analysis of ‘rate’ data, such as the number Covid-19 infections per unit area, it is worth acknowledging caveats at the outset. Simple graphics of complex phenomena can be misleading. This is well-illustrated in the figure below by Will Geary, which shows how the ecological fallacy can affect interpretations of geographical analysis of areal units such countries that we will be using in this research.

The post is intended more as a taster of geographic visualisation in R than as a gateway to scientific analysis of Covid-19 data. See resources such as the eRum2020 CovidR contest and lists of online resources for pointers on how to usefully contribute to data-driven efforts to tackle the crisis.

Set-up

To reproduce the results presented in this article you will need to have an R installation with up-to-date versions of the following packages installed and loaded. (See the geocompr/docker repo and Installing R on Ubuntu article for more on setting up your computer to work with R).

library(sf)
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 7.0.0
library(tmap)library(dplyr)

Getting international Covid-19 data

To get data on official Covid-19 statistics, we will use the COVID19 R package.

This package provides daily updated data on a variety of variables related to the coronavirus pandemic at national, regional and city levels. Install it as follows:

install.packages("COVID19")

After the package is installed, you can get up-to-date country-level data as follows:

d = COVID19::covid19()

To minimise dependencies for reproducing the results in this article, we uploaded a copy of the data, which can be downloaded as follows (re-run the code above to get up-to-date data):

d = readr::read_csv("https://git.io/covid-19-2020-04-23")class(d)
## [1] "spec_tbl_df" "tbl_df"      "tbl"         "data.frame"

The previous code chunk read a .csv file from online and confirmed, we have loaded a data frame (we will see how to join this with geographic data in the next section). We can get a sense of the contents of the data as follows:

ncol(d)
## [1] 24
nrow(d)
## [1] 17572
names(d)
##  [1] "id"             "date"           "deaths"         "confirmed"     ##  [5] "tests"          "recovered"      "hosp"           "icu"           ##  [9] "vent"           "driving"        "walking"        "transit"       ## [13] "country"        "state"          "city"           "lat"           ## [17] "lng"            "pop"            "pop_14"         "pop_15_64"     ## [21] "pop_65"         "pop_age"        "pop_density"    "pop_death_rate"

Getting geographic data

We will use a dataset representing countries worldwide from the rnaturalearth package. Assuming you have the package installed you can get the geographic data as follows (see the subsequent code chunk if not):

world_rnatural = rnaturalearth::ne_download(returnclass = "sf")# names(world_iso) # variables availableworld_iso = world_rnatural %>%   select(NAME_LONG, ISO_A3_EH, POP_EST, GDP_MD_EST, CONTINENT)

The result of the previous code block, an object representing the world and containing only variables of interest, was uploaded to GitHub and can be loaded from a GeoJSON file as follows:

world_iso = sf::read_sf("https://git.io/JfICT") 

To see what’s in the world_iso object we can plot it, with the default setting in sf showing the geographic distribution of each variable:

plot(world_iso)

Transforming geographic data

An issue with the result from a data visualisation perspective is that this unprojected visualisation distorts the world: countries such as Greenland at high latitudes appear bigger than the actually are. To overcome this issue we will project the object as follows (see Chapter 6 of Geocomputation with R and a recent article on the r-spatial website for more on coordinate systems):

world_projected = world_iso %>%   st_transform("+proj=moll")

We can plot just the geometry of the updated object as follows, noting that the result is projected in a way that preserves the true area of countries (noting also that all projections introduce distortions):

plot(st_geometry(world_projected))

Attribute joins

As outlined in Chapter 3 of Geocomputation with R, attribute joins can be used to add additional variables to geographic data via a ‘key variable’ shared between the geographic and non-geographic objects. In this case the shared variables are ISO_A3_EH in the geographic object and id in the Covid-19 dataset d. We will be concise and call the dataset resulting from this join operation w.

w = dplyr::left_join(world_projected, d, by = c("ISO_A3_EH"= "id"))class(w)
## [1] "sf"         "tbl_df"     "tbl"        "data.frame"
nrow(w)
## [1] 14919

Calculating area

The package sf provides a wide range of functions for calculating geographic variables such as object centroid, bounding boxes, lengths and, as demonstrated below, area. We use this area data to calculate the population density of each country as follows:

w$Area_km = as.numeric(st_area(w)) / 1e6w$`Pop/km2` = as.numeric(w$POP_EST) / w$Area_km 

Plotting international Covid-19 data for a single day

The class of w shows that it has geometries for each row. Notice that it has many more rows of data than the original world object: geometries are repeated for every year. This is not an efficient way to store data, as it means lots of duplicate geometries. On a small dataset that doesn’t matter, but it’s something to be aware of. To check that the join has worked, we will take a subset of rows representing the global situation yesterday relative to the date of data access:

w_yesterday = w %>%   filter(date == max(date, na.rm = T) - 1)plot(w_yesterday)

The plot method for sf objects is fast and flexible, as documented in sf’s Plotting Simple Features vignette, which can be accessed with vignette("sf5") from the R console. We can set the breaks to better show the difference between countries with no reported deaths and countries with few reported deaths as follows:

plot(w_yesterday["deaths"])

b = c(0, 10, 100, 1000, 10000, 100000)plot(w_yesterday["deaths"], breaks = b)

To plot the other Covid-19 variables, reporting number of confirmed cases, number of tests and number of people who have recovered, we can subset the relevant variables and pipe the result to the plot() function (noting the caveat that code containing pipes may be hard to debug) as follows:

w_yesterday %>%  dplyr::select(deaths, confirmed, tests, recovered) %>%   plot()

Making maps with tmap

The mapping chapter of Geocomputation with R shows how the tmap package enables publication-quality maps to be created with concise and relatively commands, such as:

tm_shape(w_yesterday) +  tm_polygons(c("deaths", "recovered"))

We can modify the palette and scale as follows:

tm_shape(w_yesterday) +  tm_polygons(    c("deaths", "recovered"),    palette = "viridis",    style = "log10_pretty"    ) 

The map can be further improved by adding graticules representing the curvature of the Earth, created as follows:

g = st_graticule(w_yesterday)

It’s also worth moving the legend:

tm_shape(g) +  tm_lines(col = "grey") +  tm_shape(w_yesterday) +  tm_polygons(    c("deaths", "recovered"),    palette = "viridis",    style = "log10_pretty"    ) +  tm_layout(legend.position = c(0.01, 0.25))

A problem with choropleth maps is that they can under-represent small areas. To overcome this issue we can use dot size instead of color to represent number:

tm_shape(g) +  tm_lines(col = "grey") +  tm_shape(w_yesterday) +  tm_polygons() +  tm_layout(legend.position = c(0.01, 0)) +  tm_shape(w_yesterday) +  tm_dots(    col = c("red", "green"),    size = c("deaths", "recovered"),    palette = "viridis"    )

One question I have here: make the size legend have style = "log10_pretty" also?

Making animated maps

The animation at the beginning of this article shows how dynamic graphics can communicate change effectively. Animated maps are therefore useful for showing evolving geographic phenomena, such as the spread of Covid-19 worldwide. As covered in section 8.3 of Geocomputation with R, animated maps can be created with tmap by extending the tm_facet() functionality. So let’s start by creating a facetted map showing the total number of deaths on the first day of each month in our data:

w$Date = as.character(w$date)tm_shape(g) +  tm_lines(col = "grey") +  tm_shape(w_yesterday) +  tm_polygons(    "Pop/km2",    palette = "viridis",    style = "log10_pretty",    n = 3    ) +  tm_shape(w %>% filter(grepl(pattern = "01$", date))) +  tm_dots(size = "deaths", col = "red") +  tm_facets("Date", nrow = 1, free.scales.fill = FALSE) +  tm_layout(    legend.outside.position = "bottom",    legend.stack = "horizontal"    )

To create an animated map, following instructions in Chapter 8 of Geocomputation with R, we need to make some small changes to the code above:

m = tm_shape(g) +  tm_lines(col = "grey") +  tm_shape(w_yesterday) +  tm_polygons(    "Pop/km2",    palette = "viridis",    style = "log10_pretty",    n = 3    ) +  tm_shape(w %>% filter(grepl(pattern = "01$", date))) +  tm_dots(size = "deaths", col = "red") +  tm_facets(along = "Date", free.coords = FALSE) +  tm_layout(legend.outside = TRUE)tmap_animation(m, "covid-19-animated-map-test.gif", width = 800)browseURL("covid-19-animated-map-test.gif")

We made an animated map! The first version is rarely the best though, and the map above clearly could benefit from some adjustments before we plot the results for the whole dataset:

w$Date = paste0("Total deaths from 22nd January 2020 to ", w$date)m = tm_shape(g) +  tm_lines(col = "grey") +  tm_shape(w) +  tm_polygons(    "Pop/km2",    palette = "viridis",    style = "log10_pretty",    lwd = 0.5    ) +  tm_shape(w) +  tm_dots(size = "deaths", col = "red") +  tm_facets(along = "Date", free.coords = FALSE) +  tm_layout(    main.title.size = 0.5,    legend.outside = TRUE    )tmap_animation(m, "covid-19-animated-map.gif", width = 1400, height = 600)browseURL("covid-19-animated-map.gif")

Conclusion

This article has demonstrated how to work with and map geographic data using the free and open source statistical programming language R. It demonstrates that by representing analysis in code, research can be made reproducible and more accessible to others, encouraging transparent and open science. This has multiple advantages, from education and citizen engagement with the evidence to increased trust in the evidence on which important, life-or-death, decisions are made.

Although the research did not address any policy issues, it could be extended to do so, and we encourage readers to check-out the following resources for ideas for future research:

  • A reproducible geographic analysis of Covid-19 data in Spain by Antonio Paez and others (challenge: reproduce their findings)
  • The eRum2020 CovidR competition (challenge: enter the contest!)
  • Try downloading the the city-level data with this command and exploring the geographic distribution of the outbreak at the city level:
d_city = COVID19::covid19(level = 3)

For further details on geographic data analysis in R in general, we recommend checkout out in-depth materials such as Geocomputation with R and the in-progress open source book Spatial Data Science.

There is also an online talk on the subject on YouTube.

Session info

devtools::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────##  setting  value                       ##  version  R version 3.6.3 (2020-02-29)##  os       Ubuntu 18.04.4 LTS          ##  system   x86_64, linux-gnu           ##  ui       X11                         ##  language (EN)                        ##  collate  C.UTF-8                     ##  ctype    C.UTF-8                     ##  tz       UTC                         ##  date     2020-04-25                  ## ## ─ Packages ───────────────────────────────────────────────────────────────────##  package      * version  date       lib source                              ##  abind          1.4-5    2016-07-21 [1] CRAN (R 3.6.3)                      ##  assertthat     0.2.1    2019-03-21 [1] CRAN (R 3.6.3)                      ##  backports      1.1.6    2020-04-05 [1] CRAN (R 3.6.3)                      ##  base64enc      0.1-3    2015-07-28 [1] CRAN (R 3.6.3)                      ##  blogdown       0.18.1   2020-04-25 [1] Github (rstudio/blogdown@dbd9ca1)   ##  bookdown       0.18.1   2020-04-22 [1] Github (rstudio/bookdown@cd97d40)   ##  callr          3.4.3    2020-03-28 [1] CRAN (R 3.6.3)                      ##  class          7.3-15   2019-01-01 [2] CRAN (R 3.6.3)                      ##  classInt       0.4-3    2020-04-07 [1] CRAN (R 3.6.3)                      ##  cli            2.0.2    2020-02-28 [1] CRAN (R 3.6.3)                      ##  codetools      0.2-16   2018-12-24 [2] CRAN (R 3.6.3)                      ##  colorspace     1.4-1    2019-03-18 [1] CRAN (R 3.6.3)                      ##  crayon         1.3.4    2017-09-16 [1] CRAN (R 3.6.3)                      ##  crosstalk      1.1.0.1  2020-03-13 [1] CRAN (R 3.6.3)                      ##  curl           4.3      2019-12-02 [1] CRAN (R 3.6.3)                      ##  DBI            1.1.0    2019-12-15 [1] CRAN (R 3.6.3)                      ##  desc           1.2.0    2018-05-01 [1] CRAN (R 3.6.3)                      ##  devtools       2.3.0    2020-04-10 [1] CRAN (R 3.6.3)                      ##  dichromat      2.0-0    2013-01-24 [1] CRAN (R 3.6.3)                      ##  digest         0.6.25   2020-02-23 [1] CRAN (R 3.6.3)                      ##  dplyr        * 0.8.5    2020-03-07 [1] CRAN (R 3.6.3)                      ##  e1071          1.7-3    2019-11-26 [1] CRAN (R 3.6.3)                      ##  ellipsis       0.3.0    2019-09-20 [1] CRAN (R 3.6.3)                      ##  evaluate       0.14     2019-05-28 [1] CRAN (R 3.6.3)                      ##  fansi          0.4.1    2020-01-08 [1] CRAN (R 3.6.3)                      ##  fs             1.4.1    2020-04-04 [1] CRAN (R 3.6.3)                      ##  glue           1.4.0    2020-04-03 [1] CRAN (R 3.6.3)                      ##  hms            0.5.3    2020-01-08 [1] CRAN (R 3.6.3)                      ##  htmltools      0.4.0    2019-10-04 [1] CRAN (R 3.6.3)                      ##  htmlwidgets    1.5.1    2019-10-08 [1] CRAN (R 3.6.3)                      ##  KernSmooth     2.23-16  2019-10-15 [2] CRAN (R 3.6.3)                      ##  knitr          1.28     2020-02-06 [1] CRAN (R 3.6.3)                      ##  lattice        0.20-38  2018-11-04 [2] CRAN (R 3.6.3)                      ##  leafem         0.1.1    2020-04-05 [1] CRAN (R 3.6.3)                      ##  leaflet        2.0.3    2019-11-16 [1] CRAN (R 3.6.3)                      ##  leafsync       0.1.0    2019-03-05 [1] CRAN (R 3.6.3)                      ##  lifecycle      0.2.0    2020-03-06 [1] CRAN (R 3.6.3)                      ##  lwgeom         0.2-3    2020-04-12 [1] CRAN (R 3.6.3)                      ##  magrittr       1.5      2014-11-22 [1] CRAN (R 3.6.3)                      ##  memoise        1.1.0    2017-04-21 [1] CRAN (R 3.6.3)                      ##  munsell        0.5.0    2018-06-12 [1] CRAN (R 3.6.3)                      ##  pillar         1.4.3    2019-12-20 [1] CRAN (R 3.6.3)                      ##  pkgbuild       1.0.6    2019-10-09 [1] CRAN (R 3.6.3)                      ##  pkgconfig      2.0.3    2019-09-22 [1] CRAN (R 3.6.3)                      ##  pkgload        1.0.2    2018-10-29 [1] CRAN (R 3.6.3)                      ##  png            0.1-7    2013-12-03 [1] CRAN (R 3.6.3)                      ##  prettyunits    1.1.1    2020-01-24 [1] CRAN (R 3.6.3)                      ##  processx       3.4.2    2020-02-09 [1] CRAN (R 3.6.3)                      ##  ps             1.3.2    2020-02-13 [1] CRAN (R 3.6.3)                      ##  purrr          0.3.4    2020-04-17 [1] CRAN (R 3.6.3)                      ##  R6             2.4.1    2019-11-12 [1] CRAN (R 3.6.3)                      ##  raster         3.1-5    2020-04-19 [1] CRAN (R 3.6.3)                      ##  RColorBrewer   1.1-2    2014-12-07 [1] CRAN (R 3.6.3)                      ##  Rcpp           1.0.4.6  2020-04-09 [1] CRAN (R 3.6.3)                      ##  readr          1.3.1    2018-12-21 [1] CRAN (R 3.6.3)                      ##  remotes        2.1.1    2020-02-15 [1] CRAN (R 3.6.3)                      ##  rlang          0.4.5    2020-03-01 [1] CRAN (R 3.6.3)                      ##  rmarkdown      2.1      2020-01-20 [1] CRAN (R 3.6.3)                      ##  rprojroot      1.3-2    2018-01-03 [1] CRAN (R 3.6.3)                      ##  scales         1.1.0    2019-11-18 [1] CRAN (R 3.6.3)                      ##  sessioninfo    1.1.1    2018-11-05 [1] CRAN (R 3.6.3)                      ##  sf           * 0.9-2    2020-04-14 [1] CRAN (R 3.6.3)                      ##  sp             1.4-1    2020-02-28 [1] CRAN (R 3.6.3)                      ##  stars          0.4-1    2020-04-07 [1] CRAN (R 3.6.3)                      ##  stringi        1.4.6    2020-02-17 [1] CRAN (R 3.6.3)                      ##  stringr        1.4.0    2019-02-10 [1] CRAN (R 3.6.3)                      ##  testthat       2.3.2    2020-03-02 [1] CRAN (R 3.6.3)                      ##  tibble         3.0.1    2020-04-20 [1] CRAN (R 3.6.3)                      ##  tidyselect     1.0.0    2020-01-27 [1] CRAN (R 3.6.3)                      ##  tmap         * 3.0      2020-04-22 [1] Github (mtennekes/tmap@4a9249a)     ##  tmaptools      3.0-1    2020-04-22 [1] Github (mtennekes/tmaptools@adbf1da)##  units          0.6-6    2020-03-16 [1] CRAN (R 3.6.3)                      ##  usethis        1.6.0    2020-04-09 [1] CRAN (R 3.6.3)                      ##  vctrs          0.2.4    2020-03-10 [1] CRAN (R 3.6.3)                      ##  viridisLite    0.3.0    2018-02-01 [1] CRAN (R 3.6.3)                      ##  withr          2.2.0    2020-04-20 [1] CRAN (R 3.6.3)                      ##  xfun           0.13     2020-04-13 [1] CRAN (R 3.6.3)                      ##  XML            3.99-0.3 2020-01-20 [1] CRAN (R 3.6.3)                      ##  yaml           2.2.1    2020-02-01 [1] CRAN (R 3.6.3)                      ## ## [1] /home/runner/work/_temp/Library## [2] /opt/R/3.6.3/lib/R/library
var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: the Geocomputation with R website.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Recent changes in R spatial and how to be ready for them

$
0
0

[This article was first published on the Geocomputation with R website, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Currently, hundreds of R packages are related to spatial data analysis. They range from ecology and earth observation, hydrology and soil science, to transportation and demography. These packages support various stages of analysis, including data preparation, visualization, modeling, or communicating the results. One common feature of most R spatial packages is that they are built upon some of the main representations of spatial data in R, available in key geographic R packages such as:

  • sf, which replaces sp
  • terra, which aims to replace raster
  • stars

Those packages are also not entirely independent. They are using external libraries, namely GEOS for spatial data operations, GDAL for reading and writing spatial data, and PROJ for conversions of spatial coordinates.

Therefore, R spatial packages are interwoven with each other and depend partially on external software developments. This has several positives, including the ability to use cutting-edge features and algorithms. On the other hand, it also makes R spatial packages vulnerable to changes in the upstream packages and libraries.

In the first part of the talk, we showcase several recent advances in R packages. It includes the largest recent change related to the developments in the PROJ library. We explain why the changes happened and how they impact R users. The second part focus on how to prepare for the changes, including computer set-up and running R spatial packages using Docker (briefly covered in a previous post and outlined in the new geocompr/docker repo). We outline important considerations when setting-up operating systems for geographic R packages. To reduce set-up times you can use geographic R packages Docker, a flexible and scalable technology containerization technology. Docker can run on modern computers and on your browser via services such as Binder, greatly reducing set-up times. Discussing these set-up options, and questions of compatibility between geographic R packages and paradigms such as the tidyverse and data.table, ensure that after the talk everyone can empower themselves with open source software for geographic data analysis in a powerful and flexible statistical programming environment.

You can find the slides for the talk at https://nowosad.github.io/whyr_webinar004/.

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) { var s = d.createElement(t); s.type = 'text/javascript'; s.async = true; s.src = '//cdn.viglink.com/api/vglnk.js'; var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: the Geocomputation with R website.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

How much has the data informed your isotope mixing model

$
0
0

[This article was first published on Bluecology blog, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

How much has the data informed your isotope mixing model?

The contributions of different food sources to animal diets is often a mystery. Isotopes provide a means to estimate those contributions, because different food sources often have different isotopic signatures. We would typically use a Bayesian mixing model to estimate the proportional contributions of different food sources to samples taken from the animal.

Isotope mixing models are fitted within a Bayesian framework. This means that the end results (AKA ‘posterior distributions’) are influenced by the data, the model and the prior distributions. Priors are specified for each parameter in the model, including the source contributions.

In the article “Quantifying learning in biotracer studies” (Brown,et al. Oecologia 2018) we describe how comparing priors and posteriors with information criteria is important to determine the influence of the data on the model.

This blog describes how to use my BayeSens R package to calculate information criteria for mixing models.

Why mixing model priors matter

The default prior for most mixing model has a mean of 1/n, where n is the number of sources. So if we had five potential food sources this means our starting assumption is that on average the consumer eats and assimilates 20% of each prey item.

Uncareful use of mixing models has resulted in findings from some peer-reviewed being contested. For instance, if the user just puts sources in the model ‘just to see’ if they matter, the starting assumption is that, on average, each contributes an equal fraction to the diet. This starting assumption is in many cases ridicilous.

When the data are not particularly informative, the model will return the result that every item contributed an equal fraction to the animals diet. The authors may then write this up as a new ‘result’ when in fact it was just the default assumption of the software package being reflected in their outputs.

In general I am quite suspicious of all the isotope studies reporting generalist consumers that eat equal fractions of prey. These patterns may well just reflect the default priors.

Adding to the confusion is that some call the default priors ‘uninformative’.

Priors for mixing models are all informative, eventhe so called ‘uninformative’ priors. The prior for source contributions bounded between 0-1, and source contributions must sum to 1, so it can never be truly flat in that range.

Solutions

You should always plot your priors and posteriors to check what is going on. You can very quickly identify this issue of uninformative data. Then in your write up, you could put less emphasis on results that look like the priors.

You can also calculate statistics that measure how different prior and posterior are. In our paper, we described several statistics taken from information theory. You can then easily report these statistics to summarize where prior and posterior are different (or not).

For instance, in a recent study of coastal fish specices we fitted many models across many species and regions, so we reported the differences as a table in the supplemental material.

How to use the R package

This blog demonstrates how information criteria can be calculated for mixing models fit with MixSIAR.

We will apply the simple marginal information criteria from that paper to the Killer Whale example, see vignette("killerwhale_ex") in MixSIAR.

The killer whale example is a nice simple one with no covariates or random effects. If you have covariates or random effects, you’ll need to be careful to compare priors to posteriors at the same locations on the fixed/random effects.

It will be helpful to have some understanding of MixSIAR’s data structures, because we need to find the posterior samples in the model output.

Killer whale example

First load the packages we need:

library(BayeSens)library(MixSIAR)

Now load the data (this is verbatim from the Killer whale example).

mix.filename <- system.file("extdata", "killerwhale_consumer.csv", package = "MixSIAR")mix <- load_mix_data(filename=mix.filename,                     iso_names=c("d13C","d15N"),                     factors=NULL,                     fac_random=NULL,                     fac_nested=NULL,                     cont_effects=NULL)source.filename <- system.file("extdata", "killerwhale_sources.csv", package = "MixSIAR")source <- load_source_data(filename=source.filename,                           source_factors=NULL,                           conc_dep=FALSE,                           data_type="means",                           mix)discr.filename <- system.file("extdata", "killerwhale_discrimination.csv", package = "MixSIAR")discr <- load_discr_data(filename=discr.filename, mix)

Draw samples from the prior

Let’s draw samples from the prior. You can also plot this with MixSIAR’s plot_prior function, but we need a matrix of the samples for calculating info criteria later.

alpha <- rep(1, source$n.sources) #default prior valuesp_prior <- MCMCpack::rdirichlet(10000, alpha) #draw prior samples

Let’s plot just the prior for the first source (since they are all the same in this case)

#Plot histogram and density (same data, different ways to view it )par(mfrow = c(1,2))hist(p_prior[,1], 20, main = source$source_names[1])plot(density(p_prior[,1]), main = source$source_names[1])abline(v = 1/source$n.sources)

As you can see the default prior clearly isn’t ‘uninformative’ because it is centred around 1/number of sources (in fact it has mean 1 over the number of sources). It might be better called the ‘uninformed’ (by the user) prior. This means the prior will have a lower mean the more sources you include in the model.

Run the model

This is verbatim from the Killer Whales example.

model_filename <- "MixSIAR_model_kw_uninf.txt"   # Name of the JAGS model fileresid_err <- TRUEprocess_err <- TRUEwrite_JAGS_model(model_filename, resid_err, process_err, mix, source)jags.uninf <- run_model(run="test",mix,source,discr,model_filename,alpha.prior = alpha, resid_err, process_err)## module glm loaded## Compiling model graph##    Resolving undeclared variables##    Allocating nodes## Graph information:##    Observed stochastic nodes: 12##    Unobserved stochastic nodes: 23##    Total graph size: 766#### Initializing model

I’ve used the test run mode here just to speed things up for the example.

You should absolutely use long chains (e.g. run = "long") when calculating info criteria. They are quite sensitive to the number of MCMC samples if there are few samples. We need enough samples to get a good idea of the posteriors full shape.

Extract samples

Here’s where it helps to have some idea of how MixSIAR structures outputs. We need to find the posterior samples. You can dig around using str(jags.uninf). I did that and found the samples under jags.uninf$BUGSoutput as below:

p_post <- jags.uninf$BUGSoutput$sims.list$p.global

Now we have a matrix of prior samples and a matrix of posterior samples we can just compare them with the hellinger or kldiv (Kullback-Leibler divergence) functions from BayeSens. I’ll compare just the first source (Chinook salmon).

hellinger(p_prior[,1], p_post[,1])## Hellinger distance - continuous## [1] 0.61####  Hellinger distance - discrete## [1] 0.65kldiv(p_prior[,1], p_post[,1])## Kullback-Leibler divergence## [1] 5.7

We’d like to know what the info criteria are for all sources, so we could manually select columns to compare, or just use some sort of iterating function to do them all at once. Here I use lapply and put them into a dataframe:

hell_out <- lapply(1:source$n.sources, function(i) hellinger(p_prior[,i], p_post[,i])$hdist_disc)kl_out <- lapply(1:source$n.sources, function(i) kldiv(p_prior[,i], p_post[,i])$kd)info_df <- data.frame(source_names = source$source_names,                      hellinger = unlist(hell_out),                      KLD = unlist(kl_out))info_df##   source_names hellinger       KLD## 1      Chinook 0.6536184 5.6601980## 2         Chum 0.3659136 1.6746118## 3         Coho 0.3053054 0.9676074## 4      Sockeye 0.5260229 3.6985169## 5    Steelhead 0.5430961 4.2273867

Hellinger values near 0 are very similar to the priors, Hellinger values near 1 are very different to the priors. The KLD ranges from >0 to infinity, so greater values indicate greater differences from the prior. So these results indicate to us that the model and data are not very informative about Coho, but much more informative about Chinook. To interpret why this is you should plot the priors and posteriors.

You can use output_JAGS to do this. We will do it ourselves, just to practice data wrangling. For Chinook and Coho:

par(mfrow = c(1,2))plot(density(p_post[,1]), main = source$source_names[1])lines(density(p_prior[,1]), col = "red")abline(v = 1/source$n.sources, lty = 2)plot(density(p_post[,3]), main = source$source_names[3])lines(density(p_prior[,3]), col = "red")abline(v = 1/source$n.sources, lty = 2)

It is pretty clear that contributions for Chinook have shifted higher, whereas the data doesn’t give us much reason to believe Coho are any more important than the prior suggested.

Note that you can also get high information criteria stats if the posterior mean stays the same as the prior’s mean, but the distribution changes shape (e.g. gets thinner). For instance, if the data were strongly informative that Coho were not an important food source, then we could have the same posterior mean of 0.2, but the uncertainty intervals would be much narrower around 0.2 than in the prior.

Informative priors

The killer whale example also gives a model fit with informed priors. Here’s the code verbatim from MixSIAR:

kw.alpha <- c(10,1,0,0,3)kw.alpha <- kw.alpha*length(kw.alpha)/sum(kw.alpha)kw.alpha[which(kw.alpha==0)] <- 0.01model_filename <- "MixSIAR_model_kw_inf.txt"  resid_err <- TRUEprocess_err <- TRUEwrite_JAGS_model(model_filename, resid_err, process_err, mix, source)jags.inf <- run_model(run="test",mix,source,discr,model_filename,alpha.prior=kw.alpha, resid_err, process_err)## Compiling model graph##    Resolving undeclared variables##    Allocating nodes## Graph information:##    Observed stochastic nodes: 12##    Unobserved stochastic nodes: 23##    Total graph size: 766#### Initializing model

The only extra step we need to do now is draw samples from the prior and posteriors:

p_prior_inf <- MCMCpack::rdirichlet(10000, kw.alpha) #draw prior samplesp_post_inf <- jags.inf$BUGSoutput$sims.list$p.globalhell_out_inf <- lapply(1:source$n.sources, function(i) hellinger(p_prior_inf[,i], p_post_inf[,i])$hdist_disc)## Warning in sqrt(1 - integrate(fx1, minx, maxx)$value): NaNs produced## Warning in sqrt(1 - integrate(fx1, minx, maxx)$value): NaNs producedkl_out_inf <- lapply(1:source$n.sources, function(i) kldiv(p_prior_inf[,i], p_post_inf[,i])$kd)info_df <- cbind(info_df,                 data.frame(                      hellinger_inf = unlist(hell_out_inf),                      KLD_inf = unlist(kl_out_inf)))info_df##   source_names hellinger       KLD hellinger_inf   KLD_inf## 1      Chinook 0.6536184 5.6601980     0.7829688 8.7014174## 2         Chum 0.3659136 1.6746118     0.3353133 1.0081589## 3         Coho 0.3053054 0.9676074     0.1208581 0.1794651## 4      Sockeye 0.5260229 3.6985169     0.1262016 0.1923406## 5    Steelhead 0.5430961 4.2273867     0.6469540 5.7095752

The warning about NA’s comes from the prior for some groups being near zero, so the continuous version of the Hellinger stat isn’t able to be calculated. We are using the discrete version though, so its no problem to us.

So with the informed priors the Hellinger has increased for Chinook and Steelhead and decreased for the others.

Remember that the information criteria just measure the distance from the prior. So if our data just confirm the informed priors, or there isn’t enough data to overcome the informed priors, then the information criteria will be near zero. In this case we have only two tracers and samples from 12 killer whales. The prior we used on Sockeye was very strong to zero consumption, so our result stays the same.

The below plot shows the priors in red and posteriors in black for the model with informed priors.

plot(density(p_post_inf[,1]), lty = 2, main = "informed prior", xlim = c(0,1))lines(density(p_prior_inf[,1]), lty = 2, col = "red")

I haven’t plotted the informed Coho model because both the prior and posterior are a spikes near zero.

You can clearly see the model has shifted the consumption of Coho downwards relative to the informed prior.

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: Bluecology blog.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

V is for Verbs

$
0
0

[This article was first published on Deeply Trivial, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

In this series, I’ve covered five terms for data manipulation:

  • arrange
  • filter
  • mutate
  • select
  • summarise

These are the verbs that make up the grammar of data manipulation. They all work with group_by to perform these functions groupwise.

There are scoped versions of these verbs, which add _all, _if, or _at, that allow you to perform these verbs on multiple variables simultaneously. For instance, I could get means for all of my numeric variables like this. (Quick note: I created an updated reading dataset that has all publication years filled in. You can download it here.)

library(tidyverse)
## -- Attaching packages ------------------------------------------- tidyverse 1.3.0 -- 
##  ggplot2 3.2.1      purrr   0.3.3 ##  tibble  2.1.3      dplyr   0.8.3 ##  tidyr   1.0.0      stringr 1.4.0 ##  readr   1.3.1      forcats 0.4.0 
## -- Conflicts ---------------------------------------------- tidyverse_conflicts() -- ## x dplyr::filter() masks stats::filter() ## x dplyr::lag()    masks stats::lag() 
reads2019<-read_csv("~/Downloads/Blogging A to Z/SaraReads2019_allchanges.csv",col_names=TRUE)
## Parsed with column specification: ## cols( ##   Title = col_character(), ##   Pages = col_double(), ##   date_started = col_character(), ##   date_read = col_character(), ##   Book.ID = col_double(), ##   Author = col_character(), ##   AdditionalAuthors = col_character(), ##   AverageRating = col_double(), ##   OriginalPublicationYear = col_double(), ##   read_time = col_double(), ##   MyRating = col_double(), ##   Gender = col_double(), ##   Fiction = col_double(), ##   Childrens = col_double(), ##   Fantasy = col_double(), ##   SciFi = col_double(), ##   Mystery = col_double(), ##   SelfHelp = col_double() ## ) 
reads2019%>%summarise_if(is.numeric,list(mean))
## # A tibble: 1 x 13 ##   Pages Book.ID AverageRating OriginalPublica… read_time MyRating Gender Fiction ##                                          ## 1  341.  1.36e7          3.94            1989.      3.92     4.14  0.310   0.931 ## # … with 5 more variables: Childrens , Fantasy , SciFi , ## #   Mystery , SelfHelp  

This function generated the mean for every numeric variable in my dataset. But even though they’re all numeric, the mean isn’t the best statistic for many of them, for instance average book ID or publication year. We could just generate means for specific variables with summarise_at.

reads2019%>%summarise_at(vars(Pages, AverageRating, read_time, MyRating),list(mean))
## # A tibble: 1 x 4 ##   Pages AverageRating read_time MyRating ##                      ## 1  341.          3.94      3.92     4.14 

You can also request more than one piece of information in your list, and request that R create a new label for each variable.

numeric_summary<-reads2019%>%summarise_at(vars(Pages, AverageRating, read_time, MyRating),list("mean"= mean,"median"= median))

I use the basic verbs anytime I use R. I only learned about scoped verbs recently, and I’m sure I’ll add them to my toolkit over time.

Next week is the last week of Blogging A to Z! See you then!

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: Deeply Trivial.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Riddler: Can You Solve The Chess Mystery?

$
0
0

[This article was first published on Posts | Joshua Cook, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Summary

The Riddler is a weekly puzzle provided by FiveThirtyEight. This week’s puzzle involves finding the path used by the knight to kill the opposing queen in a game of chess. Below, I show how I solved puzzle using two methods: a siumulation of the chessboard and by building a graph of the possible paths for the knight. The simulations were good, but not solution was found in the first attempt. Only after realizing a key insight could the riddle be solved.

FiveThirtyEight’s Riddler Express

https://fivethirtyeight.com/features/can-you-solve-the-chess-mystery/

From Yan Zhang comes a royal murder mystery:

Black Bishop: “Sir, forensic testing indicates the Queen’s assassin, the White Knight between us, has moved exactly eight times since the beginning of the game, which has been played by the legal rules.”

Black King: “So?”

Black Bishop: “Well, to convict this assassin, we need to construct a legal game history. But we just can’t figure out how he got there!”

Can you figure it out?

chessboard

(The solution is available at the end of the following week’s Riddler.)

knitr::opts_chunk$set(echo = TRUE, comment = "#>")library(glue)library(tidygraph)library(ggraph)library(tidyverse)theme_set(theme_minimal())

Simulation method

The first method I tried was to use a simulation to find the path from the blank space to the final space.

I abstracted the chessboard as a matrix with 0 as empty space, 1 as a taken space, and 2 as the knight.

chessboard <- matrix(c(1, 1, 1, 0, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1,0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0,1, 1, 1, 1, 1, 1, 1, 1,1, 2, 1, 1, 1, 1, 1, 1), nrow = 8, byrow = TRUE)chessboard
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]#> [1,] 1 1 1 0 1 1 1 1#> [2,] 1 1 1 1 1 1 1 1#> [3,] 0 0 0 0 0 0 0 0#> [4,] 0 0 0 0 0 0 0 0#> [5,] 0 0 0 0 0 0 0 0#> [6,] 0 0 0 0 0 0 0 0#> [7,] 1 1 1 1 1 1 1 1#> [8,] 1 2 1 1 1 1 1 1

I then created a bunch of functions that take care of different parts of the algorithm.

# Return the current location of the knight on the chessboard `mat`.get_knight_location <- function(mat) {knight_row <- which(apply(mat, 1, function(x) any(x == 2)))knight_col <- which(apply(mat, 2, function(x) any(x == 2)))return(list(x = knight_col, y = knight_row))}get_knight_location(chessboard)
#> $x#> [1] 2#>#> $y#> [1] 8
# A helper for visiualizing the chessboard.print_chessboard <- function(mat) {new_mat <- matnew_mat[new_mat == "0"] <- " "new_mat[new_mat == "1"] <- "+"new_mat[new_mat == "2"] <- "H"new_mat[1, 4] <- "o"print(new_mat)invisible(NULL)}print(chessboard)
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]#> [1,] 1 1 1 0 1 1 1 1#> [2,] 1 1 1 1 1 1 1 1#> [3,] 0 0 0 0 0 0 0 0#> [4,] 0 0 0 0 0 0 0 0#> [5,] 0 0 0 0 0 0 0 0#> [6,] 0 0 0 0 0 0 0 0#> [7,] 1 1 1 1 1 1 1 1#> [8,] 1 2 1 1 1 1 1 1
# Movement: (horizontal movement, vertical movement)possible_knight_movements <- rbind(expand.grid(c(1, -1), c(2, -2)),expand.grid(c(2, -2), c(1, -1))) %>%as_tibble() %>%set_names(c("x", "y"))possible_knight_movements
#> # A tibble: 8 x 2#> x y#>  #> 1 1 2#> 2 -1 2#> 3 1 -2#> 4 -1 -2#> 5 2 1#> 6 -2 1#> 7 2 -1#> 8 -2 -1

One optimization I added to the simulation to help it preform better than a purely random walk was to prevent it from retracing its steps. This was achieved by adding a check in is_available_move() to prevent it from returning to the previous step. (As we see with the final solution, this wasn’t really necessary.)

# Select a random move for the knight.get_random_movement <- function() {sample_n(possible_knight_movements, 1)}# Get the new location of the knight after a move.get_new_location <- function(movement, current_loc) {new_x_loc <- movement$x + current_loc$xnew_y_loc <- movement$y + current_loc$yreturn(list(x = new_x_loc, y = new_y_loc))}# Move the knight on the board.move_knight_to_new_location <- function(movement, mat) {current_loc <- get_knight_location(mat)new_loc <- get_new_location(movement, current_loc)new_mat <- matnew_mat[current_loc$y, current_loc$x] <- 0new_mat[new_loc$y, new_loc$x] <- 2return(new_mat)}previous_location <- get_knight_location(chessboard)# Is the new position on a board possible or available.# i.e. can the knight make the `movement` on the `mat`.# This function "remembers" the previous location and will not let the knight# move backwards. Because this is reset at the beginning, the knight won't get# trapped in a corder forever, just one round.is_available_move <- function(movement, mat) {current_loc <- get_knight_location(mat)new_loc <- get_new_location(movement, current_loc)# Check that the piece stays on the board.if (new_loc$x < 1 | new_loc$x > ncol(chessboard)) {return(FALSE)} else if (new_loc$y < 1 | new_loc$y > nrow(chessboard)) {return(FALSE)}# Check if the new location would be the same as the previous location.if (new_loc$x == previous_location$x & new_loc$y == previous_location$y) {return(FALSE)}# Check the new space is not already taken.if (mat[new_loc$y, new_loc$x] == 1) {return(FALSE)}previous_location <<- current_locTRUE}# Move the knight one time randomly, but legally.move_knight <- function(mat) {old_loc <- get_knight_location(mat)movement <- get_random_movement()while(!is_available_move(movement, mat)) {movement <- get_random_movement()}move_knight_to_new_location(movement, mat)}

The function to play a round just calls move_knight() 8 times on the same chessboard. It returns a tibble with the locations of the knight during the process.

# Return a tidy tibble of the knights locations.knight_location_tidy <- function(l) {enframe(l, name = "move_idx") %>%mutate(x = map_dbl(value, ~ .x[[1]]),y = map_dbl(value, ~ .x[[2]])) %>%select(move_idx, x, y) %>%mutate(move_idx = move_idx - 1)}# Play a round of the simulation.play_round <- function(num_moves = 8) {gameboard <- chessboardknight_locs <- rep(NA, num_moves + 1)knight_locs[1] <- list(get_knight_location(gameboard))for (i in seq(1, num_moves)) {gameboard <- move_knight(gameboard)knight_locs[i + 1] <- list(get_knight_location(gameboard))}return(knight_location_tidy(knight_locs))}play_round()
#> # A tibble: 9 x 3#> move_idx x y#>   #> 1 0 2 8#> 2 1 3 6#> 3 2 1 5#> 4 3 3 4#> 5 4 4 6#> 6 5 5 4#> 7 6 3 3#> 8 7 2 5#> 9 8 1 3

I also added a simple function to plot the path of the knight. Each step is labeled with its place in the sequence.

# A visualization tool for the path of the knight.plot_knight_locations <- function(df) {df %>%ggplot(aes(x = x, y = y, color = move_idx)) +geom_path(aes(group = game_idx), size = 2) +geom_point(size = 5) +scale_x_continuous(limits = c(1, 8),expand = expansion(add = c(0.1, 0.1)),breaks = 1:8) +scale_y_continuous(limits = c(1, 8),expand = expansion(add = c(0.1, 0.1)),breaks = 1:8) +scale_color_viridis_c(breaks = seq(0, 8, 2)) +theme(panel.grid.major = element_line(color = "grey50", size = 0.5),panel.grid.minor = element_blank(),panel.border = element_rect(fill = NA, color = "grey50"))}play_round() %>%add_column(game_idx = 1) %>%plot_knight_locations()

Finally, we can play the game many times until a solution is found.

# `TRUE` is returned if the riddle was solved.finished_riddle <- function(df) {last_loc <- df %>% slice(nrow(df))if (last_loc$x == 4 & last_loc$y == 1) {return(TRUE)} else {return(FALSE)}}
set.seed(0)n_max <- 5e2all_games <- rep(NA, n_max)for (i in seq(1, n_max)) {moves <- play_round()all_games[i] <- list(moves)if (finished_riddle(moves)) {print("RIDDLE SOLVED!")break}}

Interestingly, the desired end point, (4, 1), was reached, just not at the end of the path.

bind_rows(all_games, .id = "game_idx") %>%plot_knight_locations()

We can look at the most visited locations (ignoring the starting location).

bind_rows(all_games, .id = "game_idx") %>%count(x, y) %>%mutate(n = ifelse(x == 2 & y == 8, 1, n)) %>%ggplot(aes(x = x, y = y, color = n)) +geom_point(aes(size = n), alpha = 0.7) +scale_x_continuous(limits = c(1, 8),expand = expansion(add = c(0.1, 0.1)),breaks = 1:8) +scale_y_continuous(limits = c(1, 8),expand = expansion(add = c(0.1, 0.1)),breaks = 1:8) +scale_color_gradient(low = "dodgerblue", high = "tomato") +scale_size_continuous(range = c(3, 25)) +theme(panel.grid.major = element_line(color = "grey50", size = 0.5),panel.grid.minor = element_blank(),panel.border = element_rect(fill = NA, color = "grey50"))

After a lot of simulations (only 500 shown above, but I also tried 10,000), no solution was found. I was inspired by the visualization to try a graph-based approach.

Graph method

I can build a graph of all the possible paths of the knight given the state of the board and then find the path between the start and end that is 8 steps long.

The graph building process is a bit complicated, but it follows the basic algorithm outlined below:

  1. Start from a seed location ((2, 8) at the beginning).
  2. Find all possible next locations for the knight.
  3. Of these locations, add the new ones to a record of visted locations (position_table).
  4. Add to the edge list (edge_list) a link between the parent (x,y) to these next positions.
  5. For the nodes that have not yet been visited, repeat this algorithm for each.

# A table to track where the algorithm has been already.position_table <- tibble(x = 2, y = 8)# An edge list for the graph.edge_list <- tibble()# A tibble with the possible x and y changes of position for the knight.possible_knight_changes <- possible_knight_movements %>%set_names(c("change_x", "change_y"))# Is the position allowed on the chessboard?position_is_allowed <- function(x, y) {if (x > 8 | x < 1 | y > 8 | y < 1) {return(FALSE)} else if (chessboard[y, x] != 0) {return(FALSE)}TRUE}# A tibble of the next possible locations for the knight.possible_next_positions <- function(x, y) {rep(list(tibble(x = x, y = y)),nrow(possible_knight_changes)) %>%bind_rows() %>%bind_cols(possible_knight_changes) %>%mutate(x = x + change_x,y = y + change_y,is_legal = map2_lgl(x, y, position_is_allowed)) %>%filter(is_legal) %>%select(x, y)}# Build the graphs starting from a seed x and y position.get_knight_edges <- function(x, y) {df <- possible_next_positions(x, y)# Add the new edges to the edge list.edge_list <<- bind_rows(edge_list,tibble(from = paste0(x, ",", y),to = paste0(df$x, ",", df$y)))# Remove positions already recorded.df <- df %>% anti_join(position_table, b = c("x", "y"))if (nrow(df) != 0) {position_table <<- bind_rows(position_table, df)for (i in 1:nrow(df)) {get_knight_edges(df$x[[i]], df$y[[i]])}}invisible(NULL)}get_knight_edges(2, 8)edge_list
#> # A tibble: 134 x 2#> from to#>  #> 1 2,8 3,6#> 2 2,8 1,6#> 3 3,6 4,4#> 4 3,6 2,4#> 5 3,6 5,5#> 6 3,6 1,5#> 7 4,4 5,6#> 8 4,4 3,6#> 9 4,4 6,5#> 10 4,4 2,5#> # … with 124 more rows

The edge list can be turned into a tidygraph from the ‘tidygraph’ library.

knight_graph <- as_tbl_graph(edge_list, directed = FALSE)knight_graph
#> # A tbl_graph: 34 nodes and 134 edges#> ##> # An undirected multigraph with 1 component#> ##> # Node Data: 34 x 1 (active)#> name#> #> 1 2,8#> 2 3,6#> 3 4,4#> 4 5,6#> 5 6,4#> 6 7,6#> # … with 28 more rows#> ##> # Edge Data: 134 x 2#> from to#>  #> 1 1 2#> 2 1 34#> 3 2 3#> # … with 131 more rows

Here is a simple visualization of the graph.

knight_graph %N>%mutate(color = case_when(name == "2,8" ~ "start",name == "4,1" ~ "end",TRUE ~ "middle")) %>%ggraph(layout = "stress") +geom_edge_link() +geom_node_label(aes(label = name, color = color)) +scale_color_manual(values = c("green3", "grey40", "dodgerblue")) +theme_graph()

One possible way to find the path of 8 steps between the “start” and “end” would be to elucidate all the possible paths and then find those of length 8. This takes way too long, though, so I instead used a random walk method. However, I was still unable to find a solution after 1,000 random walks.

n_max <- 1e3set.seed(0)for (i in seq(1, n_max)) {path <-igraph::random_walk(knight_graph,start = "2,8",steps = 9,mode = "all")if (names(path)[[9]] == "4,1") {print("RIDDLE SOLVED!")break}}

That means both of my methods have failed to find a solution to this Riddler…

Problem with my solving methods

The knight cannot travel from the original blank square to the final position. This is true because every time the knight moves, it goes from a black to a white square or a white to a black square. Thus, it is not possible for the knight in the bottom-left to travel from a white square to a black square in 8 moves. In 8 moves, it will always be on a white square again.

Solution

Thus the knight that killed the queen must have come from the bottom-right and the bottom-left knight took its place. We can solve the puzzle by just changing the original chessboard and re-running the simulations and graph search.

Simulation

If we change the chessboard and re-try the simulation method, it finds a solution easily.

chessboard <- matrix(c(1, 1, 1, 0, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1,0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0,1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 2, 1), nrow = 8, byrow = TRUE)chessboard
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]#> [1,] 1 1 1 0 1 1 1 1#> [2,] 1 1 1 1 1 1 1 1#> [3,] 0 0 0 0 0 0 0 0#> [4,] 0 0 0 0 0 0 0 0#> [5,] 0 0 0 0 0 0 0 0#> [6,] 0 0 0 0 0 0 0 0#> [7,] 1 1 1 1 1 1 1 1#> [8,] 1 1 1 1 1 1 2 1
previous_location <- get_knight_location(chessboard)set.seed(0)n_max <- 1e2all_games <- rep(NA, n_max)for (i in seq(1, n_max)) {moves <- play_round()all_games[i] <- list(moves)if (finished_riddle(moves)) {print("RIDDLE SOLVED!")break}}
#> [1] "RIDDLE SOLVED!"
all_games <- all_games[!is.na(all_games)]successful_game <- all_games[length(all_games)][[1]]successful_game <- successful_game %>%mutate(game_idx = 1)p <- plot_knight_locations(successful_game)p +ggrepel::geom_text_repel(aes(label = move_idx),color = "black", size = 6)

Graph

We can try the graph-based method again, too, and this time it finds a solution.

# A table to track where the algorithm has been already.position_table <- tibble(x = 7, y = 8)# An edge list for the graph.edge_list <- tibble()get_knight_edges(7, 8)new_knight_graph <- as_tbl_graph(edge_list, directed = FALSE)new_knight_graph
#> # A tbl_graph: 34 nodes and 134 edges#> ##> # An undirected multigraph with 1 component#> ##> # Node Data: 34 x 1 (active)#> name#> #> 1 7,8#> 2 8,6#> 3 7,4#> 4 5,5#> 5 6,3#> 6 7,5#> # … with 28 more rows#> ##> # Edge Data: 134 x 2#> from to#>  #> 1 1 2#> 2 1 34#> 3 2 3#> # … with 131 more rows
n_max <- 1e2set.seed(0)for (i in seq(1, n_max)) {path <-igraph::random_walk(new_knight_graph,start = "7,8",steps = 9,mode = "all")if (names(path)[[9]] == "4,1") {print("RIDDLE SOLVED!")break}}
#> [1] "RIDDLE SOLVED!"
print(path)
#> + 9/34 vertices, named, from d355afd:#> [1] 7,8 8,6 7,4 6,6 4,5 6,4 4,5 5,3 4,1
p <- tibble(node = names(path)) %>%mutate(x = as.numeric(str_extract(node, "^[:digit:]")),y = as.numeric(str_extract(node, "[:digit:]$"))) %>%mutate(move_idx = 1:n() - 1,game_idx = 1) %>%plot_knight_locations()p +ggrepel::geom_text_repel(aes(label = move_idx), color = "black")

It seems like there are actually a few different solutions. 34 different paths were found in 10,000 trials.

n_max <- 1e4set.seed(0)successful_paths <- c()for (i in seq(1, n_max)) {path <-igraph::random_walk(new_knight_graph,start = "7,8",steps = 9,mode = "all")if (names(path)[[9]] == "4,1") {successful_paths <- c(successful_paths, path)}}length(unique(successful_paths))
#> [1] 34

If you take a look at the solution available at the end of the following week’s Riddler, you’ll see that I have successfully solved the puzzle.

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: Posts | Joshua Cook.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Spectral Heatmaps

$
0
0

[This article was first published on R on Chemometrics & Spectroscopy using R, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Most everyone is familiar with heatmaps in a general way. It’s hard not to run into them. Let’s consider some variations:

  • A heatmap is a 2D array of rectangular cells colored by value. Generally, the rows and columns are ordered in some purposeful manner. These are very commonly encountered in microarrays for example.
  • An image is a type of heatmap in which the ordering of the rows and columns is defined spatially – it would not make sense to reorder them. This kind of data arises from the physical dimensions of a sensor, for instance the sensor on a digital camera or a raman microscope. An image might also arise by a decision to subset and present data in a “square” format. An example would be the topographic maps provided by the US government which cover a rectangular latitude/longitude range. This type of data can also be presented as a contour plot. See the examples in ?image for image and contour plots of the classic Maunga Whau volcano data, as well as an overlay of the contours on the image plot.
  • A chloropleth is a map with irregular geographic boundaries and regions colored by some value. These are typically used in presenting social or political data. A chloropleth is not really a heatmap but it is often mis-characterized as one.

These three types of plots are conceptually unified in that they require a 3D data set. In the case of the heatmap and the image, the underlying data are on a regular x, y grid of values; mathematically, a matrix. The row and column indices are mapped to the x, y values, and the matrix entries are the z values. A chloropleth can be thought of as a very warped matrix where the cells are not on a regular grid but instead a series of arbitrary connected paths, namely the geographic boundaries. There is a value inside each connected path (the z value), but naturally the specification of the paths requires a completely different data structure. An intermediate type would be the cartogram heatmap described by Wilke.

Heatmaps in Spectroscopy: hmapSpectra

The hmapSpectra function in ChemoSpec displays a heatmap to help you focus on which frequencies drive the separation of your samples.1 We’ll use the example from ?hmapSpectra which uses the built-in SrE.IR data set. This data set is a series of IR spectra of commercial Serenoa repens oils which are composed of mixtures of triglycerides and free fatty acids (see ?SrE.IR for more information). Thus the carbonyl region is of particular interest. The example narrows the frequency range to the carbonyl region for easy interpretation. Let’s look first at the spectra.

Note: rather than link every mention of a help page in this post, remember you can see all the documentation at this site.

library("ChemoSpec")
## Loading required package: ChemoSpecUtils
data(SrE.IR) # load the data set# limit to the carbonyl regionIR <- removeFreq(SrE.IR, rem.freq = SrE.IR$freq > 1775 | SrE.IR$freq < 1660)plotSpectra(IR, which = 1:16, lab.pos = 1800)

The blue and green spectra are samples composed only of triglycerides, and hence the ester carbonyl is the primary feature. All other samples are clearly mixtures of ester and carboxylic acid stretching peaks. And now for the heatmap, using defaults:

res <- hmapSpectra(IR)
## Registered S3 method overwritten by 'seriation':##   method         from ##   reorder.hclust gclus

In this default display, you’ll notice that the rows and column labels are indices to the underlying sample names and frequency list. This is not so helpful. The color scheme is not so exciting either. hmapSpectra uses the package seriation which in turn uses the heatmap.2 function in package gplots. Fortunately we can use the ... argument to pass additional arguments to heatmap.2 to get a much more useful plot.

Customizing the hmapSpectra Display

# Label samples and frequencies by passing arguments to heatmap.2# Also make a few other nice plot adjustmentsres <- hmapSpectra(IR,  col = heat.colors(5),  labRow = IR$names, labCol = as.character(round(IR$freq)),  margins = c(4, 6), key.title = "")

This is a lot nicer plot, since the rows are labeled with the sample names, and the columns with frequencies. Note that not every column is labeled, only every few frequencies. If you need the actual frequencies, which you probably will, they can be obtained from the returned object (res in this case; see the end of this post for an example).

Interpreting the Plot

How do we interpret this plot? This is a seriated heatmap, which means the rows and columns have been re-ordered according to some algorithm (more on this in a moment). The ordering puts the frequencies most important in distinguishing the samples in the upper left and lower right (the yellow regions). In the lower right corner, we see the two outlier samples TJ_OO and SV_EPO grouped together. On the frequency axis, we see that ester stretching peaks around 1740 \(\mathrm{cm}^1\) are characteristic for these samples. In the upper left corner, we see several samples grouped together, and associated with the fatty acid carboxylic acid peak around 1710 \(\mathrm{cm}^1\). From these two observations, we can conclude that these two peak ranges are most important in separating the samples. Of course, in this simple example using a small part of the spectrum, this answer was already clear by simple inspection. Using a simple/limited range of data helps us to be sure we understand what’s happening when we try a new technique.

Using a Different Distance Measure & Seriation Method

The default data treatments for hmapSpectra are inherited from hmap in package seriation. The default distance between the samples is the Euclidean distance. The default seriation method is “OLO” or “optimal leaf ordering”. The full list of seriation methods is described in ?seriate. There are more than 20 options. As with the display details, we can change these defaults via the ... arguments. Let’s use the cosine distance (the same as the Pearson distance), and seriate using the Gruvaeus-Wainer algorithm (there’s a brief explanation of this algorithm at ?seriate).

cosine_dist <- function(x) as.dist(1 - cor(t(x)))res <- hmapSpectra(IR,  col = heat.colors(5),  labRow = IR$names, labCol = as.character(round(IR$freq)),  margins = c(4, 6), key.title = "",    dist_fun = cosine_dist,    method = "GW")

You can see that using different distance measures and seriation algorithms gives a rather different result: the ester “hot spots” which were in the lower right corner are now almost in the lower left corner. Which settings are best will depend on your data set, the goal of your analysis, and there are a lot of options from which to choose. The settings used here are simply for demonstration purposes, I make no claim these settings are appropriate!

Finally, if you want to capture the re-ordered frequencies, you can access them in the returned object:

round(IR$freq[res$colInd])
##  [1] 1709 1707 1711 1713 1705 1714 1703 1701 1716 1743 1741 1745 1747 1740 1749## [16] 1738 1736 1751 1734 1757 1755 1753 1732 1730 1728 1726 1724 1722 1718 1720## [31] 1697 1699 1695 1693 1691 1689 1687 1686 1684 1682 1680 1678 1676 1674 1670## [46] 1672 1668 1666 1664 1662 1660 1774 1772 1770 1768 1767 1765 1763 1761 1759

  1. Other functions in ChemoSpec that can help you explore which frequencies are important are plotLoadings, plot2Loadings and sPlotSpectra.↩

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: R on Chemometrics & Spectroscopy using R.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.


Munging and reordering Polarsteps data

$
0
0

[This article was first published on Category R on Roel's R-tefacts, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

This post is about how to extract data from a json, turn it into a tibble and do some work with the result. I’m working with a download of personal data from polarsteps.

A picture of Tokomaru Wharf (New Zealand)

I was a month in New Zealand, birthplace of R and home to Hobbits. I logged my travel using the Polarsteps application. The app allows you to upload pictures and write stories about your travels. It also keeps track of your location1. The polarsteps company makes money by selling you a automagically created a photo album of your travels. I did not really like that photo album, so I want to do something with the texts themselves. There are several options: I could scrape the webpages that contain my travels. Or I could download my data and work with that. Polarsteps explains that the data you create remains yours2 and you can download a copy. Which is what I did.

Now my approach is a bit roundabout and probably not the most effective but I thought it would demonstrate how to work with lists. I first extract the ‘steps’ (individual posts) data and turn that all into a rectangular format finally I extract those elements again and turn that into a document again (other post). I could have gone a more direct route.

Loading the data

First enable the tools:

library(tidyverse)
## ── Attaching packages ─────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.0 ✓ purrr 0.3.3## ✓ tibble 3.0.0 ✓ dplyr 0.8.5## ✓ tidyr 1.0.2 ✓ stringr 1.4.0## ✓ readr 1.3.1 ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──## x dplyr::filter() masks stats::filter()## x dplyr::lag() masks stats::lag()
library(jsonlite)
#### Attaching package: 'jsonlite'
## The following object is masked from 'package:purrr':#### flatten

The data comes in a zip which contains two folders trip and user data. I’m interested in the trip data.

user_data├── trip│ └── New\ Zealand_3129570└── user└── user.json

The trip data contains two json files and folders for photos and videos.

New\ Zealand_3129570├── locations.json├── photos├── trip.json└── videos

The locations.json contains only gps coordinates and names linking back to the trip. but the trip also contains these coordinates so for me this locations.json file is less relevent. I extracted both of these json files but I will only work with the trip.json.

trip <- jsonlite::read_json("trip.json")

When you receive your file it is in a json format. Which is a bunch of lists inside lists. We can work with lists in R, but usually we want to work with rectangular data, such as data.frames. because that is just so much more easy with the tidyverse tools.

names(trip)
 [1] "featured" "feature_date" "likes"[4] "id" "fb_publish_status" "step_count"[7] "total_km" "featured_priority_for_new_users" "feature_text"[10] "open_graph_id" "start_date" "type"[13] "uuid" "user_id" "cover_photo_path"[16] "slug" "all_steps" "views"[19] "end_date" "cover_photo" "visibility"[22] "planned_steps_visible" "cover_photo_thumb_path" "language"[25] "name" "is_deleted" "timezone_id"[28] "summary" 

The top of the trip file contains an overview of the trip: how many posts are there, what is the name etc. However I’m more focused on the details in every ‘step’. If you explore the all_steps, it contains all of the individual posts. Every post is another list. I’m turning these list into a data.frame.

I’m approaching this in the following way:

  • extract one example,
  • create helper functions that work on that one example,
  • apply the helper functions with the purrr package on the entire list of all_steps.

I think I got this approach from Jenny Bryan (see bottom for references).

Extract one example

all_steps <- trip$all_steps# try one,example <- all_steps[[1]]

So what can we find in this one example list?

glimpse(example)

For all the steps we have the following information (I have redacted this a bit, the google crawler is mighty and everything on the internet lives forever and I don’t want to share everything with my readers):

List of 23$ weather_temperature : num 11$ likes : int 0$ supertype : chr "normal"$ id : int 24041483$ fb_publish_status : NULL$ creation_time : num 1.58e+09$ main_media_item_path: NULL$ location :List of 9..$ detail : chr "Netherlands"..$ name : chr "REDACTED"..$ uuid : chr "REDACTED"..$ venue : NULL..$ lat : num 99999..$ lon : num 99999..$ full_detail : chr "Netherlands"..$ id : int 999999999..$ country_code: chr "NL"$ open_graph_id : NULL$ type : NULL$ uuid : chr "REDACTED"$ comment_count : int 0$ location_id : int 99999999$ slug : chr "REDACTED"$ views : int 0$ description : chr "Roel: We zijn er klaar voor hoor, alles ligt bij de koffers (hopen dat het past \U0001f605) onze ochtendkoffie "| __truncated__$ start_time : num 1.58e+09$ trip_id : int 3129570$ end_time : NULL$ weather_condition : chr "rain"$ name : chr "Laatste voorbereidingen"$ is_deleted : logi FALSE$ timezone_id : chr "Europe/Amsterdam"

Of interest here:

  • I wanted the texts and they live in ‘description’.
  • The title of the post is in ‘name’
  • The polarsteps application is deeply integrated with facebook (scary!)
  • time is in unix timestamps
  • Temperature is in degrees Celsius (the international norm)
  • The description is in utf-8 but my printing here is not and does not show this emoji correctly.

Create extractor functions

Most things I care about in this file are one level deep. I can create a general function that extracts them, based on the name of the field: start_time, weather_temperature, description, etc.

But I quickly realised I wanted to do something special with the location and time so they get their own functions.

#' General extractor function#'#' Give it the name of a field and it extracts that.#' Also deals with non existing or empty fields (can happen in lists)#' by replacing that with empty character field.#' Alternative is to use purrr::safelyextract_field <- function(item, field){result = item[[field]]if(is.null(result)){result = ""}result}#' Extractor for location#'#' Extracts location list and pastes together the name of the location, country code and#' latitude and longitude.extract_location_string <- function(item){location = item[["location"]]paste0("In ",location[["name"]], " ",location[["full_detail"]], " (",location[["country_code"]], ") ","[",location[["lat"]],",",location[["lon"]],"]")}#' Time extractor#'#' Turns unix timestamp into real time, and uses the correct timezone.#' this might be a bit of an overkill because I'm immediately turning this#' into text again.extract_time = function(item){timezone = item[["timezone_id"]]start_time = item[["start_time"]] %>% anytime::anytime(asUTC = FALSE,tz = timezone)paste(start_time, collapse = ", ")}

Apply the extractors on the example

extract_field(example, "name")extract_location_string(example)extract_time(example)
"Laatste voorbereidingen""In Leiden Netherlands (NL) [52.1720626,4.5076576]""2020-02-01 09:23:07"

Apply all extractors on all steps in the trip

First create an empty data.frame and add new columns for the fields i’m interested in.

base <- tibble(stepnr = seq.int(from = 1, to = length(all_steps), by=1))tripdetails <-base %>%mutate(title = purrr::map_chr(all_steps, ~extract_field(.x, "name")),description = purrr::map_chr(all_steps, ~extract_field(.x, "description")),slug = purrr::map_chr(all_steps, ~extract_field(.x, "slug")),temperature = purrr::map_dbl(all_steps, ~extract_field(.x, "weather_temperature")),temperature = round(temperature, 2),weather_condition = purrr::map_chr(all_steps, ~extract_field(.x, "weather_condition")),location = purrr::map_chr(all_steps, extract_location_string),time = purrr::map_chr(all_steps, extract_time))

End result

Conclusion

I wanted to print the descriptions etc into a word file or something for printing but that can be found in the next post.

References

State of the machine

At the moment of creation (when I knitted this document ) this was the state of my machine: click here to expand

sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────## setting value## version R version 3.6.3 (2020-02-29)## os macOS Mojave 10.14.6## system x86_64, darwin15.6.0## ui X11## language (EN)## collate en_US.UTF-8## ctype en_US.UTF-8## tz Europe/Amsterdam## date 2020-04-22#### ─ Packages ───────────────────────────────────────────────────────────────────## package * version date lib source## assertthat 0.2.1 2019-03-21 [1] CRAN (R 3.6.0)## backports 1.1.5 2019-10-02 [1] CRAN (R 3.6.0)## blogdown 0.18 2020-03-04 [1] CRAN (R 3.6.1)## bookdown 0.18 2020-03-05 [1] CRAN (R 3.6.1)## broom 0.5.5 2020-02-29 [1] CRAN (R 3.6.0)## cellranger 1.1.0 2016-07-27 [1] CRAN (R 3.6.0)## cli 2.0.2 2020-02-28 [1] CRAN (R 3.6.0)## colorspace 1.4-1 2019-03-18 [1] CRAN (R 3.6.0)## crayon 1.3.4 2017-09-16 [1] CRAN (R 3.6.0)## DBI 1.1.0 2019-12-15 [1] CRAN (R 3.6.0)## dbplyr 1.4.2 2019-06-17 [1] CRAN (R 3.6.0)## digest 0.6.25 2020-02-23 [1] CRAN (R 3.6.0)## dplyr * 0.8.5 2020-03-07 [1] CRAN (R 3.6.0)## ellipsis 0.3.0 2019-09-20 [1] CRAN (R 3.6.0)## evaluate 0.14 2019-05-28 [1] CRAN (R 3.6.0)## fansi 0.4.1 2020-01-08 [1] CRAN (R 3.6.0)## forcats * 0.5.0 2020-03-01 [1] CRAN (R 3.6.0)## fs 1.3.2 2020-03-05 [1] CRAN (R 3.6.0)## generics 0.0.2 2018-11-29 [1] CRAN (R 3.6.0)## ggplot2 * 3.3.0 2020-03-05 [1] CRAN (R 3.6.0)## glue 1.3.2 2020-03-12 [1] CRAN (R 3.6.0)## gtable 0.3.0 2019-03-25 [1] CRAN (R 3.6.0)## haven 2.2.0 2019-11-08 [1] CRAN (R 3.6.0)## hms 0.5.3 2020-01-08 [1] CRAN (R 3.6.0)## htmltools 0.4.0 2019-10-04 [1] CRAN (R 3.6.0)## httr 1.4.1 2019-08-05 [1] CRAN (R 3.6.0)## jsonlite * 1.6.1 2020-02-02 [1] CRAN (R 3.6.0)## knitr 1.28 2020-02-06 [1] CRAN (R 3.6.0)## lattice 0.20-38 2018-11-04 [1] CRAN (R 3.6.3)## lifecycle 0.2.0 2020-03-06 [1] CRAN (R 3.6.0)## lubridate 1.7.4 2018-04-11 [1] CRAN (R 3.6.0)## magrittr 1.5 2014-11-22 [1] CRAN (R 3.6.0)## modelr 0.1.6 2020-02-22 [1] CRAN (R 3.6.0)## munsell 0.5.0 2018-06-12 [1] CRAN (R 3.6.0)## nlme 3.1-144 2020-02-06 [1] CRAN (R 3.6.3)## pillar 1.4.3 2019-12-20 [1] CRAN (R 3.6.0)## pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 3.6.0)## purrr * 0.3.3 2019-10-18 [1] CRAN (R 3.6.0)## R6 2.4.1 2019-11-12 [1] CRAN (R 3.6.0)## Rcpp 1.0.4 2020-03-17 [1] CRAN (R 3.6.1)## readr * 1.3.1 2018-12-21 [1] CRAN (R 3.6.0)## readxl 1.3.1 2019-03-13 [1] CRAN (R 3.6.0)## reprex 0.3.0 2019-05-16 [1] CRAN (R 3.6.0)## rlang 0.4.5 2020-03-01 [1] CRAN (R 3.6.0)## rmarkdown 2.1 2020-01-20 [1] CRAN (R 3.6.0)## rstudioapi 0.11 2020-02-07 [1] CRAN (R 3.6.0)## rvest 0.3.5 2019-11-08 [1] CRAN (R 3.6.0)## scales 1.1.0 2019-11-18 [1] CRAN (R 3.6.0)## sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 3.6.0)## stringi 1.4.6 2020-02-17 [1] CRAN (R 3.6.0)## stringr * 1.4.0 2019-02-10 [1] CRAN (R 3.6.0)## tibble * 3.0.0 2020-03-30 [1] CRAN (R 3.6.2)## tidyr * 1.0.2 2020-01-24 [1] CRAN (R 3.6.0)## tidyselect 1.0.0 2020-01-27 [1] CRAN (R 3.6.0)## tidyverse * 1.3.0 2019-11-21 [1] CRAN (R 3.6.0)## vctrs 0.2.4 2020-03-10 [1] CRAN (R 3.6.0)## withr 2.1.2 2018-03-15 [1] CRAN (R 3.6.0)## xfun 0.12 2020-01-13 [1] CRAN (R 3.6.0)## xml2 1.2.2 2019-08-09 [1] CRAN (R 3.6.0)## yaml 2.2.1 2020-02-01 [1] CRAN (R 3.6.0)#### [1] /Library/Frameworks/R.framework/Versions/3.6/Resources/library

  1. It tracks you better than a Stasi agent in East Germany. Which was a bit freaky. It tracks even when the app is not online.↩

  2. I mean, I did create it so it should be mine! But Polarsteps agrees with me.↩

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: Category R on Roel's R-tefacts.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Visualizing Multilevel Networks with graphlayouts

$
0
0

[This article was first published on schochastics, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

This post introduces layout_as_multilevel(), a new function in the {{graphlayouts}} package. As the name suggests, this function can be use to visualize multilevel networks.

A multilevel network consists of two (or more) levels with different node sets and intra-level ties. For instance, one level could be scientists and their collaborative ties and the second level are labs and ties among them, and inter-level edges are the affiliations of scientists and labs.

The {{graphlayouts}} package contains an artificial multilevel network (igraph format) which will be used throughout this post.

data("multilvl_ex", package = "graphlayouts")

The package assumes that a multilevel network has a vertex attribute called lvl which holds the level information (1 or 2).

library(igraph)library(graphlayouts) library(ggraph)library(threejs)

The underlying algorithm of layout_as_multilevel() has three different versions, which can be used to emphasize different structural features of a multilevel network.

Independent of which option is chosen, the algorithm internally produces a 3D layout, where each level is positioned on a different y-plane. The 3D layout is then mapped to 2D with an isometric projection. The parameters alpha and beta control the perspective of the projection. The default values seem to work for many instances, but may not always be optimal. As a rough guideline: beta rotates the plot around the y axis (in 3D) and alpha moves the POV up or down.

Complete layout

A layout for the complete network can be computed via layout_as_multilevel() setting type = "all". Internally, the algorithm produces a constrained 3D stress layout (each level on a different y plane) which is then projected to 2D. This layout ignores potential differences in each level and optimizes only the overall layout.

xy <- layout_as_multilevel(multilvl_ex,type = "all", alpha = 25, beta = 45)

To visualize the network with {{ggraph}}, you may want to draw the edges for each level (and inter level edges) with a different edge geom. This gives you more flexibility to control aesthetics and can easily be achieved with a filter.

ggraph(multilvl_ex, "manual", x = xy[, 1], y = xy[, 2]) +  geom_edge_link0(    aes(filter = (node1.lvl == 1 & node2.lvl == 1)),    edge_colour = "firebrick3",    alpha = 0.5,    edge_width = 0.3  ) +  geom_edge_link0(    aes(filter = (node1.lvl != node2.lvl)),    alpha = 0.3,    edge_width = 0.1,    edge_colour = "black"  ) +  geom_edge_link0(    aes(filter = (node1.lvl == 2 &                    node2.lvl == 2)),    edge_colour = "goldenrod3",    edge_width = 0.3,    alpha = 0.5  ) +  geom_node_point(aes(shape = as.factor(lvl)), fill = "grey25", size = 3) +  scale_shape_manual(values = c(21, 22)) +  theme_graph() +  coord_cartesian(clip = "off", expand = TRUE) +  theme(legend.position = "none")

Separate layouts for both levels

In many instances, there may be different structural properties inherent to the levels of the network. In that case, two layout functions can be passed to layout_as_multilevel() to deal with these differences. In our artificial network, level 1 has a hidden group structure and level 2 has a core-periphery structure.

To use this layout option, set type = "separate" and specify two layout functions with FUN1 and FUN2. You can change internal parameters of these layout functions with named lists in the params1 and params2 argument. Note that this version optimizes inter-level edges only minimally. The emphasis is on the intra-level structures.

xy <- layout_as_multilevel(multilvl_ex,type = "separate",                           FUN1 = layout_as_backbone,                           FUN2 = layout_with_stress,                           alpha = 25, beta = 45)

Again, try to include an edge geom for each level.

cols2 <- c("#3A5FCD", "#CD00CD", "#EE30A7", "#EE6363",            "#CD2626", "#458B00", "#EEB422", "#EE7600")ggraph(multilvl_ex, "manual", x = xy[, 1], y = xy[, 2]) +  geom_edge_link0(aes(    filter = (node1.lvl == 1 & node2.lvl == 1),    edge_colour = col  ),  alpha = 0.5, edge_width = 0.3) +  geom_edge_link0(    aes(filter = (node1.lvl != node2.lvl)),    alpha = 0.3,    edge_width = 0.1,    edge_colour = "black"  ) +  geom_edge_link0(aes(    filter = (node1.lvl == 2 & node2.lvl == 2),    edge_colour = col  ),  edge_width = 0.3, alpha = 0.5) +  geom_node_point(aes(    fill = as.factor(grp),    shape = as.factor(lvl),    size = nsize  )) +  scale_shape_manual(values = c(21, 22)) +  scale_size_continuous(range = c(1.5, 4.5)) +  scale_fill_manual(values = cols2) +  scale_edge_color_manual(values = cols2, na.value = "grey12") +  scale_edge_alpha_manual(values = c(0.1, 0.7)) +  theme_graph() +  coord_cartesian(clip = "off", expand = TRUE) +  theme(legend.position = "none")

Fix only one level

This layout can be used to emphasize one intra-level structure. The layout of the second level is calculated in a way that optimizes inter-level edge placement. Set type = "fix1" and specify FUN1 and possibly params1 to fix level 1 or set type = "fix2" and specify FUN2 and possibly params2 to fix level 2.

xy <- layout_as_multilevel(multilvl_ex,type = "fix2",                           FUN2 = layout_with_stress,                           alpha = 25, beta = 45)ggraph(multilvl_ex, "manual", x = xy[, 1], y = xy[, 2]) +  geom_edge_link0(aes(    filter = (node1.lvl == 1 & node2.lvl == 1),    edge_colour = col  ),  alpha = 0.5, edge_width = 0.3) +  geom_edge_link0(    aes(filter = (node1.lvl != node2.lvl)),    alpha = 0.3,    edge_width = 0.1,    edge_colour = "black"  ) +  geom_edge_link0(aes(    filter = (node1.lvl == 2 & node2.lvl == 2),    edge_colour = col  ),  edge_width = 0.3, alpha = 0.5) +  geom_node_point(aes(    fill = as.factor(grp),    shape = as.factor(lvl),    size = nsize  )) +  scale_shape_manual(values = c(21, 22)) +  scale_size_continuous(range = c(1.5, 4.5)) +  scale_fill_manual(values = cols2) +  scale_edge_color_manual(values = cols2, na.value = "grey12") +  scale_edge_alpha_manual(values = c(0.1, 0.7)) +  theme_graph() +  coord_cartesian(clip = "off", expand = TRUE) +  theme(legend.position = "none")

3D with threejs

Instead of the default 2D projection, layout_as_multilevel() can also return the 3D layout by setting project2d = FALSE. The 3D layout can then be used with e.g. {{threejs}} to produce an interactive 3D visualization.

xyz <- layout_as_multilevel(multilvl_ex,type = "separate",                           FUN1 = layout_as_backbone,                           FUN2 = layout_with_stress,                           project2D = FALSE)multilvl_ex$layout <- xyzV(multilvl_ex)$color <- c("#00BFFF", "#FF69B4")[V(multilvl_ex)$lvl]V(multilvl_ex)$vertex.label <- V(multilvl_ex)$name    graphjs(multilvl_ex, bg="black", vertex.shape="sphere")

{"x":{"NROW":170,"height":null,"width":null,"axis":false,"numticks":[6,6,6],"xticklabs":null,"yticklabs":null,"zticklabs":null,"color":[["#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#FF69B4","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#00BFFF","#FF69B4"]],"size":2,"stroke":"black","flipy":true,"grid":false,"renderer":"auto","signif":8,"bg":"black","cexsymbols":1,"xlim":[-1,1],"ylim":[-1,1],"zlim":[-1,1],"axisscale":[1,1,1],"pch":["o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o"],"elementId":"rxWreTN2Nu","from":[[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,16,16,16,16,16,17,17,17,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,30,30,30,30,30,30,30,31,31,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,35,35,35,36,36,36,37,37,37,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,39,39,39,39,39,39,39,39,39,40,40,40,40,40,40,40,40,40,40,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,45,45,45,45,45,45,45,46,46,46,46,46,46,46,47,47,47,47,48,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,51,51,52,52,52,53,53,53,53,54,54,54,55,55,55,55,56,56,56,56,56,56,56,56,56,56,56,56,56,57,57,57,57,57,57,57,57,57,57,57,58,58,58,58,58,58,58,59,59,59,59,59,59,59,59,59,60,60,60,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,62,62,62,62,62,63,63,63,63,63,63,63,63,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,68,68,68,68,69,69,69,69,70,70,70,70,70,71,71,71,71,72,72,72,73,74,74,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,82,82,82,82,82,82,83,83,83,83,83,83,83,84,84,84,84,84,84,84,85,85,85,85,85,85,86,86,86,86,86,86,86,87,87,87,87,87,87,87,88,88,88,88,88,88,89,89,89,89,90,90,90,91,91,91,91,92,93,94,94,94,94,94,94,94,94,95,95,95,95,95,95,95,95,95,95,95,95,96,96,96,96,96,96,96,96,96,96,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,98,98,98,99,99,99,99,99,99,100,100,100,100,100,100,100,100,100,100,100,100,101,101,101,101,101,101,101,102,102,102,102,102,103,103,103,103,103,103,103,104,104,104,104,105,105,105,106,106,106,106,106,106,107,107,108,108,108,108,108,109,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,138,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,135,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,130,54,55,121,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,130,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,161,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,151]],"to":[[3,5,6,7,10,11,162,37,48,106,2,4,5,6,7,9,11,12,13,14,15,18,162,109,4,6,9,10,12,15,16,86,4,5,6,7,9,11,14,16,18,46,80,6,7,9,15,17,22,47,57,79,91,8,10,11,12,15,16,17,18,31,65,71,96,8,10,11,12,13,14,15,17,18,8,9,10,11,13,14,15,17,58,9,10,13,14,16,18,162,68,69,16,18,40,12,13,15,16,17,18,110,12,13,14,15,17,18,26,44,53,75,77,79,95,110,168,13,14,15,16,17,162,51,167,15,16,17,18,86,15,17,18,162,29,33,39,44,58,69,70,76,18,162,36,163,43,105,17,18,162,21,72,18,23,98,162,110,22,23,24,25,26,29,30,31,33,35,36,42,75,21,23,24,25,27,31,32,33,34,35,36,48,104,22,23,25,26,27,28,33,34,35,36,37,85,110,23,24,31,33,37,163,44,164,87,24,25,26,27,29,30,31,33,34,35,37,163,110,25,26,29,31,33,34,35,36,37,90,95,26,27,28,33,36,37,27,28,29,31,32,34,35,36,37,67,28,29,30,33,35,163,42,29,30,31,32,34,36,163,62,64,102,32,35,36,37,163,95,33,34,35,37,163,49,64,35,36,37,163,83,100,106,33,34,35,36,111,34,36,163,55,59,61,70,35,36,163,51,72,36,37,163,40,64,78,86,108,163,164,80,163,89,167,40,41,42,43,44,46,48,49,50,51,53,164,165,105,41,44,45,48,49,50,52,54,55,57,43,44,49,51,53,164,55,70,71,101,45,46,48,49,51,52,164,54,55,82,90,43,44,46,47,48,49,50,51,52,53,55,63,71,81,98,101,168,44,45,46,49,50,51,164,54,55,165,56,45,46,47,48,49,50,52,164,54,55,76,109,47,49,50,51,54,61,168,49,50,51,53,54,55,73,51,164,54,165,49,51,52,54,55,165,80,51,53,54,55,165,62,52,53,164,54,165,86,52,53,54,55,165,66,77,109,53,54,165,54,55,165,106,55,165,89,165,84,85,168,58,59,60,61,64,65,69,70,73,74,84,88,89,58,61,64,65,68,69,71,73,74,76,97,61,65,66,69,70,72,74,62,64,67,68,69,70,74,85,106,61,63,64,66,68,73,74,166,80,85,62,63,68,69,70,71,74,64,67,69,70,71,72,73,74,166,82,100,106,64,67,68,71,73,74,166,111,67,69,70,71,74,67,70,71,72,73,166,67,69,72,73,74,166,168,71,166,72,73,74,100,70,71,73,74,73,74,166,92,109,73,166,97,105,73,74,166,166,166,80,76,82,85,86,91,92,93,167,79,81,82,83,84,90,91,93,167,78,81,82,83,84,85,86,87,88,89,91,92,93,167,96,98,80,81,82,86,87,90,91,93,81,82,83,84,85,88,89,91,92,93,167,82,83,84,85,87,90,91,93,167,83,84,87,90,91,92,93,86,87,88,90,92,104,85,86,88,89,91,92,93,85,87,90,91,92,93,167,87,88,92,93,167,107,87,88,89,91,92,93,105,89,90,91,92,93,109,110,89,90,91,92,93,167,90,91,93,167,92,167,104,92,93,167,103,167,167,95,99,100,101,103,106,107,109,96,97,98,99,100,103,104,106,107,108,109,112,97,98,99,101,103,105,109,111,112,168,99,100,101,102,105,106,107,108,111,112,168,100,101,106,109,110,111,112,168,104,105,106,107,108,111,101,102,103,104,105,107,108,109,110,111,112,168,103,105,106,109,110,111,112,105,106,108,109,111,105,106,107,108,110,111,168,107,108,110,111,109,110,168,107,108,110,111,112,168,111,168,109,110,111,112,168,111,168,168,168,168,125,125,125,125,125,125,125,125,125,125,125,125,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,157,150,153,154,114,154,147,115,130,155,122,160,143,169,126,136,113,149,119,162,129,147,169,127,138,116,124,118,114,131,158,145,114,142,147,159,135,118,122,163,161,155,121,146,159,158,120,116,154,113,169,157,135,144,138,114,164,156,133,165,147,136,132,138,131,148,134,153,153,126,125,139,149,143,156,169,147,161,130,166,124,169,151,132,140,121,136,126,132,122,121,149,145,132,124,158,151,140,148,167,139,143,145,131,113,130,154,113,115,124,154,144,119,130,140,134,135,161,122,168]],"lwd":1,"linealpha":0.3,"center":true,"main":[""],"options":true,"alpha":[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],"vertices":[[-0.17650774,0.64991864,1,0.0055546327,0.46878354,1,-0.046011351,-0.075414814,1,-0.16324554,0.49015084,1,-0.013639305,-0.0044390457,1,-0.14735274,0.1785781,1,-0.025306671,0.11704869,1,0.064128366,-0.069204557,1,-0.13883935,0.40004191,1,0.063120968,-0.22190121,1,-0.042797183,0.27962752,1,-0.10837712,0.10416944,1,-0.051193063,-0.2572088,1,-0.093083169,0.20973727,1,0.051195381,0.063982987,1,0.020357899,0.27758042,1,-0.072456116,-0.43197034,1,-0.09891528,0.39948492,1,-0.13853283,0.29574192,1,0.73569957,0.66061236,1,0.7579816,0.50504492,1,0.80002992,0.4219434,1,0.67881688,0.91415088,1,0.72733663,0.56666783,1,0.82199333,0.53632259,1,0.86935558,0.41088859,1,0.86395982,0.62866985,1,0.66104257,0.7203668,1,0.74661589,0.85802786,1,0.98496138,0.58465412,1,1,0.45880028,1,0.80105325,0.6382359,1,0.91583814,1,1,0.64288063,0.45162033,1,0.87435876,0.86103151,1,0.88497745,0.5404961,1,0.80322917,0.72575348,1,0.70509842,0.73932451,1,-0.70539866,0.17270893,1,-0.751543,0.43396463,1,-0.66464771,0.40017742,1,-0.88981434,0.40709467,1,-0.61252195,0.19301625,1,-0.82881581,0.16580358,1,-0.71296676,0.27077295,1,-0.94517092,0.36423036,1,-0.74584288,0.21824426,1,-1,0.14808929,1,-0.86036658,0.51768115,1,-0.82258122,0.26824977,1,-0.81818855,0.10057269,1,-0.87815563,0.24824605,1,-0.93261851,0.64102001,1,-0.93540353,0.15439024,1,-0.84290189,0.35279406,1,-0.78828151,0.38073559,1,0.46696309,0.33143542,1,0.49146539,0.072749648,1,0.19830816,0.046074167,1,0.39821415,0.16962404,1,0.38095879,-0.19353872,1,0.30552958,-0.045056327,1,0.5108942,0.2570584,1,0.33247434,-0.27897649,1,0.28627012,0.1915859,1,0.35586765,0.55491003,1,0.43636822,0.63513295,1,0.70899023,0.050084386,1,0.412204,-0.061684537,1,0.42214885,0.24095395,1,0.55048057,0.33663621,1,0.59478611,0.11735664,1,0.3058493,0.53123971,1,0.36917868,0.39412012,1,0.319243,0.10612754,1,0.44930428,-1,1,0.44828111,-0.83344595,1,0.63257697,-0.5612258,1,0.50633341,-0.80531092,1,0.50132433,-0.64264616,1,0.43368831,-0.35929693,1,0.67010642,-0.70914831,1,0.67154633,-0.91897893,1,0.54696239,-0.71623242,1,0.51108004,-0.48752887,1,0.36621119,-0.49182183,1,0.61656758,-0.77922315,1,0.5559142,-0.6260471,1,0.39826842,-0.65520316,1,0.32801537,-0.80232881,1,0.86005913,-0.71954253,1,0.64823268,-0.64852188,1,0.75449279,-0.64069497,1,0.74153462,-0.54346796,1,-0.26670732,-0.21308569,1,-0.4669897,-0.26378373,1,-0.44868165,0.12248678,1,-0.45365134,-0.16432244,1,-0.49991093,0.11645975,1,-0.45149634,-0.32974189,1,-0.46124631,-0.0092688257,1,-0.35277271,0.10913247,1,-0.53056084,-0.23315445,1,-0.30067155,-0.050301328,1,-0.52520831,-0.45815308,1,-0.32440446,0.15276236,1,-0.38094608,-0.10613452,1,-0.33633938,-0.22238791,1,-0.46018938,-0.097333819,1,-0.40557857,0.035292077,1,-0.24316765,0.056796851,1,-0.39977651,-0.16231345,1,-0.52568592,-0.10063076,1,0.90298707,-0.60584191,-1,1,-0.4846,-1,-0.046229795,0.27193104,-1,0.75559815,0.37181112,-1,0.79553724,-0.6935676,-1,0.21648843,0.45247357,-1,0.37067649,0.42068134,-1,0.13651895,0.3462534,-1,0.53833123,0.34786253,-1,0.62625385,0.42540723,-1,0.019428991,0.35771684,-1,0.45990133,0.47652461,-1,0.86728413,0.17025117,-1,0.53520258,-0.83889794,-1,0.27090901,0.31223909,-1,0.66280126,-0.80182537,-1,0.92787783,-0.036800863,-1,0.63069675,0.034342922,-1,0.80255835,-0.00081882612,-1,0.32707258,-0.96601203,-1,0.82840739,-0.18362449,-1,0.14079378,-0.98949577,-1,0.64484664,-0.18033332,-1,-0.037398389,-1,-1,-0.17791357,-0.92292659,-1,0.40122809,-0.16778622,-1,0.47824197,-0.33270412,-1,0.60292277,-0.36078206,-1,-0.69867248,-0.59566148,-1,-0.40833634,-0.97344801,-1,-0.64027563,-0.74836467,-1,-0.5376322,-0.86325688,-1,0.24341482,-0.337295,-1,0.28539541,-0.47186449,-1,-0.8972714,-0.54198673,-1,-0.89939874,-0.35504503,-1,0.11663633,-0.43382727,-1,-1,-0.20431936,-1,-0.96161032,-0.036175541,-1,-0.88794363,0.1159933,-1,-0.019921936,-0.36406754,-1,-0.74306612,0.44284926,-1,-0.89778673,0.29851958,-1,-0.019036388,-0.21015799,-1,-0.12198037,-0.27356439,-1,-0.47052199,0.80489436,-1,-0.12300665,-0.15872103,-1,-0.7423109,0.72639618,-1,-0.11868259,1,-1,0.089315363,0.15226104,1,0.99270476,0.65117333,1,-0.79928717,-0.0024645275,1,-0.97673523,0.27954431,1,0.46202031,0.4488672,1,0.57970663,-0.52279899,1,-0.37408869,-0.007251386,1,-0.11164652,-0.061357811,-1]],"xticklab":["-1.00","-0.60","-0.20","0.20","0.60","1.00"],"yticklab":["-1.00","-0.60","-0.20","0.20","0.60","1.00"],"zticklab":["1.00","0.60","0.20","-0.20","-0.60","-1.00"],"xtick":[0,0.2,0.4,0.6,0.8,1],"ytick":[0,0.2,0.4,0.6,0.8,1],"ztick":[0,0.2,0.4,0.6,0.8,1],"axislength":[1,1,1]},"evals":[],"jsHooks":[]}

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: schochastics.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

A package to download free Springer books during Covid-19 quarantine

$
0
0

[This article was first published on R on Stats and R, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Introduction

You probably already have seen that Springer released about 500 books for free following the COVID-19 pandemic. According to Springer, these textbooks will be available free of charge until at least the end of July.

Following this announcement, I already downloaded a couple of statistics and R programming textbooks from their website and I will probably download a few more in the coming weeks.

In this article, I present a package that saved me a lot of time and which may be of interest to many of us: the {springerQuarantineBooksR} package, developed by Renan Xavier Cortes.1

This package allows you to easily download all (or a selection of) Springer books made available free of charge during the COVID-19 quarantine.

With this large collection of high quality resources and my collection of top R resources about the Coronavirus, we do not have any excuse to not read and learn during this quarantine.

Without further ado, here is how the package works in practice.

Installation

After having installed the {devtools} package, you can install the {springerQuarantineBooksR} package from GitHub with:

# install.packages("devtools")devtools::install_github("renanxcortes/springerQuarantineBooksR")library(springerQuarantineBooksR)

Download all books at once

First, set the path where you would like to save all books with the setwd() function then download all of them at once with the download_springer_book_files() function. Note it takes several minutes since all books combined amount for almost 8GB.

setwd("path_of_your_choice") # where you want to save the booksdownload_springer_book_files(parallel = TRUE)

You will find all downloaded books (in PDF format) in a folder named “springer_quarantine_books”, organized by category.2

Create a table of Springer books

You can load into an R session a table containing all the titles made available by Springer, with the download_springer_table() function:

springer_table <- download_springer_table()

This table can then be improved with the {DT} package to:

  • allow searching a book by its title or author
  • allow downloading the list of available books, and
  • make the Springer links clickable for instance
# install.packages("DT")library(DT)springer_table$open_url <- paste0(  'SpringerLink' # closing HTML tag)datatable(springer_table,  rownames = FALSE, # remove row numbers  filter = "top", # add filter on top of columns  extensions = "Buttons", # add download buttons  options = list(    autoWidth = TRUE,    dom = "Blfrtip", # location of the download buttons    buttons = c("copy", "csv", "excel", "pdf", "print"), # download buttons    pageLength = 5, # show first 5 entries, default is 10    order = list(0, "asc") # order the title column by ascending order  ),  escape = FALSE # make URLs clickable)

{"x":{"filter":"top","filterHTML":"</p><tr>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"number\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n </p><div style=\"display: none; position: absolute; width: 200px;\">\n </p><div data-min=\"1993\" data-max=\"2020\"><\/div>\n <span style=\"float: left;\"><\/span>\n <span style=\"float: right;\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"disabled\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"disabled\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"disabled\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n </p><td data-type=\"character\" style=\"vertical-align: top;\">\n </p><div class=\"form-group has-feedback\" style=\"margin-bottom: auto;\">\n <input type=\"search\" placeholder=\"All\" class=\"form-control\" style=\"width: 100%;\"/>\n <span class=\"glyphicon glyphicon-remove-circle form-control-feedback\"><\/span>\n <\/div>\n <\/td>\n<\/tr>","extensions":["Buttons"],"data":[["Fundamentals of Power Electronics","Handbook of the Life Course","All of Statistics","Social Anxiety and Social Phobia in Youth","Discrete Mathematics","Developmental Neurobiology","Intuitive Probability and Random Processes using MATLAB®","Handbook of Disaster Research","Handbook of the Sociology of Gender","Handbook of Sociological Theory","Clinical Neuroanatomy","Acquired Brain Injury","Numerical Optimization","Handbook of Biological Confocal Microscopy","Ceramic Materials","Principles of Fluorescence Spectroscopy","Fundamentals of Biomechanics","Primer on the Rheumatic Diseases","International Handbook of Historical Archaeology","Database Marketing","Composite Materials","Time Series Analysis","Transmission Electron Microscopy","Handbook of Quantitative Criminology","Plant Physiological Ecology","Introductory Statistics with R","The Elements of Statistical Learning","Psychology, Religion, and Spirituality","Introductory Time Series with R","Child Neuropsychology","A Beginner's Guide to R","Geomorphology of Desert Environments","The Joy of Science","Fatigue of Structures and Materials","Essential Astrophysics","Introduction to Evolutionary Computing","Data Analysis","International Perspectives on Psychotherapy","Electrical Machines","Mechanics and Thermodynamics","Applied Behavior Analysis","Reading, Writing, and Proving","Linear and Nonlinear Programming","Introduction to Partial Differential Equations","Energy Storage","Metabolism of Human Diseases","Sensory Evaluation of Food","Fundamentals of Robotic Mechanical Systems","Integrative Human Biochemistry","Philosophy of Science for Scientists","Particles and Nuclei","Data Structures and Algorithms with Python","LGBT-Parent Families","Integrated Neuroscience","Introduction to Partial Differential Equations","Microeconomics","System Dynamics","Cosmology for the Curious","Methods of Mathematical Modelling","Introduction to Logic Circuits & Logic Design with Verilog","Structural Analysis","Engineering Flow and Heat Exchange","Enterprise Risk Management Models","Reactive Power Control in AC Power Systems","Principles of Microeconomics","Additive Manufacturing Technologies","Principles of Physics","Fundamentals of Biomechanics","Irrigation and Drainage Engineering","LaTeX in 24 Hours","Psychology of Perception","Extragalactic Astronomy and Cosmology","Automata and Computability","The Algorithm Design Manual","Chemical Thermodynamics","Computational Physics","Introduction to Statistics and Data Analysis","Grammar for Teachers","Time Series Econometrics","Electrochemistry","Classical Fourier Analysis","Human Chromosomes","Phylogenomics","Quantum Theory for Mathematicians","Evidence-Based Critical Care","Clinical Assessment of Child and Adolescent Personality and Behavior","Design Research in Information Systems","Intermediate Physics for Medicine and Biology","Principles of Data Mining","Fundamental Astronomy","Fundamentals of Business Process Management","Brownian Motion, Martingales, and Stochastic Calculus","UML @ Classroom","Design and Analysis of Experiments","Foundations for Designing User-Centered Systems","Handbook of Consumer Finance Research","Principles of Terrestrial Ecosystem Ecology","Applied Multivariate Statistical Analysis","Strategic International Management","Computer Vision","Engineering Electromagnetics","Data Mining","International Trade Theory and Policy","Alternative Energy Sources","Introduction to Electronic Commerce and Social Commerce","Computational Geometry","Elementary Mechanics Using Python","Energy Economics","Biomedical Informatics","Robotics, Vision and Control","Acid-Base Diagrams","Brewing Science: A Multidisciplinary Approach","Learning Landscape Ecology","Probability","Modeling Life","Introduction to Plasma Physics and Controlled Fusion","Engineering Mechanics 1","Principles of Polymer Chemistry","A Primer on Scientific Programming with Python","Climate Change Science: A Modern Synthesis","Solar PV and Wind Energy Conversion Systems","Statistical Analysis and Data Display","Business Process Management Cases","Elementary Analysis","Cryptography Made Simple","Fluid Dynamics","Social Media Management","Statistics in Criminal Justice","Supply Chain Management and Advanced Planning","Probability Theory","Statistics and Data Analysis for Financial Engineering","Readings in Formal Epistemology","Differential Equations and Their Applications","Nanotechnology: Principles and Practices","Epidemiological Research: Terms and Concepts","Multinational Management","Partial Differential Equations","Bayesian and Frequentist Regression Methods","Strategic International Management","Basic Concepts in Computational Physics","Eye Tracking Methodology","Writing for Publication","Mathematical Physics","Correctional Counseling and Treatment","Thermodynamics and Energy Conversion","The Action Research Planner","Stochastic Processes and Calculus","Statistical Analysis of Clinical Data on a Pocket Calculator","Clinical Data Analysis on a Pocket Calculator","The Data Science Design Manual","An Introduction to Machine Learning","Guide to Discrete Mathematics","Petroleum Geoscience","Structure Determination by X-ray Crystallography","Introduction to Time Series and Forecasting","Principles of Mobile Communication","Cardiovascular Biomechanics","Introduction to Smooth Manifolds","Taxation in European Union","Essentials of Cerebellum and Cerebellar Disorders","Language Across the Curriculum & CLIL in English as an Additional Language (EAL) Contexts","Multivariate Calculus and Geometry","Statistics and Analysis of Scientific Data","Modelling Computing Systems","Search Methodologies","Representation Theory","Linear Algebra Done Right","Stellar Structure and Evolution","Evolutionary Thinking in Medicine","Understanding Cryptography","Linear Algebra","Algebra","Understanding Analysis","Plate Tectonics","Linear Programming","The Nature of Scientific Knowledge","Leadership Today","Physics of Semiconductor Devices","Corporate Social Responsibility","Ordinary Differential Equations","Electronic Commerce","Ceramic Materials","Foundations of Analytical Chemistry","Life Cycle Assessment","A Clinical Guide to the Treatment of the Human Stress Response","Computational Physics","Handbook of LGBT Elders","Handbook of Cardiac Anatomy, Physiology, and Devices","Quantum Mechanics","Understanding Statistics Using R","Mass Spectrometry","Statistical Mechanics for Engineers","The Gastrointestinal System","Additive Manufacturing Technologies","Magnetic Interactions in Molecules and Solids","Electricity and Magnetism","Survival Analysis","Foundations of Quantum Mechanics","An Introduction to Statistical Learning","Introduction to Mathematica® for Physicists","Statistical Learning from a Regression Perspective","Applied Partial Differential Equations","Principles of Astrophysics","Air Pollution and Greenhouse Gases","Polymer Synthesis: Theory and Practice","Sustainable Supply Chains","Robotics","Econometrics","The Sea Floor","SPSS for Starters and 2nd Levelers","Regression Modeling Strategies","Legal Dynamics of EU External Relations","Food Analysis Laboratory Manual","Principles of Musical Acoustics","Fundamentals of Structural Engineering","Basics of Laser Physics","Applied Quantitative Finance","Handbook of Marriage and the Family","Solid-State Physics","Electrochemical Impedance Spectroscopy and its Applications","Economics as Applied Ethics","Electronics for Embedded Systems","Concise Guide to Software Engineering","Fundamentals of Multimedia","Logistics","Group Theory Applied to Chemistry","The Psychology of Social Status","A Modern Introduction to Probability and Statistics","Complex Analysis","Food Chemistry","Exam Survival Guide: Physical Chemistry","The Python Workbook","Practical Electrical Engineering","Strategic Retail Management","Food Analysis","Psychoeducational Assessment and Report Writing","Machine Learning in Medicine - a Complete Overview","Evidence-Based Interventions for Children with Challenging Behavior","Principles of Quantum Mechanics","Recommender Systems","Pharmaceutical Biotechnology","Python Programming Fundamentals","The Finite Element Method and Applications in Engineering Using ANSYS®","Group Theory","Object-Oriented Analysis, Design and Implementation","Introduction to Embedded Systems","Elementary Mechanics Using Matlab","An Introduction to Biomechanics","New Introduction to Multiple Time Series Analysis","Introduction to Data Science","Calculus With Applications","An Introduction to Soil Mechanics","Game Theory","Fundamentals of Clinical Trials","The Finite Volume Method in Computational Fluid Dynamics","The ASCRS Textbook of Colon and Rectal Surgery","Applied Predictive Modeling","Introduction to Logic Circuits & Logic Design with VHDL","Sustainability Science","Physical Chemistry from a Different Angle","The Physics of Semiconductors","Energy Harvesting and Energy Efficiency","Python For ArcGIS","Statics and Mechanics of Structures","Real Analysis","MATLAB for Psychologists","Physical Asset Management","Essentials of Food Science","Quantum Mechanics","Probability Theory","Concise Guide to Databases","Digital Image Processing","Chemical and Bioprocess Engineering","Transmission Electron Microscopy","Guide to Computer Network Security","Introduction to Law","Advanced Quantum Mechanics","Bayesian Essentials with R","Robotics, Vision and Control","Applied Chemistry","Advanced Organic Chemistry","Advanced Organic Chemistry","International Humanitarian Action","Breast Cancer","Travel Marketing, Tourism Economics and the Airline Product","Electronic Commerce 2018","Disability and Vocational Rehabilitation in Rural Settings","Teaching Medicine and Medical Ethics Using Popular Culture","Market Research","Scanning Electron Microscopy and X-Ray Microanalysis","ArcGIS for Environmental and Water Issues","Physics from Symmetry","Communication and Bioethics at the End of Life","Foundations of Programming Languages","Problems in Classical Electromagnetism","Polymer Chemistry","Probability and Statistics for Computer Science","Empathetic Space on Screen","Political Social Work","Introductory Quantum Mechanics","Guide to Competitive Programming","Introduction to Artificial Intelligence","Bioinformatics for Evolutionary Biologists","Concepts, Methods and Practical Applications in Applied Demography","Introduction to Deep Learning","Energy and the Wealth of Nations","A Beginner's Guide to Scala, Object Orientation and Functional Programming","Lessons on Synthetic Bioarchitectures","Managing Sustainable Business","Engineering Mechanics 2","Fundamentals of Business Process Management","Clinical Methods in Medical Family Therapy","Guide to Scientific Computing in C++","Motivation and Action","Perspectives on Elderly Crime and Victimization","Knowledge Management","An Introduction to Zooarchaeology","Abstract Algebra","Criminal Justice and Mental Health","Philosophy of Race","Of Cigarettes, High Heels, and Other Interesting Things","Applied Bioinformatics","Linear Algebra and Analytic Geometry for Physical Sciences","Building Energy Modeling with OpenStudio","Customer Relationship Management","The A-Z of the PhD Trajectory","Strategic Human Resource Management and Employment Relations","Applied Linear Algebra","Witnessing Torture","Proofs from THE BOOK","Introduction to General Relativity","Introduction to Particle and Astroparticle Physics","Fundamentals of Java Programming","Optimization of Process Flowsheets through Metaheuristic Techniques","Robotics","Business Ethics - A Philosophical and Behavioral Approach","A First Introduction to Quantum Physics","Argumentation Theory: A Pragma-Dialectical Perspective","Logical Foundations of Cyber-Physical Systems","Off-Grid Electrical Systems in Developing Countries","Entertainment Science","Physics of Oscillations and Waves","Introduction to Programming with Fortran","Fundamentals of Solid State Engineering","Introduction to Digital Systems Design","Neural Networks and Deep Learning","Data Science and Predictive Analytics","Systems Programming in Unix/Linux","Analytical Corporate Finance","Fraud and Corruption","Conferencing and Presentation English for Young Academics","A Concise Guide to Market Research","Global Supply Chain and Operations Management","Introduction to Parallel Computing","Mathematical Logic","Stability and Control of Linear Systems","Introduction to Formal Philosophy","Analysis for Computer Scientists","International Business Management","Research Methods for the Digital Humanities","Introductory Computer Forensics","Control Engineering","Control Engineering: MATLAB Exercises","ENZYMES: Catalysis, Kinetics and Mechanisms","Automatic Control with Experiments","Internet of Things From Hype to Reality","Quantitative Methods for the Social Sciences","A Pythagorean Introduction to Number Theory","Philosophical and Mathematical Logic","Structural Dynamics","Plant Physiology, Development and Metabolism","Quantum Mechanics for Pedestrians 1","Plant Anatomy","Quantum Mechanics for Pedestrians 2","Excel Data Analysis","Quick Start Guide to VHDL","Java in Two Semesters","Managing Media and Digital Organizations","Media and Digital Management","An Anthology of London in Literature, 1558-1914","Astronautics","Perceptual Organization","Research Methods for Social Justice and Equity in Education","Educational Technology","Quick Start Guide to Verilog","Spine Surgery","Introduction to Logic Circuits & Logic Design with VHDL","Social Justice Theory and Practice for Social Work","School Leadership and Educational Change in Singapore","Digital Business Models","Introduction to Logic Circuits & Logic Design with Verilog","Pharmaceutical Biotechnology","Mapping Global Theatre Histories","Social Marketing in Action","Analyzing Qualitative Data with MAXQDA","Handbook of Evolutionary Research in Archaeology","Evidence-Based Practice in Clinical Social Work","Foundations of Behavioral Health","Social Psychology in Action","Essentials of Business Analytics","A Course in Rasch Measurement Theory","Multimedia Big Data Computing for IoT Applications","Policing and Minority Communities","A Beginners Guide to Python 3 Programming","Advanced Guide to Python 3 Programming","Food Fraud Prevention","Plant Ecology"],["Robert W. Erickson, Dragan Maksimovic","Jeylan T. Mortimer, Michael J. Shanahan","Larry Wasserman","Christopher Kearney","László Lovász, József Pelikán, Katalin Vesztergombi","Mahendra S. Rao, Marcus Jacobson","Steven Kay","Havidan Rodriguez, Enrico L. Quarantelli, Russell Dynes","Janet Saltzman Chafetz","Jonathan H. Turner","John Mendoza, Anne Foundas","Jean Elbaum, Deborah Benson","Jorge Nocedal, Stephen Wright","James Pawley","C. Barry Carter, M. Grant Norton","Joseph R. Lakowicz","Duane Knudson","John H. Klippel, John H. Stone, L eslie J. Crofford, Patience H. White","Teresita Majewski, David Gaimster","Robert C. Blattberg, Byung-Do Kim, Scott A. Neslin","Krishan K. Chawla","Jonathan D. Cryer, Kung-Sik Chan","David B. Williams, C. Barry Carter","Alex R. Piquero, David Weisburd","Hans Lambers, F Stuart Chapin III, Thijs L. Pons","Peter Dalgaard","Trevor Hastie, Robert Tibshirani, Jerome Friedman","James M. Nelson","Paul S.P. Cowpertwait, Andrew V. Metcalfe","Margaret Semrud-Clikeman, Phyllis Anne Teeter Ellison","Alain Zuur, Elena N. Ieno, Erik Meesters","Anthony J. Parsons, A. D. Abrahams","Richard A. Lockshin","J. Schijve","Kenneth R. Lang","A.E. Eiben, J.E. Smith","Siegmund Brandt","Stefan G. Hofmann","Slobodan N. Vukosavic","Wolfgang Demtröder","Kimberly Maich, Darren Levine, Carmen Hall","Ulrich Daepp, Pamela Gorkin","David G. Luenberger, Yinyu Ye","David Borthwick","Robert Huggins","Eckhard Lammert, Martin Zeeb","Harry T. Lawless, Hildegarde Heymann","Jorge Angeles","Andrea T. da Poian, Miguel A. R. B. Castanho","Lars-Göran Johansson","Bogdan Povh, Klaus Rith, Christoph Scholz, Frank Zetsche, Werner Rodejohann","Kent D. Lee, Steve Hubbard","Abbie E. Goldberg, Katherine R. Allen","Elliott M. Marcus, Stanley Jacobson","Peter J. Olver","Peter Dorman","Bilash Kanti Bala, Fatimah Mohamed Arshad, Kusairi Mohd Noh","Delia Perlov, Alex Vilenkin","Thomas Witelski, Mark Bowen","Brock J. LaMeres","O. A. Bauchau, J.I. Craig","Octave Levenspiel","David L. Olson, Desheng Dash Wu","Naser Mahdavi Tabatabaei, Ali Jafari Aghbolaghi, Nicu Bizon, Frede Blaabjerg","Martin Kolmar","Ian Gibson, David W. Rosen, Brent Stucker","Hafez A . Radi, John O Rasmussen","Nihat Özkaya, Dawn Leger, David Goldsheyder, Margareta Nordin","Peter Waller, Muluneh Yitayew","Dilip Datta","Simon Grondin","Peter Schneider","Dexter C. Kozen","Steven S Skiena","Ernö Keszei","Philipp O.J. Scherer","Christian Heumann, Michael Schomaker, Shalabh","Andrea DeCapua","Klaus Neusser","Christine Lefrou, Pierre Fabry, Jean-Claude Poignet","Loukas Grafakos","Orlando J. Miller, Eeva Therman","Christoph Bleidorn","Brian C. Hall","Robert C. Hyzy","Paul J. Frick, Christopher T. Barry, Randy W. Kamphaus","Alan Hevner, Samir Chatterjee","Russell K. Hobbie, Bradley J. Roth","Max Bramer","Hannu Karttunen, Pekka Kröger, Heikki Oja, Markku Poutanen, Karl Johan Donner","Marlon Dumas, Marcello La Rosa, Jan Mendling, Hajo A. Reijers","Jean-François Le Gall","Martina Seidl, Marion Scholz, Christian Huemer, Gerti Kappel","Angela Dean, Daniel Voss, Danel Draguljić","Frank E. Ritter, Gordon D. Baxter, Elizabeth F. Churchill","Jing Jian Xiao","F Stuart Chapin III, Pamela A. Matson, Peter Vitousek","Wolfgang Karl Härdle, Léopold Simar","Dirk Morschett, Hanna Schramm-Klein, Joachim Zentes","Richard Szeliski","Nathan Ida","Charu C. Aggarwal","Giancarlo Gandolfo","Efstathios E (Stathis) Michaelides","Efraim Turban, Judy Whiteside, David King, Jon Outland","Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars","Anders Malthe-Sørenssen","Peter Zweifel, Aaron Praktiknjo, Georg Erdmann","Edward H. Shortliffe, James J. Cimino","Peter Corke","Heike Kahlert, Fritz Scholz","Michael Mosher, Kenneth Trantham","Sarah E. Gergel, Monica G. Turner","Jim Pitman","Alan Garfinkel, Jane Shevtsov, Yina Guo","Francis Chen","Dietmar Gross, Werner Hauger, Jörg Schröder, Wolfgang A. Wall, Nimal Rajapakse","A. Ravve","Hans Petter Langtangen","G. Thomas Farmer, John Cook","S. Sumathi, L. Ashok Kumar, P. Surekha","Richard M. Heiberger, Burt Holland","Jan vom Brocke, Jan Mendling","Kenneth A. Ross","Nigel Smart","Michel Rieutord","Amy Van Looy","David Weisburd, Chester Britt","Hartmut Stadtler, Christoph Kilger, Herbert Meyr","Alexandr A. Borovkov","David Ruppert, David S. Matteson","Horacio Arló-Costa, Vincent F. Hendricks, Johan van Benthem","Martin Braun","Sulabha K. Kulkarni","O. S. Miettinen","Rien Segers","Jürgen Jost","Jon Wakefield","Dirk Morschett, Hanna Schramm-Klein, Joachim Zentes","Benjamin A. Stickler, Ewald Schachinger","Andrew T. Duchowski","Mary Renck Jalongo, Olivia N. Saracho","Sadri Hassani","Peter C. Kratcoski","Henning Struchtrup","Stephen Kemmis, Robin McTaggart, Rhonda Nixon","Uwe Hassler","Ton J. Cleophas, Aeilko H. Zwinderman","Ton J. Cleophas, Aeilko H. Zwinderman","Steven S. Skiena","Miroslav Kubat","Gerard O'Regan","Knut Bjørlykke","Mark Ladd, Rex Palmer","Peter J. Brockwell, Richard A. Davis","Gordon L. Stüber","Peter R. Hoskins, Patricia V. Lawford, Barry J. Doyle","John Lee","Pietro Boria","Donna L. Gruol, Noriyuki Koibuchi, Mario Manto, Marco Molinari, Jeremy D. Schmahmann, Ying Shen","Angel M.Y. Lin","Seán Dineen","Massimiliano Bonamente","Faron Moller, Georg Struth","Edmund K. Burke, Graham Kendall","William Fulton, Joe Harris","Sheldon Axler","Rudolf Kippenhahn, Alfred Weigert, Achim Weiss","Alexandra Alvergne, Crispin Jenkinson, Charlotte Faurie","Christof Paar, Jan Pelzl","Jörg Liesen, Volker Mehrmann","Serge Lang","Stephen Abbott","Wolfgang Frisch, Martin Meschede, Ronald C. Blakey","Robert J Vanderbei","Kevin McCain","Joan Marques, Satinder Dhiman","Massimo Rudan","John O. Okpara, Samuel O. Idowu","William A. Adkins, Mark G. Davidson","Efraim Turban, David King, Jae Kyu Lee, Ting-Peng Liang, Deborrah C. Turban","C. Barry Carter, M. Grant Norton","Miguel Valcárcel Cases, Ángela I. López-Lorente, Ma Ángeles López-Jiménez","Michael Z. Hauschild, Ralph K. Rosenbaum, Stig Irving Olsen","George S. Everly, Jr., Jeffrey M. Lating","Philipp Scherer","Debra A. Harley, Pamela B. Teaster","Paul A. Iaizzo","Daniel Bes","Randall Schumacker, Sara Tomek","Jürgen H Gross","Isamu Kusaka","Po Sing Leung","Ian Gibson, David Rosen, Brent Stucker","Coen de Graaf, Ria Broer","Teruo Matsushita","David G. Kleinbaum, Mitchel Klein","Travis Norsen","Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani","Andrey Grozin","Richard A. Berk","J. David Logan","Charles Keeton","Zhongchao Tan","Dietrich Braun, Harald Cherdron, Matthias Rehahn, Helmut Ritter, Brigitte Voit","Yann Bouchery, Charles J. Corbett, Jan C. Fransoo, Tarkan Tan","Bruno Siciliano, Lorenzo Sciavicco, Luigi Villani, Giuseppe Oriolo","Badi H. Baltagi","Eugen Seibold, Wolfgang Berger","Ton J. Cleophas, Aeilko H. Zwinderman","Frank E. Harrell , Jr.","Henri de Waele","S. Suzanne Nielsen","William M. Hartmann","Jerome J. Connor, Susan Faraji","Karl F. Renk","Wolfgang Karl Härdle, Cathy Yi-Hsuan Chen, Ludger Overbeck","Gary W. Peterson, Kevin R. Bush","Harald Ibach, Hans Lüth","Andrzej Lasia","Wilfred Beckerman","Ahmet Bindal","Gerard O'Regan","Ze-Nian Li, Mark S. Drew, Jiangchuan Liu","Harald Gleissner, J. Christian Femerling","Arnout Jozef Ceulemans","Joey T. Cheng, Jessica L. Tracy, Cameron Anderson","F.M. Dekking, C. Kraaikamp, H.P. Lopuhaä, L.E. Meester","Joseph Bak, Donald J. Newman","H.-D. Belitz, Werner Grosch, Peter Schieberle","Jochen Vogt","Ben Stephenson","Sergey N. Makarov, Reinhold Ludwig, Stephen J. Bitar","Joachim Zentes, Dirk Morschett, Hanna Schramm-Klein","S. Suzanne Nielsen","Stefan C. Dombrowski","Ton J. Cleophas, Aeilko H. Zwinderman","Kathleen Hague Armstrong, Julia A. Ogg, Ashley N. Sundman-Wheat, Audra St. John Walsh","R. Shankar","Charu C. Aggarwal","Daan J. A. Crommelin, Robert D. Sindelar, Bernd Meibohm","Kent D. Lee","Erdogan Madenci, Ibrahim Guven","Mildred S. Dresselhaus, Gene Dresselhaus, Ado Jorio","Brahma Dathan, Sarnath Ramnath","Manuel Jiménez, Rogelio Palomera, Isidoro Couvertier","Anders Malthe-Sørenssen","Jay D. Humphrey, Sherry L. O’Rourke","Helmut Lütkepohl","Laura Igual, Santi Seguí","Peter D. Lax, Maria Shea Terrell","Arnold Verruijt","Hans Peters","Lawrence M. Friedman, Curt D. Furberg, David L. DeMets, David M. Reboussin, Christopher B. Granger","F. Moukalled, L. Mangani, M. Darwish","Scott R. Steele, Tracy L. Hull, Thomas E. Read, Theodore J. Saclarides, Anthony J. Senagore, Charles B. Whitlow","Max Kuhn, Kjell Johnson","Brock J. LaMeres","Harald Heinrichs, Pim Martens, Gerd Michelsen, Arnim Wiek","Georg Job, Regina Rüffler","Marius Grundmann","Nicu Bizon, Naser Mahdavi Tabatabaei, Frede Blaabjerg, Erol Kurt","Laura Tateosian","Steen Krenk, Jan Høgsberg","Miklós Laczkovich, Vera T. Sós","Mauro Borgo, Alessandro Soranzo, Massimo Grassi","Nicholas Anthony John Hastings","Vickie A. Vaclavik, Elizabeth W. Christian","K.T. Hecht","Achim Klenke","Peter Lake, Paul Crowther","Wilhelm Burger, Mark J. Burge","Ricardo Simpson, Sudhir K. Sastry","David B. Williams, C. Barry Carter","Joseph Migga Kizza","Jaap Hage, Antonia Waltermann, Bram Akkermans","RAINER DICK","Jean-Michel Marin, Christian P. Robert","Peter Corke","Oleg Roussak, H. D. Gesser","Francis A. Carey, Richard J. Sundberg","Francis A. Carey, Richard J. Sundberg","Hans-Joachim Heintze, Pierre Thielbörger","Umberto Veronesi, Aron Goldhirsch, Paolo Veronesi, Oreste Davide Gentilini, Maria Cristina Leonardi","Mark Anthony Camilleri","Efraim Turban, Jon Outland, David King, Jae Kyu Lee, Ting-Peng Liang, Deborrah C. Turban","Debra A. Harley, Noel A. Ysasi, Malachy L. Bishop, Allison R. Fleming","Evie Kendal, Basia Diug","Erik Mooi, Marko Sarstedt, Irma Mooi-Reci","Joseph I. Goldstein, Dale E. Newbury, Joseph R. Michael, Nicholas W.M. Ritchie, John Henry J. Scott, David C. Joy","William Bajjali","Jakob Schwichtenberg","Lori A. Roscoe, David P. Schenck","Kent D. Lee","Andrea Macchi, Giovanni Moruzzi, Francesco Pegoraro","Sebastian Koltzenburg, Michael Maskos, Oskar Nuyken","David Forsyth","Amedeo D'Adamo","Shannon R. Lane, Suzanne Pritzker","Paul R. Berman","Antti Laaksonen","Wolfgang Ertel","Bernhard Haubold, Angelika Börsch-Haubold","Richard K. Thomas","Sandro Skansi","Charles A.S. Hall, Kent Klitgaard","John Hunt","Eva-Kathrin Ehmoser-Sinner, Cherng-Wen Darren Tan","Gilbert G. Lenssen, N. Craig Smith","Dietmar Gross, Werner Hauger, Jörg Schröder, Wolfgang A. Wall, Javier Bonet","Marlon Dumas, Marcello La Rosa, Jan Mendling, Hajo A. Reijers","Tai Mendenhall, Angela Lamson, Jennifer Hodgson, Macaran Baird","Joe Pitt-Francis, Jonathan Whiteley","Jutta Heckhausen, Heinz Heckhausen","Peter C. Kratcoski, Maximilian Edelbacher","Klaus North, Gita Kumta","Diane Gifford-Gonzalez","Gregory T. Lee","Jada Hector, David Khey","Naomi Zack","Marcel Danesi","Paul M. Selzer, Richard J. Marhöfer, Oliver Koch","Giovanni Landi, Alessandro Zampini","Larry Brackney, Andrew Parker, Daniel Macumber, Kyle Benne","V. Kumar, Werner Reinartz","Eva O. L. Lantsoght","Ashish Malik","Peter J. Olver, Chehrzad Shakiban","Alexandra S. Moore, Elizabeth Swanson","Martin Aigner, Günter M. Ziegler","Cosimo Bambi","Alessandro De Angelis, Mário Pimenta","Mitsunori Ogihara","José María Ponce-Ortega, Luis Germán Hernández-Pérez","Matjaž Mihelj, Tadej Bajd, Aleš Ude, Jadran Lenarčič, Aleš Stanovnik, Marko Munih, Jure Rejc, Sebastjan Šlajpah","Christian A. Conrad","Pieter Kok","Frans H. van Eemeren","André Platzer","Henry Louie","Thorsten Hennig-Thurau, Mark B. Houston","Arnt Inge Vistnes","Ian Chivers, Jane Sleightholme","Manijeh Razeghi","Giuliano Donzellini, Luca Oneto, Domenico Ponta, Davide Anguita","Charu C. Aggarwal","Ivo D. Dinov","K.C. Wang","Angelo Corelli","Peter C. Kratcoski, Maximilian Edelbacher","Michael Guest","Marko Sarstedt, Erik Mooi","Dmitry Ivanov, Alexander Tsipoulanidis, Jörn Schönberger","Roman Trobec, Boštjan Slivnik, Patricio Bulić, Borut Robič","Roman Kossak","Andrea Bacciotti","Sven Ove Hansson, Vincent F. Hendricks","Michael Oberguggenberger, Alexander Ostermann","Kamal Fatehi, Jeongho Choi","lewis levenberg, Tai Neilson, David Rheams","Xiaodong Lin","László Keviczky, Ruth Bars, Jenő Hetthéssy, Csilla Bányász","László Keviczky, Ruth Bars, Jenő Hetthéssy, Csilla Bányász","N.S. Punekar","Victor Manuel Hernández-Guzmán, Ramón Silva-Ortigoza","Ammar Rayes, Samer Salam","Daniel Stockemer","Ramin Takloo-Bighash","Harrie de Swart","Mario Paz, Young Hoon Kim","Satish C Bhatla, Manju A. Lal","Jochen Pade","Richard Crang, Sheila Lyons-Sobaski, Robert Wise","Jochen Pade","Hector Guerrero","Brock J. LaMeres","Quentin Charatan, Aaron Kans","Eli M. Noam","Eli M. Noam","Geoffrey G. Hiller, Peter L. Groves, Alan F. Dilnot","Ulrich Walter","Stephen Handel","Kamden K. Strunk, Leslie Ann Locke","Ronghuai Huang, J. Michael Spector, Junfeng Yang","Brock J. LaMeres","Bernhard Meyer, Michael Rauschmann","Brock J. LaMeres","Lynelle Watts, David Hodgson","Benjamin Wong, Salleh Hairon, Pak Tee Ng","Bernd W. Wirtz","Brock J. LaMeres","Daan J. A. Crommelin, Robert D. Sindelar, Bernd Meibohm","Mark Pizzato","Debra Z. Basil, Gonzalo Diaz-Meneses, Michael D. Basil","Udo Kuckartz, Stefan Rädiker","Anna Marie Prentiss","James W. Drisko, Melissa D. Grady","Bruce Lubotsky Levin, Ardis Hanson","Kai Sassenberg, Michael L.W. Vliek","Bhimasankaram Pochiraju, Sridhar Seshadri","David Andrich, Ida Marais","Sudeep Tanwar, Sudhanshu Tyagi, Neeraj Kumar","James F. Albrecht, Garth den Heyer, Perry Stanislas","John Hunt","John Hunt","John W. Spink","Ernst-Detlef Schulze, Erwin Beck, Nina Buchmann, Stephan Clemens, Klaus Müller-Hohenstein, Michael Scherer-Lorenzen"],["2nd ed. 2001","2003","2004","2005","2003","4th ed. 2005","2006","2006","1999","2001","2008","2007","2nd ed. 2006","3rd ed. 2006","2007","3rd ed. 2006","2nd ed. 2007","13th ed. 2008","2009","2008","3rd ed. 2012","2nd ed. 2008","2nd ed. 2009","1st ed. 2010","2nd ed. 2008","2nd ed. 2008","2nd ed. 2009","2009","2009","2nd ed. 2009","2009","2nd ed. 2009","2007","2nd ed. 2009","2013","2nd ed. 2015","4th ed. 2014","1st ed. 2017","2012","1st ed. 2017","1st ed. 2016","2nd ed. 2011","4th ed. 2016","1st ed. 2016","2nd ed. 2016","2014","2nd ed. 2010","4th ed. 2014","1st ed. 2015","1st ed. 2016","7th ed. 2015","2015","2013","2003","2014","2014","1st ed. 2017","1st ed. 2017","1st ed. 2015","1st ed. 2017","2009","3rd ed. 2014","2nd ed. 2017","1st ed. 2017","1st ed. 2017","2010","2012","4th ed. 2017","1st ed. 2016","1st ed. 2017","1st ed. 2016","2nd ed. 2015","1997","2nd ed. 2008","2012","3rd ed. 2017","1st ed. 2016","2nd ed. 2017","1st ed. 2016","2012","3rd ed. 2014","4th ed. 2001","1st ed. 2017","2013","1st ed. 2017","3rd ed. 2010","2010","5th ed. 2015","3rd ed. 2016","6th ed. 2017","2013","1st ed. 2016","2015","2nd ed. 2017","2014","2nd ed. 2016","2nd ed. 2012","4th ed. 2015","2nd ed. 2010","2011","3rd ed. 2015","2015","2nd ed. 2014","2012","4th ed. 2017","3rd ed. 2008","2015","1st ed. 2017","4th ed. 2014","2nd ed. 2017","2013","1st ed. 2017","2nd ed. 2017","1993","1st ed. 2017","3rd ed. 2016","2nd ed. 2013","3rd ed. 2012","5th ed. 2016","2013","2015","2nd ed. 2015","1st ed. 2018","2nd ed. 2013","1st ed. 2016","2015","1st ed. 2016","4th ed. 2014","5th ed. 2015","2013","2nd ed. 2015","1st ed. 2016","4th ed. 1993","3rd ed. 2015","2011","1st ed. 2016","3rd ed. 2013","2013","3rd ed. 2015","2nd ed. 2016","3rd ed. 2017","1st ed. 2016","2nd ed. 2013","6th ed. 2017","2014","2014","1st ed. 2016","2011","2nd ed. 2016","1st ed. 2017","2nd ed. 2017","1st ed. 2016","2nd ed. 2015","5th ed. 2013","3rd ed. 2016","4th ed. 2017","1st ed. 2017","2nd ed. 2013","2nd ed. 2017","1st ed. 2016","1st ed. 2016","3rd ed. 2014","2nd ed. 2017","2013","2nd ed. 2014","2004","3rd ed. 2015","2nd ed. 2012","1st ed. 2016","2010","1st ed. 2015","3rd ed. 2002","2nd ed. 2015","2011","4th ed. 2014","1st ed. 2016","1st ed. 2017","2015","2013","2012","8th ed. 2015","2nd ed. 2013","1st ed. 2018","1st ed. 2018","3rd ed. 2013","2nd ed. 2013","1st ed. 2016","3rd ed. 2015","3rd ed. 2012","2013","3rd ed. 2017","1st ed. 2015","2014","2nd ed. 2015","1st ed. 2016","2014","3rd ed. 2012","1st ed. 2017","2013","2014","2nd ed. 2016","3rd ed. 2015","2014","2014","5th ed. 2013","1st ed. 2017","2009","5th ed. 2011","4th ed. 2017","2nd ed. 2016","2nd ed. 2015","2nd ed. 2017","3rd ed. 2017","2013","2nd ed. 2016","2nd ed. 2017","3rd ed. 2017","3rd ed. 2013","4th ed. 2009","2014","2nd ed. 2017","1st ed. 2017","1st ed. 2017","2nd ed. 2014","2013","2013","2014","2005","3rd ed. 2010","4th ed. 2009","1st ed. 2017","2014","1st ed. 2016","3rd ed. 2017","5th ed. 2017","2015","2015","2014","2nd ed. 1994","1st ed. 2016","4th ed. 2013","2nd ed. 2014","2nd ed. 2015","2008","2nd ed. 2015","2014","2015","2nd ed. 2015","2005","1st ed. 2017","2nd ed. 2014","1st ed. 2018","2nd ed. 2015","5th ed. 2015","1st ed. 2016","3rd ed. 2016","2013","1st ed. 2017","1st ed. 2016","1st ed. 2016","3rd ed. 2016","1st ed. 2017","1st ed. 2015","2013","1st ed. 2015","2012","2nd ed. 2015","4th ed. 2014","2000","2nd ed. 2014","2013","2nd ed. 2016","2013","1996","4th ed. 2017","2nd ed. 2017","2nd ed. 2016","2nd ed. 2014","2011","2nd ed. 2013","5th ed. 2007","5th ed. 2007","1st ed. 2018","1st ed. 2017","1st ed. 2018","9th ed. 2018","1st ed. 2018","1st ed. 2017","1st ed. 2018","4th ed. 2018","1st ed. 2018","2nd ed. 2018","1st ed. 2017","2nd ed. 2017","1st ed. 2017","1st ed. 2017","1st ed. 2018","1st ed. 2018","1st ed. 2018","1st ed. 2018","1st ed. 2017","2nd ed. 2017","1st ed. 2017","1st ed. 2018","1st ed. 2018","2nd ed. 2018","2nd ed. 2018","1st ed. 2018","1st ed. 2019","2nd ed. 2018","2nd ed. 2018","1st ed. 2018","2nd ed. 2017","3rd ed. 2018","1st ed. 2018","2nd ed. 2018","1st ed. 2018","1st ed. 2018","1st ed. 2018","1st ed. 2018","3rd ed. 2018","2nd ed. 2018","1st ed. 2018","1st ed. 2018","3rd ed. 2018","1st ed. 2018","1st ed. 2018","2nd ed. 2018","1st ed. 2018","6th ed. 2018","1st ed. 2018","2nd ed. 2018","1st ed. 2018","1st ed. 2019","2nd ed. 2019","1st ed. 2018","1st ed. 2018","1st ed. 2018","1st ed. 2018","1st ed. 2018","1st ed. 2019","1st ed. 2018","4th ed. 2018","4th ed. 2019","1st ed. 2019","1st ed. 2018","1st ed. 2018","1st ed. 2018","2nd ed. 2018","1st ed. 2018","1st ed. 2018","3rd ed. 2019","2nd ed. 2019","1st ed. 2018","1st ed. 2018","1st ed. 2019","1st ed. 2018","2nd ed. 2018","2nd ed. 2019","1st ed. 2018","1st ed. 2018","1st ed. 2019","1st ed. 2019","1st ed. 2018","1st ed. 2019","2nd ed. 2019","1st ed. 2019","1st ed. 2018","1st ed. 2018","6th ed. 2019","1st ed. 2018","2nd ed. 2018","1st ed. 2018","2nd ed. 2018","2nd ed. 2019","1st ed. 2019","4th ed. 2019","1st ed. 2019","1st ed. 2019","1st ed. 2019","3rd ed. 2018","1st ed. 2019","1st ed. 2019","1st ed. 2019","1st ed. 2019","1st ed. 2019","2nd ed. 2019","1st ed. 2019","1st ed. 2019","1st ed. 2019","2nd ed. 2019","5th ed. 2019","1st ed. 2019","1st ed. 2019","1st ed. 2019","1st ed. 2019","2nd ed. 2019","1st ed. 2020","1st ed. 2019","1st ed. 2019","1st ed. 2019","1st ed. 2020","1st ed. 2019","1st ed. 2019","1st ed. 2019","1st ed. 2019","2nd ed. 2019"],["Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","German textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Graduate/advanced undergraduate textbook","Undergraduate textbook","Undergraduate textbook","Monograph","Graduate/advanced undergraduate textbook"],[2001,2003,2004,2005,2003,2005,2006,2007,2006,2001,2008,2007,2006,2006,2007,2006,2007,2008,2009,2008,2012,2008,2009,2010,2008,2008,2009,2009,2009,2009,2009,2009,2007,2009,2013,2015,2014,2017,2013,2017,2016,2011,2016,2016,2016,2014,2010,2014,2015,2016,2015,2015,2013,2003,2014,2014,2017,2017,2015,2017,2009,2014,2017,2017,2017,2010,2013,2017,2016,2017,2016,2015,1997,2008,2012,2017,2016,2017,2016,2012,2014,2001,2017,2013,2017,2010,2010,2015,2016,2017,2013,2016,2015,2017,2014,2016,2011,2015,2010,2011,2015,2015,2014,2012,2017,2008,2015,2017,2014,2017,2013,2017,2017,1993,2017,2016,2013,2012,2016,2013,2015,2015,2018,2013,2016,2015,2016,2014,2015,2013,2015,2016,1993,2015,2011,2016,2013,2013,2015,2016,2017,2016,2013,2017,2014,2014,2016,2011,2016,2017,2017,2016,2015,2013,2016,2017,2017,2012,2017,2016,2016,2014,2017,2013,2014,2004,2015,2012,2016,2010,2015,2002,2015,2011,2014,2016,2017,2015,2013,2012,2015,2013,2018,2018,2013,2013,2016,2015,2012,2013,2017,2015,2014,2015,2016,2014,2012,2017,2013,2014,2016,2015,2014,2014,2013,2017,2009,2011,2017,2016,2015,2017,2017,2013,2016,2017,2017,2013,2009,2014,2017,2017,2017,2014,2013,2013,2014,2005,2010,2009,2017,2014,2016,2017,2017,2015,2015,2014,1994,2016,2013,2014,2015,2008,2015,2014,2015,2015,2005,2017,2014,2018,2015,2015,2016,2016,2013,2017,2016,2016,2016,2017,2015,2013,2015,2012,2015,2014,2000,2014,2013,2016,2013,1996,2017,2017,2016,2014,2011,2013,2007,2007,2018,2017,2018,2018,2018,2017,2018,2018,2018,2018,2017,2017,2017,2017,2018,2018,2018,2018,2017,2017,2017,2018,2018,2018,2018,2018,2019,2018,2018,2018,2017,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2019,2019,2018,2018,2018,2018,2018,2019,2018,2018,2019,2019,2018,2018,2018,2018,2018,2018,2019,2019,2018,2018,2019,2018,2018,2019,2018,2018,2019,2019,2018,2019,2019,2019,2018,2018,2019,2018,2018,2018,2018,2019,2019,2019,2019,2019,2019,2018,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019,2020,2019,2019,2019,2020,2019,2019,2019,2019,2019],["Springer Science+Business Media New York","Springer Science+Business Media New York","Springer-Verlag New York","Springer-Verlag US","Springer-Verlag New York","Springer-Verlag US","Springer-Verlag US","Springer New York","Springer-Verlag US","Springer-Verlag US","Springer-Verlag New York","Springer-Verlag New York","Springer-Verlag New York","Springer-Verlag US","Springer-Verlag New York","Springer-Verlag US","Springer-Verlag US","Springer-Verlag New York","Springer Science+Business Media, LLC","Springer-Verlag New York","Springer Science+Business Media New York","Springer-Verlag New York","Springer-Verlag US","Springer Science+Business Media, LLC","Springer-Verlag New York","Springer-Verlag New York","Springer-Verlag New York","Springer-Verlag New York","Springer-Verlag New York","Springer-Verlag US","Springer-Verlag New York","Springer Science+Business Media B.V.","Springer Science+Business Media B.V.","Springer Science+Business Media B.V.","Springer-Verlag Berlin Heidelberg","Springer-Verlag Berlin Heidelberg","Springer International Publishing Switzerland","Springer International Publishing AG","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer International Publishing AG","Springer Science+Business Media,LLC","Springer International Publishing Switzerland","Springer International Publishing AG","Springer International Publishing Switzerland","Springer-Verlag Wien","Springer Science+Business Media, LLC","Springer International Publishing Swizterland","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer-Verlag Berlin Heidelberg","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media Singapore","Springer International Publishing AG","Springer International Publishing Switzerland","Springer International Publishing AG","Springer Science+Business Media B.V.","Springer Science+Business Media New York","Springer-Verlag GmbH Germany","Springer International Publishing AG","Springer International Publishing AG","Springer Science+Business Media, LLC, part of Springer Nature","Springer-Verlag Berlin Heidelberg","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer International Publishing AG","Springer International Publishing Switzerland","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media New York","Springer-Verlag London Limited","Springer-Verlag Berlin Heidelberg","Springer International Publishing AG","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media New York","Springer Science+Business Media New York","Springer International Publishing AG","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer-Verlag US","Springer Science+Business Media, LLC","Springer International Publishing Switzerland","Springer-Verlag London Ltd.","Springer-Verlag Berlin Heidelberg","Springer-Verlag Berlin Heidelberg","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer International Publishing AG","Springer-Verlag London","Springer International Publishing Switzerland","Springer Science+Business Media, LLC","Springer-Verlag Berlin Heidelberg","Gabler Verlag | Springer Fachmedien Wiesbaden GmbH, Wiesbaden","Springer-Verlag London Limited","Springer International Publishing Switzerland","Springer International Publishing AG, part of Springer Nature","Springer-Verlag Berlin · Heidelberg","Springer-Verlag Berlin Heidelberg","Springer International Publishing AG","Springer-Verlag GmbH Germany, part of Springer Nature","Springer International Publishing Switzerland","Springer International Publishing AG","Springer-Verlag London","Springer International Publishing AG","Springer-Verlag Berlin Heidelberg","Springer International Publishing Switzerland","Springer-Verlag New York","Springer Science+Business Media LLC","Springer International Publishing AG","Springer International Publishing Switzerland","Springer-Verlag GmbH Germany, part of Springer Nature","Springer Science+Business Media, LLC","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media Dordrecht","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer International Publishing AG","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer-Verlag Berlin Heidelberg","Springer-Verlag London","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer Science+Business Media New York","Capital Publishing Company","Springer Netherlands","Springer International Publishing Switzerland","Springer Science+Business Media LLC","Springer Science+Business Media New York","Springer Fachmedien Wiesbaden","Springer International Publishing Switzerland","Springer International Publishing AG","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer International Publishing AG","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media Singapore","Springer International Publishing Switzerland","Springer Science+Business Media B.V.","Springer International Publishing Switzerland","The Author(s)","Springer International Publishing AG","Springer International Publishing Switzerland","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer International Publishing AG","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer International Publishing Switzerland and G. Giappichelli Editore","Springer International Publishing Switzerland","Springer Science+Business Media Singapore","Springer-Verlag London","Springer Science+Busines Media New York","Springer-Verlag London","Springer Science+Business Media New York","Springer Science+Business Media New York","Springer International Publishing","Springer-Verlag Berlin Heidelberg","Springer International Publishing Switzerland","Springer-Verlag Berlin Heidelberg","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer Science+Business Media New York","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer International Publishing AG","Springer International Publishing AG","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media New York","Springer International Publishing AG","Springer International Publishing Switzerland","Springer Science+Business Media Dordrecht","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer Japan","Springer Science+Business Media, LLC","Springer International Publishing AG","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer International Publishing AG, part of Springer Nature","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer Science+Business Media Singapore","Springer-Verlag Berlin Heidelberg","Yann Bouchery, Charles J. Corbett, Jan C. Fransoo, and Tarkan Tan","Springer-Verlag London","Springer-Verlag Berlin Heidelberg","Springer International Publishing AG, part of Springer Nature","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer-Verlag GmbH Germany","Springer International Publishing","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer International Publishing AG","Springer-Verlag GmbH Germany","Springer Science+Business Media New York","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media New York","The Editor(s) (if applicable) and The Author(s)","Springer International Publishing Switzerland","Springer International Publishing AG","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer Science+Business Media Dordrecht","Springer Science+Business Media New York","Springer-Verlag London","Springer Science+Business Media, LLC","Springer-Verlag Berlin Heidelberg","Springer International Publishing AG","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer Fachmedien Wiesbaden GmbH","Springer International Publishing","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer-Verlag London","Springer International Publishing","Springer-Verlag Berlin Heidelberg","Universities Press (India) Private Ltd.","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer-Verlag Berlin Heidelberg","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer International Publishing AG","Springer-Verlag Berlin Heidelberg","Springer International Publishing Switzerland","Springer International Publishing Switzerland","ASCRS (American Society of Colon and Rectal Surgeons)","Springer Science+Business Media New York","Springer International Publishing Switzerland","Springer Science+Business Media Dordrecht","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer International Publishing AG","Springer International Publishing Switzerland","Springer Science+Business Media Dordrecht","Springer New York","Springer Science+Business Media, LLC","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer Science+Business Media New York","Springer-Verlag London","Springer-Verlag London","Springer-Verlag London","Springer Science+Business Media New York","Springer Science+Business Media New York","Springer International Publishing AG","Springer International Publishing Switzerland","Springer International Publishing Switzerland","Springer Science+Business Media New York","Springer-Verlag Berlin Heidelberg","Springer Science+Business Media New York","Springer-Verlag US","Springer-Verlag US","Springer International Publishing AG","Springer International Publishing AG","Springer International Publishing AG","The Editor(s) (if applicable) and The Author(s)","Springer International Publishing AG","The Editor(s) (if applicable) and The Author(s)","Springer Nature Singapore Pte Ltd.","Springer Science+Business Media LLC","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG","Springer International Publishing AG","Springer International Publishing AG","Springer International Publishing AG","Springer-Verlag Berlin Heidelberg","Springer International Publishing AG","The Editor(s) (if applicable) and The Author(s)","Springer International Publishing AG","Springer International Publishing AG","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG","Springer International Publishing AG","Springer International Publishing AG","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG","Springer International Publishing AG","Springer International Publishing AG, part of Springer Nature","Springer Science+Business Media B.V., part of Springer Nature","Springer-Verlag GmbH Germany, part of Springer Nature","Springer-Verlag GmbH Germany, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","The Editor(s) (if applicable) and The Author(s)","The Editor(s) (if applicable) and The Author(s)","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer-Verlag GmbH Germany, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer Nature Singapore Pte Ltd.","Springer Nature Switzerland AG","The Editor(s) (if applicable) and The Author(s)","Springer-Verlag GmbH Germany, part of Springer Nature","Springer Nature Singapore Pte Ltd.","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer International Publishing AG, part of Springer Nature","Springer Nature Switzerland AG","Springer International Publishing AG, part of Springer Nature","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer International Publishing AG, part of Springer Nature","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer International Publishing AG, part of Springer Nature","Ivo D. Dinov","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer International Publishing AG, part of Springer Nature","Springer Nature Singapore Pte Ltd.","Springer-Verlag GmbH Germany, part of Springer Nature","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer International Publishing AG part of Springer Nature","Springer Nature Switzerland AG","Springer International Publishing AG, part of Springer Nature","Springer Nature Switzerland AG","Springer Nature Switzerland AG","The Editor(s) (if applicable) and The Author(s)","Springer Nature Switzerland AG","Springer Nature Singapore Pte Ltd.","Springer Nature Singapore Pte Ltd.","Springer Nature Singapore Pte Ltd.","Springer International Publishing AG, part of Springer Nature","Springer Nature Switzerland AG","Springer International Publishing AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Singapore Pte Ltd.","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","The Editor(s) (if applicable) and The Author(s)","The Editor(s) (if applicable) and The Author(s)","The Editor(s) (if applicable) and The Author(s)","Springer Nature Switzerland AG","The Editor(s) (if applicable) and The Author(s)","The Editor(s) (if applicable) and The Author(s)","Springer Nature Singapore Pte Ltd.","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Singapore Pte Ltd.","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","The Editor(s) (if applicable) and The Author(s), under exclusive license to Springer Nature Switzerland AG, part of Springer Nature","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Singapore Pte Ltd.","Springer Nature Singapore Pte Ltd.","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Nature Switzerland AG","Springer Science+Business Media, LLC, part of Springer Nature","Springer-Verlag GmbH Germany, part of Springer Nature"],["978-0-7923-7270-7","978-0-306-47498-9","978-0-387-40272-7","978-0-387-22591-3","978-0-387-95584-1","978-0-306-48330-1","978-0-387-24157-9","978-0-387-32331-2","978-0-306-45978-8","978-0-306-46554-3","978-0-387-36600-5","978-0-387-37574-8","978-0-387-30303-1","978-0-387-25921-5","978-0-387-46270-7","978-0-387-31278-1","978-0-387-49311-4","978-0-387-35664-8","978-0-387-72068-5","978-0-387-72578-9","978-0-387-74364-6","978-0-387-75958-6","978-0-387-76500-6","978-0-387-77649-1","978-0-387-78340-6","978-0-387-79053-4","978-0-387-84857-0","978-0-387-87572-9","978-0-387-88697-8","978-0-387-88962-7","978-0-387-93836-3","978-1-4020-5718-2","978-1-4020-6098-4","978-1-4020-6807-2","978-3-642-35962-0","978-3-662-44873-1","978-3-319-03761-5","978-3-319-56193-6","978-1-4614-0399-9","978-3-319-27875-9","978-3-319-44792-6","978-1-4419-9478-3","978-3-319-18841-6","978-3-319-48934-6","978-3-319-21238-8","978-3-7091-0714-0","978-1-4419-6487-8","978-3-319-01850-8","978-1-4939-3057-9","978-3-319-26549-0","978-3-662-46320-8","978-3-319-13071-2","978-1-4614-4555-5","978-1-4020-7164-5","978-3-319-02098-3","978-3-642-37433-3","978-981-10-2043-8","978-3-319-57038-9","978-3-319-23041-2","978-3-319-53882-2","978-90-481-2515-9","978-1-4899-7453-2","978-3-662-53784-8","978-3-319-51117-7","978-3-319-57588-9","978-1-4419-1119-3","978-3-642-23025-7","978-3-319-44737-7","978-3-319-05698-2","978-3-319-47830-2","978-3-319-31789-2","978-3-642-54082-0","978-0-387-94907-9","978-1-84800-069-8","978-3-642-19863-2","978-3-319-61087-0","978-3-319-46160-1","978-3-319-33914-6","978-3-319-32861-4","978-3-642-30249-7","978-1-4939-1193-6","978-0-387-95031-0","978-3-319-54062-7","978-1-4614-7115-8","978-3-319-43339-4","978-0-387-89642-7","978-1-4419-5652-1","978-3-319-12681-4","978-1-4471-7306-9","978-3-662-53044-3","978-3-642-33142-8","978-3-319-31088-6","978-3-319-12741-5","978-3-319-52248-7","978-1-4471-5133-3","978-3-319-28885-7","978-1-4419-9503-2","978-3-662-45170-0","978-3-8349-2535-0","978-1-84882-934-3","978-3-319-07805-2","978-3-319-14141-1","978-3-642-37313-8","978-3-642-20950-5","978-3-319-50090-4","978-3-540-77973-5","978-3-319-19595-7","978-3-662-53020-7","978-1-4471-4473-1","978-3-319-54412-0","978-3-642-37901-7","978-3-319-46393-3","978-1-4939-6372-0","978-0-387-97974-8","978-3-319-59730-0","978-3-319-22308-7","978-3-642-30318-0","978-1-4614-2211-2","978-3-662-49886-6","978-94-007-5756-1","978-3-319-14940-0","978-1-4939-2121-8","978-3-319-58306-8","978-1-4614-6270-5","978-3-319-21935-6","978-3-319-09350-5","978-3-319-21989-9","978-1-4614-9169-9","978-3-642-55308-0","978-1-4471-5200-2","978-1-4939-2613-8","978-3-319-20450-5","978-0-387-97894-9","978-3-319-09170-9","978-94-007-1170-9","978-3-319-23011-5","978-1-4614-4808-2","978-1-4419-0924-4","978-3-658-07883-6","978-3-319-27263-4","978-3-319-57881-1","978-3-319-31648-2","978-3-319-01194-3","978-3-319-54348-2","978-3-662-43714-8","978-981-4560-66-5","978-3-319-23427-4","978-94-007-1210-2","978-3-319-27103-3","978-3-319-55443-3","978-3-319-63912-3","978-3-319-44560-1","978-3-642-34131-1","978-1-4614-3953-0","978-3-319-29852-8","978-3-319-55614-7","978-3-319-46405-3","978-1-4419-9981-8","978-3-319-53918-8","978-3-319-24549-2","978-981-10-1800-8","978-1-4471-6418-0","978-1-4939-6570-0","978-1-84800-321-7","978-1-4614-6939-1","978-0-387-97495-8","978-3-319-11079-0","978-3-642-30255-8","978-3-319-29714-9","978-3-642-04100-6","978-3-319-24344-3","978-0-387-95385-4","978-1-4939-2711-1","978-3-540-76503-5","978-1-4614-7629-0","978-3-319-33403-5","978-3-319-31034-3","978-1-4939-1150-9","978-3-642-40974-5","978-1-4614-3617-1","978-3-319-10090-6","978-1-4614-3522-8","978-3-319-62871-4","978-3-319-56474-6","978-1-4614-5537-0","978-3-319-00400-6","978-3-319-03622-9","978-3-319-19463-9","978-3-642-20555-2","978-1-4614-6226-2","978-3-319-54397-0","978-3-319-13809-1","978-94-017-8770-3","978-1-4939-2112-6","978-3-319-22950-8","978-4-431-54525-5","978-1-4419-6645-2","978-3-319-65866-7","978-1-4614-7137-0","978-3-319-00893-6","978-3-319-44047-7","978-3-319-12492-6","978-1-4614-9235-1","978-981-287-211-1","978-3-642-28979-8","978-3-319-29789-7","978-1-84628-641-4","978-3-642-20058-8","978-3-319-51411-6","978-3-319-20599-1","978-3-319-19424-0","978-3-662-54816-5","978-3-319-44125-2","978-1-4614-6785-4","978-3-319-24329-0","978-3-319-50650-0","978-3-662-54485-3","978-1-4614-3986-8","978-3-540-93803-3","978-1-4614-8932-0","978-3-319-50318-9","978-3-319-39437-4","978-3-319-57749-4","978-3-319-05289-2","978-3-319-01768-6","978-94-007-6862-8","978-1-4939-0866-0","978-1-85233-896-1","978-1-4419-7287-3","978-3-540-69933-0","978-3-319-49808-9","978-3-319-14239-5","978-3-319-21172-5","978-3-658-10182-4","978-3-319-45774-1","978-1-4939-1910-9","978-3-319-15194-6","978-1-4614-7806-5","978-0-306-44790-7","978-3-319-29657-9","978-1-4614-6485-3","978-1-4471-6641-2","978-1-4899-7549-2","978-3-540-32897-1","978-3-319-24278-1","978-1-4614-3142-8","978-3-319-19586-5","978-1-4939-2622-0","978-3-540-40172-8","978-3-319-50016-4","978-1-4614-7945-1","978-3-319-61184-6","978-3-662-46949-1","978-3-319-18538-5","978-3-319-16873-9","978-3-319-25968-0","978-1-4614-6848-6","978-3-319-34194-1","978-94-017-7241-9","978-3-319-15665-1","978-3-319-23879-1","978-3-319-49874-4","978-3-319-18397-8","978-94-007-6112-4","978-1-4939-2765-4","978-1-4614-2196-2","978-3-319-14776-5","978-1-4614-9137-8","978-0-387-98919-8","978-1-4471-5360-3","978-1-4471-5600-0","978-1-4471-6683-2","978-1-4614-9125-5","978-0-306-45247-5","978-3-319-55605-5","978-3-319-57251-2","978-3-319-25674-0","978-1-4614-8686-2","978-3-642-20143-1","978-1-4614-4261-5","978-0-387-44897-8","978-0-387-68350-8","978-3-319-14453-5","978-3-319-48846-2","978-3-319-49848-5","978-3-319-58714-1","978-3-319-64785-2","978-3-319-65450-8","978-981-10-5217-0","978-1-4939-6674-5","978-3-319-61157-0","978-3-319-66630-3","978-3-319-70919-2","978-3-319-70789-1","978-3-319-63132-5","978-3-662-49277-2","978-3-319-64409-7","978-3-319-66771-3","978-3-319-68587-8","978-3-319-68596-0","978-3-319-72546-8","978-3-319-58486-7","978-3-319-67394-3","978-3-319-65438-6","978-3-319-73003-5","978-3-319-66217-6","978-3-319-75770-4","978-3-319-73122-3","978-94-024-1142-3","978-3-662-56271-0","978-3-662-56508-7","978-3-319-68833-6","978-3-319-73131-5","978-3-319-65093-7","978-3-319-72681-6","978-3-319-59977-9","978-3-319-65680-9","978-3-319-77648-4","978-3-319-76441-2","978-3-319-78728-2","978-1-349-95347-9","978-3-319-68299-0","978-3-319-78360-4","978-3-319-77808-2","978-3-662-55380-0","978-3-319-77424-4","978-981-13-0398-2","978-3-319-91040-6","978-3-319-74964-8","978-3-662-57264-1","978-981-13-1089-8","978-3-319-78180-8","978-3-319-89490-4","978-3-319-91721-4","978-3-319-72910-7","978-3-319-91574-6","978-3-319-92206-5","978-3-319-95380-9","978-3-319-63587-3","978-3-319-91889-1","978-3-319-89290-0","978-3-319-72313-6","978-3-319-75501-4","978-3-319-75707-0","978-3-319-92803-6","978-3-319-94462-3","978-3-319-72346-4","978-3-319-92428-1","978-3-319-95761-6","978-3-319-92332-1","978-981-13-2474-1","978-3-662-56706-7","978-3-319-94312-1","978-3-319-98832-0","978-3-319-97297-8","978-3-030-02404-8","978-3-319-77433-6","978-3-319-91154-0","978-3-319-96621-2","978-3-319-96712-7","978-3-030-00580-1","978-981-10-8296-2","978-981-10-8320-4","978-981-13-0784-3","978-3-319-75803-9","978-3-319-99515-1","978-3-319-99117-7","978-3-030-02603-5","978-3-030-03253-1","978-3-319-94742-6","978-981-13-2022-4","978-3-030-00463-7","978-3-319-77208-0","978-3-030-00466-8","978-3-030-01278-6","978-3-030-04515-9","978-3-319-99419-2","978-3-319-71287-1","978-3-319-71344-1","978-3-030-05608-7","978-3-319-74372-1","978-3-319-96336-5","978-3-030-05899-9","978-981-13-6642-0","978-3-030-10551-8","978-3-319-98874-0","978-3-030-12488-5","978-981-13-3620-1","978-3-319-74744-6","978-3-030-13004-6","978-3-030-13604-8","978-3-030-00709-6","978-3-030-12726-8","978-3-030-13019-0","978-3-030-15670-1","978-3-030-11116-8","978-3-030-15223-9","978-3-030-18433-9","978-3-030-13787-8","978-3-319-68836-7","978-981-13-7495-1","978-981-13-8758-6","978-3-030-19181-8","978-3-030-20289-7","978-3-030-25942-6","978-1-4939-9619-3","978-3-662-56231-4"],["978-0-306-48048-5","978-0-306-48247-2","978-0-387-21736-9","978-0-387-22592-0","978-0-387-21777-2","978-0-387-28117-9","978-0-387-24158-6","978-0-387-32353-4","978-0-387-36218-2","978-0-387-36274-8","978-0-387-36601-2","978-0-387-37575-5","978-0-387-40065-5","978-0-387-45524-2","978-0-387-46271-4","978-0-387-46312-4","978-0-387-49312-1","978-0-387-68566-3","978-0-387-72071-5","978-0-387-72579-6","978-0-387-74365-3","978-0-387-75959-3","978-0-387-76501-3","978-0-387-77650-7","978-0-387-78341-3","978-0-387-79054-1","978-0-387-84858-7","978-0-387-87573-6","978-0-387-88698-5","978-0-387-88963-4","978-0-387-93837-0","978-1-4020-5719-9","978-1-4020-6099-1","978-1-4020-6808-9","978-3-642-35963-7","978-3-662-44874-8","978-3-319-03762-2","978-3-319-56194-3","978-1-4614-0400-2","978-3-319-27877-3","978-3-319-44794-0","978-1-4419-9479-0","978-3-319-18842-3","978-3-319-48936-0","978-3-319-21239-5","978-3-7091-0715-7","978-1-4419-6488-5","978-3-319-01851-5","978-1-4939-3058-6","978-3-319-26551-3","978-3-662-46321-5","978-3-319-13072-9","978-1-4614-4556-2","978-1-4615-1077-2","978-3-319-02099-0","978-3-642-37434-0","978-981-10-2045-2","978-3-319-57040-2","978-3-319-23042-9","978-3-319-53883-9","978-90-481-2516-6","978-1-4899-7454-9","978-3-662-53785-5","978-3-319-51118-4","978-3-319-57589-6","978-1-4419-1120-9","978-3-642-23026-4","978-3-319-44738-4","978-3-319-05699-9","978-3-319-47831-9","978-3-319-31791-5","978-3-642-54083-7","978-1-4612-1844-9","978-1-84800-070-4","978-3-642-19864-9","978-3-319-61088-7","978-3-319-46162-5","978-3-319-33916-0","978-3-319-32862-1","978-3-642-30250-3","978-1-4939-1194-3","978-1-4613-0139-4","978-3-319-54064-1","978-1-4614-7116-5","978-3-319-43341-7","978-1-4419-0641-0","978-1-4419-5653-8","978-3-319-12682-1","978-1-4471-7307-6","978-3-662-53045-0","978-3-642-33143-5","978-3-319-31089-3","978-3-319-12742-2","978-3-319-52250-0","978-1-4471-5134-0","978-3-319-28887-1","978-1-4419-9504-9","978-3-662-45171-7","978-3-8349-6331-4","978-1-84882-935-0","978-3-319-07806-9","978-3-319-14142-8","978-3-642-37314-5","978-3-642-20951-2","978-3-319-50091-1","978-3-540-77974-2","978-3-319-19596-4","978-3-662-53022-1","978-1-4471-4474-8","978-3-319-54413-7","978-3-642-37902-4","978-3-319-46394-0","978-1-4939-6374-4","978-1-4612-4374-8","978-3-319-59731-7","978-3-319-22309-4","978-3-642-30319-7","978-1-4614-2212-9","978-3-662-49887-3","978-94-007-5757-8","978-3-319-14941-7","978-1-4939-2122-5","978-3-319-58307-5","978-1-4614-6271-2","978-3-319-21936-3","978-3-319-09351-2","978-3-319-21990-5","978-1-4614-9170-5","978-3-642-55309-7","978-1-4471-5201-9","978-1-4939-2614-5","978-3-319-20451-2","978-1-4612-4360-1","978-3-319-09171-6","978-94-007-1171-6","978-3-319-23012-2","978-1-4614-4809-9","978-1-4419-0925-1","978-3-658-07884-3","978-3-319-27265-8","978-3-319-57883-5","978-3-319-31650-5","978-3-319-01195-0","978-3-319-54349-9","978-3-662-43715-5","978-981-4560-67-2","978-3-319-23428-1","978-94-007-1211-9","978-3-319-27104-0","978-3-319-55444-0","978-3-319-63913-0","978-3-319-44561-8","978-3-642-34132-8","978-1-4614-3954-7","978-3-319-29854-2","978-3-319-55615-4","978-3-319-46407-7","978-1-4419-9982-5","978-3-319-53919-5","978-3-319-24551-5","978-981-10-1802-2","978-1-4471-6419-7","978-1-4939-6572-4","978-1-84800-322-4","978-1-4614-6940-7","978-1-4612-0979-9","978-3-319-11080-6","978-3-642-30304-3","978-3-319-29716-3","978-3-642-04101-3","978-3-319-24346-7","978-1-4613-0041-0","978-1-4939-2712-8","978-3-540-76504-2","978-1-4614-7630-6","978-3-319-33405-9","978-3-319-31036-7","978-1-4939-1151-6","978-3-642-40975-2","978-1-4614-3618-8","978-3-319-10091-3","978-1-4614-3523-5","978-3-319-62872-1","978-3-319-56475-3","978-1-4614-5538-7","978-3-319-00401-3","978-3-319-03623-6","978-3-319-19464-6","978-3-642-20556-9","978-1-4614-6227-9","978-3-319-54398-7","978-3-319-15018-5","978-94-017-8771-0","978-1-4939-2113-3","978-3-319-22951-5","978-4-431-54526-2","978-1-4419-6646-9","978-3-319-65867-4","978-1-4614-7138-7","978-3-319-00894-3","978-3-319-44048-4","978-3-319-12493-3","978-1-4614-9236-8","978-981-287-212-8","978-3-642-28980-4","978-3-319-29791-0","978-1-84628-642-1","978-3-642-20059-5","978-3-319-51412-3","978-3-319-20600-4","978-3-319-19425-7","978-3-662-54817-2","978-3-319-44127-6","978-1-4614-6786-1","978-3-319-24331-3","978-3-319-50651-7","978-3-662-54486-0","978-1-4614-3987-5","978-3-540-93804-0","978-1-4614-8933-7","978-3-319-50319-6","978-3-319-39439-8","978-3-319-57750-0","978-3-319-05290-8","978-3-319-01769-3","978-94-007-6863-5","978-1-4939-0867-7","978-1-84628-168-6","978-1-4419-7288-0","978-3-540-69934-7","978-3-319-49810-2","978-3-319-14240-1","978-3-319-21173-2","978-3-658-10183-1","978-3-319-45776-5","978-1-4939-1911-6","978-3-319-15195-3","978-1-4614-7807-2","978-1-4757-0576-8","978-3-319-29659-3","978-1-4614-6486-0","978-1-4471-6642-9","978-1-4899-7550-8","978-3-540-32899-5","978-3-319-24280-4","978-1-4614-3143-5","978-3-319-19587-2","978-1-4939-2623-7","978-3-540-27752-1","978-3-319-50017-1","978-1-4614-7946-8","978-3-319-61185-3","978-3-662-46950-7","978-3-319-18539-2","978-3-319-16874-6","978-3-319-25970-3","978-1-4614-6849-3","978-3-319-34195-8","978-94-017-7242-6","978-3-319-15666-8","978-3-319-23880-7","978-3-319-49875-1","978-3-319-18398-5","978-94-007-6113-1","978-1-4939-2766-1","978-1-4614-2197-9","978-3-319-14777-2","978-1-4614-9138-5","978-1-4612-1272-0","978-1-4471-5361-0","978-1-4471-5601-7","978-1-4471-6684-9","978-1-4614-9126-2","978-1-4757-2519-3","978-3-319-55606-2","978-3-319-57252-9","978-3-319-25675-7","978-1-4614-8687-9","978-3-642-20144-8","978-1-4614-4262-2","978-0-387-44899-2","978-0-387-71481-3","978-3-319-14454-2","978-3-319-48848-6","978-3-319-49849-2","978-3-319-58715-8","978-3-319-64786-9","978-3-319-65451-5","978-981-10-5218-7","978-1-4939-6676-9","978-3-319-61158-7","978-3-319-66631-0","978-3-319-70920-8","978-3-319-70790-7","978-3-319-63133-2","978-3-662-49279-6","978-3-319-64410-3","978-3-319-66772-0","978-3-319-68588-5","978-3-319-68598-4","978-3-319-72547-5","978-3-319-58487-4","978-3-319-67395-0","978-3-319-65439-3","978-3-319-73004-2","978-3-319-66219-0","978-3-319-75771-1","978-3-319-73123-0","978-94-024-1144-7","978-3-662-56272-7","978-3-662-56509-4","978-3-319-68834-3","978-3-319-73132-2","978-3-319-65094-4","978-3-319-72682-3","978-3-319-59978-6","978-3-319-65682-3","978-3-319-77649-1","978-3-319-76442-9","978-3-319-78729-9","978-1-349-95348-6","978-3-319-68301-0","978-3-319-78361-1","978-3-319-77809-9","978-3-662-55381-7","978-3-319-77425-1","978-981-13-0399-9","978-3-319-91041-3","978-3-319-74965-5","978-3-662-57265-8","978-981-13-1090-4","978-3-319-78181-5","978-3-319-89491-1","978-3-319-91722-1","978-3-319-72911-4","978-3-319-91575-3","978-3-319-92207-2","978-3-319-95381-6","978-3-319-63588-0","978-3-319-91890-7","978-3-319-89292-4","978-3-319-72314-3","978-3-319-75502-1","978-3-319-75708-7","978-3-319-92804-3","978-3-319-94463-0","978-3-319-72347-1","978-3-319-92429-8","978-3-319-95762-3","978-3-319-92333-8","978-981-13-2475-8","978-3-662-56707-4","978-3-319-94313-8","978-3-319-98833-7","978-3-319-97298-5","978-3-030-02405-5","978-3-319-77434-3","978-3-319-91155-7","978-3-319-96622-9","978-3-319-96713-4","978-3-030-00581-8","978-981-10-8297-9","978-981-10-8321-1","978-981-13-0785-0","978-3-319-75804-6","978-3-319-99516-8","978-3-319-99118-4","978-3-030-02604-2","978-3-030-03255-5","978-3-319-94743-3","978-981-13-2023-1","978-3-030-00464-4","978-3-319-77315-5","978-3-030-00467-5","978-3-030-01279-3","978-3-030-04516-6","978-3-319-99420-8","978-3-319-71288-8","978-3-319-72000-5","978-3-030-05609-4","978-3-319-74373-8","978-3-319-96337-2","978-3-030-05900-2","978-981-13-6643-7","978-3-030-10552-5","978-3-319-98875-7","978-3-030-12489-2","978-981-13-3621-8","978-3-319-74746-0","978-3-030-13005-3","978-3-030-13605-5","978-3-030-00710-2","978-3-030-12727-5","978-3-030-13020-6","978-3-030-15671-8","978-3-030-11117-5","978-3-030-15224-6","978-3-030-18435-3","978-3-030-13788-5","978-3-319-68837-4","978-981-13-7496-8","978-981-13-8759-3","978-3-030-19182-5","978-3-030-20290-3","978-3-030-25943-3","978-1-4939-9621-6","978-3-662-56233-8"],["EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN"],["English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International","English/International"],["11647","11648","11649","11640","11649","11642","11647","11648","11648","11648","11640","11640","11649","11642","11644","11644","11642","11650","11648","11643","11644","11649","11644","11648","11642","11649","11649","11640","11649","11640","11649","11646","11642","11647","11651","11645","11651","41168","40367","11651","41168","11649","41169","11649","40367","11642","11644","11647","11642","41175","11651","11645","11648","11642","11649","11643","41170","11651","11649","11647","11647","11644","41169","40367","41170","11647","11651","11642","11646","11645","41168","11651","11645","11645","11644","11651","11649","41171","41170","11644","11649","11642","11642","11649","11650","11640","11643","11651","11645","11651","11645","11649","11645","11649","11645","41168","11642","11649","11643","11645","11647","11645","11643","11647","41169","11645","11651","40367","11650","11647","11644","11644","11642","11649","11649","11651","11647","11644","11649","11646","40367","11649","41169","11649","11645","11651","41169","11648","11643","11649","11649","41175","11649","11644","11642","41169","11649","11649","11643","11651","11645","41171","11651","41177","11647","11648","41170","11642","11642","11645","11645","11645","11646","11644","11649","11647","11650","11649","41177","11642","41171","11649","11651","11645","11643","11649","11649","11651","11650","11645","11649","11649","11649","11646","11643","41175","41169","11647","11643","11649","11643","11644","11644","11647","11640","11651","41176","11642","11651","11649","11644","11644","11642","11647","11644","11651","11649","11651","11649","11651","11649","11649","11651","40367","11644","41169","11647","11643","11646","11642","11649","41177","11644","11651","11647","11651","11649","11648","11651","11644","41170","11647","11645","11645","11643","11644","11640","11649","11649","11644","11644","11645","11647","41169","11644","11640","11642","11640","11651","11645","11642","11645","11647","11651","11645","11647","11651","11642","11643","11645","11649","11646","11643","11649","11647","11650","11649","11647","11646","11644","11651","40367","11646","11647","11649","11640","11643","11644","11651","11649","11645","11645","11644","11651","11645","41177","11651","11649","11647","11644","11644","11644","41177","11650","41169","41169","41176","41173","41169","11644","11646","11651","41175","11645","11651","11644","11645","41173","41176","11651","11645","11645","11642","41176","11645","40367","11645","11642","41169","11647","11645","41168","11645","41168","41177","41169","41176","11649","41177","41175","41173","11642","11651","40367","41169","41171","41169","11649","41173","11649","11651","11651","11645","42732","42732","41175","11651","41175","11645","40367","41169","11651","11645","11647","11647","11645","11645","11645","41169","41177","41171","41169","41169","11645","41175","42732","41175","11645","41169","41173","11645","42732","42732","11642","42732","11647","41176","11649","41175","11647","11642","11651","11642","11651","41169","11647","11645","41173","41173","41173","11647","41168","41171","41171","11647","11650","11647","41176","41171","41169","11647","11642","41173","41169","41176","41176","41168","41168","41168","41169","41171","42732","41177","11645","11645","11642","11642"],["Engineering","Humanities, Social Sciences and Law","Mathematics and Statistics","Behavioral Science","Mathematics and Statistics","Biomedical and Life Sciences","Engineering","Humanities, Social Sciences and Law","Humanities, Social Sciences and Law","Humanities, Social Sciences and Law","Behavioral Science","Behavioral Science","Mathematics and Statistics","Biomedical and Life Sciences","Chemistry and Materials Science","Chemistry and Materials Science","Biomedical and Life Sciences","Medicine","Humanities, Social Sciences and Law","Business and Economics","Chemistry and Materials Science","Mathematics and Statistics","Chemistry and Materials Science","Humanities, Social Sciences and Law","Biomedical and Life Sciences","Mathematics and Statistics","Mathematics and Statistics","Behavioral Science","Mathematics and Statistics","Behavioral Science","Mathematics and Statistics","Earth and Environmental Science","Biomedical and Life Sciences","Engineering","Physics and Astronomy","Computer Science","Physics and Astronomy","Behavioral Science and Psychology","Energy","Physics and Astronomy","Behavioral Science and Psychology","Mathematics and Statistics","Business and Management","Mathematics and Statistics","Energy","Biomedical and Life Sciences","Chemistry and Materials Science","Engineering","Biomedical and Life Sciences","Religion and Philosophy","Physics and Astronomy","Computer Science","Humanities, Social Sciences and Law","Biomedical and Life Sciences","Mathematics and Statistics","Business and Economics","Economics and Finance","Physics and Astronomy","Mathematics and Statistics","Engineering","Engineering","Chemistry and Materials Science","Business and Management","Energy","Economics and Finance","Engineering","Physics and Astronomy","Biomedical and Life Sciences","Earth and Environmental Science","Computer Science","Behavioral Science and Psychology","Physics and Astronomy","Computer Science","Computer Science","Chemistry and Materials Science","Physics and Astronomy","Mathematics and Statistics","Education","Economics and Finance","Chemistry and Materials Science","Mathematics and Statistics","Biomedical and Life Sciences","Biomedical and Life Sciences","Mathematics and Statistics","Medicine","Behavioral Science","Business and Economics","Physics and Astronomy","Computer Science","Physics and Astronomy","Computer Science","Mathematics and Statistics","Computer Science","Mathematics and Statistics","Computer Science","Behavioral Science and Psychology","Biomedical and Life Sciences","Mathematics and Statistics","Business and Economics","Computer Science","Engineering","Computer Science","Business and Economics","Engineering","Business and Management","Computer Science","Physics and Astronomy","Energy","Medicine","Engineering","Chemistry and Materials Science","Chemistry and Materials Science","Biomedical and Life Sciences","Mathematics and Statistics","Mathematics and Statistics","Physics and Astronomy","Engineering","Chemistry and Materials Science","Mathematics and Statistics","Earth and Environmental Science","Energy","Mathematics and Statistics","Business and Management","Mathematics and Statistics","Computer Science","Physics and Astronomy","Business and Management","Humanities, Social Sciences and Law","Business and Economics","Mathematics and Statistics","Mathematics and Statistics","Religion and Philosophy","Mathematics and Statistics","Chemistry and Materials Science","Biomedical and Life Sciences","Business and Management","Mathematics and Statistics","Mathematics and Statistics","Business and Economics","Physics and Astronomy","Computer Science","Education","Physics and Astronomy","Law and Criminology","Engineering","Humanities, Social Sciences and Law","Economics and Finance","Biomedical and Life Sciences","Biomedical and Life Sciences","Computer Science","Computer Science","Computer Science","Earth and Environmental Science","Chemistry and Materials Science","Mathematics and Statistics","Engineering","Medicine","Mathematics and Statistics","Law and Criminology","Biomedical and Life Sciences","Education","Mathematics and Statistics","Physics and Astronomy","Computer Science","Business and Economics","Mathematics and Statistics","Mathematics and Statistics","Physics and Astronomy","Medicine","Computer Science","Mathematics and Statistics","Mathematics and Statistics","Mathematics and Statistics","Earth and Environmental Science","Business and Economics","Religion and Philosophy","Business and Management","Engineering","Business and Economics","Mathematics and Statistics","Business and Economics","Chemistry and Materials Science","Chemistry and Materials Science","Engineering","Behavioral Science","Physics and Astronomy","Social Sciences","Biomedical and Life Sciences","Physics and Astronomy","Mathematics and Statistics","Chemistry and Materials Science","Chemistry and Materials Science","Biomedical and Life Sciences","Engineering","Chemistry and Materials Science","Physics and Astronomy","Mathematics and Statistics","Physics and Astronomy","Mathematics and Statistics","Physics and Astronomy","Mathematics and Statistics","Mathematics and Statistics","Physics and Astronomy","Energy","Chemistry and Materials Science","Business and Management","Engineering","Business and Economics","Earth and Environmental Science","Biomedical and Life Sciences","Mathematics and Statistics","Law and Criminology","Chemistry and Materials Science","Physics and Astronomy","Engineering","Physics and Astronomy","Mathematics and Statistics","Humanities, Social Sciences and Law","Physics and Astronomy","Chemistry and Materials Science","Economics and Finance","Engineering","Computer Science","Computer Science","Business and Economics","Chemistry and Materials Science","Behavioral Science","Mathematics and Statistics","Mathematics and Statistics","Chemistry and Materials Science","Chemistry and Materials Science","Computer Science","Engineering","Business and Management","Chemistry and Materials Science","Behavioral Science","Biomedical and Life Sciences","Behavioral Science","Physics and Astronomy","Computer Science","Biomedical and Life Sciences","Computer Science","Engineering","Physics and Astronomy","Computer Science","Engineering","Physics and Astronomy","Biomedical and Life Sciences","Business and Economics","Computer Science","Mathematics and Statistics","Earth and Environmental Science","Business and Economics","Mathematics and Statistics","Engineering","Medicine","Mathematics and Statistics","Engineering","Earth and Environmental Science","Chemistry and Materials Science","Physics and Astronomy","Energy","Earth and Environmental Science","Engineering","Mathematics and Statistics","Behavioral Science","Business and Economics","Chemistry and Materials Science","Physics and Astronomy","Mathematics and Statistics","Computer Science","Computer Science","Chemistry and Materials Science","Physics and Astronomy","Computer Science","Law and Criminology","Physics and Astronomy","Mathematics and Statistics","Engineering","Chemistry and Materials Science","Chemistry and Materials Science","Chemistry and Materials Science","Law and Criminology","Medicine","Business and Management","Business and Management","Social Sciences","Literature, Cultural and Media Studies","Business and Management","Chemistry and Materials Science","Earth and Environmental Science","Physics and Astronomy","Religion and Philosophy","Computer Science","Physics and Astronomy","Chemistry and Materials Science","Computer Science","Literature, Cultural and Media Studies","Social Sciences","Physics and Astronomy","Computer Science","Computer Science","Biomedical and Life Sciences","Social Sciences","Computer Science","Energy","Computer Science","Biomedical and Life Sciences","Business and Management","Engineering","Computer Science","Behavioral Science and Psychology","Computer Science","Behavioral Science and Psychology","Law and Criminology","Business and Management","Social Sciences","Mathematics and Statistics","Law and Criminology","Religion and Philosophy","Literature, Cultural and Media Studies","Biomedical and Life Sciences","Physics and Astronomy","Energy","Business and Management","Education","Business and Management","Mathematics and Statistics","Literature, Cultural and Media Studies","Mathematics and Statistics","Physics and Astronomy","Physics and Astronomy","Computer Science","Intelligent Technologies and Robotics","Intelligent Technologies and Robotics","Religion and Philosophy","Physics and Astronomy","Religion and Philosophy","Computer Science","Energy","Business and Management","Physics and Astronomy","Computer Science","Engineering","Engineering","Computer Science","Computer Science","Computer Science","Business and Management","Law and Criminology","Education","Business and Management","Business and Management","Computer Science","Religion and Philosophy","Intelligent Technologies and Robotics","Religion and Philosophy","Computer Science","Business and Management","Literature, Cultural and Media Studies","Computer Science","Intelligent Technologies and Robotics","Intelligent Technologies and Robotics","Biomedical and Life Sciences","Intelligent Technologies and Robotics","Engineering","Social Sciences","Mathematics and Statistics","Religion and Philosophy","Engineering","Biomedical and Life Sciences","Physics and Astronomy","Biomedical and Life Sciences","Physics and Astronomy","Business and Management","Engineering","Computer Science","Literature, Cultural and Media Studies","Literature, Cultural and Media Studies","Literature, Cultural and Media Studies","Engineering","Behavioral Science and Psychology","Education","Education","Engineering","Medicine","Engineering","Social Sciences","Education","Business and Management","Engineering","Biomedical and Life Sciences","Literature, Cultural and Media Studies","Business and Management","Social Sciences","Social Sciences","Behavioral Science and Psychology","Behavioral Science and Psychology","Behavioral Science and Psychology","Business and Management","Education","Intelligent Technologies and Robotics","Law and Criminology","Computer Science","Computer Science","Biomedical and Life Sciences","Biomedical and Life Sciences"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,"1389-6903","1431-875X",null,"0172-6056",null,null,"1389-6903","1389-6903","1389-6903",null,null,"1431-8598",null,null,null,null,null,null,"0923-6716",null,"1431-875X",null,null,null,"1431-8784","0172-7397",null,"2197-5736",null,"2197-5736",null,null,null,"2192-4791","1619-7127",null,null,"2196-3185","2192-4791",null,"0172-6056","0884-8289","0172-5939",null,null,"1572-0330","0941-5122",null,"2569-8737","1868-4513","1863-7310",null,null,"0172-6056","2192-4333","2192-4333",null,"1615-2085",null,"0925-0042",null,"2192-4333","1612-1287","2192-4333",null,"2192-4791",null,null,null,null,null,null,null,null,"1868-4513",null,"2366-7672","2192-4333",null,"0072-5285",null,null,"0072-5285",null,null,"1571-0270",null,"1863-7310",null,null,"0072-5285","1863-7310","1431-875X",null,null,null,null,null,"1868-0941",null,null,"2192-4333","1865-3529","2192-4333",null,"2192-4791","2192-4333",null,"1610-7438",null,null,null,"1431-875X",null,null,null,null,"1611-0994",null,"1865-3529","1431-875X","2192-8096","0172-6056","1619-7100","1868-4513","2192-4333",null,"2192-4333","0172-5939","1431-875X","2627-6046","0939-2475",null,null,null,"0072-5285","0172-7397",null,null,null,"2366-7672",null,null,null,null,"2192-4333",null,null,"1868-0941",null,"1868-0941",null,null,"1431-875X",null,null,"0072-5285",null,null,null,"1615-2085","1868-4513","1863-7310",null,"0072-5285","0172-6056","0941-7834","2625-2597",null,"1615-2085","0072-5285","0172-6056",null,"0884-8289","2569-8737","2192-4333",null,"2196-7075","0172-6056","2192-4333",null,null,null,null,"1868-4513",null,null,"1868-4513",null,null,null,null,null,"2214-4714","2192-4791","1431-8776","2192-4791","1431-875X","1868-4513","1431-875X","0172-6056","2192-4791","1865-3529",null,"2365-6395","1439-2232","2192-4333","2510-1307",null,"0172-7397",null,"1572-0330","2192-4791",null,"1868-4513","1431-8784",null,null,null,null,null,"1863-7310","1868-0941","2192-4333","2214-4714",null,"1431-875X","0172-6056",null,null,null,null,null,"1572-0330",null,null,null,null,null,null,"1863-7310",null,null,"1863-7310",null,"2192-4791",null,null,"1863-7310","0172-6056","0924-6118","2192-4333",null,"0926-5112",null,null,null,null,null,"1868-4513","2195-1284",null,null,"0172-6056",null,null,"1572-0330","0938-037X","0172-5939","1863-7310","1868-0941",null,null,"1617-7975",null,"1868-4513","1431-875X","1610-7438",null,null,null,null,null,"2510-4993","2192-4333",null,null,"2192-4333",null,"2510-1307","2192-4791",null,"1863-7310",null,null,null,null,null,"2198-7882","1863-7310","1863-7310",null,null,"1863-7310",null,null,"2509-6125",null,null,null,"2520-1190","1863-7310",null,null,"2192-4333",null,"1615-2085",null,null,null,null,"2192-4791",null,"2192-4333","2366-7672","2192-4333","0172-6056",null,null,"2192-4791","2192-4791",null,null,null,null,"2192-4791","1566-7650",null,null,null,"2510-411X",null,null,null,null,null,null,"2192-4333",null,"2366-7672","2192-4333","2192-4333","1863-7310","2627-6046","2198-4182","2569-8737","1863-7310","2192-4333",null,null,"1439-2232","1439-2232",null,"1439-2232",null,null,"0172-6056","2569-8737",null,null,"2192-4791",null,"2192-4791",null,null,"1868-0941",null,null,null,null,null,null,"2196-4963",null,null,null,null,"2366-7672","2196-8705",null,null,null,"2192-4333",null,null,"2520-162X",null,null,"0884-8289","2366-7672","1868-4394",null,"1863-7310","1863-7310",null,null],[null,"2542-839X","2197-4136",null,"2197-5604",null,null,"2542-839X","2542-839X","2542-839X",null,null,"2197-1773",null,null,null,null,null,null,"2199-1057",null,"2197-4136",null,null,null,"2197-1706","2197-568X",null,"2197-5744",null,"2197-5744",null,null,null,"2192-4805",null,null,null,"2196-3193","2192-4805",null,"2197-5604","2214-7934","2191-6675",null,null,"2214-7799","2192-063X",null,"2569-8753","1868-4521","2197-1781",null,null,"2197-5604","2192-4341","2192-4341",null,"2197-4144",null,"2214-7764",null,"2192-4341","1860-4676","2192-4341",null,"2192-4805",null,null,null,null,null,null,null,null,"1868-4521",null,"2366-7680","2192-4341",null,"2197-5612",null,null,"2197-5612",null,null,"2197-7968",null,"2197-1781",null,null,"2197-5612","2197-1781","2197-4136",null,null,null,null,null,"1868-095X",null,null,"2192-4341","1865-3537","2192-4341",null,"2192-4805","2192-4341",null,"1610-742X",null,null,null,"2197-4136",null,null,null,null,"2197-179X",null,"1865-3537","2197-4136","2192-810X","2197-5604","2197-845X","1868-4521","2192-4341",null,"2192-4341","2191-6675","2197-4136","2627-6054","2196-9949",null,null,null,"2197-5612","2197-568X",null,null,null,"2366-7680",null,null,null,null,"2192-4341",null,null,"1868-095X",null,"1868-095X",null,null,"2197-4136",null,null,"2197-5612",null,null,null,"2197-4144","1868-4521","2197-1781",null,"2197-5612","2197-5604","2196-9698","2625-2600",null,"2197-4144","2197-5612","2197-5604",null,"2214-7934","2569-8753","2192-4341",null,"2196-7083","2197-5604","2192-4341",null,null,null,null,"1868-4521",null,null,"1868-4521",null,null,null,null,null,"2214-4722","2192-4805","2197-5671","2192-4805","2197-4136","1868-4521","2197-4136","2197-5604","2192-4805","1865-3537",null,"2365-6409","2510-3814","2192-4341","2510-1315",null,"2197-568X",null,"2214-7799","2192-4805",null,"1868-4521","2197-1706",null,null,null,null,null,"2197-1781","1868-095X","2192-4341","2214-4722",null,"2197-4136","2197-5604",null,null,null,null,null,"2214-7799",null,null,null,null,null,null,"2197-1781",null,null,"2197-1781",null,"2192-4805",null,null,"2197-1781","2197-5604","2213-6940","2192-4341",null,"2215-0056",null,null,null,null,null,"1868-4521","2195-1292",null,null,"2197-5604",null,null,"2214-7799",null,"2191-6675","2197-1781","1868-095X",null,null,"2197-8433",null,"1868-4521","2197-4136","1610-742X",null,null,null,null,null,"2510-5000","2192-4341",null,null,"2192-4341",null,"2510-1315","2192-4805",null,"2197-1781",null,null,null,null,null,"2198-7890","2197-1781","2197-1781",null,null,"2197-1781",null,null,"2509-6133",null,null,null,"2520-1204","2197-1781",null,null,"2192-4341",null,"2197-4144",null,null,null,null,"2192-4805",null,"2192-4341","2366-7680","2192-4341","2197-5604",null,null,"2192-4805","2192-4805",null,null,null,null,"2192-4805","2215-1907",null,null,null,"2510-4128",null,null,null,null,null,null,"2192-4341",null,"2366-7680","2192-4341","2192-4341","2197-1781","2627-6054","2198-4190","2569-8753","2197-1781","2192-4341",null,null,"2510-3814","2510-3814",null,"2510-3814",null,null,"2197-5604","2569-8753",null,null,"2192-4805",null,"2192-4805",null,null,"1868-095X",null,null,null,null,null,null,"2196-4971",null,null,null,null,"2366-7680","2196-8713",null,null,null,"2192-4341",null,null,"2520-1611",null,null,"2214-7934","2366-7680","1868-4408",null,"2197-1781","2197-1781",null,null],[null,"Handbooks of Sociology and Social Research","Springer Texts in Statistics","Series in Anxiety and Related Disorders","Undergraduate Texts in Mathematics",null,null,"Handbooks of Sociology and Social Research","Handbooks of Sociology and Social Research","Handbooks of Sociology and Social Research",null,null,"Springer Series in Operations Research and Financial Engineering",null,null,null,null,null,null,"International Series in Quantitative Marketing",null,"Springer Texts in Statistics",null,null,null,"Statistics and Computing","Springer Series in Statistics",null,"Use R!",null,"Use R!",null,null,null,"Undergraduate Lecture Notes in Physics","Natural Computing Series",null,null,"Power Electronics and Power Systems","Undergraduate Lecture Notes in Physics",null,"Undergraduate Texts in Mathematics","International Series in Operations Research & Management Science","Universitext",null,null,"Food Science Text Series","Mechanical Engineering Series",null,"Springer Undergraduate Texts in Philosophy","Graduate Texts in Physics","Undergraduate Topics in Computer Science",null,null,"Undergraduate Texts in Mathematics","Springer Texts in Business and Economics","Springer Texts in Business and Economics",null,"Springer Undergraduate Mathematics Series",null,"Solid Mechanics and Its Applications",null,"Springer Texts in Business and Economics","Power Systems","Springer Texts in Business and Economics",null,"Undergraduate Lecture Notes in Physics",null,null,null,null,null,"Undergraduate Texts in Computer Science",null,null,"Graduate Texts in Physics",null,"Springer Texts in Education","Springer Texts in Business and Economics",null,"Graduate Texts in Mathematics",null,null,"Graduate Texts in Mathematics",null,null,"Integrated Series in Information Systems",null,"Undergraduate Topics in Computer Science",null,null,"Graduate Texts in Mathematics","Undergraduate Topics in Computer Science","Springer Texts in Statistics",null,null,null,null,null,"Texts in Computer Science",null,null,"Springer Texts in Business and Economics","Green Energy and Technology","Springer Texts in Business and Economics",null,"Undergraduate Lecture Notes in Physics","Springer Texts in Business and Economics",null,"Springer Tracts in Advanced Robotics",null,null,null,"Springer Texts in Statistics",null,null,null,null,"Texts in Computational Science and Engineering",null,"Green Energy and Technology","Springer Texts in Statistics","Management for Professionals","Undergraduate Texts in Mathematics","Information Security and Cryptography","Graduate Texts in Physics","Springer Texts in Business and Economics",null,"Springer Texts in Business and Economics","Universitext","Springer Texts in Statistics","Springer Graduate Texts in Philosophy","Texts in Applied Mathematics",null,null,null,"Graduate Texts in Mathematics","Springer Series in Statistics",null,null,null,"Springer Texts in Education",null,null,null,null,"Springer Texts in Business and Economics",null,null,"Texts in Computer Science",null,"Texts in Computer Science",null,null,"Springer Texts in Statistics",null,null,"Graduate Texts in Mathematics",null,null,null,"Springer Undergraduate Mathematics Series","Graduate Texts in Physics","Undergraduate Topics in Computer Science",null,"Graduate Texts in Mathematics","Undergraduate Texts in Mathematics","Astronomy and Astrophysics Library","Advances in the Evolutionary Analysis of Human Behaviour",null,"Springer Undergraduate Mathematics Series","Graduate Texts in Mathematics","Undergraduate Texts in Mathematics",null,"International Series in Operations Research & Management Science","Springer Undergraduate Texts in Philosophy","Springer Texts in Business and Economics",null,"CSR, Sustainability, Ethics & Governance","Undergraduate Texts in Mathematics","Springer Texts in Business and Economics",null,null,null,null,"Graduate Texts in Physics",null,null,"Graduate Texts in Physics",null,null,null,null,null,"Theoretical Chemistry and Computational Modelling","Undergraduate Lecture Notes in Physics","Statistics for Biology and Health","Undergraduate Lecture Notes in Physics","Springer Texts in Statistics","Graduate Texts in Physics","Springer Texts in Statistics","Undergraduate Texts in Mathematics","Undergraduate Lecture Notes in Physics","Green Energy and Technology",null,"Springer Series in Supply Chain Management","Advanced Textbooks in Control and Signal Processing","Springer Texts in Business and Economics","Springer Textbooks in Earth Sciences, Geography and Environment",null,"Springer Series in Statistics",null,"Food Science Text Series","Undergraduate Lecture Notes in Physics",null,"Graduate Texts in Physics","Statistics and Computing",null,null,null,null,null,"Undergraduate Topics in Computer Science","Texts in Computer Science","Springer Texts in Business and Economics","Theoretical Chemistry and Computational Modelling",null,"Springer Texts in Statistics","Undergraduate Texts in Mathematics",null,null,null,null,null,"Food Science Text Series",null,null,null,null,null,null,"Undergraduate Topics in Computer Science",null,null,"Undergraduate Topics in Computer Science",null,"Undergraduate Lecture Notes in Physics",null,null,"Undergraduate Topics in Computer Science","Undergraduate Texts in Mathematics","Theory and Applications of Transport in Porous Media","Springer Texts in Business and Economics",null,"Fluid Mechanics and Its Applications",null,null,null,null,null,"Graduate Texts in Physics","Lecture Notes in Energy",null,null,"Undergraduate Texts in Mathematics",null,null,"Food Science Text Series","Graduate Texts in Contemporary Physics","Universitext","Undergraduate Topics in Computer Science","Texts in Computer Science",null,null,"Computer Communications and Networks",null,"Graduate Texts in Physics","Springer Texts in Statistics","Springer Tracts in Advanced Robotics",null,"Advanced Organic Chemistry","Advanced Organic Chemistry",null,null,"Tourism, Hospitality & Event Management","Springer Texts in Business and Economics",null,"Palgrave Studies in Science and Popular Culture","Springer Texts in Business and Economics",null,"Springer Textbooks in Earth Sciences, Geography and Environment","Undergraduate Lecture Notes in Physics",null,"Undergraduate Topics in Computer Science",null,null,null,null,null,"UNITEXT for Physics","Undergraduate Topics in Computer Science","Undergraduate Topics in Computer Science",null,null,"Undergraduate Topics in Computer Science",null,null,"Learning Materials in Biosciences",null,null,null,"Focused Issues in Family Therapy","Undergraduate Topics in Computer Science",null,null,"Springer Texts in Business and Economics",null,"Springer Undergraduate Mathematics Series",null,"Palgrave Philosophy Today",null,null,"Undergraduate Lecture Notes in Physics",null,"Springer Texts in Business and Economics","Springer Texts in Education","Springer Texts in Business and Economics","Undergraduate Texts in Mathematics","Palgrave Studies in Life Writing",null,"Undergraduate Lecture Notes in Physics","Undergraduate Lecture Notes in Physics",null,null,null,null,"Undergraduate Lecture Notes in Physics","Argumentation Library",null,null,null,"Undergraduate Texts in Physics",null,null,null,null,null,null,"Springer Texts in Business and Economics",null,"Springer Texts in Education","Springer Texts in Business and Economics","Springer Texts in Business and Economics","Undergraduate Topics in Computer Science","Springer Graduate Texts in Philosophy","Studies in Systems, Decision and Control","Springer Undergraduate Texts in Philosophy","Undergraduate Topics in Computer Science","Springer Texts in Business and Economics",null,null,"Advanced Textbooks in Control and Signal Processing","Advanced Textbooks in Control and Signal Processing",null,"Advanced Textbooks in Control and Signal Processing",null,null,"Undergraduate Texts in Mathematics","Springer Undergraduate Texts in Philosophy",null,null,"Undergraduate Lecture Notes in Physics",null,"Undergraduate Lecture Notes in Physics",null,null,"Texts in Computer Science",null,null,null,null,null,null,"Lecture Notes in Educational Technology",null,null,null,null,"Springer Texts in Education","Progress in IS",null,null,null,"Springer Texts in Business and Economics",null,null,"Essential Clinical Social Work Series",null,null,"International Series in Operations Research & Management Science","Springer Texts in Education","Intelligent Systems Reference Library",null,"Undergraduate Topics in Computer Science","Undergraduate Topics in Computer Science","Food Microbiology and Food Safety",null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"18",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"228",null,null,null,null,"124",null,null,null,null,null,null,null,null,null,null,null,null,"163",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"249",null,null,"267",null,null,"22",null,null,null,null,"274",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"118",null,null,null,null,null,null,null,null,"6",null,null,null,null,null,null,null,null,null,null,null,null,"1","11",null,null,null,"214",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"218",null,null,null,null,null,null,null,"129",null,null,null,null,null,"211",null,null,"196",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"103",null,null,null,null,null,null,"4",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"30",null,null,"113",null,null,null,null,null,null,"37",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"73",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"33",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"3","185",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"264",null,"163",null,null,null,null,null],["http://doi.org/10.1007/b100747","http://doi.org/10.1007/b100507","http://doi.org/10.1007/978-0-387-21736-9","http://doi.org/10.1007/b99417","http://doi.org/10.1007/b97469","http://doi.org/10.1007/0-387-28117-7","http://doi.org/10.1007/b104645","http://doi.org/10.1007/978-0-387-32353-4","http://doi.org/10.1007/0-387-36218-5","http://doi.org/10.1007/0-387-36274-6","http://doi.org/10.1007/978-0-387-36601-2","http://doi.org/10.1007/978-0-387-37575-5","http://doi.org/10.1007/978-0-387-40065-5","http://doi.org/10.1007/978-0-387-45524-2","http://doi.org/10.1007/978-0-387-46271-4","http://doi.org/10.1007/978-0-387-46312-4","http://doi.org/10.1007/978-0-387-49312-1","http://doi.org/10.1007/978-0-387-68566-3","http://doi.org/10.1007/978-0-387-72071-5","http://doi.org/10.1007/978-0-387-72579-6","http://doi.org/10.1007/978-0-387-74365-3","http://doi.org/10.1007/978-0-387-75959-3","http://doi.org/10.1007/978-0-387-76501-3","http://doi.org/10.1007/978-0-387-77650-7","http://doi.org/10.1007/978-0-387-78341-3","http://doi.org/10.1007/978-0-387-79054-1","http://doi.org/10.1007/978-0-387-84858-7","http://doi.org/10.1007/978-0-387-87573-6","http://doi.org/10.1007/978-0-387-88698-5","http://doi.org/10.1007/978-0-387-88963-4","http://doi.org/10.1007/978-0-387-93837-0","http://doi.org/10.1007/978-1-4020-5719-9","http://doi.org/10.1007/978-1-4020-6099-1","http://doi.org/10.1007/978-1-4020-6808-9","http://doi.org/10.1007/978-3-642-35963-7","http://doi.org/10.1007/978-3-662-44874-8","http://doi.org/10.1007/978-3-319-03762-2","http://doi.org/10.1007/978-3-319-56194-3","http://doi.org/10.1007/978-1-4614-0400-2","http://doi.org/10.1007/978-3-319-27877-3","http://doi.org/10.1007/978-3-319-44794-0","http://doi.org/10.1007/978-1-4419-9479-0","http://doi.org/10.1007/978-3-319-18842-3","http://doi.org/10.1007/978-3-319-48936-0","http://doi.org/10.1007/978-3-319-21239-5","http://doi.org/10.1007/978-3-7091-0715-7","http://doi.org/10.1007/978-1-4419-6488-5","http://doi.org/10.1007/978-3-319-01851-5","http://doi.org/10.1007/978-1-4939-3058-6","http://doi.org/10.1007/978-3-319-26551-3","http://doi.org/10.1007/978-3-662-46321-5","http://doi.org/10.1007/978-3-319-13072-9","http://doi.org/10.1007/978-1-4614-4556-2","http://doi.org/10.1007/978-1-4615-1077-2","http://doi.org/10.1007/978-3-319-02099-0","http://doi.org/10.1007/978-3-642-37434-0","http://doi.org/10.1007/978-981-10-2045-2","http://doi.org/10.1007/978-3-319-57040-2","http://doi.org/10.1007/978-3-319-23042-9","http://doi.org/10.1007/978-3-319-53883-9","http://doi.org/10.1007/978-90-481-2516-6","http://doi.org/10.1007/978-1-4899-7454-9","http://doi.org/10.1007/978-3-662-53785-5","http://doi.org/10.1007/978-3-319-51118-4","http://doi.org/10.1007/978-3-319-57589-6","http://doi.org/10.1007/978-1-4419-1120-9","http://doi.org/10.1007/978-3-642-23026-4","http://doi.org/10.1007/978-3-319-44738-4","http://doi.org/10.1007/978-3-319-05699-9","http://doi.org/10.1007/978-3-319-47831-9","http://doi.org/10.1007/978-3-319-31791-5","http://doi.org/10.1007/978-3-642-54083-7","http://doi.org/10.1007/978-1-4612-1844-9","http://doi.org/10.1007/978-1-84800-070-4","http://doi.org/10.1007/978-3-642-19864-9","http://doi.org/10.1007/978-3-319-61088-7","http://doi.org/10.1007/978-3-319-46162-5","http://doi.org/10.1007/978-3-319-33916-0","http://doi.org/10.1007/978-3-319-32862-1","http://doi.org/10.1007/978-3-642-30250-3","http://doi.org/10.1007/978-1-4939-1194-3","http://doi.org/10.1007/978-1-4613-0139-4","http://doi.org/10.1007/978-3-319-54064-1","http://doi.org/10.1007/978-1-4614-7116-5","http://doi.org/10.1007/978-3-319-43341-7","http://doi.org/10.1007/978-1-4419-0641-0","http://doi.org/10.1007/978-1-4419-5653-8","http://doi.org/10.1007/978-3-319-12682-1","http://doi.org/10.1007/978-1-4471-7307-6","http://doi.org/10.1007/978-3-662-53045-0","http://doi.org/10.1007/978-3-642-33143-5","http://doi.org/10.1007/978-3-319-31089-3","http://doi.org/10.1007/978-3-319-12742-2","http://doi.org/10.1007/978-3-319-52250-0","http://doi.org/10.1007/978-1-4471-5134-0","http://doi.org/10.1007/978-3-319-28887-1","http://doi.org/10.1007/978-1-4419-9504-9","http://doi.org/10.1007/978-3-662-45171-7","http://doi.org/10.1007/978-3-8349-6331-4","http://doi.org/10.1007/978-1-84882-935-0","http://doi.org/10.1007/978-3-319-07806-9","http://doi.org/10.1007/978-3-319-14142-8","http://doi.org/10.1007/978-3-642-37314-5","http://doi.org/10.1007/978-3-642-20951-2","http://doi.org/10.1007/978-3-319-50091-1","http://doi.org/10.1007/978-3-540-77974-2","http://doi.org/10.1007/978-3-319-19596-4","http://doi.org/10.1007/978-3-662-53022-1","http://doi.org/10.1007/978-1-4471-4474-8","http://doi.org/10.1007/978-3-319-54413-7","http://doi.org/10.1007/978-3-642-37902-4","http://doi.org/10.1007/978-3-319-46394-0","http://doi.org/10.1007/978-1-4939-6374-4","http://doi.org/10.1007/978-1-4612-4374-8","http://doi.org/10.1007/978-3-319-59731-7","http://doi.org/10.1007/978-3-319-22309-4","http://doi.org/10.1007/978-3-642-30319-7","http://doi.org/10.1007/978-1-4614-2212-9","http://doi.org/10.1007/978-3-662-49887-3","http://doi.org/10.1007/978-94-007-5757-8","http://doi.org/10.1007/978-3-319-14941-7","http://doi.org/10.1007/978-1-4939-2122-5","http://doi.org/10.1007/978-3-319-58307-5","http://doi.org/10.1007/978-1-4614-6271-2","http://doi.org/10.1007/978-3-319-21936-3","http://doi.org/10.1007/978-3-319-09351-2","http://doi.org/10.1007/978-3-319-21990-5","http://doi.org/10.1007/978-1-4614-9170-5","http://doi.org/10.1007/978-3-642-55309-7","http://doi.org/10.1007/978-1-4471-5201-9","http://doi.org/10.1007/978-1-4939-2614-5","http://doi.org/10.1007/978-3-319-20451-2","http://doi.org/10.1007/978-1-4612-4360-1","http://doi.org/10.1007/978-3-319-09171-6","http://doi.org/10.1007/978-94-007-1171-6","http://doi.org/10.1007/978-3-319-23012-2","http://doi.org/10.1007/978-1-4614-4809-9","http://doi.org/10.1007/978-1-4419-0925-1","http://doi.org/10.1007/978-3-658-07884-3","http://doi.org/10.1007/978-3-319-27265-8","http://doi.org/10.1007/978-3-319-57883-5","http://doi.org/10.1007/978-3-319-31650-5","http://doi.org/10.1007/978-3-319-01195-0","http://doi.org/10.1007/978-3-319-54349-9","http://doi.org/10.1007/978-3-662-43715-5","http://doi.org/10.1007/978-981-4560-67-2","http://doi.org/10.1007/978-3-319-23428-1","http://doi.org/10.1007/978-94-007-1211-9","http://doi.org/10.1007/978-3-319-27104-0","http://doi.org/10.1007/978-3-319-55444-0","http://doi.org/10.1007/978-3-319-63913-0","http://doi.org/10.1007/978-3-319-44561-8","http://doi.org/10.1007/978-3-642-34132-8","http://doi.org/10.1007/978-1-4614-3954-7","http://doi.org/10.1007/978-3-319-29854-2","http://doi.org/10.1007/978-3-319-55615-4","http://doi.org/10.1007/978-3-319-46407-7","http://doi.org/10.1007/978-1-4419-9982-5","http://doi.org/10.1007/978-3-319-53919-5","http://doi.org/10.1007/978-3-319-24551-5","http://doi.org/10.1007/978-981-10-1802-2","http://doi.org/10.1007/978-1-4471-6419-7","http://doi.org/10.1007/978-1-4939-6572-4","http://doi.org/10.1007/978-1-84800-322-4","http://doi.org/10.1007/978-1-4614-6940-7","http://doi.org/10.1007/978-1-4612-0979-9","http://doi.org/10.1007/978-3-319-11080-6","http://doi.org/10.1007/978-3-642-30304-3","http://doi.org/10.1007/978-3-319-29716-3","http://doi.org/10.1007/978-3-642-04101-3","http://doi.org/10.1007/978-3-319-24346-7","http://doi.org/10.1007/978-1-4613-0041-0","http://doi.org/10.1007/978-1-4939-2712-8","http://doi.org/10.1007/978-3-540-76504-2","http://doi.org/10.1007/978-1-4614-7630-6","http://doi.org/10.1007/978-3-319-33405-9","http://doi.org/10.1007/978-3-319-31036-7","http://doi.org/10.1007/978-1-4939-1151-6","http://doi.org/10.1007/978-3-642-40975-2","http://doi.org/10.1007/978-1-4614-3618-8","http://doi.org/10.1007/978-3-319-10091-3","http://doi.org/10.1007/978-1-4614-3523-5","http://doi.org/10.1007/978-3-319-62872-1","http://doi.org/10.1007/978-3-319-56475-3","http://doi.org/10.1007/978-1-4614-5538-7","http://doi.org/10.1007/978-3-319-00401-3","http://doi.org/10.1007/978-3-319-03623-6","http://doi.org/10.1007/978-3-319-19464-6","http://doi.org/10.1007/978-3-642-20556-9","http://doi.org/10.1007/978-1-4614-6227-9","http://doi.org/10.1007/978-3-319-54398-7","http://doi.org/10.1007/978-3-319-13809-1","http://doi.org/10.1007/978-94-017-8771-0","http://doi.org/10.1007/978-1-4939-2113-3","http://doi.org/10.1007/978-3-319-22951-5","http://doi.org/10.1007/978-4-431-54526-2","http://doi.org/10.1007/978-1-4419-6646-9","http://doi.org/10.1007/978-3-319-65867-4","http://doi.org/10.1007/978-1-4614-7138-7","http://doi.org/10.1007/978-3-319-00894-3","http://doi.org/10.1007/978-3-319-44048-4","http://doi.org/10.1007/978-3-319-12493-3","http://doi.org/10.1007/978-1-4614-9236-8","http://doi.org/10.1007/978-981-287-212-8","http://doi.org/10.1007/978-3-642-28980-4","http://doi.org/10.1007/978-3-319-29791-0","http://doi.org/10.1007/978-1-84628-642-1","http://doi.org/10.1007/978-3-642-20059-5","http://doi.org/10.1007/978-3-319-51412-3","http://doi.org/10.1007/978-3-319-20600-4","http://doi.org/10.1007/978-3-319-19425-7","http://doi.org/10.1007/978-3-662-54817-2","http://doi.org/10.1007/978-3-319-44127-6","http://doi.org/10.1007/978-1-4614-6786-1","http://doi.org/10.1007/978-3-319-24331-3","http://doi.org/10.1007/978-3-319-50651-7","http://doi.org/10.1007/978-3-662-54486-0","http://doi.org/10.1007/978-1-4614-3987-5","http://doi.org/10.1007/978-3-540-93804-0","http://doi.org/10.1007/978-1-4614-8933-7","http://doi.org/10.1007/978-3-319-50319-6","http://doi.org/10.1007/978-3-319-39439-8","http://doi.org/10.1007/978-3-319-57750-0","http://doi.org/10.1007/978-3-319-05290-8","http://doi.org/10.1007/978-3-319-01769-3","http://doi.org/10.1007/978-94-007-6863-5","http://doi.org/10.1007/978-1-4939-0867-7","http://doi.org/10.1007/1-84628-168-7","http://doi.org/10.1007/978-1-4419-7288-0","http://doi.org/10.1007/978-3-540-69934-7","http://doi.org/10.1007/978-3-319-49810-2","http://doi.org/10.1007/978-3-319-14240-1","http://doi.org/10.1007/978-3-319-21173-2","http://doi.org/10.1007/978-3-658-10183-1","http://doi.org/10.1007/978-3-319-45776-5","http://doi.org/10.1007/978-1-4939-1911-6","http://doi.org/10.1007/978-3-319-15195-3","http://doi.org/10.1007/978-1-4614-7807-2","http://doi.org/10.1007/978-1-4757-0576-8","http://doi.org/10.1007/978-3-319-29659-3","http://doi.org/10.1007/978-1-4614-6486-0","http://doi.org/10.1007/978-1-4471-6642-9","http://doi.org/10.1007/978-1-4899-7550-8","http://doi.org/10.1007/978-3-540-32899-5","http://doi.org/10.1007/978-3-319-24280-4","http://doi.org/10.1007/978-1-4614-3143-5","http://doi.org/10.1007/978-3-319-19587-2","http://doi.org/10.1007/978-1-4939-2623-7","http://doi.org/10.1007/978-3-540-27752-1","http://doi.org/10.1007/978-3-319-50017-1","http://doi.org/10.1007/978-1-4614-7946-8","http://doi.org/10.1007/978-3-319-61185-3","http://doi.org/10.1007/978-3-662-46950-7","http://doi.org/10.1007/978-3-319-18539-2","http://doi.org/10.1007/978-3-319-16874-6","http://doi.org/10.1007/978-3-319-25970-3","http://doi.org/10.1007/978-1-4614-6849-3","http://doi.org/10.1007/978-3-319-34195-8","http://doi.org/10.1007/978-94-017-7242-6","http://doi.org/10.1007/978-3-319-15666-8","http://doi.org/10.1007/978-3-319-23880-7","http://doi.org/10.1007/978-3-319-49875-1","http://doi.org/10.1007/978-3-319-18398-5","http://doi.org/10.1007/978-94-007-6113-1","http://doi.org/10.1007/978-1-4939-2766-1","http://doi.org/10.1007/978-1-4614-2197-9","http://doi.org/10.1007/978-3-319-14777-2","http://doi.org/10.1007/978-1-4614-9138-5","http://doi.org/10.1007/978-1-4612-1272-0","http://doi.org/10.1007/978-1-4471-5361-0","http://doi.org/10.1007/978-1-4471-5601-7","http://doi.org/10.1007/978-1-4471-6684-9","http://doi.org/10.1007/978-1-4614-9126-2","http://doi.org/10.1007/978-1-4757-2519-3","http://doi.org/10.1007/978-3-319-55606-2","http://doi.org/10.1007/978-3-319-57252-9","http://doi.org/10.1007/978-3-319-25675-7","http://doi.org/10.1007/978-1-4614-8687-9","http://doi.org/10.1007/978-3-642-20144-8","http://doi.org/10.1007/978-1-4614-4262-2","http://doi.org/10.1007/978-0-387-44899-2","http://doi.org/10.1007/978-0-387-71481-3","http://doi.org/10.1007/978-3-319-14454-2","http://doi.org/10.1007/978-3-319-48848-6","http://doi.org/10.1007/978-3-319-49849-2","http://doi.org/10.1007/978-3-319-58715-8","http://doi.org/10.1007/978-3-319-64786-9","http://doi.org/10.1007/978-3-319-65451-5","http://doi.org/10.1007/978-981-10-5218-7","http://doi.org/10.1007/978-1-4939-6676-9","http://doi.org/10.1007/978-3-319-61158-7","http://doi.org/10.1007/978-3-319-66631-0","http://doi.org/10.1007/978-3-319-70920-8","http://doi.org/10.1007/978-3-319-70790-7","http://doi.org/10.1007/978-3-319-63133-2","http://doi.org/10.1007/978-3-662-49279-6","http://doi.org/10.1007/978-3-319-64410-3","http://doi.org/10.1007/978-3-319-66772-0","http://doi.org/10.1007/978-3-319-68588-5","http://doi.org/10.1007/978-3-319-68598-4","http://doi.org/10.1007/978-3-319-72547-5","http://doi.org/10.1007/978-3-319-58487-4","http://doi.org/10.1007/978-3-319-67395-0","http://doi.org/10.1007/978-3-319-65439-3","http://doi.org/10.1007/978-3-319-73004-2","http://doi.org/10.1007/978-3-319-66219-0","http://doi.org/10.1007/978-3-319-75771-1","http://doi.org/10.1007/978-3-319-73123-0","http://doi.org/10.1007/978-94-024-1144-7","http://doi.org/10.1007/978-3-662-56272-7","http://doi.org/10.1007/978-3-662-56509-4","http://doi.org/10.1007/978-3-319-68834-3","http://doi.org/10.1007/978-3-319-73132-2","http://doi.org/10.1007/978-3-319-65094-4","http://doi.org/10.1007/978-3-319-72682-3","http://doi.org/10.1007/978-3-319-59978-6","http://doi.org/10.1007/978-3-319-65682-3","http://doi.org/10.1007/978-3-319-77649-1","http://doi.org/10.1007/978-3-319-76442-9","http://doi.org/10.1007/978-3-319-78729-9","http://doi.org/10.1057/978-1-349-95348-6","http://doi.org/10.1007/978-3-319-68301-0","http://doi.org/10.1007/978-3-319-78361-1","http://doi.org/10.1007/978-3-319-77809-9","http://doi.org/10.1007/978-3-662-55381-7","http://doi.org/10.1007/978-3-319-77425-1","http://doi.org/10.1007/978-981-13-0399-9","http://doi.org/10.1007/978-3-319-91041-3","http://doi.org/10.1007/978-3-319-74965-5","http://doi.org/10.1007/978-3-662-57265-8","http://doi.org/10.1007/978-981-13-1090-4","http://doi.org/10.1007/978-3-319-78181-5","http://doi.org/10.1007/978-3-319-89491-1","http://doi.org/10.1007/978-3-319-91722-1","http://doi.org/10.1007/978-3-319-72911-4","http://doi.org/10.1007/978-3-319-91575-3","http://doi.org/10.1007/978-3-319-92207-2","http://doi.org/10.1007/978-3-319-95381-6","http://doi.org/10.1007/978-3-319-63588-0","http://doi.org/10.1007/978-3-319-91890-7","http://doi.org/10.1007/978-3-319-89292-4","http://doi.org/10.1007/978-3-319-72314-3","http://doi.org/10.1007/978-3-319-75502-1","http://doi.org/10.1007/978-3-319-75708-7","http://doi.org/10.1007/978-3-319-92804-3","http://doi.org/10.1007/978-3-319-94463-0","http://doi.org/10.1007/978-3-319-72347-1","http://doi.org/10.1007/978-3-319-92429-8","http://doi.org/10.1007/978-3-319-95762-3","http://doi.org/10.1007/978-3-319-92333-8","http://doi.org/10.1007/978-981-13-2475-8","http://doi.org/10.1007/978-3-662-56707-4","http://doi.org/10.1007/978-3-319-94313-8","http://doi.org/10.1007/978-3-319-98833-7","http://doi.org/10.1007/978-3-319-97298-5","http://doi.org/10.1007/978-3-030-02405-5","http://doi.org/10.1007/978-3-319-77434-3","http://doi.org/10.1007/978-3-319-91155-7","http://doi.org/10.1007/978-3-319-96622-9","http://doi.org/10.1007/978-3-319-96713-4","http://doi.org/10.1007/978-3-030-00581-8","http://doi.org/10.1007/978-981-10-8297-9","http://doi.org/10.1007/978-981-10-8321-1","http://doi.org/10.1007/978-981-13-0785-0","http://doi.org/10.1007/978-3-319-75804-6","http://doi.org/10.1007/978-3-319-99516-8","http://doi.org/10.1007/978-3-319-99118-4","http://doi.org/10.1007/978-3-030-02604-2","http://doi.org/10.1007/978-3-030-03255-5","http://doi.org/10.1007/978-3-319-94743-3","http://doi.org/10.1007/978-981-13-2023-1","http://doi.org/10.1007/978-3-030-00464-4","http://doi.org/10.1007/978-3-319-77315-5","http://doi.org/10.1007/978-3-030-00467-5","http://doi.org/10.1007/978-3-030-01279-3","http://doi.org/10.1007/978-3-030-04516-6","http://doi.org/10.1007/978-3-319-99420-8","http://doi.org/10.1007/978-3-319-71288-8","http://doi.org/10.1007/978-3-319-72000-5","http://doi.org/10.1007/978-3-030-05609-4","http://doi.org/10.1007/978-3-319-74373-8","http://doi.org/10.1007/978-3-319-96337-2","http://doi.org/10.1007/978-3-030-05900-2","http://doi.org/10.1007/978-981-13-6643-7","http://doi.org/10.1007/978-3-030-10552-5","http://doi.org/10.1007/978-3-319-98875-7","http://doi.org/10.1007/978-3-030-12489-2","http://doi.org/10.1007/978-981-13-3621-8","http://doi.org/10.1007/978-3-319-74746-0","http://doi.org/10.1007/978-3-030-13005-3","http://doi.org/10.1007/978-3-030-13605-5","http://doi.org/10.1007/978-3-030-00710-2","http://doi.org/10.1007/978-3-030-12727-5","http://doi.org/10.1007/978-3-030-13020-6","http://doi.org/10.1007/978-3-030-15671-8","http://doi.org/10.1007/978-3-030-11117-5","http://doi.org/10.1007/978-3-030-15224-6","http://doi.org/10.1007/978-3-030-18435-3","http://doi.org/10.1007/978-3-030-13788-5","http://doi.org/10.1007/978-3-319-68837-4","http://doi.org/10.1007/978-981-13-7496-8","http://doi.org/10.1007/978-981-13-8759-3","http://doi.org/10.1007/978-3-030-19182-5","http://doi.org/10.1007/978-3-030-20290-3","http://doi.org/10.1007/978-3-030-25943-3","http://doi.org/10.1007/978-1-4939-9621-6","http://doi.org/10.1007/978-3-662-56233-8"],["<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>","<a href=https://www.statsandr.com/blog/a-package-to-download-free-springer-books-during-covid-19-quarantine/ rel="nofollow" target="_blank">SpringerLink<\/a>"],["Engineering; Circuits and Systems; Energy, general; Electronics and Microelectronics, Instrumentation; Energy Systems","Social Sciences; Sociology, general; Clinical Psychology; Population Economics","Mathematics; Computational Mathematics and Numerical Analysis; Probability Theory and Stochastic Processes; Complex Systems; Statistical Theory and Methods; Probability and Statistics in Computer Science; Statistics for Engineering, Physics, Computer Science, Chemistry and Earth Sciences","Psychology; Clinical Psychology; Personality and Social Psychology; Community and Environmental Psychology","Mathematics; Combinatorics; Number Theory","Biomedicine; Neurosciences; Anatomy; Neurobiology","Engineering; Communications Engineering, Networks; Mathematical Software; Mathematical and Computational Engineering; Signal, Image and Speech Processing; Probability Theory and Stochastic Processes; Fourier Analysis","Social Sciences; Sociology, general; Public Health; Demography","Social Sciences; Sociology, general; Social Sciences, general; Personality and Social Psychology","Social Sciences; Sociology, general; Political Science","Psychology; Neuropsychology; Psychiatry; Anatomy; Psychology, general","Psychology; Neuropsychology; Rehabilitation; Behavioral Therapy; Rehabilitation Medicine","Mathematics; Optimization; Calculus of Variations and Optimal Control; Optimization; Systems Theory, Control; Computational Mathematics and Numerical Analysis; Operations Research/Decision Theory","Life Sciences; Biochemistry, general; Biotechnology","Materials Science; Ceramics, Glass, Composites, Natural Materials; Industrial and Production Engineering; Characterization and Evaluation of Materials; Inorganic Chemistry; Nanotechnology","Chemistry; Mass Spectrometry; Analytical Chemistry; Biological and Medical Physics, Biophysics; Biochemistry, general; Biotechnology; Physical Chemistry","Biomedicine; Human Physiology; Biological and Medical Physics, Biophysics; Biomedical Engineering; Sports Medicine","Medicine & Public Health; Rheumatology; Orthopedics; Dermatology; Primary Care Medicine; Internal Medicine; Endocrinology","Social Sciences; Archaeology; Cultural Heritage","Business and Management; Market Research/Competitive Intelligence; Marketing; Management; Innovation/Technology Management","Materials Science; Ceramics, Glass, Composites, Natural Materials; Engineering Design; Polymer Sciences; Mechanical Engineering; Civil Engineering","Mathematics; Probability Theory and Stochastic Processes; Statistical Theory and Methods; Actuarial Sciences","Materials Science; Characterization and Evaluation of Materials; Nanotechnology; Solid State Physics; Spectroscopy and Microscopy","Criminology and Criminal Justice; Criminology and Criminal Justice, general; Statistics for Social Science, Behavorial Science, Education, Public Policy, and Law; Methodology of the Social Sciences","Life Sciences; Plant Ecology; Plant Physiology; Plant Sciences; Ecology; Plant Anatomy/Development; Ecosystems","Mathematics; Probability Theory and Stochastic Processes; Statistics and Computing/Statistics Programs; Bioinformatics; Computer Appl. in Life Sciences","Computer Science; Data Mining and Knowledge Discovery; Probability Theory and Stochastic Processes; Statistical Theory and Methods; Computational Biology/Bioinformatics; Computer Appl. in Life Sciences","Psychology; Clinical Psychology; Religious Studies, general","Mathematics; Probability Theory and Stochastic Processes; Statistical Theory and Methods; Probability and Statistics in Computer Science; Marketing; Econometrics; Signal, Image and Speech Processing","Psychology; Child and School Psychology; Neuropsychology","Statistics; Statistics and Computing/Statistics Programs; Theoretical Ecology/Statistics; Statistics for Life Sciences, Medicine, Health Sciences","Geography; Geomorphology; Physical Geography; Geoecology/Natural Processes; Hydrogeology","Biomedicine; Biomedicine, general; Evolutionary Biology; Microbial Genetics and Genomics; Popular Science in Nature and Environment","Engineering; Mechanical Engineering; Engineering Design; Structural Materials; Metallic Materials","Physics; Astrophysics and Astroparticles; Space Sciences (including Extraterrestrial Physics, Space Exploration and Astronautics); Astrobiology","Computer Science; Computational Intelligence; Theory of Computation; Robotics and Automation; Optimization","Physics; Mathematical Methods in Physics; Mathematical and Computational Engineering; Statistics for Engineering, Physics, Computer Science, Chemistry and Earth Sciences; Math. Applications in Chemistry; Numerical and Computational Physics, Simulation","Psychology; Clinical Psychology","Energy; Energy Systems; Power Electronics, Electrical Machines and Networks; Machinery and Machine Elements; Mechatronics; Industrial and Production Engineering","Physics; Classical Mechanics; Thermodynamics","Psychology; Child and School Psychology; Behavioral Therapy","Mathematics; Mathematical Logic and Foundations; Analysis; Number Theory","Business and Management; Operations Research/Decision Theory; Operations Research, Management Science; Mathematical Modeling and Industrial Mathematics; Engineering Economics, Organization, Logistics, Marketing","Mathematics; Partial Differential Equations; Mathematical Applications in the Physical Sciences","Energy; Energy Storage; Optical and Electronic Materials; Renewable and Green Energy; Electrochemistry","Biomedicine; Human Physiology; Metabolic Diseases; Biochemistry, general; Metabolomics","Chemistry; Food Science; Neurochemistry; Receptors","Engineering; Mechanical Engineering; Robotics and Automation","Biomedicine; Human Physiology; Medical Biochemistry; Animal Biochemistry; Medicinal Chemistry","Philosophy; Philosophy of Science; History and Philosophical Foundations of Physics; Mathematical Logic and Foundations","Physics; Quantum Physics; Elementary Particles, Quantum Field Theory","Computer Science; Data Structures; Python; Algorithm Analysis and Problem Complexity; Programming Techniques","Social Sciences; Family; Gender Studies; Public Health; Social Policy","Biomedicine; Neurosciences; Neurology","Mathematics; Partial Differential Equations; Complex Systems; Fourier Analysis","Economics; Microeconomics; International Political Economy","Economics; Agricultural Economics; Mathematical Modeling and Industrial Mathematics; Mathematical and Computational Engineering; Industrial Organization","Physics; Cosmology; Classical and Quantum Gravitation, Relativity Theory; Particle and Nuclear Physics; History and Philosophical Foundations of Physics; Philosophy of Religion","Mathematics; Ordinary Differential Equations; Partial Differential Equations; Mathematical Applications in the Physical Sciences; Mathematical Modeling and Industrial Mathematics; Calculus of Variations and Optimal Control; Optimization","Engineering; Circuits and Systems; Processor Architectures; Logic Design","Engineering; Mechanical Engineering; Astronomy, Astrophysics and Cosmology; Aerospace Technology and Astronautics; Theoretical and Applied Mechanics","Chemistry; Industrial Chemistry/Chemical Engineering; Engineering Thermodynamics, Heat and Mass Transfer; Engineering Fluid Dynamics; Mechanical Engineering; Thermodynamics","Business and Management; Operations Management; Risk Management","Engineering; Power Electronics, Electrical Machines and Networks; Energy Systems; Control","Economics; Microeconomics; Behavioral/Experimental Economics; History of Economic Thought/Methodology; Game Theory; Institutional/Evolutionary Economics","Engineering; Engineering Design; Industrial Chemistry/Chemical Engineering; Industrial and Production Engineering; Mechanical Engineering","Physics; Classical and Continuum Physics; Classical Mechanics; Classical Electrodynamics; Magnetism, Magnetic Materials; Mechanical Engineering; Electrical Engineering","Biomedicine; Human Physiology; Sports Medicine; Biomedical Engineering; Biomedical Engineering/Biotechnology; Orthopedics; Rehabilitation","Earth Sciences; Hydrogeology; Water Industry/Water Technologies; Soil Science & Conservation; Geoengineering, Foundations, Hydraulics","Popular Science; Popular Computer Science; Programming Techniques","Psychology; Cognitive Psychology","Physics; Astronomy, Astrophysics and Cosmology","Computer Science; Computation by Abstract Devices; Algorithm Analysis and Problem Complexity","Computer Science; Software Engineering/Programming and Operating Systems; Programming Techniques; Algorithm Analysis and Problem Complexity; Theory of Computation; Algorithms; Discrete Mathematics in Computer Science","Chemistry; Physical Chemistry; Thermodynamics; Engineering Thermodynamics, Heat and Mass Transfer; Industrial Chemistry/Chemical Engineering; Materials Science, general; Biochemistry, general","Physics; Numerical and Computational Physics, Simulation; Mathematical Applications in the Physical Sciences; Mathematical and Computational Engineering; Theoretical and Computational Chemistry","Statistics; Statistical Theory and Methods; Statistics for Business/Economics/Mathematical Finance/Insurance; Econometrics; Macroeconomics/Monetary Economics//Financial Economics","Education; Language Education; Learning and Instruction; Sociology of Education","Economics; Econometrics; Macroeconomics/Monetary Economics//Financial Economics; Statistics for Business/Economics/Mathematical Finance/Insurance","Chemistry; Electrochemistry; Energy Storage; Optical and Electronic Materials; Thermodynamics; Electrical Engineering","Mathematics; Fourier Analysis; Abstract Harmonic Analysis; Functional Analysis","Biomedicine; Human Genetics; Anatomy; Cell Biology; Life Sciences, general; Molecular Medicine","Life Sciences; Evolutionary Biology; Human Genetics; Bioinformatics; Microbial Genetics and Genomics; Animal Genetics and Genomics","Mathematics; Mathematical Physics; Mathematical Applications in the Physical Sciences; Quantum Physics; Functional Analysis; Topological Groups, Lie Groups; Mathematical Methods in Physics","Medicine & Public Health; Intensive / Critical Care Medicine","Psychology; Child and School Psychology; Psychotherapy and Counseling; Education, general","Business and Management; IT in Business; Management of Computing and Information Systems; Information Systems and Communication Service; Models and Principles; Information Systems Applications (incl.Internet); e-Commerce/e-business","Physics; Biological and Medical Physics, Biophysics; Biomedical Engineering; Neurosciences; Human Physiology; Physiological, Cellular and Medical Topics","Computer Science; Information Storage and Retrieval; Database Management; Programming Techniques","Physics; Astronomy, Astrophysics and Cosmology; Geophysics/Geodesy; Popular Science in Astronomy","Computer Science; Computer Appl. in Administrative Data Processing; Business Process Management; Information Systems Applications (incl.Internet); Software Engineering","Mathematics; Probability Theory and Stochastic Processes; Quantitative Finance; Measure and Integration; Mathematical Modeling and Industrial Mathematics; Systems Theory, Control","Computer Science; Software Engineering; Management of Computing and Information Systems","Statistics; Statistical Theory and Methods; Probability Theory and Stochastic Processes; Statistics for Engineering, Physics, Computer Science, Chemistry and Earth Sciences","Computer Science; User Interfaces and Human Computer Interaction; Software Engineering","Psychology; Psychology Research; Family; Social Policy","Life Sciences; Ecology; Terrestial Ecology; Biodiversity; Ecosystems; Plant Ecology","Statistics; Statistics for Business/Economics/Mathematical Finance/Insurance; Quantitative Finance; Economic Theory/Quantitative Economics/Mathematical Methods; Statistical Theory and Methods","Business and Management; Business Strategy/Leadership; Management; Marketing","Computer Science; Image Processing and Computer Vision","Engineering; Signal, Image and Speech Processing; Information Systems and Communication Service; Communications Engineering, Networks","Computer Science; Data Mining and Knowledge Discovery; Pattern Recognition","Economics; International Economics; European Integration; Political Economy/Economic Policy","Energy; Renewable and Green Energy; Renewable and Green Energy; Sustainable Development; Energy Systems","Business and Management; e-Business/e-Commerce; Business Information Systems","Computer Science; Theory of Computation; Geometry; Math Applications in Computer Science; Earth Sciences, general; Computer Graphics; Algorithm Analysis and Problem Complexity","Physics; Classical Mechanics; Numerical and Computational Physics, Simulation; Mathematical Methods in Physics","Energy; Energy Policy, Economics and Management; Environmental Economics; Political Economy/Economic Policy; Energy Policy, Economics and Management; Industrial Organization","Medicine & Public Health; Health Informatics; Biomedicine, general","Engineering; Robotics and Automation; Control; Image Processing and Computer Vision; Signal, Image and Speech Processing; Cognitive Psychology","Chemistry; Analytical Chemistry; Biochemistry, general; Environmental Chemistry; Inorganic Chemistry; Physical Chemistry; Geochemistry","Chemistry; Food Science; Organic Chemistry","Life Sciences; Landscape Ecology; Landscape/Regional and Urban Planning; Terrestial Ecology; Monitoring/Environmental Analysis; Theoretical Ecology/Statistics","Mathematics; Probability Theory and Stochastic Processes; Statistical Theory and Methods","Mathematics; Mathematical and Computational Biology; Mathematical Modeling and Industrial Mathematics; Ordinary Differential Equations","Physics; Plasma Physics; Nuclear Energy; Nuclear Energy; Space Sciences (including Extraterrestrial Physics, Space Exploration and Astronautics); Classical Electrodynamics","Engineering; Mechanical Engineering; Civil Engineering; Electrical Engineering; Materials Science, general; Physics, general; Mathematics, general","Chemistry; Polymer Sciences; Organic Chemistry; Physical Chemistry","Mathematics; Computational Science and Engineering; Programming Techniques; Mathematics of Computing; Numerical and Computational Physics, Simulation","Environment; Environment, general; Climate Change/Climate Change Impacts; Earth Sciences, general; Lifelong Learning/Adult Education; Geography, general; Organic Chemistry","Energy; Renewable and Green Energy; Energy Systems; Power Electronics, Electrical Machines and Networks; Energy Efficiency; Energy Harvesting","Statistics; Statistical Theory and Methods; Statistics and Computing/Statistics Programs; Statistics for Engineering, Physics, Computer Science, Chemistry and Earth Sciences","Business and Management; Business Process Management; Information Systems Applications (incl.Internet); Business Information Systems; Organization; Organizational Studies, Economic Sociology","Mathematics; Analysis; Real Functions","Computer Science; Data Structures, Cryptology and Information Theory; Mathematics of Computing; Security Science and Technology; Discrete Mathematics","Physics; Fluid- and Aerodynamics; Astrophysics and Astroparticles; Engineering Fluid Dynamics; Geophysics/Geodesy","Business and Management; Media Management; IT in Business; Marketing; e-Commerce/e-business; Human Resource Management","Criminology and Criminal Justice; Criminology and Criminal Justice, general","Business and Management; Supply Chain Management; Operations Management; IT in Business; Engineering Economics, Organization, Logistics, Marketing","Mathematics; Probability Theory and Stochastic Processes","Statistics; Statistics for Business/Economics/Mathematical Finance/Insurance; Quantitative Finance; Statistical Theory and Methods; Finance, general","Philosophy; Epistemology; Mathematical Logic and Formal Languages; Game Theory, Economics, Social and Behav. Sciences","Mathematics; Analysis","Materials Science; Nanotechnology; Nanoscale Science and Technology; Nanochemistry","Biomedicine; Biomedicine, general; Epidemiology; Public Health; Medicine/Public Health, general; Biometrics; Biostatistics","Business and Management; International Business","Mathematics; Partial Differential Equations; Theoretical, Mathematical and Computational Physics","Statistics; Statistical Theory and Methods; Statistics, general","Business and Management; Business Strategy/Leadership; Business and Management, general; Management","Physics; Numerical and Computational Physics, Simulation; Mathematical and Computational Engineering; Computational Mathematics and Numerical Analysis; Theoretical and Computational Chemistry","Computer Science; User Interfaces and Human Computer Interaction; Computer Graphics; Special Purpose and Application-Based Systems; Computer Appl. in Social and Behavioral Sciences","Education; Higher Education; Statistics for Social Science, Behavorial Science, Education, Public Policy, and Law; Printing and Publishing","Physics; Theoretical, Mathematical and Computational Physics; Mathematical Methods in Physics; Numerical and Computational Physics, Simulation; Applications of Mathematics","Criminology and Criminal Justice; Prison and Punishment; Psychotherapy and Counseling; Public Policy; Medicine/Public Health, general","Engineering; Engineering Thermodynamics, Heat and Mass Transfer; Thermodynamics; Industrial Chemistry/Chemical Engineering; Engineering Fluid Dynamics; Classical and Continuum Physics; Energy Systems","Education; Teaching and Teacher Education; Learning and Instruction; Assessment, Testing and Evaluation","Economics; Economic Theory/Quantitative Economics/Mathematical Methods; Statistics for Business/Economics/Mathematical Finance/Insurance; Quantitative Finance; Macroeconomics/Monetary Economics//Financial Economics; Econometrics; Game Theory, Economics, Social and Behav. Sciences","Biomedicine; Biomedicine, general; Chemistry/Food Science, general; Pharmacy; Medicine/Public Health, general; Computer Science, general; Life Sciences, general","Biomedicine; Biomedicine, general; Entomology; Pharmacy; Statistics for Life Sciences, Medicine, Health Sciences","Computer Science; Data Mining and Knowledge Discovery; Pattern Recognition; Big Data/Analytics; Visualization; Statistics and Computing/Statistics Programs","Computer Science; Data Mining and Knowledge Discovery; Big Data/Analytics; Computational Intelligence","Computer Science; Discrete Mathematics in Computer Science; Arithmetic and Logic Structures; Logics and Meanings of Programs; History of Computing; Mathematical Applications in Computer Science; Math Applications in Computer Science","Earth Sciences; Geology","Chemistry; Physical Chemistry; Crystallography and Scattering Methods; Protein Structure; Characterization and Evaluation of Materials; Geophysics/Geodesy","Statistics; Statistical Theory and Methods; Statistics for Business/Economics/Mathematical Finance/Insurance; Econometrics; Statistics for Engineering, Physics, Computer Science, Chemistry and Earth Sciences","Engineering; Communications Engineering, Networks; Signal, Image and Speech Processing; Input/Output and Data Communications","Medicine & Public Health; Cardiology; Biomedical Engineering; Medical and Radiation Physics; Human Physiology","Mathematics; Differential Geometry","Law; European Law; Business Taxation/Tax Law; International Economic Law, Trade Law; Financial Law/Fiscal Law; European Integration","Biomedicine; Gene Function; Neurosciences; Behavioral Sciences; Neurology","Education; Curriculum Studies; Language Education; Learning and Instruction","Mathematics; Mathematics, general","Physics; Mathematical Methods in Physics; Statistics for Engineering, Physics, Computer Science, Chemistry and Earth Sciences; Statistics for Business/Economics/Mathematical Finance/Insurance; Mathematical and Computational Engineering; Complex Systems; Statistical Physics and Dynamical Systems","Computer Science; Logics and Meanings of Programs; Mathematical Logic and Formal Languages; Discrete Mathematics in Computer Science; Math Applications in Computer Science","Business and Management; Operations Research/Decision Theory; Operations Research, Management Science","Mathematics; Topological Groups, Lie Groups","Mathematics; Linear and Multilinear Algebras, Matrix Theory","Physics; Astrophysics and Astroparticles; Fluid- and Aerodynamics; Astronomy, Astrophysics and Cosmology; Nuclear Fusion","Medicine & Public Health; Medicine/Public Health, general; Health Psychology; Anthropology; Evolutionary Biology","Computer Science; Data Structures, Cryptology and Information Theory; Programming Techniques; Communications Engineering, Networks; Circuits and Systems","Mathematics; Linear and Multilinear Algebras, Matrix Theory","Mathematics; Algebra; Commutative Rings and Algebras; Linear and Multilinear Algebras, Matrix Theory; Associative Rings and Algebras; Group Theory and Generalizations","Mathematics; Analysis","Earth Sciences; Geology; Structural Geology; Planetology","Business and Management; Operations Research/Decision Theory; Operations Research, Management Science; Optimization","Philosophy; Philosophy of Science; Epistemology; Science Education","Business and Management; Business Strategy/Leadership; Organization; Human Resource Development","Engineering; Circuits and Systems; Semiconductors; Electronics and Microelectronics, Instrumentation","Business and Management; Business Ethics; Public Administration; Business Strategy/Leadership","Mathematics; Ordinary Differential Equations","Business and Management; IT in Business; Operations Research/Decision Theory","Materials Science; Ceramics, Glass, Composites, Natural Materials; Inorganic Chemistry; Nanotechnology; Characterization and Evaluation of Materials; Optical and Electronic Materials","Chemistry; Analytical Chemistry; Monitoring/Environmental Analysis; Characterization and Evaluation of Materials; Biochemistry, general; Pharmacology/Toxicology","Engineering; Sustainable Development; Renewable and Green Energy; Sustainability Management","Psychology; Clinical Psychology; Psychiatry; Health Psychology","Physics; Numerical and Computational Physics, Simulation; Mathematical Applications in the Physical Sciences; Mathematical and Computational Engineering; Theoretical and Computational Chemistry","Social Sciences; Social Work; Public Health; Psychotherapy and Counseling; Social Policy","Biomedicine; Human Physiology; Cardiology; Biomedical Engineering; Angiology; Pathology; Cardiac Surgery","Physics; Quantum Physics; Quantum Field Theories, String Theory","Statistics; Statistics and Computing/Statistics Programs; Statistics for Social Science, Behavorial Science, Education, Public Policy, and Law; Statistics, general","Chemistry; Mass Spectrometry; Proteomics; Pharmacology/Toxicology; Monitoring/Environmental Analysis; Organic Chemistry; Forensic Science","Chemistry; Industrial Chemistry/Chemical Engineering; Theoretical and Computational Chemistry; Complex Systems; Engineering Thermodynamics, Heat and Mass Transfer; Statistical Physics and Dynamical Systems","Biomedicine; Human Physiology; Gastroenterology","Engineering; Engineering Design; Nanotechnology","Chemistry; Theoretical and Computational Chemistry; Inorganic Chemistry; Structural Materials","Physics; Classical Electrodynamics; Strongly Correlated Systems, Superconductivity; Mathematical Methods in Physics; Electrical Engineering","Statistics; Statistics for Life Sciences, Medicine, Health Sciences; Epidemiology","Physics; Quantum Physics; Philosophy of Science; History and Philosophical Foundations of Physics","Statistics; Statistical Theory and Methods; Statistics and Computing/Statistics Programs; Statistics, general","Physics; Numerical and Computational Physics, Simulation; Computer Applications in Chemistry; Particle and Nuclear Physics; Mathematical Applications in the Physical Sciences","Statistics; Statistical Theory and Methods; Probability Theory and Stochastic Processes; Statistics for Social Science, Behavorial Science, Education, Public Policy, and Law; Public Health; Psychological Methods/Evaluation; Methodology of the Social Sciences","Mathematics; Partial Differential Equations; Mathematical Methods in Physics; Community & Population Ecology","Physics; Astronomy, Astrophysics and Cosmology; Classical and Quantum Gravitation, Relativity Theory; Classical Mechanics; Theoretical and Applied Mechanics","Engineering; Quality Control, Reliability, Safety and Risk; Atmospheric Protection/Air Quality Control/Air Pollution; Environmental Engineering/Biotechnology","Chemistry; Polymer Sciences; Organic Chemistry; Soft and Granular Matter, Complex Fluids and Microfluidics; Physical Chemistry","Business and Management; Operations Research/Decision Theory; Supply Chain Management; Procurement","Engineering; Robotics and Automation; Control, Robotics, Mechatronics; Machinery and Machine Elements","Economics; Econometrics; Statistics for Social Science, Behavorial Science, Education, Public Policy, and Law; Economic Theory/Quantitative Economics/Mathematical Methods; Game Theory, Economics, Social and Behav. Sciences","Earth Sciences; Oceanography; Sedimentology; Ecology; Geoecology/Natural Processes; Marine & Freshwater Sciences","Biomedicine; Biomedicine, general; Computer Applications; Biometrics; Statistical Theory and Methods; Statistics and Computing/Statistics Programs","Statistics; Statistical Theory and Methods; Statistics for Life Sciences, Medicine, Health Sciences; Statistics and Computing/Statistics Programs","Law; European Law; International Relations; Sources and Subjects of International Law, International Organizations","Chemistry; Food Science; Industrial Chemistry/Chemical Engineering; Spectroscopy/Spectrometry","Physics; Acoustics; Neurobiology; Engineering Acoustics","Engineering; Light Construction, Steel Construction, Timber Construction; Building Construction and Design; Solid Construction; Structural Materials","Physics; Optics, Lasers, Photonics, Optical Devices; Microwaves, RF and Optical Engineering; Classical Electrodynamics","Statistics; Statistics for Business/Economics/Mathematical Finance/Insurance; Quantitative Finance; Risk Management; Business Finance","Social Sciences; Family; Psychology Research; Social Work","Physics; Condensed Matter Physics; Solid State Physics; Spectroscopy and Microscopy; Physical Chemistry; Engineering, general; Strongly Correlated Systems, Superconductivity","Chemistry; Electrochemistry; Spectroscopy/Spectrometry","Economics; Social Choice/Welfare Economics/Public Choice; Economic Theory/Quantitative Economics/Mathematical Methods; Public Economics; International Political Economy","Engineering; Circuits and Systems; Electronics and Microelectronics, Instrumentation","Computer Science; Software Engineering; Computer Engineering; Software Management; Mathematical Software","Computer Science; Image Processing and Computer Vision; Computer Communication Networks; Information Storage and Retrieval; Database Management","Business and Management; Operations Management; Engineering Economics, Organization, Logistics, Marketing; Organization","Chemistry; Theoretical and Computational Chemistry; Crystallography and Scattering Methods; Inorganic Chemistry","Psychology; Personality and Social Psychology; Social Structure, Social Inequality; Anthropology","Mathematics; Probability Theory and Stochastic Processes; Statistics for Engineering, Physics, Computer Science, Chemistry and Earth Sciences; Mathematical and Computational Engineering","Mathematics; Analysis","Chemistry; Food Science; Agriculture; Analytical Chemistry; Biochemistry, general; Nutrition","Chemistry; Physical Chemistry; Thermodynamics; Spectroscopy/Spectrometry; Electrochemistry","Computer Science; Programming Languages, Compilers, Interpreters; Python; Computational Intelligence","Engineering; Circuits and Systems; Electronics and Microelectronics, Instrumentation; Electronic Circuits and Devices","Business and Management; Trade; Sales/Distribution; Marketing","Chemistry; Food Science; Industrial Chemistry/Chemical Engineering; Spectroscopy/Spectrometry","Psychology; Child and School Psychology; Assessment, Testing and Evaluation; Social Work; Psychological Methods/Evaluation","Biomedicine; Biomedicine, general; Medicine/Public Health, general; Statistics, general; Science, Humanities and Social Sciences, multidisciplinary","Psychology; Child and School Psychology; Assessment, Testing and Evaluation; Occupational Therapy; Family; Educational Psychology; Speech Pathology","Physics; Quantum Physics; Mathematical Methods in Physics; Theoretical, Mathematical and Computational Physics; Classical Mechanics; Elementary Particles, Quantum Field Theory","Computer Science; Data Mining and Knowledge Discovery","Biomedicine; Pharmaceutical Sciences/Technology; Biomedicine, general","Computer Science; Programming Languages, Compilers, Interpreters; Python","Engineering; Mechanical Engineering; Mathematical and Computational Engineering; Computer-Aided Engineering (CAD, CAE) and Design; Computational Science and Engineering","Physics; Condensed Matter Physics; Group Theory and Generalizations; Theoretical, Mathematical and Computational Physics; Mathematical Methods in Physics; Optical and Electronic Materials","Computer Science; Programming Techniques","Engineering; Circuits and Systems; Processor Architectures; Electronics and Microelectronics, Instrumentation","Physics; Mathematical Methods in Physics; Classical Mechanics; Numerical and Computational Physics, Simulation","Biomedicine; Human Physiology; Biomedical Engineering; Theoretical and Applied Mechanics; Biochemical Engineering","Economics; Econometrics; Statistics for Business/Economics/Mathematical Finance/Insurance; Mathematical and Computational Engineering","Computer Science; Data Mining and Knowledge Discovery; Probability and Statistics in Computer Science; Pattern Recognition; Statistics and Computing/Statistics Programs","Mathematics; Calculus","Engineering; Civil Engineering; Hydrogeology; Soil Science & Conservation; Geotechnical Engineering & Applied Earth Sciences","Economics; Game Theory; Game Theory, Economics, Social and Behav. Sciences; Operations Research/Decision Theory; Microeconomics","Statistics; Statistics for Life Sciences, Medicine, Health Sciences; Public Health; Epidemiology; Cancer Research; Oncology","Engineering; Engineering Fluid Dynamics; Computational Science and Engineering; Numerical and Computational Physics, Simulation; Fluid- and Aerodynamics","Medicine & Public Health; Colorectal Surgery; General Surgery; Surgical Oncology","Statistics; Statistics for Life Sciences, Medicine, Health Sciences; Statistics and Computing/Statistics Programs; Statistics, general","Engineering; Circuits and Systems; Processor Architectures; Logic Design","Environment; Sustainable Development; Geoecology/Natural Processes; Social Sciences, general","Chemistry; Physical Chemistry; Thermodynamics","Physics; Semiconductors; Nanoscale Science and Technology; Electronics and Microelectronics, Instrumentation; Solid State Physics","Energy; Energy Harvesting; Nanotechnology and Microengineering; Renewable and Green Energy; Engineering Thermodynamics, Heat and Mass Transfer","Geography; Geographical Information Systems/Cartography; Programming Languages, Compilers, Interpreters; Information Systems Applications (incl.Internet); Earth Sciences, general","Engineering","Mathematics; Analysis","Psychology; Psychological Methods/Evaluation; Programming Techniques; Statistics and Computing/Statistics Programs; Psychometrics","Economics; Industrial Organization; Quality Control, Reliability, Safety and Risk; Accounting/Auditing; Operations Management","Chemistry; Food Science","Physics; Classical Mechanics","Mathematics; Probability Theory and Stochastic Processes; Measure and Integration; Dynamical Systems and Ergodic Theory; Functional Analysis; Complex Systems; Statistical Physics and Dynamical Systems","Computer Science; Database Management; Information Storage and Retrieval; Data Structures, Cryptology and Information Theory; Software Engineering/Programming and Operating Systems","Computer Science; Image Processing and Computer Vision; Signal, Image and Speech Processing; Computational Intelligence","Chemistry; Biochemical Engineering; Food Science; Engineering Thermodynamics, Heat and Mass Transfer; Mathematical Modeling and Industrial Mathematics","Physics; Spectroscopy and Microscopy; Surface and Interface Science, Thin Films; Solid State Physics; Characterization and Evaluation of Materials; Biological Microscopy","Computer Science; Information Storage and Retrieval; Data Storage Representation; Management of Computing and Information Systems; Computer Communication Networks","Law; Fundamentals of Law; Philosophy of Law","Physics; Quantum Physics; Quantum Optics; Optical and Electronic Materials; Nanoscale Science and Technology; Nanotechnology","Statistics; Statistics and Computing/Statistics Programs; Statistical Theory and Methods","Engineering; Robotics and Automation; Image Processing and Computer Vision; Signal, Image and Speech Processing; Machinery and Machine Elements; Cognitive Psychology","Chemistry; Industrial Chemistry/Chemical Engineering; Physical Chemistry; Renewable and Green Energy; Characterization and Evaluation of Materials","Chemistry; Organic Chemistry; Physical Chemistry; Medicinal Chemistry","Chemistry; Organic Chemistry; Pharmacy; Medicinal Chemistry","Law; International Humanitarian Law, Law of Armed Conflict; Human Rights; Public Health; Natural Hazards; Anthropology","Medicine & Public Health; Oncology; Imaging / Radiology; Surgery; Pathology; Human Genetics","Business and Management; Tourism Management; Marketing; Media and Communication","Business and Management; e-Business/e-Commerce; Business Information Systems; Operations Research/Decision Theory","Social Sciences; Social Work; Community and Environmental Psychology; Rehabilitation","Cultural and Media Studies; Popular Culture; Film and Television Studies; Medical Sociology; Medical Education","Business and Management; Market Research/Competitive Intelligence; Statistics for Business/Economics/Mathematical Finance/Insurance; Knowledge Management","Materials Science; Characterization and Evaluation of Materials; Spectroscopy and Microscopy; Biological Microscopy; Spectroscopy/Spectrometry; Measurement Science and Instrumentation","Geography; Geographical Information Systems/Cartography; Hydrogeology; Hydrology/Water Resources; Monitoring/Environmental Analysis; Regional/Spatial Science","Physics; Mathematical Methods in Physics; Mathematical Physics; Particle and Nuclear Physics; Topological Groups, Lie Groups","Philosophy; Bioethics; Medicine/Public Health, general; Medical Education","Computer Science; Programming Languages, Compilers, Interpreters; Control Structures and Microprogramming; Mathematical and Computational Engineering","Physics; Classical Electrodynamics; Atomic, Molecular, Optical and Plasma Physics; Microwaves, RF and Optical Engineering; Mathematical Applications in the Physical Sciences","Chemistry; Polymer Sciences; Organic Chemistry; Inorganic Chemistry","Computer Science; Probability and Statistics in Computer Science; Statistics and Computing/Statistics Programs","Popular Science; Popular Science in Cultural and Media Studies; Film Theory; American Cinema; Film Production; Screenwriting","Social Sciences; Social Work; Social Policy; Public Policy","Physics; Quantum Physics; Elementary Particles, Quantum Field Theory; Mathematical Applications in the Physical Sciences; Classical Mechanics","Computer Science; Programming Techniques; Algorithm Analysis and Problem Complexity; Professional Computing; Algorithms; Computers and Education","Computer Science","Life Sciences; Bioinformatics; Evolutionary Biology; Computational Biology/Bioinformatics; Computer Appl. in Life Sciences","Social Sciences; Demography; Statistics for Social Science, Behavorial Science, Education, Public Policy, and Law; Methodology of the Social Sciences","Computer Science; Pattern Recognition; Mathematical Models of Cognitive Processes and Neural Networks; Coding and Information Theory","Energy; Energy Policy, Economics and Management; Sustainable Development; Environmental Economics; Energy Policy, Economics and Management; Data-driven Science, Modeling and Theory Building; Economic Geography","Computer Science; Programming Techniques; Programming Languages, Compilers, Interpreters","Biomedicine; Biomedical Engineering/Biotechnology; Biomedical Engineering; Systems Biology; Biomaterials; Biotechnology","Business and Management; Business Ethics; Administration, Organization and Leadership; Business Strategy/Leadership; Emerging Markets/Globalization","Engineering; Structural Materials; Mechanical Engineering","Computer Science; Computer Appl. in Administrative Data Processing; Business Process Management; Information Systems Applications (incl.Internet); Software Engineering","Psychology; Clinical Psychology; Family; General Practice / Family Medicine","Computer Science; Programming Techniques; Numeric Computing; Programming Languages, Compilers, Interpreters; Math Applications in Computer Science; Software Engineering","Psychology; Cognitive Psychology; General Psychology; Personality and Social Psychology","Criminology and Criminal Justice; Criminology and Criminal Justice, general; Geriatrics/Gerontology","Business and Management; Knowledge Management; Innovation/Technology Management; Organization; Industrial Organization","Social Sciences; Archaeology","Mathematics; Group Theory and Generalizations; Associative Rings and Algebras; Field Theory and Polynomials","Criminology and Criminal Justice; Criminology and Criminal Justice, general; Psychotherapy and Counseling","Philosophy; Critical Theory; African American Culture; Philosophy of Man; Social Philosophy; African Literature","Popular Science; Popular Science in Cultural and Media Studies; Media and Communication; Semiotics; Popular Culture; Cultural Anthropology; Sociolinguistics","Life Sciences; Bioinformatics; Computer Appl. in Life Sciences; Computational Biology/Bioinformatics; Computer Applications in Chemistry","Physics; Mathematical Methods in Physics; Linear and Multilinear Algebras, Matrix Theory; Mathematical and Computational Engineering; Geometry; Math Applications in Computer Science; Mathematical Applications in the Physical Sciences","Energy; Sustainable Architecture/Green Buildings; Mechanical Engineering; Energy Efficiency; Building Physics, HVAC; Building Construction and Design","Business and Management; Customer Relationship Management; Big Data/Analytics; Business Strategy/Leadership","Education; Research Skills; Thesis and Dissertation; Higher Education; Personal Development; Writing Skills","Business and Management; Human Resource Management; Organization; Business Strategy/Leadership","Mathematics; Linear and Multilinear Algebras, Matrix Theory; Mathematical Applications in the Physical Sciences","Literature; Contemporary Literature; Postcolonial/World Literature; Human Rights and Crime; Social Justice, Equality and Human Rights; Human Rights; Terrorism and Political Violence","Mathematics; Number Theory; Geometry; Analysis; Combinatorics; Graph Theory; Mathematics of Computing","Physics; Classical and Quantum Gravitation, Relativity Theory; Astronomy, Astrophysics and Cosmology","Physics; Astrophysics and Astroparticles; Particle and Nuclear Physics","Computer Science; Java; Programming Languages, Compilers, Interpreters; Programming Techniques","Engineering; Computational Intelligence; Industrial Chemistry/Chemical Engineering","Engineering; Control, Robotics, Mechatronics","Philosophy; Business Ethics; Business Ethics; Sociology of Work; Business Strategy/Leadership; Industrial and Organizational Psychology; Human Resource Development","Physics; Quantum Physics; Mathematical Methods in Physics; Quantum Field Theories, String Theory; Mathematical Applications in the Physical Sciences","Philosophy; Business Ethics; Political Philosophy; Social Philosophy; Moral Philosophy","Computer Science; Mathematical Logic and Formal Languages; Mathematical Logic and Foundations; Control, Robotics, Mechatronics; Quality Control, Reliability, Safety and Risk","Energy; Renewable and Green Energy; Energy Systems; Energy Policy, Economics and Management; Development and Sustainability","Business and Management; Media Management; Market Research/Competitive Intelligence; Popular Science in Business and Management; Big Data/Analytics","Physics; Classical Mechanics; Mathematical Methods in Physics; Numerical and Computational Physics, Simulation; Atmospheric Sciences; Fluid- and Aerodynamics","Computer Science; Programming Languages, Compilers, Interpreters; Programming Techniques; Software Engineering","Engineering; Electronics and Microelectronics, Instrumentation; Optical and Electronic Materials; Solid State Physics; Spectroscopy and Microscopy; Nanotechnology","Engineering; Electrical Engineering; Logic Design; Algorithms","Computer Science; Information Systems and Communication Service; Processor Architectures","Computer Science; Big Data; Big Data/Analytics; Health Informatics; Probability and Statistics in Computer Science; Data Mining and Knowledge Discovery","Computer Science; Programming Techniques; Programming Languages, Compilers, Interpreters; Data Structures; Operating Systems","Business and Management; Business Finance; Risk Management; Quantitative Finance; Financial Engineering; Financial Accounting","Criminology and Criminal Justice; White Collar Crime","Education; Language Education; Applied Linguistics; English","Business and Management; Marketing; Management; Statistics for Business/Economics/Mathematical Finance/Insurance","Business and Management; Operations Management; Operations Research/Decision Theory","Computer Science; Programming Techniques; Processor Architectures; Control Structures and Microprogramming; Numeric Computing","Philosophy; Philosophy of Mathematics; Mathematical Logic and Foundations; Arithmetic and Logic Structures; Logic; Applications of Mathematics","Engineering; Control; Systems Theory, Control; Ordinary Differential Equations; Engineering Mathematics","Philosophy; Analytic Philosophy; Mathematical Logic and Formal Languages; Mathematical Logic and Foundations; Theoretical, Mathematical and Computational Physics; Moral Philosophy","Computer Science; Math Applications in Computer Science; Computational Mathematics and Numerical Analysis; Mathematical and Computational Engineering; Discrete Mathematics in Computer Science","Business and Management; Cross-Cultural Management; Business Strategy/Leadership; Human Resource Management; Business Information Systems","Cultural and Media Studies; Digital/New Media; Digital Humanities; Research Methodology; Media Research; Culture and Technology","Computer Science; Security; Forensic Science; Cybercrime; Multimedia Information Systems","Engineering; Control; Systems Theory, Control; Computer Applications","Engineering; Control; Systems Theory, Control; Computer Applications","Life Sciences; Enzymology; Protein-Ligand Interactions; Biomedical Engineering/Biotechnology; Applied Microbiology; Protein Structure","Engineering; Control; Systems Theory, Control; Power Electronics, Electrical Machines and Networks; Industrial and Production Engineering","Engineering; Communications Engineering, Networks; Electronics and Microelectronics, Instrumentation; Information Systems Applications (incl.Internet); User Interfaces and Human Computer Interaction","Social Sciences; Methodology of the Social Sciences; Statistics for Social Science, Behavorial Science, Education, Public Policy, and Law; Statistics and Computing/Statistics Programs","Mathematics; Number Theory","Philosophy; Epistemology; Mathematical Logic and Formal Languages; Mathematical Logic and Foundations","Engineering; Civil Engineering","Life Sciences; Plant Physiology; Plant Anatomy/Development; Plant Ecology; Plant Breeding/Biotechnology; Plant Genetics and Genomics","Physics; Quantum Physics; Quantum Field Theories, String Theory; Mathematical Applications in the Physical Sciences; Quantum Information Technology, Spintronics; Mathematical Methods in Physics","Life Sciences; Plant Anatomy/Development; Plant Genetics and Genomics; Microbial Genetics and Genomics","Physics; Quantum Physics; Quantum Field Theories, String Theory; Mathematical Applications in the Physical Sciences; Quantum Information Technology, Spintronics","Business and Management; Operations Research/Decision Theory; Probability Theory and Stochastic Processes; Statistics for Business/Economics/Mathematical Finance/Insurance; Organization; Business Mathematics; IT in Business","Engineering; Circuits and Systems; Processor Architectures; Logic Design","Computer Science; Programming Languages, Compilers, Interpreters; Java; Control Structures and Microprogramming; Computer System Implementation","Cultural and Media Studies; Media and Communication; Media Management; Culture and Technology; Cultural Management; Management","Cultural and Media Studies; Media and Communication; Media Management; Business Information Systems","Popular Science; Popular Science in Literature; British and Irish Literature; Early Modern/Renaissance Literature; Eighteenth-Century Literature; History of Britain and Ireland; Nineteenth-Century Literature","Engineering; Aerospace Technology and Astronautics; Space Sciences (including Extraterrestrial Physics, Space Exploration and Astronautics); Classical Mechanics; Classical and Quantum Gravitation, Relativity Theory","Psychology; Cognitive Psychology; Neuropsychology; Neurosciences; Audio-Visual Culture","Education; Research Methods in Education; Social Justice, Equality and Human Rights; Social Work; Teaching and Teacher Education","Education; Educational Technology; Computers and Education","Engineering; Circuits and Systems; Processor Architectures; Logic Design","Medicine & Public Health; Neurosurgery; Surgical Orthopedics","Engineering; Circuits and Systems; Processor Architectures; Logic Design","Social Sciences; Social Work; Social Justice, Equality and Human Rights; Political Philosophy; Children, Youth and Family Policy","Education; Administration, Organization and Leadership; Educational Policy and Politics; Schools and Schooling","Business and Management; e-Business/e-Commerce; e-Commerce/e-business; Organization; Innovation/Technology Management; Entrepreneurship","Engineering; Circuits and Systems; Processor Architectures; Logic Design","Biomedicine; Pharmaceutical Sciences/Technology; Biomedical Engineering/Biotechnology","Cultural and Media Studies; Theatre History; Performing Arts; Global/International Theatre and Performance","Business and Management; Consumer Behavior; Market Research/Competitive Intelligence; Management Education","Social Sciences; Methodology of the Social Sciences; Statistics for Social Science, Behavorial Science, Education, Public Policy, and Law; Research Methods in Education; Statistics and Computing/Statistics Programs; Statistics for Life Sciences, Medicine, Health Sciences; Statistics for Business/Economics/Mathematical Finance/Insurance","Social Sciences; Archaeology","Psychology; Psychotherapy and Counseling; Social Work; Psychotherapy; Social Policy","Psychology; Health Psychology; Public Health; Psychiatry; Social Work","Psychology; Personality and Social Psychology; Applied Psychology; Psychological Methods/Evaluation","Business and Management; Operations Research/Decision Theory; Statistics for Business/Economics/Mathematical Finance/Insurance; Big Data/Analytics","Education; Research Methods in Education; Methodology of the Social Sciences; Statistics for Social Science, Behavorial Science, Education, Public Policy, and Law; Assessment, Testing and Evaluation; Psychometrics; Research Skills","Engineering; Computational Intelligence; Big Data; Multimedia Information Systems; Information Systems Applications (incl.Internet)","Criminology and Criminal Justice; Policing; Ethnicity, Class, Gender and Crime","Computer Science; Programming Languages, Compilers, Interpreters; Python; Database Management","Computer Science; Programming Languages, Compilers, Interpreters; Python; Database Management","Life Sciences; Food Microbiology; Food Science; Criminal Law; Medicine/Public Health, general","Life Sciences; Plant Ecology; Plant Physiology; Plant Biochemistry; Plant Genetics and Genomics; Climate Change"],["Springer US","Springer US","Springer New York","Springer US","Springer New York","Springer US","Springer US","Springer New York","Springer US","Springer US","Springer New York","Springer New York","Springer New York","Springer US","Springer New York","Springer US","Springer US","Springer New York","Springer New York","Springer New York","Springer New York","Springer New York","Springer US","Springer New York","Springer New York","Springer New York","Springer New York","Springer New York","Springer New York","Springer US","Springer New York","Springer Netherlands","Springer Netherlands","Springer Netherlands","Springer Berlin Heidelberg","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer New York","Springer International Publishing","Springer International Publishing","Springer New York","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Vienna","Springer New York","Springer International Publishing","Springer New York","Springer International Publishing","Springer Berlin Heidelberg","Springer International Publishing","Springer New York","Springer US","Springer International Publishing","Springer Berlin Heidelberg","Springer Singapore","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Netherlands","Springer US","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer US","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer New York","Springer London","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer New York","Springer New York","Springer International Publishing","Springer New York","Springer International Publishing","Springer US","Springer US","Springer International Publishing","Springer London","Springer Berlin Heidelberg","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer London","Springer International Publishing","Springer New York","Springer Berlin Heidelberg","Gabler Verlag","Springer London","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer Berlin Heidelberg","Springer International Publishing","Springer Berlin Heidelberg","Springer International Publishing","Springer Berlin Heidelberg","Springer London","Springer International Publishing","Springer Berlin Heidelberg","Springer International Publishing","Springer New York","Springer New York","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer New York","Springer Berlin Heidelberg","Springer Netherlands","Springer International Publishing","Springer New York","Springer International Publishing","Springer New York","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer US","Springer Berlin Heidelberg","Springer London","Springer New York","Springer International Publishing","Springer New York","Springer International Publishing","Springer Netherlands","Springer International Publishing","Springer New York","Springer New York","Springer Fachmedien Wiesbaden","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer Singapore","Springer International Publishing","Springer Netherlands","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer US","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer New York","Springer International Publishing","Springer International Publishing","Springer Singapore","Springer London","Springer New York","Springer London","Springer US","Springer New York","Springer International Publishing","Springer Berlin Heidelberg","Springer International Publishing","Springer Berlin Heidelberg","Springer International Publishing","Springer New York","Springer New York","Springer Berlin Heidelberg","Springer US","Springer International Publishing","Springer International Publishing","Springer New York","Springer Berlin Heidelberg","Springer New York","Springer International Publishing","Springer New York","Springer International Publishing","Springer International Publishing","Springer New York","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer New York","Springer International Publishing","Springer International Publishing","Springer Netherlands","Springer New York","Springer International Publishing","Springer Japan","Springer New York","Springer International Publishing","Springer New York","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer New York","Springer Singapore","Springer Berlin Heidelberg","Springer International Publishing","Springer London","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer International Publishing","Springer New York","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer US","Springer Berlin Heidelberg","Springer New York","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Netherlands","Springer New York","Springer London","Springer New York","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Fachmedien Wiesbaden","Springer International Publishing","Springer New York","Springer International Publishing","Springer New York","Springer US","Springer International Publishing","Springer New York","Springer London","Springer US","Springer Berlin Heidelberg","Springer International Publishing","Springer New York","Springer International Publishing","Springer New York","Springer Berlin Heidelberg","Springer International Publishing","Springer New York","Springer International Publishing","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer New York","Springer International Publishing","Springer Netherlands","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Netherlands","Springer New York","Springer New York","Springer International Publishing","Springer New York","Springer New York","Springer London","Springer London","Springer London","Springer New York","Springer US","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer New York","Springer Berlin Heidelberg","Springer US","Springer US","Springer US","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Singapore","Springer New York","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Netherlands","Springer Berlin Heidelberg","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Palgrave Macmillan US","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer International Publishing","Springer Singapore","Springer International Publishing","Springer International Publishing","Springer Berlin Heidelberg","Springer Singapore","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Singapore","Springer Berlin Heidelberg","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Singapore","Springer Singapore","Springer Singapore","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Singapore","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Singapore","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Singapore","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer Singapore","Springer Singapore","Springer International Publishing","Springer International Publishing","Springer International Publishing","Springer New York","Springer Berlin Heidelberg"],["Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Gabler Verlag","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer Gabler","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Palgrave Macmillan","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer Gabler","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Palgrave Macmillan","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Palgrave Macmillan","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Palgrave Macmillan","Palgrave Macmillan","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Palgrave Macmillan","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Palgrave Macmillan","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Palgrave Macmillan","Palgrave Macmillan","Palgrave Macmillan","Springer","Palgrave Macmillan","Palgrave Macmillan","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Palgrave Macmillan","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer","Springer"]],"container":"</p><table class=\"display\">\n </p><thead>\n </p><tr>\n </p><th>book_title<\/th>\n </p><th>author<\/th>\n </p><th>edition<\/th>\n </p><th>product_type<\/th>\n </p><th>copyright_year<\/th>\n </p><th>copyright_holder<\/th>\n </p><th>print_isbn<\/th>\n </p><th>electronic_isbn<\/th>\n </p><th>language<\/th>\n </p><th>language_collection<\/th>\n </p><th>e_book_package<\/th>\n </p><th>english_package_name<\/th>\n </p><th>german_package_name<\/th>\n </p><th>series_print_issn<\/th>\n </p><th>series_electronic_issn<\/th>\n </p><th>series_title<\/th>\n </p><th>volume_number<\/th>\n </p><th>doi_url<\/th>\n </p><th>open_url<\/th>\n </p><th>subject_classification<\/th>\n </p><th>publisher<\/th>\n </p><th>imprint<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"autoWidth":true,"dom":"Blfrtip","buttons":["copy","csv","excel","pdf","print"],"pageLength":5,"order":[0,"asc"],"columnDefs":[{"className":"dt-right","targets":4}],"orderClasses":false,"orderCellsTop":true,"lengthMenu":[5,10,25,50,100]}},"evals":[],"jsHooks":[]}

Download only specific books

By title

Now, say that you are interested to download only one specific book and you know its title. For instance, suppose you want to download the book entitled “All of Statistics”:

download_springer_book_files(springer_books_titles = "All of Statistics")

If you are interested to download all books with the word “Statistics” in the title, you can run:

springer_table <- download_springer_table()library(dplyr)specific_titles_list <- springer_table %>%  filter(str_detect(    book_title, # look for a pattern in the book_title column    "Statistics" # specify the title  )) %>%  pull(book_title)download_springer_book_files(springer_books_titles = specific_titles_list)

By author

If you want to download all books from a specific author, you can run:

springer_table <- download_springer_table()# library(dplyr)specific_titles_list <- springer_table %>%  filter(str_detect(    author, # look for a pattern in the author column    "John Hunt" # specify the author  )) %>%  pull(book_title)download_springer_book_files(springer_books_titles = specific_titles_list)

By subject

You can also download all books covering a specific subject:

springer_table <- download_springer_table()# library(dplyr)specific_titles_list <- springer_table %>%  filter(str_detect(    subject_classification, # look for a pattern in the subject_calssification column    "Statistics" # specify the subject  )) %>%  pull(book_title)download_springer_book_files(springer_books_titles = specific_titles_list)

Acknowledgments

I would like to thank:

  • Renan Xavier Cortes (and all contributors) for providing this package
  • The springer_free_books project which was used as inspiration to the {springerQuarantineBooksR} package
  • And last but not least, Springer who offers many of their excellent books for free!

Thanks for reading. I hope this article will help you to download and read more high quality materials made available by Springer during this Covid-19 quarantine.

As always, if you have a question or a suggestion related to the topic covered in this article, please add it as a comment so other readers can benefit from the discussion.

Get updates every time a new article is published by subscribing to this blog.


  1. I thank the author for allowing me to present his package in a blog post.↩

  2. Note that you can change the folder name by specifying the argument destination_folder = "folder_name".↩

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: R on Stats and R.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

An Introduction to Modelling Soccer Matches in R (part 2)

$
0
0

[This article was first published on rstats on Robert Hickman, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

I wrote this one pretty quickly compared to part 1 (which goes much deeper into mathematical concepts), and only realized after how much of a similarity it has to many of Ben Torvaney’s posts on the subject. This probably isn’t a coincidence given how much I’ve used his work previously in posts on this blog. Any imitation here is meant as flattery. The purpose of this post is really as a bridge between what I really want to write about- the maths behind the models in part 1, and extensions of these models into other distribution in parts 3-n so it might be a little derivative of stuff written elsewhere.

On this blog I enjoy explaining various concepts from the more academic side of football analytics. One of my favourite results from this field are the papers in predicting future soccer matches based on limited information about past matches. Roughly 1 year ago I published part 1 on a series of this and never got round to writing part 2 (of hopefully 2 or 3 more).

In the first post, we saw how we can use the Poisson distribution to estimate the relative strengths of teams in a hypothetical summer league between Arsenal, Blackburn Rovers, Coventry City, Dover Athletic, Enfield Town, and Frimley Green. Now we want to move onto actually using these estimates to predict matches, and eventually, whole leagues.

A good way to sum up this post in one line is a quote (mis) attributed to Niels Bohr:

“It’s Difficult to Make Predictions, Especially About the Future”

We’ve made our predictions about the past (estimating the relative strengths of teams based on past results), now we need to predict the future. I think it also nicely captures that even our predictions about the past are noisy- we can not ever truly know the exact strengths of football teams; the job of analytics is to estimate these are accurately as possible. But any noise in those past predictions will be carried forward and amplified when predicting the future.

Onward to the code, first as always, loading libraries and setting a seed for reproducibility:

library(tidyverse)library(ggrepel)set.seed(3459)

We’re then going to load all the stuff we prepped and predicted in the last post. Remember the α parameter below refers to a teams attacking strength (the relative number of goals they are expected to score), and the β parameter refers to the attacking strength (the inverse of the relative number of goals they are expected to concede). Finally, γ refers to the extra advantage of playing at home.

(all these files are on the github repo for this site)

fixtures <- readRDS("../../static/files/dc_2/dc_fixtures.rds")results <- readRDS("../../static/files/dc_2/dc_results.rds")model <- readRDS("../../static/files/dc_2/dc_model.rds")model
## $alpha##          Arsenal Blackburn_Rovers    Coventry_City   Dover_Athletic ##        1.1106558        0.6370160        0.3023048       -0.2875353 ##     Enfield_Town    Frimley_Green ##       -0.3767038       -1.3857376 ## ## $beta##          Arsenal Blackburn_Rovers    Coventry_City   Dover_Athletic ##        0.6457175        0.4289270        0.3647815       -0.1362931 ##     Enfield_Town    Frimley_Green ##       -0.3852812       -0.9178517 ## ## $gamma##    gamma ## 0.189462

We’ll define a quick function to do our prediction. For a quick explanation of exactly why it’s coded as presented, see the previous post, under the title ‘Tinkering’.

For a given string of a home team and an away team, the function finds the relevant parameters from a third argument (param_list) and calculates the expected goal for each team.

predict_results <- function(home, away, param_list) {  e_goals_home <- exp(param_list$alpha[home] - param_list$beta[away] + param_list$gamma)  e_goals_away <- exp(param_list$alpha[away] - param_list$beta[home])    df <- data.frame(home = home, away = away,                   e_hgoal = as.numeric(e_goals_home),                    e_agoal = as.numeric(e_goals_away))    return(df)}

If we run this for two example teams for example:

#two example teamshome <- "Blackburn_Rovers"away <- "Arsenal"prediction <- predict_results(home, away, model) prediction
##               home    away  e_hgoal  e_agoal## 1 Blackburn_Rovers Arsenal 1.198128 1.977293

We can see that it gives Arsenal (the away team) a slightly more optimistic chance than Blackburn. The expected goals for each team of course can be rewritten as the mean, and in our Poisson model refers to λ (lambda)- the mean times an event (goal) happens per a time interval (match). We also set a maximum number of possible goals (7 in this case*) to bound the area under the distribution so we aren’t sampling forever.

*sharp readers might notice that this is actually lower than the lambda for our more extreme cases (e.g. Arsenal at home to Frimley Green), but for realistic matches (even between wildly different professional sides) this is a fair enough assumption.

We then use dpois() to calculate the probability of this Poisson function returning a value (0:7 goals) given it’s lambda value. So if we run this over the prediction we made for Blackburn Rovers vs. Arsenal we get:

#set a limit of where we'll calculate acrossmax_goals <- 7#calculate the probability of scoring x goals for either teamblackburn_goal_probs <- lapply(0:max_goals, dpois, lambda = prediction$e_hgoal)arsenal_goal_probs <- lapply(0:max_goals, dpois, lambda = prediction$e_agoal)#bind together in a dfdf <- data.frame(goals = rep(0:max_goals, 2),                 team = rep(c(home, away), each = max_goals+1),                 p = c(unlist(blackburn_goal_probs), unlist(arsenal_goal_probs)))#plot the p of scoring x goals for either teamp1 <- ggplot(df, aes(x = goals, y = p, fill = team)) +  geom_density(stat = "identity", alpha = 0.5) +  scale_fill_manual(values = c("red", "blue")) +  labs(title = "Predicted goals for Blackburn Rovers and Arsenal",       y = "probability") +  theme_minimal()p1

Because of how maths works, these curves are the same result we would get if we ran rpois() (sampling from the Poisson function) lots of times. We’ll do that quickly because it sets the stage nicely for what will come later.

#sample from the function lots of times for each teamn <- 100000blackburn_goals_samples <- rpois(n, lambda = prediction$e_hgoal)arsenal_goals_samples <- rpois(n, lambda = prediction$e_agoal)df <- data.frame(team = rep(c(home, away), each = n),                 sampled_goals = c(blackburn_goals_samples, arsenal_goals_samples))#look its the same plot!p2 <- ggplot(df, aes(x = sampled_goals, fill = team)) +  geom_bar(stat = "count", position = "dodge", colour = "black", alpha = 0.5) +  geom_line(aes(colour = team), stat = "count", size = 3) +  scale_fill_manual(values = c("red", "blue"), guide = FALSE) +  scale_colour_manual(values = c("red", "blue"), guide = FALSE) +  labs(title = "Predicted goals for Blackburn Rovers and Arsenal",       y = "probability",       x = "sampled goals") +  theme_minimal() +  theme(axis.text.y = element_blank())p2

Ok great!, in terms of predicting the result, the rightwards shift of the red (Arsenal) curve here is the difference in the teams ability to generate a positive goal differential- it makes it more likely that if we sample event, Arsenal will have scored more goals than Blackburn Rovers at the end of the match. Of course, it’s also obvious that while Arsenal’s curve is right shifted, the bars for Arsenal scoring 0 goals and Blackburn scoring 6 are still sizable enough that it isn’t outside the realm of possibility.

This is a nice way of presenting the chance of each team scoring n goals, but doesn’t really help us in predicting the result of a match given that this relies on the interaction of both these distributions (we need to know how many goals BOTH Arsenal AND Blackburn will score).

To calculate this, we can do an outer product of the probabilities for both teams scoring n goals. We can then plot the probability of each scoreline as a tile plot:

#calculate matrix of possible results and probabilities of thosematrix <- outer(unlist(arsenal_goal_probs), unlist(blackburn_goal_probs)) %>%  as.data.frame() %>%  gather() %>%  #add in scorelines  mutate(hgoals = rep(0:max_goals, max_goals+1),         agoals = rep(0:max_goals, each = max_goals+1))#make the tile plotp3 <- ggplot(matrix, aes(x = hgoals, y = agoals, fill = value)) +  geom_tile() +  geom_text(aes(label = paste(hgoals, agoals, sep = "-"))) +  scale_fill_gradient2(low = "white", high = "red", guide = FALSE) +  theme_minimal()p3

Where we can see that the most common scorelines are low scoring (football is a low scoring game), and slightly biased towards away goals (i.e. Arsenal are more likely to win than lose). The darkest (most likely) tiles being 1-1 or a 2-1 Arsenal win seem very plausible given our calculated λs earlier.

We can then do this for every fixture and build a large graph of the expected results for each using a simple map2_ apply. Because of the huge plot, I’ve restricted it here to a 3×3 matrix of the results for Arsenal, Coventry City, and Enfield Town, but if you click you should be linked to the full image.

#want to predict over the whole fixture spaceall_fixtures <- bind_rows(fixtures, results) %>%  filter(!duplicated(paste(home, away), fromLast = TRUE))#get the lambda for each team per gamepredictions <- map2_df(all_fixtures$home, all_fixtures$away,                        predict_results,                       model)#calc out probabilities and bind upall_predictions <- map2_df(  predictions$e_hgoal, predictions$e_agoal,   function(lambda_home, lambda_away, max_goals) {    hgoal_prob <- dpois(0:max_goals, lambda_home) %>% `names<-`(0:max_goals)    agoal_prob <- dpois(0:max_goals, lambda_away) %>% `names<-`(0:max_goals)    outer(hgoal_prob, agoal_prob) %>%      as.data.frame() %>%       gather() %>%       rownames_to_column("row") %>%      mutate(hgoal = as.numeric(row) %% (max_goals+1)-1) %>%       mutate(hgoal = case_when(hgoal < 0 ~ max_goals, TRUE ~ hgoal),             agoal = as.numeric(key)) %>%      select(sample_hgoal = hgoal, sample_agoal = agoal, prob = value)}, max_goals) %>%  cbind(all_fixtures[rep(seq_len(nrow(all_fixtures)), each=(max_goals+1)^2),], .) %>%  group_by(home, away) %>%  mutate(prob = prob / sum(prob)) %>%  ungroup()#plot againp3 <- all_predictions %>%  #filter only a few out to scale plot   filter(home %in% c("Arsenal", "Coventry_City", "Enfield_Town"),         away %in% c("Arsenal", "Coventry_City", "Enfield_Town")) %>%  ggplot(aes(x = sample_hgoal, y = sample_agoal, fill = prob)) +  geom_tile() +  geom_point(aes(x = hgoal, y = agoal),              colour = "blue", size = 5, alpha = 0.5 / max_goals^2) +  geom_text(aes(label = paste(sample_hgoal, sample_agoal, sep = "-")), size = 2.3) +  scale_fill_gradient2(low = "white", high = "red", guide = FALSE) +  labs(    title = "predictions for final score across all fixtures",    y = "away goals",    x = "home goals") +  theme_minimal() +  facet_grid(away~home, scales = "free")p3

For the whole matrix, click here

So what?

These graphs are nice, but whats important is what they show: we have a way to quantify how likely any result is in a match between two given teams. Why is this useful

  • Firstly, we can use the output of this to build betting models. Given the odds on final scores for any match, we can hedge effectively by betting on (e.g.) the five overwhelmingly most likely results.
  • Secondly, we can simulate leagues. This is perhaps especially of interest given the context of writing this post. I’m going to focus on this application because I don’t bet on football, and also because it’s hard to get a nice database of odds at the moment given the aforementioned situation.

The Verve – Monte Carlo

We can do this using a technique called Monte Carlo simulation. There are lots of good explanation of the technique on the internet, but it basically boils down to this:

“if events follow a known distribution*, you can sample these events lots of times to get stochastic guesstimates, but over many samples you will reproduce exactly that distribution”

*a Poisson distribution for the expected number of goals scored in our case

For football, this means that while on an individual match level results are noisy (sometimes better teams lose!), if we simulate matches lots and lots of times, eventually they should converge to the ‘truth’*

*as defined by our Poisson distribution (which may or may not be a good/accurate ‘truth’ but go with it for now).

To work with this highly repetitive data, first we want to ‘nest’ the probabilities for each match. This basically means storing a df of all the possible results and their probabilities as a column inside a larger df so we can move between the data in those two structures easier.

For instance, the nest match results probability information for the next match to be played (Coventry City and home to Arsenal):

nested_probabilities <- all_predictions %>%  filter(is.na(hgoal)) %>%  select(-hgoal, -agoal) %>%  nest(probabilities = c(sample_hgoal, sample_agoal, prob))nested_probabilities$probabilities[[1]] %>%  rename("Coventry City" = sample_hgoal, "Arsenal" = sample_agoal) %>%  arrange(-prob) %>%  #show first 15 rows  .[1:15,]
## # A tibble: 15 x 3##    `Coventry City` Arsenal   prob##                   ##  1               0       2 0.115 ##  2               0       1 0.109 ##  3               1       2 0.0983##  4               1       1 0.0933##  5               0       3 0.0806##  6               1       3 0.0691##  7               0       0 0.0516##  8               1       0 0.0442##  9               0       4 0.0425## 10               2       2 0.0422## 11               2       1 0.0400## 12               1       4 0.0364## 13               2       3 0.0296## 14               2       0 0.0190## 15               0       5 0.0179

The probability for any single result is small (otherwise match betting would be easy), but the probabilities for a 2-0 and 1-0 Arsenal wins are highest (as we found earlier). Indeed all of the most likely results are within a goal or two for either side of these.

To make sure these probabilities makes sense, we can sum them and see that the results space of 0:max_goals for either side sums to 1

sum(nested_probabilities$probabilities[[1]]$prob)
## [1] 1

Then we can easily use this data to simulate results. We sample a single row (a ‘result’ of the match) weighted by the probability of it occurring. For instance, when we sample from the Coventry City vs Arsenal match it picks a 3-1 Arsenal away win (not the likeliest result, but not the most unlikely either).

nested_probabilities$probabilities[[1]] %>%  rename("Coventry_City" = sample_hgoal, "Arsenal" = sample_agoal) %>%  sample_n(1, weight = prob)
## # A tibble: 1 x 3##   Coventry_City Arsenal   prob##                ## 1             1       3 0.0691

We can of course repeat this across every match and see that the probabilities of the chosen results vary (because we’re randomly sampling we won’t always choose the most likely, or even a likely result), but all are within a reasonable range given the team playing:

nested_probabilities %>%    mutate(sampled_result = map(probabilities, sample_n, 1, weight = prob)) %>%    select(-probabilities) %>%    unnest(cols = c(sampled_result))
## # A tibble: 6 x 6##   home             away             gameweek sample_hgoal sample_agoal   prob##                                                ## 1 Coventry_City    Arsenal                 9            0            5 0.0179## 2 Blackburn_Rovers Dover_Athletic          9            1            1 0.0575## 3 Frimley_Green    Enfield_Town            9            0            4 0.0418## 4 Arsenal          Blackburn_Rovers       10            2            1 0.0966## 5 Coventry_City    Frimley_Green          10            3            0 0.170 ## 6 Dover_Athletic   Enfield_Town           10            2            1 0.0839

But when we are predicting what will happen, we want to find the most likely result. As mentioned earlier, if we sample enough, our average will converge towards this, so we can repeat this sampling technique n times (here I’ve done it 10 times), depending on how much time we want to wait for it to process.

You can see that as we do this many times, the results with the highest probability turn up more than others- as we would expect if we were to (e.g.) actually play Blackburn Rovers vs Arsenal many times.

rerun(10, nested_probabilities %>%    filter(home == "Coventry_City" & away == "Arsenal") %>%    mutate(sampled_result = map(probabilities, sample_n, 1, weight = prob)) %>%    select(-probabilities) %>%    unnest(cols = c(sampled_result))) %>%  bind_rows() %>%  arrange(-prob)
## # A tibble: 10 x 6##    home          away    gameweek sample_hgoal sample_agoal   prob##                                     ##  1 Coventry_City Arsenal        9            0            2 0.115 ##  2 Coventry_City Arsenal        9            1            2 0.0983##  3 Coventry_City Arsenal        9            1            1 0.0933##  4 Coventry_City Arsenal        9            0            3 0.0806##  5 Coventry_City Arsenal        9            1            3 0.0691##  6 Coventry_City Arsenal        9            1            0 0.0442##  7 Coventry_City Arsenal        9            0            4 0.0425##  8 Coventry_City Arsenal        9            0            4 0.0425##  9 Coventry_City Arsenal        9            0            4 0.0425## 10 Coventry_City Arsenal        9            1            5 0.0154

If we do this a few more times per fixture (here 100, for a better estimate I’d advise at least 10000- it should only take a few minutes), we can then start assigning points and goal difference to each team based upon the result we’ve sampled. E.g. if one sample predicts Arsenal to beat Blackburn Rovers 4-0, we assign 3 points to Arsenal and 0 points to Blackburn Rovers for that simulation and +4 and -4 goal difference respectively.

n <- 100fixture_sims <- rerun(n, nested_probabilities %>%    mutate(sampled_result = map(probabilities, sample_n, 1, weight = prob)) %>%    select(-probabilities) %>%    unnest(cols = c(sampled_result)) %>%  select(-gameweek, -prob) %>%  pivot_longer(c(home, away), names_to = "location", values_to = "team") %>%  mutate(points = case_when(    location == "home" & sample_hgoal > sample_agoal ~ 3,    location == "away" & sample_agoal > sample_hgoal ~ 3,    sample_hgoal == sample_agoal ~ 1,    TRUE ~ 0  )) %>%  mutate(gd = case_when(    location == "home" ~ sample_hgoal - sample_agoal,    location == "away" ~ sample_agoal - sample_hgoal  )))fixture_sims[1]
## [[1]]## # A tibble: 12 x 6##    sample_hgoal sample_agoal location team             points    gd##                                      ##  1            0            0 home     Coventry_City         1     0##  2            0            0 away     Arsenal               1     0##  3            4            0 home     Blackburn_Rovers      3     4##  4            4            0 away     Dover_Athletic        0    -4##  5            0            0 home     Frimley_Green         1     0##  6            0            0 away     Enfield_Town          1     0##  7            3            0 home     Arsenal               3     3##  8            3            0 away     Blackburn_Rovers      0    -3##  9            6            1 home     Coventry_City         3     5## 10            6            1 away     Frimley_Green         0    -5## 11            1            1 home     Dover_Athletic        1     0## 12            1            1 away     Enfield_Town          1     0

We can then average the points and goal difference won in these sims across each team and see what teams are predicted to win across their fixtures.

fixture_sims %>%  bind_rows() %>%  group_by(team) %>%  summarise(av_points = sum(points)/n,            av_gd = sum(gd) / n)
## # A tibble: 6 x 3##   team             av_points av_gd##                    ## 1 Arsenal               4.19  2.44## 2 Blackburn_Rovers      3.16  0.7 ## 3 Coventry_City         3.61  2.42## 4 Dover_Athletic        2.26 -1.26## 5 Enfield_Town          2.95  0.23## 6 Frimley_Green         0.6  -4.53

Where we can see that we expect Arsenal to win 4.19 out of a possible 6 points (with games remaining against Coventry and Blackburn Rovers they are expected to drop points but win at least one and probably draw the other). Coventry City are expected to also do well- probably because their final game is at home to Frimley Green, whereas Blackburn have tougher fixtures away at Arsenal and home to Dover Athletic.

We can then add this to the calculated points teams have already accrued to get a prediction of where teams will end the season position wise:

table <- results %>%  pivot_longer(c(home, away), names_to = "location", values_to = "team") %>%  mutate(points = case_when(    location == "home" & hgoal > agoal ~ 3,    location == "away" & agoal > hgoal ~ 3,    hgoal == agoal ~ 1,    TRUE ~ 0  )) %>%  mutate(gd = case_when(    location == "home" ~ hgoal - agoal,    location == "away" ~ agoal - hgoal  )) %>%  group_by(team) %>%  summarise(points = sum(points),            gd = sum(gd))predicted_finishes <- map_df(fixture_sims, function(simulated_fixtures, table) {  simulated_fixtures %>%    select(team, points, gd) %>%    bind_rows(., table) %>%    group_by(team) %>%    summarise(points = sum(points),              gd = sum(gd)) %>%    arrange(-points, -gd) %>%    mutate(predicted_finish = 1:n())}, table) %>%  group_by(team, predicted_finish) %>%  summarise(perc = n() / n)predicted_finishes
## # A tibble: 10 x 3## # Groups:   team [6]##    team             predicted_finish  perc##                            ##  1 Arsenal                         1  0.82##  2 Arsenal                         2  0.18##  3 Blackburn_Rovers                1  0.18##  4 Blackburn_Rovers                2  0.82##  5 Coventry_City                   3  0.97##  6 Coventry_City                   4  0.03##  7 Dover_Athletic                  3  0.03##  8 Dover_Athletic                  4  0.97##  9 Enfield_Town                    5  1   ## 10 Frimley_Green                   6  1

Which gives Arsenal an 82% chance of finishing champions, with only a 18% chance Blackburn manage to leapfrog them into 1st place. Given there are only 2 matches left with teams designed to have fairly large gulfs in ability, it’s not surprising most of the final positions are nailed on- e.g. Enfield Town finish 5th in every single simulation:

p4 <- ggplot(predicted_finishes, aes(x = predicted_finish, y = perc, fill = team)) +  geom_bar(stat = "identity", colour = "black") +  scale_fill_manual(values = c("red", "blue", "skyblue", "white", "dodgerblue4", "blue")) +  labs(    title = "Predicted finish position of teams",    subtitle = "with two gameweeks left to play",    y = "fraction of finishes",    x = "final position"  ) +  theme_minimal() +  facet_wrap(~team)p4

The Real Thing

We’re now at the stage where we can start to look at real data. One of the motivating forces which drew me back to this putative blog series was the current football situation– with season ending with games left to play.

We can use the knowledge we’ve built up over these last posts to see what we expect to happen in these unplayed games, if they cannot be completed.

To make code more concise, I’ve used Ben Torvaney’s code in his regista package (he also has some nice usage blogs similar to this post at his blog). The underlying maths is exactly the same as in my previous post though with a few different design choices. If we run the simulations using the code from the previous post we should get exactly the same answer.

The code following is also extremely similar to the final chunks of one of my previous posts in analysing the current Liverpool team’s achievements.

library(rvest)library(regista)

First we need to download the data on the current English Premier League season. Once we have this we can split it into played matches (where we 100% know the result) and unplayed matches which we need to predict the result of. For the basis of the team strength estimates I’ve used the xg created and allowed per game, as I believe these give a better estimate of team strength (indeed Ben Torvaney has a nice post on using even the shot-by-shot xg to produce Dixon-Coles models).

#download the match data from 2019/2020fixtures_2020 <- "https://fbref.com/en/comps/9/schedule/Premier-League-Fixtures" %>%  read_html() %>%  html_nodes("#sched_ks_3232_1") %>%  html_table() %>%  as.data.frame() %>%  separate(Score, into = c("hgoal", "agoal"), sep = "–") %>%  #only care about goals and expected goals  select(home = Home, away = Away, home_xg = xG, away_xg = xG.1, hgoal, agoal) %>%  filter(home != "") %>%  mutate(home = factor(home), away = factor(away)) %>%  #round expected goals to nearest integer  mutate_at(c("home_xg", "away_xg", "hgoal", "agoal"), .funs = funs(round(as.numeric(.))))#matches with a known result#used for modellingplayed_matches <- fixtures_2020 %>%  filter(!is.na(home_xg))#matches with an unknown result#used for simulationunplayed_matches <- fixtures_2020 %>%  filter(is.na(home_xg)) %>%  select_if(negate(is.numeric))#fit the dixon coles model#use xg per game, not 'actual' goalsfit_2020 <- dixoncoles(home_xg, away_xg, home, away, data = played_matches)

To get a look at what the team parameters in a real-life league look like we can extract them from the model and plot them:

#extract Dixon-Coles team strenth parameterspars_2020 <- fit_2020$par %>%  .[grepl("def_|off_", names(.))] %>%  matrix(., ncol = 2) %>%  as.data.frame() %>%  rename(attack = V1, defence = V2)pars_2020$team <- unique(gsub("def_*|off_*", "", names(fit_2020$par)))[1:20]#plot as beforep5 <- pars_2020 %>%  mutate(defence = 1 - defence) %>%  ggplot(aes(x = attack, y = defence, colour = attack + defence, label = team)) +  geom_point(size = 3, alpha = 0.7) +  geom_text_repel() +  scale_colour_continuous(guide = FALSE) +  labs(title = "Dixon-Coles parameters for the 2019/2020 EPL",       x = "attacking strength",       y = "defensive strength") +  theme_minimal()p5

It might surprise some that Manchester City are predicted to be better than Liverpool by this model, but it shouldn’t given the underlying numbers for both teams. Liverpool have run very hot and Manchester City have run very cold this season.

Finally, we can then calculate the current Premier League table, and simulate remaining games to predict where teams will finish the season if the remainder of games were to be played. I’ve chosen 1000 sims just for sake of processing time, but you can scale up and down as desired.

#calculate the current EPL tablecurrent_epl_table <- played_matches %>%  select(home, away, hgoal, agoal) %>%  pivot_longer(c(home, away), names_to = "location", values_to = "team") %>%  mutate(points = case_when(    location == "home" & hgoal > agoal ~ 3,    location == "away" & agoal > hgoal ~ 3,    hgoal == agoal ~ 1,    TRUE ~ 0  )) %>%  mutate(gd = case_when(    location == "home" ~ hgoal - agoal,    location == "away" ~ agoal - hgoal  )) %>%  group_by(team) %>%  summarise(points = sum(points),            gd = sum(gd))#the number of sims to runn <- 10000#simulate remaining matchesfixture_sims_2020 <- rerun(  n,  augment.dixoncoles(fit_2020, unplayed_matches, type.predict = "scorelines") %>%                         mutate(sampled_result = map(.scorelines, sample_n, 1, weight = prob)) %>%    select(-.scorelines) %>%    unnest(cols = c(sampled_result)) %>%  pivot_longer(c(home, away), names_to = "location", values_to = "team") %>%  mutate(points = case_when(    location == "home" & hgoal > agoal ~ 3,    location == "away" & agoal > hgoal ~ 3,    hgoal == agoal ~ 1,    TRUE ~ 0  )) %>%  mutate(gd = case_when(    location == "home" ~ hgoal - agoal,    location == "away" ~ agoal - hgoal  )) %>%    select(team, points, gd))#calculate final EPL tablespredicted_finishes_2020 <- map_df(fixture_sims_2020, function(sim_fixtures, table) {  sim_fixtures %>%    select(team, points, gd) %>%    bind_rows(., table) %>%    group_by(team) %>%    summarise(points = sum(points),              gd = sum(gd)) %>%    arrange(-points, -gd) %>%    mutate(predicted_finish = 1:n())}, current_epl_table) %>%  group_by(team, predicted_finish) %>%  summarise(perc = n() / n) %>%  group_by(team) %>%  mutate(mean_finish = mean(predicted_finish)) %>%  arrange(mean_finish) %>%  ungroup() %>%  mutate(team = factor(team, levels = unique(team)))

If we then plot these predicted finishes (ordered by the chance of their highest finish position), we can get an idea of where we expect teams to end the season:

#list of team coloursteam_cols <- c("red", "skyblue", "darkblue", "darkblue", "darkred",               "orange", "red", "white", "red", "blue", "maroon",                "blue", "white", "red", "dodgerblue", "yellow",                "maroon", "red", "maroon", "yellow")#plot the finishing position by chance based on these simualtionsp6 <- ggplot(predicted_finishes_2020,              aes(x = predicted_finish, y = perc, fill = team)) +  geom_bar(stat = "identity", colour = "black") +  scale_fill_manual(values = team_cols, guide = FALSE) +  labs(    title = "Predicted finish position of teams",    subtitle = "for incomplete 2019/2020 EPL season",    y = "fraction of finishes",    x = "final position"  ) +  theme_minimal() +  facet_wrap(~team)p6

So great news for Liverpool fans who the model believes have a 100% chance of finishing in first place. Leicester also might be happy with a nailed on 3rd place, with Chelsea or Manchester United probably rounding out the top four, and Wolves joining the loser of the two in the Europa League.

#get the predictions for the 2019/2020 championwinner <- predicted_finishes_2020 %>%  filter(predicted_finish < 2)%>%  mutate(prediction = "Champion chance")winner
## # A tibble: 2 x 5##   team            predicted_finish   perc mean_finish prediction     ##                                             ## 1 Liverpool                      1 1.00           1.5 Champion chance## 2 Manchester City                1 0.0001         2.5 Champion chance
#get prediction for those who qualify for champions league#and for europa leaguechamps_league <- predicted_finishes_2020 %>%  filter(predicted_finish < 5) %>%  group_by(team) %>%  summarise(perc = sum(perc)) %>%  arrange(-perc) %>%  mutate(prediction = "Champions League chance")champs_league
## # A tibble: 10 x 3##    team              perc prediction             ##                                   ##  1 Liverpool       1      Champions League chance##  2 Manchester City 1      Champions League chance##  3 Leicester City  0.933  Champions League chance##  4 Chelsea         0.479  Champions League chance##  5 Manchester Utd  0.46   Champions League chance##  6 Wolves          0.106  Champions League chance##  7 Sheffield Utd   0.0155 Champions League chance##  8 Tottenham       0.004  Champions League chance##  9 Arsenal         0.0018 Champions League chance## 10 Everton         0.0005 Champions League chance
europa_league  <- predicted_finishes_2020 %>%  filter(predicted_finish < 7) %>%  group_by(team) %>%  summarise(perc = sum(perc)) %>%  arrange(-perc) %>%  mutate(prediction = "(at least) Europa League chance")europa_league
## # A tibble: 13 x 3##    team              perc prediction                     ##                                           ##  1 Liverpool       1      (at least) Europa League chance##  2 Manchester City 1      (at least) Europa League chance##  3 Leicester City  0.999  (at least) Europa League chance##  4 Manchester Utd  0.954  (at least) Europa League chance##  5 Chelsea         0.954  (at least) Europa League chance##  6 Wolves          0.729  (at least) Europa League chance##  7 Sheffield Utd   0.196  (at least) Europa League chance##  8 Tottenham       0.096  (at least) Europa League chance##  9 Arsenal         0.0479 (at least) Europa League chance## 10 Everton         0.0139 (at least) Europa League chance## 11 Burnley         0.0089 (at least) Europa League chance## 12 Crystal Palace  0.0009 (at least) Europa League chance## 13 Southampton     0.0008 (at least) Europa League chance

(obviously this model does not account for any ramifications of Manchester City’s European ban)

At the foot of the table, the model is fairly bullish on Norwich being relegated, with Aston Villa probably joining them, and then probably West Ham rounding out the relegation spots.

#get predictions for those who would be relegatedrelegated  <- predicted_finishes_2020 %>%  filter(predicted_finish > 17) %>%  group_by(team) %>%  summarise(perc = sum(perc)) %>%  arrange(-perc) %>%  mutate(prediction = "Relegation chance")relegated
## # A tibble: 8 x 3##   team             perc prediction       ##                           ## 1 Norwich City  0.934   Relegation chance## 2 Aston Villa   0.700   Relegation chance## 3 Bournemouth   0.507   Relegation chance## 4 West Ham      0.402   Relegation chance## 5 Watford       0.270   Relegation chance## 6 Brighton      0.171   Relegation chance## 7 Newcastle Utd 0.0126  Relegation chance## 8 Southampton   0.00270 Relegation chance

Final Remarks

I want to make it clear at the end of this post that this probably isn’t the most sophisticated model for predicting football matches (more to come in a part 3, maybe this time within less than a year), but does a pretty good job!

In any case though, I don’t think that running these sims is a good way to end the season- in truth, there’s probably no good way. This post is more about how to use this technique than whether to use it.

Best, stay safe as always!

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) {var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;s.src = '//cdn.viglink.com/api/vglnk.js';var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: rstats on Robert Hickman.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

#26: Upgrading to R 4.0.0

$
0
0

[This article was first published on Thinking inside the box , and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Welcome to the 26th post in the rationally regularized R revelations series, or R4 for short.

R 4.0.0 was released two days ago, and a casual glance at some social media conversations appears to suggest quite some confusion, almost certainly some misunderstandings, and possibly also a fair amount of fear, uncertainty, and doubt about the process. So I thought I could show how I upgrade my own main workstation, live and in colour without a safety net. (Almost: I did upgrade my laptop yesterday which went swimmingly, if more slowly.) So here is a fresh video about upgrading to R 4.0.0, with some support slides as usual:

<br />

The slides used in the video are at this link.

A few quick follow-ups to the ‘live’ nature of this. The pbdZMQ package did in fact install smoothly once the (Ubuntu) -dev packages for Zero MQ were (re-)installed; then IRkernel also followed. BioConductor completed once I realized that GOSemSim needed the annotation package GO.db to be updated, that allowed MNF to install. So the only bug, really, was the circular depdency between pkgload and testthat. Overall, not bad at all for a quick afternoon session!

And as mentioned, if you are interested and have questions concerning use of R on a .deb based system like Debain or Ubuntu (or Mint or …), the r-sig-debian list is a very good and friendly place to ask them.

If you like this or other open-source work I do, you can now sponsor me at GitHub. For the first year, GitHub will match your contributions.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' }; (function(d, t) { var s = d.createElement(t); s.type = 'text/javascript'; s.async = true; s.src = '//cdn.viglink.com/api/vglnk.js'; var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r); }(document, 'script'));

To leave a comment for the author, please follow the link and comment on their blog: Thinking inside the box .

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Viewing all 12081 articles
Browse latest View live