Rationale

As of 31 December 2015, how many refugees and migrants will UNHCR report as having arrived in Europe by sea? Europe is facing a refugee crisis […]. Question will be resolved using the data available on UNHCR’s Emergency Response Page for the Mediterranean as of 31 December 2015 (http://data.unhcr.org/mediterranean/regional.html ).

– from an Open Good Judgment Question

The code is in the public domain and I encourage you to play! (CC BY 3.0) Roland Kofler. Any Idea how to improve? Contact me via Gmail: my name separated by a dot.

Source on GitHub

Found the freaking raw data

Its all about Lesbos!

Facts

October=10 
September=9   #you get the idea
reportedAmount=723221 #1 November
aMillion=10^6
N=10000;
projectionMonth=30/26;
arrivals2014= c(3270, 4369, 7283, 17084, 16627, 26221, 28303, 33478, 33944, 23050, 13318, 9107)
arrivals2015= c( 5546, 7343, 10184, 29441,  40117,  53987,  75485,  130839, 172845, 220535, 128324*projectionMonth)
                 
lesbosArrivals2014= c(290, 413, 555, 620, 461, 824, 873, 1064, 1778, 2072, 959, 802)
lesbosArrivals2015= c(737, 1002, 3348, 4990, 7228, 14796, 23721, 56579, 95384, 135021, 81691*projectionMonth)

greeceArrivals2014= c(955, 1001, 1501,  1257,   1703,   3198,   3927,   6742, 7454, 7432,   3812,   2056)   
greeceArrivals2015= c(1690, 2945,   7634,   13133,  18444,  30717,  51951,  107843, 156457, 210824, 125311*projectionMonth)



syrianRefugees=4000000

Data Analysis

arrivalsFor2Years <- c(arrivals2014, arrivals2015)
arrivalTimeseries <- ts(arrivalsFor2Years, start=c(2014, 1), end=c(2015, 11), frequency=12)

lesbosArrivalsFor2Years <- c(lesbosArrivals2014, lesbosArrivals2015)
lesbosTimeseries <- ts(lesbosArrivalsFor2Years, start=c(2014, 1), end=c(2015, 11), frequency=12)

greeceArrivalsFor2Years <- c(greeceArrivals2014, greeceArrivals2015)
greeceTimeseries <- ts(greeceArrivalsFor2Years, start=c(2014, 1), end=c(2015, 11), frequency=12)

Seasonplots

The trend has reversed in November

suppressMessages(library(forecast, quietly = TRUE, warn.conflicts = FALSE, verbose=F))
#monthplot(arrivalTimeseries)
#library(forecast)
seasonplot(arrivalTimeseries) 

#seasonplot(lesbosTimeseries) 
seasonplot(greeceTimeseries)

Extreme situation in Lesbos

Lesbos is the main door to the EU, being the greatest Island of the EU only a few km ashore of Turkey it is reachable with a dingi boat

plot(lesbosArrivals2015/ lesbosArrivals2014[1:11], type = 'o', main="Lesbos 2015 vs Lesbos 2014")

plot(greeceArrivals2015/greeceArrivals2014[1:11], type = 'o', main="Greece 2015/2014")

changeRateLesbosArrivalsYoY <- lesbosArrivalsFor2Years/arrivalsFor2Years
plot(changeRateLesbosArrivalsYoY, type = 'o', main="How Lesbos became the door to Europe", xlab="month since Jan 2014", ylab="*100=% of Lesbos Refugees to Total")

If you are a Refugee Maximalista – someone who believes that more than a million will come – its worth to take a look at How Greek Island behaved in Winter 2014

Monte Carlo Simulation

model parameters

if refugee inflow behave the same like last year in greece

changeMoM= greeceArrivals2015[11]/greeceArrivals2015[10] 

we get changeMoM=0.6858309

arrivalsImputedFuture= c(arrivalsFor2Years, arrivals2015[11] * changeMoM)
arrivalTimeseriesWithImputedFutureValues <- ts(arrivalsImputedFuture, start=c(2014, 1), end=c(2015, 12), frequency=12)

seasonplot(arrivalTimeseriesWithImputedFutureValues);

BIG OPEN Question: how to estimate our Standard Deviation? I’ve calibrated it according to what my subjective upper and lower boundary of uncertainty is. Theory: https://en.wikipedia.org/wiki/Calibrated_probability_assessment more than 1,050,000 would mean growth, and less than 900,000 is a dramatic shutdown, both unlikely but possible.

standardDeviation= 0.18
weight= rnorm(N, mean=changeMoM, sd=standardDeviation)

Calculations

arrivalsNovember = arrivals2015[11]
arrivalsDecember = arrivalsNovember * weight


futureArrivals= arrivalsNovember + arrivalsDecember
refugeesAmount = reportedAmount + futureArrivals
plot(refugeesAmount)
abline(h=aMillion, col="red");
abline(h=mean(refugeesAmount), col="green");

overAmillion = refugeesAmount > 10^6
ProbabilityOverMillion= sum(overAmillion)/N

Probability of more than a Million Refuges

print(ProbabilityOverMillion * 100)
## [1] 15.24