Notes

This report was generated on 2019-05-28 15:07:36. R version: 3.5.1 on x86_64-apple-darwin15.6.0. For this report, CRAN packages as of 2018-09-01 were used.

R-Script & data

The preprocessing and analysis of the data was conducted in the R project for statistical computing. The RMarkdown script used to generate this document and all the resulting data can be downloaded under this link. Through executing main.Rmd, the herein described process can be reproduced and this document can be generated. In the course of this, data from the folder ìnput will be processed and results will be written to output.

GitHub

The code for the herein described process can also be freely downloaded from https://github.com/koa87/2019-06-museums.

License

2019-06-museums von swissinfo.ch is licensed under Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).

Data description of output files

museums_answers_ratios.csv

Attribute Type Description
name Character Name of the museum
city Character City the museum is located
canton Character Canton the city is in
language Character Language spoken in the region of the museum
big_museum Boolean Either NA or 1 for the 10 most visited museums in Switzerland (3 of them did not answer)
single_exh_f Numeric Number of female artists in single exhibitions
single_exh_m Numeric Number of male artists in single exhibitions
group_exh_f Numeric Number of female artists in group exhibitions
group_exh_m Numeric Number of male artists in group exhibitions
visitors_lastyear Numeric Numbers of yearly visitors of the museum (latest year available)
female_artists_all Numeric Number of female artists - single and group exhibitions combined
male_artists_all Numeric Number of male artists - single and group exhibitions combined
single_exhibitions_all Numeric Total number of single exhibitions in this museum
group_exhibitions_all Numeric Total number of group exhibitions in this museum
per_single_exh_f Numeric Ratio of female artists in single exhibitions
per_single_exh_m Numeric Ratio of male artists in single exhibitions
per_group_exh_f Numeric Ratio of female artists in group exhibitions
per_group_exh_m Numeric Ratio of male artists in group exhibitions

Disclaimer

The published information has been carefully compiled, but does not claim to be up-to-date, complete or correct. No liability is assumed for damages arising from the use of this script or the information drawn from it. This also applies to contents of third parties which are accessible via this offer.

Original data source

Database

First, we defined what an art museum is. This is the definition by which we selected the museums we were going to include in our research: an art museum is “a public or private museum or gallery, which exhibits exhibitable artworks, collects and temporarily exhibits fine or applied art (including photography, design and sculptures, but no historical objects and small artworks). One or more permanent exhibitions are not enough, they have to organise temporary exhibitions.”

In order to establish a list of Swiss art museums, we started from a list of all 1111 Swiss museums by the Swiss Federal Statistical Office. We then compared this list to other information (for example a list that was published by Swiss newspaper Tages Anzeiger in 2014 and information provided by the Association of Swiss museums. We ended up having a list of 125 art museums and galleries that corresponded to our definition.

Procedure

We contacted all museums per e-mail and asked them if they could send us the following information: A list of all personal exhibitions - with names and gender of the artist - that took place between 2008 and 2018, as well as a list of all collective exhibitions with female and male artists divided by gender (no names necessary) for the same period. When possible, we said we would like to have these as separate lists in chronological order or listed by year, otherwise aggregated for the whole time span. We chose the time span of eleven years, because we knew that for most museums it meant a lot of work to put the information together. Nevertheless, 11 years is a significant amount of time. We contacted most museums at the end of March and and asked to receive the data by May 5th. We cannot give an analysis on how the situation has developed during this time span, as many museums didn’t separate their data into years.

Definition of personal or single exhibition: “an exhibition showing the artwork of only one artist or of more than one artist if they are identified as an artistic collective”. In this last case, each artist is counted in the statistic of single exhibitions – for example in a collective of 4 artists there can be 3 men and 1 woman. Everything else is considered as group exhibition – also when the exhibition is only showcasing the artwork of two artists, but which are not working as a collective.

Over the period of 6 weeks we got answers from almost all museums. 73 send us this information, however 16 of them only sent the information for the single exhibitions. In 5 cases, there were no group exhibitions. In 7 cases, we counted the information ourselves on their website (Fondation Beyeler, Mamco, Kunsthaus Glarus, Alte Fabrik, Pinacoteca communale Communale, Fotomuseum Winterthur, Kunsthaus Zug).

Queer artists: Since the main topic of our research is the visibility of female artists, as compared to male, we decided to adopt a binary gender definition when asking the museums for their data. However of course, not everybody identifies with one of these genders. Thus, when sending us the requested information, some of the museums pointed out that in the same period they exhibited queer artists as well. These artists were not included in the final numbers. Kunstmuseum Luzern: single exhibitions: one queer arist, group exhibitions: 3 queer artists. Kunsthalle Basel: 1 queer artist in a group exhibition. Migros Museum für Gegenwartskunst: 1 queer artist in single exhibitions, 2 queer artists in the group exhibitions.

Remarks: The Antikenmuseum Basel mostly exhibits antique artefacts. They only sent us data for two exhibitions with modern art. For the following museums, we don’t have data for the full period of 2008 - 2018: Kunst(Zeug)Haus (data from 2008 to 2016), Kunst+Wissen (2014 to 2018, no temporary exhibitions before that time), Musée des beaux-arts in Le Locle (no data for 2011 and 2012, museum was closed), MASI Lugano: before 2015, they were two separate museums, this is why we couldn’t access the archive for the exhibitions between 2008 and 2015, and therefore there is no data available, Museum of Digital Art: They only opened in 2016, therefore we did not include the data in the analysis.

Preperations

## [1] "package package:rmarkdown detached"
## Loading required package: knitr
## Loading required package: rstudioapi

Define packages

# from https://mran.revolutionanalytics.com/web/packages/checkpoint/vignettes/using-checkpoint-with-knitr.html
# if you don't need a package, remove it from here (commenting is probably not sufficient)
# tidyverse: see https://blog.rstudio.org/2016/09/15/tidyverse-1-0-0/
cat("
library(rstudioapi)
library(tidyverse) # ggplot2, dplyr, tidyr, readr, purrr, tibble
library(magrittr) # pipes
library(readxl) # excel
library(lintr) # code linting
library(rmarkdown)",
file = "manifest.R")

Install Packages

# if checkpoint is not yet installed, install it (for people using this
# system for the first time)
if (!require(checkpoint)) {
  if (!require(devtools)) {
    install.packages("devtools", repos = "http://cran.us.r-project.org")
    require(devtools)
  }
  devtools::install_github("RevolutionAnalytics/checkpoint",
                           ref = "v0.3.2", # could be adapted later,
                           # as of now (beginning of July 2017
                           # this is the current release on CRAN)
                           repos = "http://cran.us.r-project.org")
  require(checkpoint)
}
# nolint start
if (!dir.exists("~/.checkpoint")) {
  dir.create("~/.checkpoint")
}
# nolint end
# install packages for the specified CRAN snapshot date
checkpoint(snapshotDate = package_date,
           project = path_to_wd,
           verbose = T,
           scanForPackages = T,
           use.knitr = F,
           R.version = R_version)
rm(package_date)

Load packages

source("manifest.R")
unlink("manifest.R")
sessionInfo()
## R version 3.5.1 (2018-07-02)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS  10.14.4
## 
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] C/UTF-8/C/C/C/C
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] rmarkdown_1.10   lintr_1.0.2      readxl_1.1.0     magrittr_1.5    
##  [5] forcats_0.3.0    stringr_1.3.1    dplyr_0.7.6      purrr_0.2.5     
##  [9] readr_1.1.1      tidyr_0.8.1      tibble_1.4.2     ggplot2_3.0.0   
## [13] tidyverse_1.2.1  checkpoint_0.4.0 rstudioapi_0.7   knitr_1.20      
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_0.12.18     cellranger_1.1.0 compiler_3.5.1   pillar_1.3.0    
##  [5] plyr_1.8.4       bindr_0.1.1      tools_3.5.1      digest_0.6.16   
##  [9] lubridate_1.7.4  jsonlite_1.5     evaluate_0.11    nlme_3.1-137    
## [13] gtable_0.2.0     lattice_0.20-35  pkgconfig_2.0.2  rlang_0.2.2     
## [17] rex_1.1.2        cli_1.1.0        yaml_2.2.0       haven_1.1.2     
## [21] bindrcpp_0.2.2   withr_2.1.2      xml2_1.2.0       httr_1.3.1      
## [25] hms_0.4.2        rprojroot_1.3-2  grid_3.5.1       tidyselect_0.2.4
## [29] glue_1.3.0       R6_2.2.2         modelr_0.1.2     backports_1.1.2 
## [33] scales_1.0.0     htmltools_0.3.6  rvest_0.3.2      assertthat_0.2.0
## [37] colorspace_1.3-2 stringi_1.2.4    lazyeval_0.2.1   munsell_0.5.0   
## [41] broom_0.5.0      crayon_1.3.4

Read data

museen <- read_csv("input/museums_answers.csv")
## Parsed with column specification:
## cols(
##   name = col_character(),
##   city = col_character(),
##   canton = col_character(),
##   language = col_character(),
##   big_museum = col_integer(),
##   single_exh_f = col_double(),
##   single_exh_m = col_double(),
##   group_exh_f = col_double(),
##   group_exh_m = col_double(),
##   visitors_lastyear = col_integer(),
##   female_artists_all = col_double(),
##   male_artists_all = col_double(),
##   single_exhibitions_all = col_integer(),
##   group_exhibitions_all = col_double(),
##   per_single_exh_f = col_double(),
##   per_single_exh_m = col_double(),
##   per_group_exh_f = col_double(),
##   per_group_exh_m = col_double()
## )

Analyse data

# Add columns to museen
museen %<>% mutate(
  # add up all women for later analysis
  female_artists_all = single_exh_f + group_exh_f,
  # add up all men for later analysis
  male_artists_all = single_exh_m + group_exh_m,
  # add up all single exhibitions for later analysis 
  single_exhibitions_all = single_exh_f + single_exh_m, 
  # add up all group exhibitions for later analysis 
  group_exhibitions_all = group_exh_f + group_exh_m, 
  # calculate ratio of women in single exhibitions
  per_single_exh_f = single_exh_f / (single_exh_f + single_exh_m),
  # calculate ratio of men in single exhibitions
  per_single_exh_m = single_exh_m / (single_exh_f + single_exh_m),
  # calculate ratio of women in group exhibitions
  per_group_exh_f = group_exh_f / (group_exh_f + group_exh_m),
  # calculate ratio of men in group exhibitions
  per_group_exh_m = group_exh_m / (group_exh_f + group_exh_m)
)

# Calculate mean for women ratio for Single Exhibitions und Group Exhibitions
glue::glue(
  "The mean ratio of female single exhibitions is {ratio}",
  ratio = scales::percent(
    mean(museen$per_single_exh_f, na.rm = TRUE)
  )
)
## The mean ratio of female single exhibitions is 26.0%
glue::glue(
  "The mean ratio of female group exhibitions is {ratio}",
  ratio = scales::percent(
    mean(museen$per_group_exh_f, na.rm = TRUE)
  )
)
## The mean ratio of female group exhibitions is 30.6%
# Find museums with 50% or more women in single exhibitions
museen_single_female <- museen %>% 
  filter(per_single_exh_f >= 0.5)

# Find museums with 50% or more women in group exhibitions
museen_group_female <- museen %>% 
  filter(per_group_exh_f >= 0.5)

#write out the names
names_museum_group_female <- museen_group_female %>% 
  select(name)

# count mean values for big museums
museum_big <- museen %>% 
  filter(big_museum == 1) 

glue::glue(
  "The mean ratio of female single exhibitions in big museums only is {ratio}",
  ratio = scales::percent(
    mean(museum_big$per_single_exh_f, na.rm = TRUE)
  )
)
## The mean ratio of female single exhibitions in big museums only is 13.6%
glue::glue(
  "The mean ratio of female group exhibitions in big museums only is {ratio}",
  ratio = scales::percent(
    mean(museum_big$per_group_exh_f, na.rm = TRUE)
  )
)
## The mean ratio of female group exhibitions in big museums only is 12.3%
# count cantons
length(unique(museen$canton))
## [1] 20
numer_cantons <- museen %>%
  group_by(canton) %>%
  summarize(n())

# Count means for the cantons, single and group exhibitions 
cantons <- museen %>%
  group_by(canton) %>%
  summarise(
     mean_single = mean(per_single_exh_f, na.rm = TRUE),
     mean_group = mean(per_group_exh_f, na.rm = TRUE)
)

# Count means for the languages, single and group exhibitions 
languages <- museen %>%
 group_by(language) %>%
  summarise(
     mean_single = mean(per_single_exh_f, na.rm = TRUE),
     mean_group = mean(per_group_exh_f, na.rm = TRUE)
)

Visual analysis

# visualise big museums
ggplot(
  museum_big %>%
    select(name, city, per_single_exh_f, per_single_exh_m) %>%
    gather(gender, ratio, per_single_exh_f:per_single_exh_m) %>%
    mutate(gender = str_sub(gender, -1)),
  aes(
    y = ratio,
    x = name,
    fill = gender
  )
) +
  geom_bar(stat = "identity", position = "stack") +
  coord_flip() +
  theme_minimal() +
  scale_y_continuous(labels = scales::percent) +
  labs(
    title = "Gender ratio of the seven biggest art museums in Switzerland",
    fill = "Gender",
    x = NULL,
    y = NULL
  )

Export data

write_csv(
  museen,
  "output/museums_answers_ratios.csv"
)

Linting

Der Code in diesem RMarkdown wird mit lintr automatisch auf den Wickham’schen tidyverse style guide überprüft.

lintr::lint("main.Rmd", linters =
              lintr::with_defaults(
                commented_code_linter = NULL,
                trailing_whitespace_linter = NULL
                )
            )
# if you have additional scripts and want them to be linted too, add them here
# lintr::lint("scripts/my_script.R")