Nothing
## ----eval=FALSE----------------------------------------------------------
# devvtools::install_github("ellisp/nzelect/pkg2")
## ------------------------------------------------------------------------
library(nzelect)
library(tidyr)
library(dplyr)
nzge %>%
filter(election_year == 2011) %>%
mutate(voting_type = paste0(voting_type, " Vote")) %>%
group_by(party, voting_type) %>%
summarise(votes = sum(votes)) %>%
spread(voting_type, votes) %>%
ungroup() %>%
arrange(desc(`Party Vote`))
## ----fig.width = 7, fig.height = 7---------------------------------------
library(ggplot2, quietly = TRUE)
library(scales, quietly = TRUE)
library(GGally, quietly = TRUE) # for ggpairs
library(dplyr)
proportions <- nzge %>%
filter(election_year == 2014) %>%
group_by(voting_place, voting_type) %>%
summarise(`proportion Labour` = sum(votes[party == "Labour Party"]) / sum(votes),
`proportion National` = sum(votes[party == "National Party"]) / sum(votes),
`proportion Greens` = sum(votes[party == "Green Party"]) / sum(votes),
`proportion NZF` = sum(votes[party == "New Zealand First Party"]) / sum(votes),
`proportion Maori` = sum(votes[party == "Maori Party"]) / sum(votes))
ggpairs(proportions, aes(colour = voting_type), columns = 3:5)
## ----fig.width = 7, fig.height = 5---------------------------------------
library(ggthemes) # for theme_map()
nzge %>%
filter(voting_type == "Party" & election_year == 2014) %>%
group_by(voting_place, election_year) %>%
summarise(proportion_national = sum(votes[party == "National Party"] / sum(votes))) %>%
left_join(voting_places, by = c("voting_place", "election_year")) %>%
filter(voting_place_suburb != "Chatham Islands") %>%
mutate(mostly_national = ifelse(proportion_national > 0.5,
"Mostly voted National", "Mostly didn't vote National")) %>%
ggplot(aes(x = longitude, y = latitude, colour = proportion_national)) +
geom_point() +
facet_wrap(~mostly_national) +
coord_map() +
borders("nz") +
scale_colour_gradient2(label = percent, mid = "grey80", midpoint = 0.5) +
theme_map() +
theme(legend.position = c(0.04, 0.5)) +
ggtitle("Voting patterns in the 2014 General Election\n")
## ----fig.width=7, fig.height=9-------------------------------------------
nzge %>%
filter(election_year == 2014) %>%
filter(voting_type == "Party") %>%
left_join(voting_places, by = c("voting_place", "election_year")) %>%
group_by(REGC2014_N) %>%
summarise(
total_votes = sum(votes),
proportion_national = round(sum(votes[party == "National Party"]) / total_votes, 3)) %>%
arrange(proportion_national)
# what are all those NA Regions?:
nzge %>%
filter(voting_type == "Party" & election_year == 2014) %>%
left_join(voting_places, by = c("voting_place", "election_year")) %>%
filter(is.na(REGC2014_N)) %>%
group_by(voting_place) %>%
summarise(total_votes = sum(votes))
nzge %>%
filter(voting_type == "Party" & election_year == 2014) %>%
left_join(voting_places, by = c("voting_place", "election_year")) %>%
group_by(TA2014_NAM) %>%
summarise(
total_votes = sum(votes),
proportion_national = round(sum(votes[party == "National Party"]) / total_votes, 3)) %>%
arrange(desc(proportion_national)) %>%
mutate(TA = ifelse(is.na(TA2014_NAM), "Special or other", as.character(TA2014_NAM)),
TA = gsub(" District", "", TA),
TA = gsub(" City", "", TA),
TA = factor(TA, levels = TA)) %>%
ggplot(aes(x = proportion_national, y = TA, size = total_votes)) +
geom_point() +
scale_x_continuous("Proportion voting National Party", label = percent) +
scale_size("Number of\nvotes cast", label = comma) +
labs(y = "", title = "Voting in the New Zealand 2014 General Election by Territorial Authority")
## ----fig.width = 8-------------------------------------------------------
library(forcats)
polls %>%
filter(MidDate > as.Date("2014-11-20") & !is.na(VotingIntention)) %>%
filter(Party %in% c("National", "Labour", "Green", "NZ First")) %>%
mutate(Party = fct_reorder(Party, VotingIntention, .desc = TRUE),
Party = fct_drop(Party)) %>%
ggplot(aes(x = MidDate, y = VotingIntention, colour = Party, linetype = Pollster)) +
geom_line(alpha = 0.5) +
geom_point(aes(shape = Pollster)) +
geom_smooth(aes(group = Party), se = FALSE, colour = "grey15", span = .4) +
scale_colour_manual(values = parties_v) +
scale_y_continuous("Voting intention", label = percent) +
scale_x_date("") +
facet_wrap(~Party, scales = "free_y")
## ------------------------------------------------------------------------
votes <- c(National = 1131501, Labour = 604535, Green = 257359,
NZFirst = 208300, Cons = 95598, IntMana = 34094,
Maori = 31849, Act = 16689, United = 5286,
Other = 20411)
electorate = c(41, 27, 0,
0, 0, 0,
1, 1, 1,
0)
# Actual result:
allocate_seats(votes, electorate = electorate)
# Result if there were no 5% minimum threshold:
allocate_seats(votes, electorate = electorate, threshold = 0)$seats_v
## ------------------------------------------------------------------------
# electorate seats for Act, Cons, Green, Labour, Mana, Maori, National, NZFirst, United,
# assuming that electorates stay as currently allocated. This is critical particularly
# for ACT, Maori and United Future, who if they lose their single electorate seat each
# will not be represented in parliament
electorates <- c(1,0,0,27,0,1,41,1,1)
polls %>%
filter(MidDate > "2014-12-30" & MidDate < "2017-10-1" & Party != "TOP") %>%
mutate(wt_p = weight_polls(MidDate, method = "pundit", refdate = as.Date("2017-09-22")),
wt_c = weight_polls(MidDate, method = "curia", refdate = as.Date("2017-09-22"))) %>%
group_by(Party) %>%
summarise(pundit_perc = round(sum(VotingIntention * wt_p, na.rm = TRUE) / sum(wt_p) * 100, 1),
curia_perc = round(sum(VotingIntention * wt_c, na.rm = TRUE) / sum(wt_c) * 100, 1)) %>%
ungroup() %>%
mutate(pundit_seats = allocate_seats(pundit_perc, electorate = electorates)$seats_v,
curia_seats = allocate_seats(curia_perc, electorate = electorates)$seats_v)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.