knitr::opts_chunk$set(echo = TRUE, warning=FALSE, message=FALSE)
library(knitr)
library(dplyr)
library(eurostat)
migr_asydcfsta=readRDS(file="../../data/migr_asydcfsta_20180812.rds")
# Ein Blick in die ersten Datensätze:
kable(filter(migr_asydcfsta, citizen == "AF")[c(1:8),], caption = "Ein paar Zeilen aus dem Datensatz, zum Herkunftsland Afhganistan")

Dies sind die europäischen Länder, in denen im Jahr 2017 mehr als 1000 Entscheidungen über Asylanträge von afghanischen Staatsangehörigen getroffen wurden:

cutoff=1000
major_geo_total=filter(migr_asydcfsta, values > cutoff, time == "2017-01-01", decision == "TOTAL", sex == "T", age == "TOTAL", citizen == "AF", geo != "EU28") %>% 
  select(geo,values) 
# Ab jetzt ohne TOTAL
major_geo_total <- filter(major_geo_total, geo != "TOTAL")

Von Hand nachprüfbar über: Eurostat Data Explorer unter eurostat -> Daten -> Datenbank -> Datenbank nach Themen -> Bevölkerung und soziale Bedingungen -> Asyl und Gesteuerte Migration, oder Du googelst nach "migr_asydcfsta".

Die Daten zeigen Ländercodes, die vollen Bezeichnungen sind hier:

geodic = read.delim(file = "../../data/geo.dic", col.names = c("geo","label"))
geodic_major <- merge(geodic,major_geo_total) %>% select(values,geo,label) %>% arrange(-values)
kable(geodic_major, caption = "Länder mit mehr als 1000 Entscheidungen zu Asylanträgen aus Afghanistan")
    other_geo_total_af=filter(migr_asydcfsta, values <= cutoff, time == "2017-01-01", decision == "TOTAL", sex == "T", age == "TOTAL", citizen == "AF", geo != "EU28", geo != "TOTAL") %>%  arrange(desc(values))
dec_others_total_af <- sum(other_geo_total_af$values)
dec_others_total_af

Diese Zahlen sind für mich schon überraschend. Die anderen 17 Länder sind zusammen für nur r dec_others_total_af Entscheidungen verantwortlich.

Eine Visualisierung der Gesamtanzahl von Entscheidungen zu Afghanistan im Jahr 2017:

library(ggplot2)
# some technical workarounds for adding the row with the others (XX),
# and for sorting
major_geo_total$geo <- as.character(major_geo_total$geo)
all_geo_total <- rbind(major_geo_total, c("Rest",dec_others_total_af))
all_geo_total$values <- as.numeric(all_geo_total$values) 
all_geo_total$geo <- factor(all_geo_total$geo, levels = arrange(all_geo_total, values)$geo)
# sort it
all_geo_total_sorted <- arrange(all_geo_total, -values)
# For the labels
big = 8
blables <- c(rev(levels(all_geo_total$geo))[c(1:big)],rep("",dim(all_geo_total)[1]-big))
y.breaks <- cumsum(all_geo_total_sorted$values) - all_geo_total_sorted$values/2
# The real thing
geo_dec_pie <- ggplot(all_geo_total_sorted, aes(x="", y=values, fill=geo)) + geom_col(colour = "black") + coord_polar("y") + scale_fill_grey(start = 0.4, end = 0.9) + ggtitle ("Entscheidungen über Asyl, Afghanistan, 2017", subtitle = "EU-Länder; \"Rest\" ist die Summe aller Länder mit < 1000 Entscheidungen") + scale_y_continuous(labels=blables, breaks = y.breaks) + theme_bw() + theme(axis.title=element_blank()) 
geo_dec_pie

Spanien beispielsweise ist nicht in unserer Analyse vertreten, weil es nicht auf 1000 Entscheidungen kommt. Deutschland verantwortet fast 60% aller Entscheidungen. Nun ist Deutschland auch das bevölkerungsreichste Land der EU. Wenn wir uns die EU-Länder mit mehr als 8 Mio Einwohnern anschauen und neben ihre Einwohnerzahl (geteilt durch 1000) die Anzahl Entscheidungen stellen, erhalten wir dieses Bild:

demo_pjan <- readRDS(file="./demo_pjan_20180825.rds")
compare_dec=filter(migr_asydcfsta, time == "2017-01-01", decision == "TOTAL", sex == "T", age == "TOTAL", citizen == "AF", geo != "EU28", geo != "TOTAL") %>% select(geo, values) %>% mutate( stat = "dec")
compare_dec <- droplevels(compare_dec)
compare_pop <- demo_pjan %>% filter(age == "TOTAL" & sex == "T" & time == "2017-01-01" & geo %in% levels(compare_dec$geo)) %>% select(geo, values) %>% mutate( stat = "pop")
compare_pop <- droplevels(compare_pop)
# divide population by 1000, otherwise decisions won't be visible
compare_pop <- mutate(compare_pop, values = values / 1000)
compare_dec_pop <- rbind(compare_dec, compare_pop)

drop_countries_comp <- filter(compare_pop, values < 8000 & stat == "pop") %>% select(geo)
# population first, decisions second
compare_dec_pop$stat <- factor(compare_dec_pop$stat, levels=c("pop","dec"))
# sort by pop 
compare_dec_pop$geo <- factor(compare_dec_pop$geo, levels = arrange(filter(compare_dec_pop, stat == "pop"), desc(values))$geo)

bar_compare_dec_pop <- ggplot(filter(compare_dec_pop, !geo %in% unlist(drop_countries_comp)),  aes(x=geo, y=values, fill=stat)) + geom_bar(stat="identity", position="dodge") +  ggtitle("Bevölkerung in Tausend zu Asylentscheidungen aus Afghanistan", subtitle="Im Jahr 2017, europäische Länder mit mehr als 8 Mio Einwohnern") + theme_bw() + theme(legend.position="bottom",axis.title.x = element_blank(), axis.title.y = element_blank()) + scale_fill_grey(start = 0.4, end = 0.7, labels=c("Bevölkerung in Tsd", "Entscheidungen"), name=element_blank())

bar_compare_dec_pop 

In den großen Ländern außer Deutschland gab es auffallend wenig Entscheidungen, in den kleinen Ländern Schweden und Österreich dagegen überproportional viele.

Bisher haben wir Vorbetrachtungen angestellt, um unsere Daten zu verstehen und zu überlegen, welche europäischen Aufnahmeländer wir sinnvoll untersuchen können. Jetzt schauen wir uns die Entscheidungen an.

Die Entscheidungen: GENCONV + HUMSTAT + SUB_PROT + TEMP_PROT + REJECTED = TOTAL_POS + REJECTED = TOTAL

Wie haben unsere 15 Länder entschieden? Was für Entscheidungstypen haben wir überhaupt?

major_geo <-filter(migr_asydcfsta, geo %in% major_geo_total$geo, time >= "2017-01-01", sex == "T", age == "TOTAL", citizen == "AF", geo != "EU28", geo != "TOTAL") %>% 
  select(geo,decision,values) 
major_geo$geo <- factor(major_geo$geo, levels = arrange(filter(major_geo, decision == "TOTAL"), desc(values))$geo)
# bring decisions into correct order
major_geo$decision <- factor(major_geo$decision, levels=c("REJECTED","TEMP_PROT","HUMSTAT","SUB_PROT","GENCONV","TOTAL_POS","TOTAL"))
decision.dic <- read.delim(file = "../../data/decision.dic", col.names = c("code","label"))
kable(filter(decision.dic, code %in% levels(major_geo$decision)), caption = "Entscheidungscodes", format = "markdown")
dec_palette_grey=c("#000000","#C0C0C0","#D3D3D3","#E4E4E4","#E8E8E8","#C8C8C8","#808080")

dec_bar <- ggplot(filter(major_geo, decision != "TOTAL" & decision != "TOTAL_POS")) + geom_col(aes(x=geo, y=values, fill=decision)) +  scale_fill_manual(values = dec_palette_grey) + theme_bw() + theme(legend.position="bottom", axis.title.x = element_blank(), axis.title.y = element_blank()) + ggtitle("Entscheidungen über Asylanträge aus Afghanistan 2017", subtitle = "in absoluten Zahlen, von europäischen Ländern mit mehr als 1000 Entscheidungen")
dec_bar
dec_bar_fill <- ggplot(filter(major_geo, decision != "TOTAL" & decision != "TOTAL_POS")) + geom_col(aes(x=geo, y=values, fill=decision), position="fill") + scale_fill_grey() + theme_bw() + theme(legend.position="bottom",axis.title.x = element_blank(), axis.title.y = element_blank())+ scale_y_continuous(labels = percent)  + ggtitle("Entscheidungen über Asylanträge aus Afghanistan 2017", subtitle = "in Prozent, von europäischen Ländern mit mehr als 1000 Entscheidungen, ")
dec_bar_fill

In Zahlen:

quota_pos <- merge(major_geo, major_geo_total,by="geo") %>% mutate( quota = 100*values.x/values.y) %>% filter(decision == "TOTAL_POS") %>% select(geo, quota)
kable(quota_pos, format = "markdown")

Main countries of citizenship:

major_citizen_2017 <-filter(migr_asydcfsta, time == "2017-01-01", sex == "T", age == "TOTAL", decision == "TOTAL", geo == "TOTAL") %>% select(citizen,values) %>% arrange(-values)
kable(major_citizen_2017, format = "markdown")


muc-fluechtlingsrat/r-eurostat-refugees documentation built on May 23, 2019, 8:20 a.m.