133 lines
5.1 KiB
R
133 lines
5.1 KiB
R
library(tidyverse)
|
|
entest_fp <-"/mmfs1/gscratch/comdata/users/mjilg/mw-repo-lifecycles/case1/en-testing_0217_extensions_ve_weekly_commit_count_data.csv"
|
|
entest_df <- read.csv(entest_fp, header = TRUE) |> mutate(rd_event = "en-testing")
|
|
|
|
widetest_fp <-"/mmfs1/gscratch/comdata/users/mjilg/mw-repo-lifecycles/case1/wide-testing_0217_extensions_ve_weekly_commit_count_data.csv"
|
|
widetest_df <- read.csv(widetest_fp, header = TRUE) |> mutate(rd_event = "wide-testing")
|
|
|
|
event_fp <-"/mmfs1/gscratch/comdata/users/mjilg/mw-repo-lifecycles/case1/event_0217_extensions_ve_weekly_commit_count_data.csv"
|
|
event_df <- read.csv(event_fp, header = TRUE) |> mutate(rd_event = "default")
|
|
|
|
input_df <- bind_rows(entest_df, widetest_df, event_df)
|
|
#input_df <- bind_rows(entest_df, widetest_df)
|
|
|
|
input_df <- input_df |>
|
|
mutate(nonbot_commit_count = commit_count - bot_commit_count)|>
|
|
mutate(other_commit_count = nonbot_commit_count - mediawiki_dev_commit_count - wikia_commit_count - wikimedia_commit_count) |>
|
|
mutate(wikimedia_commit_count = wikimedia_commit_count + mediawiki_dev_commit_count + wikia_commit_count) |>
|
|
dplyr::select(-mediawiki_dev_commit_count) |>
|
|
dplyr::select(-wikia_commit_count)
|
|
|
|
library(MASS)
|
|
|
|
library(lme4)
|
|
library(dplyr)
|
|
|
|
#get into mlm format
|
|
long_df <- input_df |>
|
|
pivot_longer(cols = c(other_commit_count, wikimedia_commit_count),
|
|
names_to = "commit_type",
|
|
values_to = "lengthened_commit_count")
|
|
|
|
intermediate_long_df <- long_df |>
|
|
mutate(commit_share = lengthened_commit_count / (nonbot_commit_count)) |>
|
|
mutate(log_commits = log1p(lengthened_commit_count))|>
|
|
mutate(scaled_long_commits = lengthened_commit_count / 10)
|
|
|
|
library(rdd)
|
|
|
|
intermediate_long_df <- intermediate_long_df |>
|
|
drop_na()
|
|
|
|
var(intermediate_long_df$commit_share) # 1253.343
|
|
mean(intermediate_long_df$commit_share) # 44.92381
|
|
median(intermediate_long_df$commit_share) # 39.5
|
|
|
|
get_optimal_bandwidth <- function(df){
|
|
bw <- tryCatch({
|
|
IKbandwidth(df$relative_week, df$commit_share, cutpoint = 0, verbose = FALSE, kernel = "triangular")
|
|
}, error = function(e) {
|
|
NA
|
|
})
|
|
}
|
|
|
|
optimal_bandwidth <- get_optimal_bandwidth(intermediate_long_df)
|
|
|
|
|
|
window_num <- 18
|
|
final_long_df <- intermediate_long_df |>
|
|
filter(relative_week >= (- window_num) & relative_week <= (window_num))
|
|
|
|
library(fitdistrplus)
|
|
descdist(long_df$lengthened_commit_count, discrete=FALSE)
|
|
#start_values <- list(shape1 = 1, shape2 = 1)
|
|
#fit <- MASS::fitdistr(as.numeric(long_df$lengthened_commit_count), "negative binomial")
|
|
print(fit)
|
|
|
|
#NOTE should not run if you've already dropped NA
|
|
mlm <- glmer.nb(lengthened_commit_count ~ before_after*relative_week +
|
|
(before_after*relative_week|commit_type) +
|
|
(before_after*relative_week|rd_event),
|
|
control=glmerControl(optimizer="bobyqa",
|
|
optCtrl=list(maxfun=2e5)), nAGQ=0,
|
|
data=long_df)
|
|
#mlm <- lmer(lengthened_commit_count ~ before_after*relative_week+
|
|
# (before_after*relative_week|commit_type) +
|
|
# (before_after*relative_week|rd_event) ,data=long_df)
|
|
summary(mlm)
|
|
qqnorm(residuals(mlm))
|
|
res <- ranef(mlm)
|
|
print(res)
|
|
|
|
#final_long_df <- final_long_df |>
|
|
# drop_na()
|
|
library(performance)
|
|
#descdist(long_df$commit_share, discrete=FALSE)
|
|
#fit <- MASS::fitdistr(as.numeric(long_df$commit_share), "normal")
|
|
#print(fit)
|
|
wikimedia_long_df <- final_long_df |>
|
|
filter(commit_type == "wikimedia_commit_count")
|
|
wikimedia_share_lmer <- lmer(commit_share ~ before_after*relative_week +
|
|
(1| rd_event),
|
|
data=wikimedia_long_df)
|
|
summary(wikimedia_share_lmer)
|
|
icc(wikimedia_share_lmer)
|
|
|
|
other_long_df <- final_long_df |>
|
|
filter(commit_type == "other_commit_count")
|
|
other_share_lmer <- lm(commit_share ~ before_after*relative_week,
|
|
data=other_long_df)
|
|
summary(other_share_lmer)
|
|
icc(other_share_lmer)
|
|
|
|
#power analysis
|
|
#library(simr)
|
|
#simrOptions(progress=FALSE)
|
|
|
|
## Intercept and slopes for intervention, time1, time2, intervention:time1, intervention:time2
|
|
#wmf_fixed <- c(0.511, -0.166, 0.002, 0.007)
|
|
## Random intercepts for participants clustered by class
|
|
#wmf_rand <- matrix(c(
|
|
# 0.01, 0.005, 0.002, 0.001,
|
|
# 0.005, 0.02, 0.003, 0.004,
|
|
# 0.002, 0.003, 0.015, 0.006,
|
|
# 0.001, 0.004, 0.006, 0.01
|
|
#), nrow=4, byrow=TRUE)
|
|
## residual variance
|
|
#wmf_res <- 0.2065
|
|
|
|
#wmf_model <- makeLmer(commit_share ~ before_after*relative_week + (before_after*relative_week | rd_event),
|
|
# fixef=wmf_fixed, VarCorr=wmf_rand, sigma=wmf_res, data=wikimedia_long_df)
|
|
|
|
#sim_treat <- powerSim(wmf_model, nsim=100, test = fcompare(commit_share~relative_week))
|
|
#sim_treat
|
|
|
|
#model_ext_subj <- extend(wmf_model, within="rd_event+before_after+relative_week", n=30)
|
|
#sim_treat_subj <- powerSim(model_ext_subj, nsim=100, test = fcompare(commit_share~before_after*relative_week))
|
|
#sim_treat_subj
|
|
|
|
#p_curve_treat <- powerCurve(model_ext_subj, test=fcompare(commit_share~before_after*relative_week),
|
|
# within="rd_event+before_after+relative_week",
|
|
# breaks=c(5,10,15,20))
|
|
#plot(p_curve_treat)
|