Gruppe 2 - Pöbelindex

13.07.2019 - Nils Uhlemann, Matthias Brandt, Patrick Marten, Maria Kryvolap, Robert Ortmann - Reading time ~2 Minutes

Datengrundlage: Germaparl 18. LP. Analyse der Zurufe

1. Hypothese: Im Bundestag werden die Regierungsparteien (CDU/CSU/SPD) häufiger als der Rest in ihren Reden unterbrochen.

2. Hypothese: Zwischenrufe sind meist Widersprüche (negativ gemeint).


#load(".../lp_18.rda")
load("../../../daten/polmineR/lp_18.rda")


ZR <- lp_18[lp_18$interjection==TRUE,c("word", "date", "party", "speaker")]

Nach der Erstellung einer Datei nur mit Zurufen werden diese alphabetisch geordnet.

ZR_O <- ZR[order(ZR$word),]


ZR$nr <- 1:nrow(ZR)
ZR_O <- ZR[order(ZR$word),]
ZR$nr <- 1:nrow(ZR_O)
ZR_O$nnr <- 1:nrow(ZR_O)

Festgestellt, dass die benötigten Zurufe nur in einem bestimmten Bereich vorhanden sind –> Auswahl nur dieses Bereichs

#View(ZR_O)
ZRZR <- ZR_O[(80705:118600),]  ##Auswahl der Zurufe ohne Beifall

#View(ZRZR)
parteien <- rep(0,length(unique(ZRZR$party)))

Zusammenzählen der Zurufe während der Redezeit der jeweiligen Parteien

for (i in 1:length(parteien)){parteien[i] <- sum(ZRZR$party == (unique(ZRZR$party))[i])}
names(parteien) <- unique(ZRZR$party)
print(parteien)
##  LINKE GRUENE    SPD    CDU    CSU           FDP 
##   5387   5352   8802  13385   4865     83     22
#Anteil dder Zurufe während der Reden folgender Parteien
Anteil <- (parteien / 37896) 
barplot(Anteil)

Verschiedene Redeanteile, daher Berechnung der Anteile

for (i in 1:length(parteien)){parteien[i] <- sum(lp_18$party == (unique(lp_18$party))[i])}
names(parteien) <- unique(ZRZR$party)
print(parteien)
##  LINKE GRUENE    SPD    CDU    CSU           FDP 
##  68977  41831  66768  44437  25414     65    297
parteien_abs <- parteien

for (i in 1:length(parteien)){parteien[i] <- sum(ZRZR$party == (unique(ZRZR$party))[i])}
parteien_ZR <- parteien
parteien_ZR / parteien_abs
##      LINKE     GRUENE        SPD        CDU        CSU            
## 0.07809850 0.12794339 0.13182962 0.30121295 0.19142992 1.27692308 
##        FDP 
## 0.07407407
parteien_ZR / parteien_abs * 100
##      LINKE     GRUENE        SPD        CDU        CSU            
##   7.809850  12.794339  13.182962  30.121295  19.142992 127.692308 
##        FDP 
##   7.407407
parteien_rel <- parteien_ZR / parteien_abs * 100


barplot(parteien_rel)

## Fraktionslose als Extremwert fliegt raus

barplot(parteien_rel[c(1:5,7)])

Sentiment-Analyse

#install.packages(c("tidyverse", "tidytext", "stringr", "lsa", "SnowballC", "wordcloud"))
library("tidyverse")
library("tidytext")
library("stringr")
library("lsa")
library("SnowballC")
library("wordcloud")
library("stopwords")
#library(help="quanteda")
stopwords(language = "de", source = "snowball") %>% head(20)
#MdB <- read.csv(".../mdb18.csv")

Excel-Tabelle (mdb18.csv) mit Namen der Bundestagsabgeordneten zur Filterung für die Stopwords

neuestop <- c(stopwords(language = "de", source = "snowball"), "[FDP]", "[CDU]", "[SPD]", "[GRUENE]", "[CSU]", "[LINKE]") 

length(neuestop)


neuestop <- c(stopwords(language = "de", source = "snowball"), "[FDP]", "[CDU]", "[SPD]", "[GRUENE]", "[CSU]", "[LINKE]", MdB$Name)


#install.packages("tibble")
ZR_Corpus <- corpus(ZR_O, text_field = "word")
docvars(ZR_Corpus, "party") <- ZR_O$party

dfm_polar <- dfm(ZR_Corpus, groups="party", dictionary = data_dictionary_Rauh [3:4]) # soll Polarität getrennt nach Partei entsprechend dem data dictionary für den corpus ausrechnen////
  
head(dfm_polar)

polar <- convert(dfm_polar, "data.frame")
names(polar)

Grafik erstellen zur Übersicht

barplot(as.matrix(t(polar[,2:3])))