alphaicon/code/alphaicon_paper/2_compute_npi_dpi.r

64 lines
2.3 KiB
R
Raw Permalink Normal View History

2021-09-16 08:06:49 +01:00
# This code computes Direct Power Index and
# Network Power Index Mizuno, Doi, and Kurizaki (2020, p. 7)
# (https://doi.org/10.1371/journal.pone.0237862)
# for the UK entities in PSC data
library(data.table)
# NB: there seems to be a bug in multi-threaded data.table group
# processing in Windows: https://github.com/Rdatatable/data.table/issues/4294
setDTthreads(1)
set.seed(42)
# Declare working directory beforehand in an environment variable
# ALPHAICON_PATH = "path_to_your_folder"
# with the aid of usethis::edit_r_environ()
# Restart R session for the changes to make effect
setwd(Sys.getenv('ALPHAICON_PATH'))
# Load the function to compute power index
source("code/helper_functions/compute_power_index.r")
# Load British entities data
uk_entities <- fread("output/uk/uk_organisations_participants_2021_long_2aug21.csv", colClasses = c("character", "character", "factor", "numeric"), encoding = "UTF-8", na.strings = "")
uk_entities[, kind := NULL ]
gc()
# Remove self-loops and missing equity shares
uk_entities <- uk_entities[ participant_id != company_number & !is.na(equity_share) ]
# Normalize equity to one
uk_entities[, equity_share := 100*equity_share/sum(equity_share), by = "company_number" ]
# Run DPI computation on 10000 iterations
tic <- Sys.time()
uk_entities_dpi_10000iter <- compute_power_index(uk_entities,
participant_var = "participant_id",
entity_var = "company_number",
weight_var = "equity_share",
iterations = 10000,
powerindex = "dpi",
quota = 50,
save_labels = FALSE
)
toc <- Sys.time()
toc - tic # Takes 2.353837 days on Intel Xeon E5-2620
fwrite(uk_entities_dpi_10000iter, file = paste0("output/uk/npi_dpi/10000iter/uk_organisations_participants_2021_long_7sep21_dpi_10000iter.csv"), eol = "\n")
# Run NPI computation on 10000 iterations
tic <- Sys.time()
uk_entities_npi_10000iter <- compute_power_index(uk_entities,
participant_var = "participant_id",
entity_var = "company_number",
weight_var = "equity_share",
iterations = 10000,
powerindex = "npi",
quota = 50,
epsilon = 0.01,
iterations_to_discard = 1000,
save_labels = FALSE
)
toc <- Sys.time()
toc - tic # Takes 3.755192 days on Intel Xeon E5-2620
fwrite(uk_entities_npi_10000iter, file = paste0("output/uk/npi_dpi/10000iter/uk_organisations_participants_2021_long_7sep21_npi_10000iter.csv"), eol = "\n")