-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbdw_notebook.Rmd
176 lines (143 loc) · 8.36 KB
/
bdw_notebook.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
---
title: "Häufigkeits-Analyse von Bild der Wissenschaft Artikel Themengebieten"
output:
html_document:
df_print: paged
---
## Einleitung
Dies ist eine Analyse der Häufigkeitsverteilung von Themengebieten der Artikel in Bild der Wissenschaft (BdW). Ausgewertet wurden die Jahrgänge 2015, 2016 und 2017.
## Motivation
Ich bin nun schon viele Jahre Leser, und im wesentlichen doch sehr zufrieden mit der Auswahl der Themen. Auch das die Artikel nicht nur die wissenschaftlichen Ergebnisse darstellen, sondern auch ihre gesellschaftliche Auswirkung diskutieren, gefällt mir sehr gut.
Allerdings hat sich bei mir ein Bauchgefühl eingestellt, dass bestimmte Themengebiete (v.a. astronomische Themen) überdurchschnittlich häufig vorgestellt werden.
##Methoden
Um diesen Eindruck zu überprüfen habe ich für die Jahrgänge 2015-17 von BdW die Artikel einezelnen Themengebieten zugeordnet. Themengebiete waren Technik, Biologie, Medizin, Physik, Astronomie, Psychologie, Soziologie etc. Die Zuordnung erfolgte manuell in eine OpenOffice Tabelle. Sie war manchmal nicht ganz eindeutig und wurde von mir nach besten Wissen und Gewissen durchgeführt. BdW führt einige Artikel als 'Titelthemen' oder 'Schwerpunktthemen' auf. Diese wurden mit einem boolschen Flag "Titelthema=TRUE" für eine zusätzlichen Auswertung gekennzeichnet.
Die Themen-Einteilungen der BdW Redaktion habe ich hier ignoriert.
Nicht einbezogen wurden die Neuigkeiten, Artikel zu den Leserreisen und andere ständige Rubriken.
Die Auswertungen erfolgten mit der Programmiersprache 'R', genauer mit Bibliotheken aus dem Tidyverse-Umfeld. An dieser Stelle vielen Dank an Hadley Wickham und den vielen Kontributoren zum Tidyverse. https://www.tidyverse.org
Die multiplot Methode die hier verwendet wurde habe ich kopiert von folgender URL: http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/
Sie wurde freundlicherweise von Winston Chang der Allgemeinheit zur Verfügung gestellt.
```{r message=FALSE}
#load libraries
library(tidyverse)
library(ggplot2)
library(utf8)
#http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/
source("multiplot.R")
#import csv
artikel_list <- read_csv2("bdw_artikel.csv")
```
### Rohdaten-Tabelle
```{r}
head(artikel_list)
```
## Erste Auswertung
```{r}
themen_list <- group_by(artikel_list,Bereich, Titelthema)
alle_themen <- summarise(themen_list, count = n()) %>% arrange(desc(count))
titelthemen <- summarise(themen_list, count = n()) %>% filter(Titelthema == TRUE) %>% arrange(desc(count))
```
###Alle Artikel
```{r}
alle_themen
```
### Titel-Themen
```{r}
titelthemen
```
## Plots
### Alle Jahrgänge kombiniert
```{r}
#for all
p1 <- artikel_list %>%
count(Bereich) %>%
mutate(Bereich = fct_reorder(Bereich, n, .desc = TRUE)) %>%
ggplot(aes(x = Bereich, y = n)) + geom_bar(stat = 'identity') + theme(axis.text.x = element_text(angle = 60, hjust = 1), axis.title.x=element_blank(), axis.title.y=element_blank()) + scale_y_continuous(labels = function (x) floor(x)) + ggtitle('Themen BdW') + theme(plot.title = element_text(hjust = 0.5))
p2 <- artikel_list %>%
filter(Titelthema == TRUE) %>%
count(Bereich) %>%
mutate(Bereich = fct_reorder(Bereich, n, .desc = TRUE)) %>%
ggplot(aes(x = Bereich, y = n)) + geom_bar(stat = 'identity') + theme(axis.text.x = element_text(angle = 60, hjust = 1), axis.title.x=element_blank(), axis.title.y=element_blank()) + scale_y_continuous(labels = function (x) floor(x)) + ggtitle('Titel Themen BdW') + theme(plot.title = element_text(hjust = 0.5))
multiplot(p1,p2, cols=1)
```
### Jahr 2015
```{r}
jahrgang <- "2015"
plottitel = paste('Themen BdW ',jahrgang, sep = " ")
plottitelthemen = paste('Titel-Themen BdW ',jahrgang, sep = " ")
p3 <- artikel_list %>%
filter(str_detect(Ausgabe, jahrgang)) %>%
count(Bereich) %>%
mutate(Bereich = fct_reorder(Bereich, n, .desc = TRUE)) %>%
ggplot(aes(x = Bereich, y = n)) + geom_bar(stat = 'identity') + theme(axis.text.x = element_text(angle = 60, hjust = 1), axis.title.x=element_blank(), axis.title.y=element_blank()) + scale_y_continuous(labels = function (x) floor(x)) + ggtitle(plottitel) + theme(plot.title = element_text(hjust = 0.5))
p4 <- artikel_list %>%
filter(str_detect(Ausgabe, jahrgang)) %>%
filter(Titelthema == TRUE) %>%
count(Bereich) %>%
mutate(Bereich = fct_reorder(Bereich, n, .desc = TRUE)) %>%
ggplot(aes(x = Bereich, y = n)) + geom_bar(stat = 'identity') + theme(axis.text.x = element_text(angle = 60, hjust = 1), axis.title.x=element_blank(), axis.title.y=element_blank()) + scale_y_continuous(labels = function (x) floor(x)) + ggtitle(plottitelthemen) + theme(plot.title = element_text(hjust = 0.5))
multiplot(p3,p4, cols=1)
```
### Jahr 2016
```{r}
jahrgang <- "2016"
plottitel = paste('Themen BdW ',jahrgang, sep = " ")
p5 <- artikel_list %>%
filter(str_detect(Ausgabe, jahrgang)) %>%
count(Bereich) %>%
mutate(Bereich = fct_reorder(Bereich, n, .desc = TRUE)) %>%
ggplot(aes(x = Bereich, y = n)) + geom_bar(stat = 'identity') + theme(axis.text.x = element_text(angle = 60, hjust = 1), axis.title.x=element_blank(), axis.title.y=element_blank()) + scale_y_continuous(labels = function (x) floor(x)) + ggtitle(plottitel) + theme(plot.title = element_text(hjust = 0.5))
plottitelthemen = paste('Titel-Themen BdW ',jahrgang, sep = " ")
p6 <- artikel_list %>%
filter(str_detect(Ausgabe, jahrgang)) %>%
filter(Titelthema == TRUE) %>%
count(Bereich) %>%
mutate(Bereich = fct_reorder(Bereich, n, .desc = TRUE)) %>%
ggplot(aes(x = Bereich, y = n)) + geom_bar(stat = 'identity') + theme(axis.text.x = element_text(angle = 60, hjust = 1), axis.title.x=element_blank(), axis.title.y=element_blank()) + scale_y_continuous(labels = function (x) floor(x)) + ggtitle(plottitelthemen ) + theme(plot.title = element_text(hjust = 0.5))
multiplot(p5,p6, cols=1)
```
### Jahr 2017
```{r}
jahrgang <- "2017"
plottitel = paste('Themen BdW ',jahrgang, sep = " ")
p7 <- artikel_list %>%
filter(str_detect(Ausgabe, jahrgang)) %>%
count(Bereich) %>%
mutate(Bereich = fct_reorder(Bereich, n, .desc = TRUE)) %>%
ggplot(aes(x = Bereich, y = n)) + geom_bar(stat = 'identity') + theme(axis.text.x = element_text(angle = 60, hjust = 1), axis.title.x=element_blank(), axis.title.y=element_blank()) + scale_y_continuous(labels = function (x) floor(x)) + ggtitle(plottitel) + theme(plot.title = element_text(hjust = 0.5))
plottitelthemen = paste('Titel-Themen BdW ',jahrgang, sep = " ")
p8 <- artikel_list %>%
filter(str_detect(Ausgabe, jahrgang)) %>%
filter(Titelthema == TRUE) %>%
count(Bereich) %>%
mutate(Bereich = fct_reorder(Bereich, n, .desc = TRUE)) %>%
ggplot(aes(x = Bereich, y = n)) + geom_bar(stat = 'identity') + theme(axis.text.x = element_text(angle = 60, hjust = 1), axis.title.x=element_blank(), axis.title.y=element_blank()) + scale_y_continuous(labels = function (x) floor(x)) + ggtitle(plottitelthemen ) + theme(plot.title = element_text(hjust = 0.5))
multiplot(p7,p8, cols=1)
```
## Diskussion
* Das Bauchgefühl war nur teilweise richtig. Astronomie war insgesamt betrachtet das häufigste vertretene Themengebiet, aber 2015 war es Physik. Bei den Titelthemen waren in 2017 soziologische Themen die am häufigsten vorkamen und bei Artikeln insgesamt waren es technische Themen. Astronomie immer vorne dabei.
* Eine Erklärung für überdurchschnittliche Anzahl von Artikeln zu astronomischen Themen mögen auch Raumsonden wie Rosetta, Cassini und das Einsteinjahr 2015/16 sein.
* Themen wie Informatik scheinen unterrepräsentiert zu sein, doch habe ich Themn wie autonomes Fahren oder Robotik eher unter 'Technik' subsummiert.
## Textanalyse
Zum Abschluss noch eine kleine Darstellung der Worthäufigkeiten in den Titeln der BdW Artikel, enjoy
```{r message=FALSE}
library(tm)
library(ggplot2)
library(SnowballC)
library(wordcloud)
library(RColorBrewer)
df_title <- data.frame(doc_id=row.names(artikel_list),
text=artikel_list$Titel)
mycorpus <- Corpus(DataframeSource(df_title))
mycorpus <- tm_map(mycorpus, removePunctuation)
mycorpus <- tm_map(mycorpus, content_transformer(tolower))
mycorpus <- tm_map(mycorpus, stripWhitespace)
mycorpus <- tm_map(mycorpus, removeWords, c(stopwords("german")))
tdm <- DocumentTermMatrix(mycorpus)
m <- as.matrix(tdm)
v <- sort(colSums(m),decreasing=TRUE)
words <- names(v)
d <- data.frame(word=words, freq=v)
#display.brewer.all()
pal2 <- brewer.pal(3,"Dark2")
wordcloud(d$word,d$freq, scale=c(3,.2), max.words=150, random.color=TRUE,colors = pal2)
```