add analysis_wilcoxon

This commit is contained in:
zhangxunhui 2021-05-30 09:03:43 -04:00
parent 235076bd5e
commit c3856d0242
11 changed files with 716 additions and 22 deletions

310
analysis_its.R Normal file
View File

@ -0,0 +1,310 @@
# aim: analysis two time points using ITS method
# date: 2021-05-29
# author: zxh
library(RMySQL)
library(yaml)
library(plyr)
library(pROC)
library("rjson")
library("stringr")
require(lmerTest)
library(dplyr)
library(pscl)
require(MASS)
categorical_factors = c('has_goal', 'freelancer', 'company_null', 'email_null', 'isEmployee', 'isBountyHunter', 'isCampusExpert', 'isDeveloperProgramMember', 'isGitHubStar', 'isHireable', 'isSiteAdmin', 'location_null', 'twitterUsername_null', "other_way", "intervention")
convertData_type <- function(df) {
for (coln in colnames(df)) {
if (coln %in% categorical_factors) {
df[[coln]] = as.factor(df[[coln]]) # do not convert to logical factor
}
}
df
}
dbConfig <- yaml.load_file('config.yaml')
db_user <- dbConfig$mysql$user
db_password <- dbConfig$mysql$passwd
db_name <- dbConfig$mysql$db
db_host <- dbConfig$mysql$host # for local access
db_port <- as.numeric(dbConfig$mysql$port)
conn <- dbConnect(MySQL(), user = db_user, password = db_password,
dbname = db_name, host = db_host, port = db_port)
q = "select * from middle_data_its"
rs <- dbSendQuery(conn, q)
df <- fetch(rs, n = -1)
rmout = function(df) {
df = df[!(df[["month_index"]]==0),]
return(df)
}
df = rmout(df)
###########
#### 1. mid time: sponsor account create, num commits
df_sponsor_account_create_time = df[(df[['mid_time_point_type']]=="sponsor_account_create_time"),]
df_sponsor_account_create_time = convertData_type(df_sponsor_account_create_time)
df_sponsor_account_create_time$has_goal = relevel(df_sponsor_account_create_time$has_goal, ref = "0")
df_sponsor_account_create_time$company_null = relevel(df_sponsor_account_create_time$company_null, ref = "1")
df_sponsor_account_create_time$email_null = relevel(df_sponsor_account_create_time$email_null, ref = "1")
df_sponsor_account_create_time$isHireable = relevel(df_sponsor_account_create_time$isHireable, ref = "0")
df_sponsor_account_create_time$location_null = relevel(df_sponsor_account_create_time$location_null, ref = "1")
df_sponsor_account_create_time$other_way = relevel(df_sponsor_account_create_time$other_way, ref = "0")
df_sponsor_account_create_time$intervention = relevel(df_sponsor_account_create_time$intervention, ref = "0")
m_commit_num_sponsor_account_create_time = lmer(
formula=scale(log(commit_num+0.5))~
scale(log(history_commit_num+0.5)) +
# scale(log(history_pr_num+0.5)) +
# scale(log(history_issue_num+0.5)) +
scale(log(history_discussion_num+0.5)) +
scale(log(history_sponsored_num+0.5)) +
scale(log(history_star_num+0.5)) +
# scale(log(min_tier+0.5)) +
# scale(log(max_tier+0.5)) +
has_goal +
other_way +
company_null +
# email_null +
isHireable +
# location_null +
time +
intervention +
time_after_intervention +
(1|login),
verbose=TRUE,
data=df_sponsor_account_create_time
)
car::vif(m_commit_num_sponsor_account_create_time)
library(MuMIn)
r.squaredGLMM(m_commit_num_sponsor_account_create_time)
car::Anova(m_commit_num_sponsor_account_create_time, type="II")
############
### 2. mid time: sponsor account create, discussion num
m_discussion_num_sponsor_account_create_time = lmer(
formula=scale(log(discussion_num+0.5))~
scale(log(history_commit_num+0.5)) +
# scale(log(history_pr_num+0.5)) +
# scale(log(history_issue_num+0.5)) +
scale(log(history_discussion_num+0.5)) +
scale(log(history_sponsored_num+0.5)) +
scale(log(history_star_num+0.5)) +
# scale(log(min_tier+0.5)) +
# scale(log(max_tier+0.5)) +
has_goal +
other_way +
company_null +
# email_null +
isHireable +
# location_null +
time +
intervention +
time_after_intervention +
(1|login),
verbose=TRUE,
data=df_sponsor_account_create_time
)
car::vif(m_discussion_num_sponsor_account_create_time)
library(MuMIn)
r.squaredGLMM(m_discussion_num_sponsor_account_create_time)
car::Anova(m_discussion_num_sponsor_account_create_time, type="II")
##############
### 3. mid time: first sponsored time, commit_num
df_first_sponsored_create_time = df[(df[['mid_time_point_type']]=="first_sponsored_create_time"),]
df_first_sponsored_create_time = convertData_type(df_first_sponsored_create_time)
df_first_sponsored_create_time$has_goal = relevel(df_first_sponsored_create_time$has_goal, ref = "0")
df_first_sponsored_create_time$company_null = relevel(df_first_sponsored_create_time$company_null, ref = "1")
df_first_sponsored_create_time$email_null = relevel(df_first_sponsored_create_time$email_null, ref = "1")
df_first_sponsored_create_time$isHireable = relevel(df_first_sponsored_create_time$isHireable, ref = "0")
df_first_sponsored_create_time$location_null = relevel(df_first_sponsored_create_time$location_null, ref = "1")
df_first_sponsored_create_time$other_way = relevel(df_first_sponsored_create_time$other_way, ref = "0")
df_first_sponsored_create_time$intervention = relevel(df_first_sponsored_create_time$intervention, ref = "0")
m_commit_num_first_sponsored_create_time = lmer(
formula=scale(log(commit_num+0.5))~
scale(log(history_commit_num+0.5)) +
# scale(log(history_pr_num+0.5)) +
# scale(log(history_issue_num+0.5)) +
scale(log(history_discussion_num+0.5)) +
# scale(log(history_sponsored_num+0.5)) +
scale(log(history_star_num+0.5)) +
# scale(log(min_tier+0.5)) +
# scale(log(max_tier+0.5)) +
has_goal +
other_way +
company_null +
# email_null +
isHireable +
# location_null +
time +
intervention +
time_after_intervention +
(1|login),
verbose=TRUE,
data=df_first_sponsored_create_time
)
car::vif(m_commit_num_first_sponsored_create_time)
library(MuMIn)
r.squaredGLMM(m_commit_num_first_sponsored_create_time)
car::Anova(m_commit_num_first_sponsored_create_time, type="II")
#############
## 4. mid time: first sponsored time, discussion num
m_discussion_num_first_sponsored_create_time = lmer(
formula=scale(log(discussion_num+0.5))~
scale(log(history_commit_num+0.5)) +
# scale(log(history_pr_num+0.5)) +
# scale(log(history_issue_num+0.5)) +
scale(log(history_discussion_num+0.5)) +
# scale(log(history_sponsored_num+0.5)) +
scale(log(history_star_num+0.5)) +
# scale(log(min_tier+0.5)) +
# scale(log(max_tier+0.5)) +
has_goal +
other_way +
company_null +
# email_null +
isHireable +
location_null +
time +
intervention +
time_after_intervention +
(1|login),
verbose=TRUE,
data=df_first_sponsored_create_time
)
car::vif(m_discussion_num_first_sponsored_create_time)
library(MuMIn)
r.squaredGLMM(m_discussion_num_first_sponsored_create_time)
car::Anova(m_discussion_num_first_sponsored_create_time, type="II")
##### print the result
summary_m1 = as.data.frame(coef(summary(m_commit_num_sponsor_account_create_time)))
summary_m3 = as.data.frame(coef(summary(m_discussion_num_sponsor_account_create_time)))
summary_m2 = as.data.frame(coef(summary(m_commit_num_first_sponsored_create_time)))
summary_m4 = as.data.frame(coef(summary(m_discussion_num_first_sponsored_create_time)))
r2_m1 = r.squaredGLMM(m_commit_num_sponsor_account_create_time)
r2_m3 = r.squaredGLMM(m_discussion_num_sponsor_account_create_time)
r2_m2 = r.squaredGLMM(m_commit_num_first_sponsored_create_time)
r2_m4 = r.squaredGLMM(m_discussion_num_first_sponsored_create_time)
anova_m1 = car::Anova(m_commit_num_sponsor_account_create_time, type="II")
anova_m3 = car::Anova(m_discussion_num_sponsor_account_create_time, type="II")
anova_m2 = car::Anova(m_commit_num_first_sponsored_create_time, type="II")
anova_m4 = car::Anova(m_discussion_num_first_sponsored_create_time, type="II")
library(stringi)
add_0 = function(v) {
ss = str_split(v, "\\.")[[1]]
if(length(ss) == 1) {
r = paste(ss[1], ".", stri_pad_right(0, 2, 0), sep="")
} else {
r = paste(ss[1], ".", stri_pad_right(ss[2], 2, 0), sep="")
}
return(r)
}
print_estimate = function(est) {
round_est = round(est, 2)
round_est = add_0(as.character(round_est))
if (startsWith(round_est, "-")) {
return(round_est)
} else {
return(paste("\\,\\,\\,", round_est, sep=""))
}
}
print_star = function(p) {
if (p < 0.001) {
p = "***"
} else if (p < 0.01) {
p = "**\\,\\,\\,"
} else if (p < 0.05) {
p = "*\\,\\,\\,\\,\\,\\,"
} else if (p < 0.1) {
p = ".\\,\\,\\,\\,\\,\\,\\,"
} else {
p = "\\,\\,\\,\\,\\,\\,\\,\\,\\,"
}
return(p)
}
# print the variance
print_variance = function(variance){
round_variance = round(variance, 2)
if(round_variance >= 1000) {
return(add_0(as.character(round_variance)))
} else if (round_variance >= 100) {
return(paste("\\,\\,\\,", add_0(as.character(round_variance)), sep=""))
} else if (round_variance >= 10) {
return(paste("\\,\\,\\,\\,\\,\\,", add_0(as.character(round_variance)), sep=""))
} else {
return(paste("\\,\\,\\,\\,\\,\\,\\,\\,\\,", add_0(as.character(round_variance)), sep=""))
}
}
print_err = function(err) {
round_err = round(err, 2)
round_err = add_0(as.character(round_err))
return(paste("(", round_err, ")", sep=""))
}
lines = c()
# 1. intercept
lines = c(lines, paste("(Intercept) & $", print_estimate(summary_m1['(Intercept)', 1]), "^{", print_star(summary_m1['(Intercept)', 5]), "}", print_err(summary_m1['(Intercept)', 2]), "$ & & $", print_estimate(summary_m2['(Intercept)', 1]), "^{", print_star(summary_m2['(Intercept)', 5]), "}", print_err(summary_m2['(Intercept)', 2]), "$ & & $", print_estimate(summary_m3['(Intercept)', 1]), "^{", print_star(summary_m3['(Intercept)', 5]), "}", print_err(summary_m3['(Intercept)', 2]), "$ & & $", print_estimate(summary_m4['(Intercept)', 1]), "^{", print_star(summary_m4['(Intercept)', 5]), "}", print_err(summary_m4['(Intercept)', 2]), "$ & \\\\", sep=""))
# 2. number of commits before
lines = c(lines, paste("scale(log(\\emph{number of commits before} + 0.5)) & $", print_estimate(summary_m1['scale(log(history_commit_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(history_commit_num + 0.5))', 5]), "}", print_err(summary_m1['scale(log(history_commit_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(history_commit_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(history_commit_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(history_commit_num + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(history_commit_num + 0.5))', 5]), "}", print_err(summary_m2['scale(log(history_commit_num + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(history_commit_num + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(history_commit_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m3['scale(log(history_commit_num + 0.5))', 1]), "^{", print_star(summary_m3['scale(log(history_commit_num + 0.5))', 5]), "}", print_err(summary_m3['scale(log(history_commit_num + 0.5))', 2]), "$ & $", print_variance(anova_m3['scale(log(history_commit_num + 0.5))', 1]), "^{", print_star(anova_m3['scale(log(history_commit_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m4['scale(log(history_commit_num + 0.5))', 1]), "^{", print_star(summary_m4['scale(log(history_commit_num + 0.5))', 5]), "}", print_err(summary_m4['scale(log(history_commit_num + 0.5))', 2]), "$ & $", print_variance(anova_m4['scale(log(history_commit_num + 0.5))', 1]), "^{", print_star(anova_m4['scale(log(history_commit_num + 0.5))', 3]), "}$ \\\\", sep=""))
# 3. number of discussions
lines = c(lines, paste("scale(log(\\emph{number of discussions before} + 0.5)) & $", print_estimate(summary_m1['scale(log(history_discussion_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(history_discussion_num + 0.5))', 5]), "}", print_err(summary_m1['scale(log(history_discussion_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(history_discussion_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(history_discussion_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(history_discussion_num + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(history_discussion_num + 0.5))', 5]), "}", print_err(summary_m2['scale(log(history_discussion_num + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(history_discussion_num + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(history_discussion_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m3['scale(log(history_discussion_num + 0.5))', 1]), "^{", print_star(summary_m3['scale(log(history_discussion_num + 0.5))', 5]), "}", print_err(summary_m3['scale(log(history_discussion_num + 0.5))', 2]), "$ & $", print_variance(anova_m3['scale(log(history_discussion_num + 0.5))', 1]), "^{", print_star(anova_m3['scale(log(history_discussion_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m4['scale(log(history_discussion_num + 0.5))', 1]), "^{", print_star(summary_m4['scale(log(history_discussion_num + 0.5))', 5]), "}", print_err(summary_m4['scale(log(history_discussion_num + 0.5))', 2]), "$ & $", print_variance(anova_m4['scale(log(history_discussion_num + 0.5))', 1]), "^{", print_star(anova_m4['scale(log(history_discussion_num + 0.5))', 3]), "}$ \\\\", sep=""))
# # 4. number of sponsors
lines = c(lines, paste("scale(log(\\emph{number of sponsors before} + 0.5)) & $", print_estimate(summary_m1['scale(log(history_sponsored_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(history_sponsored_num + 0.5))', 5]), "}", print_err(summary_m1['scale(log(history_sponsored_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(history_sponsored_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(history_sponsored_num + 0.5))', 3]), "}$ & & & $", print_estimate(summary_m3['scale(log(history_sponsored_num + 0.5))', 1]), "^{", print_star(summary_m3['scale(log(history_sponsored_num + 0.5))', 5]), "}", print_err(summary_m3['scale(log(history_sponsored_num + 0.5))', 2]), "$ & $", print_variance(anova_m3['scale(log(history_sponsored_num + 0.5))', 1]), "^{", print_star(anova_m3['scale(log(history_sponsored_num + 0.5))', 3]), "}$ & & \\\\", sep=""))
# 5. number of stars
lines = c(lines, paste("scale(log(\\emph{number of stars before} + 0.5)) & $", print_estimate(summary_m1['scale(log(history_star_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(history_star_num + 0.5))', 5]), "}", print_err(summary_m1['scale(log(history_star_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(history_star_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(history_star_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(history_star_num + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(history_star_num + 0.5))', 5]), "}", print_err(summary_m2['scale(log(history_star_num + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(history_star_num + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(history_star_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m3['scale(log(history_star_num + 0.5))', 1]), "^{", print_star(summary_m3['scale(log(history_star_num + 0.5))', 5]), "}", print_err(summary_m3['scale(log(history_star_num + 0.5))', 2]), "$ & $", print_variance(anova_m3['scale(log(history_star_num + 0.5))', 1]), "^{", print_star(anova_m3['scale(log(history_star_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m4['scale(log(history_star_num + 0.5))', 1]), "^{", print_star(summary_m4['scale(log(history_star_num + 0.5))', 5]), "}", print_err(summary_m4['scale(log(history_star_num + 0.5))', 2]), "$ & $", print_variance(anova_m4['scale(log(history_star_num + 0.5))', 1]), "^{", print_star(anova_m4['scale(log(history_star_num + 0.5))', 3]), "}$ \\\\", sep=""))
# 6. has goal
lines = c(lines, paste("\\emph{has goal} (TRUE) & $", print_estimate(summary_m1['has_goal1', 1]), "^{", print_star(summary_m1['has_goal1', 5]), "}", print_err(summary_m1['has_goal1', 2]), "$ & $", print_variance(anova_m1['has_goal', 1]), "^{", print_star(anova_m1['has_goal', 3]), "}$ & $", print_estimate(summary_m2['has_goal1', 1]), "^{", print_star(summary_m2['has_goal1', 5]), "}", print_err(summary_m2['has_goal1', 2]), "$ & $", print_variance(anova_m2['has_goal', 1]), "^{", print_star(anova_m2['has_goal', 3]), "}$ & $", print_estimate(summary_m3['has_goal1', 1]), "^{", print_star(summary_m3['has_goal1', 5]), "}", print_err(summary_m3['has_goal1', 2]), "$ & $", print_variance(anova_m3['has_goal', 1]), "^{", print_star(anova_m3['has_goal', 3]), "}$ & $", print_estimate(summary_m4['has_goal1', 1]), "^{", print_star(summary_m4['has_goal1', 5]), "}", print_err(summary_m4['has_goal1', 2]), "$ & $", print_variance(anova_m4['has_goal', 1]), "^{", print_star(anova_m4['has_goal', 3]), "}$ \\\\", sep=""))
# 7. other way
lines = c(lines, paste("\\emph{has other way} (TRUE) & $", print_estimate(summary_m1['other_way1', 1]), "^{", print_star(summary_m1['other_way1', 5]), "}", print_err(summary_m1['other_way1', 2]), "$ & $", print_variance(anova_m1['other_way', 1]), "^{", print_star(anova_m1['other_way', 3]), "}$ & $", print_estimate(summary_m2['other_way1', 1]), "^{", print_star(summary_m2['other_way1', 5]), "}", print_err(summary_m2['other_way1', 2]), "$ & $", print_variance(anova_m2['other_way', 1]), "^{", print_star(anova_m2['other_way', 3]), "}$ & $", print_estimate(summary_m3['other_way1', 1]), "^{", print_star(summary_m3['other_way1', 5]), "}", print_err(summary_m3['other_way1', 2]), "$ & $", print_variance(anova_m3['other_way', 1]), "^{", print_star(anova_m3['other_way', 3]), "}$ & $", print_estimate(summary_m4['other_way1', 1]), "^{", print_star(summary_m4['other_way1', 5]), "}", print_err(summary_m4['other_way1', 2]), "$ & $", print_variance(anova_m4['other_way', 1]), "^{", print_star(anova_m4['other_way', 3]), "}$ \\\\", sep=""))
# 8. company null
lines = c(lines, paste("\\emph{in company} (TRUE) & $", print_estimate(summary_m1['company_null0', 1]), "^{", print_star(summary_m1['company_null0', 5]), "}", print_err(summary_m1['company_null0', 2]), "$ & $", print_variance(anova_m1['company_null', 1]), "^{", print_star(anova_m1['company_null', 3]), "}$ & $", print_estimate(summary_m2['company_null0', 1]), "^{", print_star(summary_m2['company_null0', 5]), "}", print_err(summary_m2['company_null0', 2]), "$ & $", print_variance(anova_m2['company_null', 1]), "^{", print_star(anova_m2['company_null', 3]), "}$ & $", print_estimate(summary_m3['company_null0', 1]), "^{", print_star(summary_m3['company_null0', 5]), "}", print_err(summary_m3['company_null0', 2]), "$ & $", print_variance(anova_m3['company_null', 1]), "^{", print_star(anova_m3['company_null', 3]), "}$ & $", print_estimate(summary_m4['company_null0', 1]), "^{", print_star(summary_m4['company_null0', 5]), "}", print_err(summary_m4['company_null0', 2]), "$ & $", print_variance(anova_m4['company_null', 1]), "^{", print_star(anova_m4['company_null', 3]), "}$ \\\\", sep=""))
# 9. isHireable
lines = c(lines, paste("\\emph{is hireable} (TRUE) & $", print_estimate(summary_m1['isHireable1', 1]), "^{", print_star(summary_m1['isHireable1', 5]), "}", print_err(summary_m1['isHireable1', 2]), "$ & $", print_variance(anova_m1['isHireable', 1]), "^{", print_star(anova_m1['isHireable', 3]), "}$ & $", print_estimate(summary_m2['isHireable1', 1]), "^{", print_star(summary_m2['isHireable1', 5]), "}", print_err(summary_m2['isHireable1', 2]), "$ & $", print_variance(anova_m2['isHireable', 1]), "^{", print_star(anova_m2['isHireable', 3]), "}$ & $", print_estimate(summary_m3['isHireable1', 1]), "^{", print_star(summary_m3['isHireable1', 5]), "}", print_err(summary_m3['isHireable1', 2]), "$ & $", print_variance(anova_m3['isHireable', 1]), "^{", print_star(anova_m3['isHireable', 3]), "}$ & $", print_estimate(summary_m4['isHireable1', 1]), "^{", print_star(summary_m4['isHireable1', 5]), "}", print_err(summary_m4['isHireable1', 2]), "$ & $", print_variance(anova_m4['isHireable', 1]), "^{", print_star(anova_m4['isHireable', 3]), "}$ \\\\", sep=""))
# 10. time
lines = c(lines, paste("\\emph{time} & $", print_estimate(summary_m1['time', 1]), "^{", print_star(summary_m1['time', 5]), "}", print_err(summary_m1['time', 2]), "$ & $", print_variance(anova_m1['time', 1]), "^{", print_star(anova_m1['time', 3]), "}$ & $", print_estimate(summary_m2['time', 1]), "^{", print_star(summary_m2['time', 5]), "}", print_err(summary_m2['time', 2]), "$ & $", print_variance(anova_m2['time', 1]), "^{", print_star(anova_m2['time', 3]), "}$ & $", print_estimate(summary_m3['time', 1]), "^{", print_star(summary_m3['time', 5]), "}", print_err(summary_m3['time', 2]), "$ & $", print_variance(anova_m3['time', 1]), "^{", print_star(anova_m3['time', 3]), "}$ & $", print_estimate(summary_m4['time', 1]), "^{", print_star(summary_m4['time', 5]), "}", print_err(summary_m4['time', 2]), "$ & $", print_variance(anova_m4['time', 1]), "^{", print_star(anova_m4['time', 3]), "}$ \\\\", sep=""))
# 11. intervention
lines = c(lines, paste("\\emph{intervention} (TRUE) & $", print_estimate(summary_m1['intervention1', 1]), "^{", print_star(summary_m1['intervention1', 5]), "}", print_err(summary_m1['intervention1', 2]), "$ & $", print_variance(anova_m1['intervention', 1]), "^{", print_star(anova_m1['intervention', 3]), "}$ & $", print_estimate(summary_m2['intervention1', 1]), "^{", print_star(summary_m2['intervention1', 5]), "}", print_err(summary_m2['intervention1', 2]), "$ & $", print_variance(anova_m2['intervention', 1]), "^{", print_star(anova_m2['intervention', 3]), "}$ & $", print_estimate(summary_m3['intervention1', 1]), "^{", print_star(summary_m3['intervention1', 5]), "}", print_err(summary_m3['intervention1', 2]), "$ & $", print_variance(anova_m3['intervention', 1]), "^{", print_star(anova_m3['intervention', 3]), "}$ & $", print_estimate(summary_m4['intervention1', 1]), "^{", print_star(summary_m4['intervention1', 5]), "}", print_err(summary_m4['intervention1', 2]), "$ & $", print_variance(anova_m4['intervention', 1]), "^{", print_star(anova_m4['intervention', 3]), "}$ \\\\", sep=""))
# 12. time after intervention
lines = c(lines, paste("\\emph{time after intervention} & $", print_estimate(summary_m1['time_after_intervention', 1]), "^{", print_star(summary_m1['time_after_intervention', 5]), "}", print_err(summary_m1['time_after_intervention', 2]), "$ & $", print_variance(anova_m1['time_after_intervention', 1]), "^{", print_star(anova_m1['time_after_intervention', 3]), "}$ & $", print_estimate(summary_m2['time_after_intervention', 1]), "^{", print_star(summary_m2['time_after_intervention', 5]), "}", print_err(summary_m2['time_after_intervention', 2]), "$ & $", print_variance(anova_m2['time_after_intervention', 1]), "^{", print_star(anova_m2['time_after_intervention', 3]), "}$ & $", print_estimate(summary_m3['time_after_intervention', 1]), "^{", print_star(summary_m3['time_after_intervention', 5]), "}", print_err(summary_m3['time_after_intervention', 2]), "$ & $", print_variance(anova_m3['time_after_intervention', 1]), "^{", print_star(anova_m3['time_after_intervention', 3]), "}$ & $", print_estimate(summary_m4['time_after_intervention', 1]), "^{", print_star(summary_m4['time_after_intervention', 5]), "}", print_err(summary_m4['time_after_intervention', 2]), "$ & $", print_variance(anova_m4['time_after_intervention', 1]), "^{", print_star(anova_m4['time_after_intervention', 3]), "}$ \\\\", sep=""))
cat(paste(lines, "\n", sep=""))
nobs1 = nobs(m_commit_num_sponsor_account_create_time)
nobs3 = nobs(m_discussion_num_sponsor_account_create_time)
nobs2 = nobs(m_commit_num_first_sponsored_create_time)
nobs4 = nobs(m_discussion_num_first_sponsored_create_time)
cat(paste("\\multicolumn{2}{c}{", nobs1, "} & \\multicolumn{2}{c}{", nobs2, "} & \\multicolumn{2}{c}{", nobs3, "} & \\multicolumn{2}{c}{", nobs4, "} \\\\", sep=""))
cat(paste("\\multicolumn{2}{c}{", round(r2_m1[1, 'R2m'], 2), "} & \\multicolumn{2}{c}{", round(r2_m2[1, 'R2m'], 2), "} & \\multicolumn{2}{c}{", round(r2_m3[1, 'R2m'], 2), "} & \\multicolumn{2}{c}{", round(r2_m4[1, 'R2m'], 2), "} \\\\", sep=""))
cat(paste("\\multicolumn{2}{c}{", round(r2_m1[1, 'R2c'], 2), "} & \\multicolumn{2}{c}{", round(r2_m2[1, 'R2c'], 2), "} & \\multicolumn{2}{c}{", round(r2_m3[1, 'R2c'], 2), "} & \\multicolumn{2}{c}{", round(r2_m4[1, 'R2c'], 2), "} \\\\", sep=""))

View File

@ -297,41 +297,41 @@ lines = c()
# 1. intercept
lines = c(lines, paste("(Intercept) & $", print_estimate(summary_m1['(Intercept)', 1]), "^{", print_star(summary_m1['(Intercept)', 4]), "}", print_err(summary_m1['(Intercept)', 2]), "$ & & $", print_estimate(summary_m2['(Intercept)', 1]), "^{", print_star(summary_m2['(Intercept)', 4]), "}", print_err(summary_m2['(Intercept)', 2]), "$ & \\\\", sep=""))
# 2. user age
lines = c(lines, paste("scale(log(\\emph{user age} + 0.5)) & $", print_estimate(summary_m1['scale(log(user_age + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(user_age + 0.5))', 4]), "}", print_err(summary_m1['scale(log(user_age + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(user_age + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(user_age + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(user_age + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(user_age + 0.5))', 4]), "}", print_err(summary_m2['scale(log(user_age + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(user_age + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(user_age + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{user age} + 0.5)) & $", print_estimate(summary_m1['scale(log(user_age + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(user_age + 0.5))', 4]), "}", print_err(summary_m1['scale(log(user_age + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(user_age + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(user_age + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(user_age + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(user_age + 0.5))', 4]), "}", print_err(summary_m2['scale(log(user_age + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(user_age + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(user_age + 0.5))', 3]), "}$ \\\\", sep=""))
# 3. in company
lines = c(lines, paste("\\emph{in company} (TRUE) & $", print_estimate(summary_m1['company_null0', 1]), "^{", print_star(summary_m1['company_null0', 4]), "}", print_err(summary_m1['company_null0', 2]), "$ & $", print_variance(anova_m1['company_null', 1]), "^{", print_star(anova_m1['company_null', 3]), "}$ & $", print_estimate(summary_m2['company_null0', 1]), "^{", print_star(summary_m1['company_null0', 4]), "}", print_err(summary_m2['company_null0', 2]), "$ & $", print_variance(anova_m2['company_null', 1]), "^{", print_star(anova_m2['company_null', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("\\emph{in company} (TRUE) & $", print_estimate(summary_m1['company_null0', 1]), "^{", print_star(summary_m1['company_null0', 4]), "}", print_err(summary_m1['company_null0', 2]), "$ & $", print_variance(anova_m1['company_null', 1]), "^{", print_star(anova_m1['company_null', 3]), "}$ & $", print_estimate(summary_m2['company_null0', 1]), "^{", print_star(summary_m2['company_null0', 4]), "}", print_err(summary_m2['company_null0', 2]), "$ & $", print_variance(anova_m2['company_null', 1]), "^{", print_star(anova_m2['company_null', 3]), "}$ \\\\", sep=""))
# 4. has email
lines = c(lines, paste("\\emph{has email} (TRUE) & $", print_estimate(summary_m1['email_null0', 1]), "^{", print_star(summary_m1['email_null0', 4]), "}", print_err(summary_m1['email_null0', 2]), "$ & $", print_variance(anova_m1['email_null', 1]), "^{", print_star(anova_m1['email_null', 3]), "}$ & $", print_estimate(summary_m2['email_null0', 1]), "^{", print_star(summary_m1['email_null0', 4]), "}", print_err(summary_m2['email_null0', 2]), "$ & $", print_variance(anova_m2['email_null', 1]), "^{", print_star(anova_m2['email_null', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("\\emph{has email} (TRUE) & $", print_estimate(summary_m1['email_null0', 1]), "^{", print_star(summary_m1['email_null0', 4]), "}", print_err(summary_m1['email_null0', 2]), "$ & $", print_variance(anova_m1['email_null', 1]), "^{", print_star(anova_m1['email_null', 3]), "}$ & $", print_estimate(summary_m2['email_null0', 1]), "^{", print_star(summary_m2['email_null0', 4]), "}", print_err(summary_m2['email_null0', 2]), "$ & $", print_variance(anova_m2['email_null', 1]), "^{", print_star(anova_m2['email_null', 3]), "}$ \\\\", sep=""))
# 5. has location
lines = c(lines, paste("\\emph{has location} (TRUE) & $", print_estimate(summary_m1['location_null0', 1]), "^{", print_star(summary_m1['location_null0', 4]), "}", print_err(summary_m1['location_null0', 2]), "$ & $", print_variance(anova_m1['location_null', 1]), "^{", print_star(anova_m1['location_null', 3]), "}$ & $", print_estimate(summary_m2['location_null0', 1]), "^{", print_star(summary_m1['location_null0', 4]), "}", print_err(summary_m2['location_null0', 2]), "$ & $", print_variance(anova_m2['location_null', 1]), "^{", print_star(anova_m2['location_null', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("\\emph{has location} (TRUE) & $", print_estimate(summary_m1['location_null0', 1]), "^{", print_star(summary_m1['location_null0', 4]), "}", print_err(summary_m1['location_null0', 2]), "$ & $", print_variance(anova_m1['location_null', 1]), "^{", print_star(anova_m1['location_null', 3]), "}$ & $", print_estimate(summary_m2['location_null0', 1]), "^{", print_star(summary_m2['location_null0', 4]), "}", print_err(summary_m2['location_null0', 2]), "$ & $", print_variance(anova_m2['location_null', 1]), "^{", print_star(anova_m2['location_null', 3]), "}$ \\\\", sep=""))
# 6. is hireable
lines = c(lines, paste("\\emph{is hireable} (TRUE) & $", print_estimate(summary_m1['isHireable1', 1]), "^{", print_star(summary_m1['isHireable1', 4]), "}", print_err(summary_m1['isHireable1', 2]), "$ & $", print_variance(anova_m1['isHireable', 1]), "^{", print_star(anova_m1['isHireable', 3]), "}$ & $", print_estimate(summary_m2['isHireable1', 1]), "^{", print_star(summary_m1['isHireable1', 4]), "}", print_err(summary_m2['isHireable1', 2]), "$ & $", print_variance(anova_m2['isHireable', 1]), "^{", print_star(anova_m2['isHireable', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("\\emph{is hireable} (TRUE) & $", print_estimate(summary_m1['isHireable1', 1]), "^{", print_star(summary_m1['isHireable1', 4]), "}", print_err(summary_m1['isHireable1', 2]), "$ & $", print_variance(anova_m1['isHireable', 1]), "^{", print_star(anova_m1['isHireable', 3]), "}$ & $", print_estimate(summary_m2['isHireable1', 1]), "^{", print_star(summary_m2['isHireable1', 4]), "}", print_err(summary_m2['isHireable1', 2]), "$ & $", print_variance(anova_m2['isHireable', 1]), "^{", print_star(anova_m2['isHireable', 3]), "}$ \\\\", sep=""))
# 7. followers
lines = c(lines, paste("scale(log(\\emph{followers} + 0.5)) & $", print_estimate(summary_m1['scale(log(followers + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(followers + 0.5))', 4]), "}", print_err(summary_m1['scale(log(followers + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(followers + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(followers + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(followers + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(followers + 0.5))', 4]), "}", print_err(summary_m2['scale(log(followers + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(followers + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(followers + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{followers} + 0.5)) & $", print_estimate(summary_m1['scale(log(followers + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(followers + 0.5))', 4]), "}", print_err(summary_m1['scale(log(followers + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(followers + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(followers + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(followers + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(followers + 0.5))', 4]), "}", print_err(summary_m2['scale(log(followers + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(followers + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(followers + 0.5))', 3]), "}$ \\\\", sep=""))
# 8. followings
lines = c(lines, paste("scale(log(\\emph{followings} + 0.5)) & $", print_estimate(summary_m1['scale(log(followings + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(followings + 0.5))', 4]), "}", print_err(summary_m1['scale(log(followings + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(followings + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(followings + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(followings + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(followings + 0.5))', 4]), "}", print_err(summary_m2['scale(log(followings + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(followings + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(followings + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{followings} + 0.5)) & $", print_estimate(summary_m1['scale(log(followings + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(followings + 0.5))', 4]), "}", print_err(summary_m1['scale(log(followings + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(followings + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(followings + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(followings + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(followings + 0.5))', 4]), "}", print_err(summary_m2['scale(log(followings + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(followings + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(followings + 0.5))', 3]), "}$ \\\\", sep=""))
# 9. min tier
lines = c(lines, paste("scale(log(\\emph{min tier} + 0.5)) & $", print_estimate(summary_m1['scale(log(min_tier + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(min_tier + 0.5))', 4]), "}", print_err(summary_m1['scale(log(min_tier + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(min_tier + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(min_tier + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(min_tier + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(min_tier + 0.5))', 4]), "}", print_err(summary_m2['scale(log(min_tier + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(min_tier + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(min_tier + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{min tier} + 0.5)) & $", print_estimate(summary_m1['scale(log(min_tier + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(min_tier + 0.5))', 4]), "}", print_err(summary_m1['scale(log(min_tier + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(min_tier + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(min_tier + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(min_tier + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(min_tier + 0.5))', 4]), "}", print_err(summary_m2['scale(log(min_tier + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(min_tier + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(min_tier + 0.5))', 3]), "}$ \\\\", sep=""))
# 10. max tier
lines = c(lines, paste("scale(log(\\emph{max tier} + 0.5)) & $", print_estimate(summary_m1['scale(log(max_tier + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(max_tier + 0.5))', 4]), "}", print_err(summary_m1['scale(log(max_tier + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(max_tier + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(max_tier + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(max_tier + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(max_tier + 0.5))', 4]), "}", print_err(summary_m2['scale(log(max_tier + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(max_tier + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(max_tier + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{max tier} + 0.5)) & $", print_estimate(summary_m1['scale(log(max_tier + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(max_tier + 0.5))', 4]), "}", print_err(summary_m1['scale(log(max_tier + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(max_tier + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(max_tier + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(max_tier + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(max_tier + 0.5))', 4]), "}", print_err(summary_m2['scale(log(max_tier + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(max_tier + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(max_tier + 0.5))', 3]), "}$ \\\\", sep=""))
# 11. has goal
lines = c(lines, paste("\\emph{has goal} (TRUE) & $", print_estimate(summary_m1['has_goal1', 1]), "^{", print_star(summary_m1['has_goal1', 4]), "}", print_err(summary_m1['has_goal1', 2]), "$ & $", print_variance(anova_m1['has_goal', 1]), "^{", print_star(anova_m1['has_goal', 3]), "}$ & $", print_estimate(summary_m2['has_goal1', 1]), "^{", print_star(summary_m1['has_goal1', 4]), "}", print_err(summary_m2['has_goal1', 2]), "$ & $", print_variance(anova_m2['has_goal', 1]), "^{", print_star(anova_m2['has_goal', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("\\emph{has goal} (TRUE) & $", print_estimate(summary_m1['has_goal1', 1]), "^{", print_star(summary_m1['has_goal1', 4]), "}", print_err(summary_m1['has_goal1', 2]), "$ & $", print_variance(anova_m1['has_goal', 1]), "^{", print_star(anova_m1['has_goal', 3]), "}$ & $", print_estimate(summary_m2['has_goal1', 1]), "^{", print_star(summary_m2['has_goal1', 4]), "}", print_err(summary_m2['has_goal1', 2]), "$ & $", print_variance(anova_m2['has_goal', 1]), "^{", print_star(anova_m2['has_goal', 3]), "}$ \\\\", sep=""))
# 12. has other way
lines = c(lines, paste("\\emph{has other way} (TRUE) & $", print_estimate(summary_m1['other_way1', 1]), "^{", print_star(summary_m1['other_way1', 4]), "}", print_err(summary_m1['other_way1', 2]), "$ & $", print_variance(anova_m1['other_way', 1]), "^{", print_star(anova_m1['other_way', 3]), "}$ & $", print_estimate(summary_m2['other_way1', 1]), "^{", print_star(summary_m1['other_way1', 4]), "}", print_err(summary_m2['other_way1', 2]), "$ & $", print_variance(anova_m2['other_way', 1]), "^{", print_star(anova_m2['other_way', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("\\emph{has other way} (TRUE) & $", print_estimate(summary_m1['other_way1', 1]), "^{", print_star(summary_m1['other_way1', 4]), "}", print_err(summary_m1['other_way1', 2]), "$ & $", print_variance(anova_m1['other_way', 1]), "^{", print_star(anova_m1['other_way', 3]), "}$ & $", print_estimate(summary_m2['other_way1', 1]), "^{", print_star(summary_m2['other_way1', 4]), "}", print_err(summary_m2['other_way1', 2]), "$ & $", print_variance(anova_m2['other_way', 1]), "^{", print_star(anova_m2['other_way', 3]), "}$ \\\\", sep=""))
# 13. user age after sponsor account
lines = c(lines, paste("scale(log(\\emph{user age after sponsor account} + 0.5)) & $", print_estimate(summary_m1['scale(log(user_age_after_sponsor_account + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(user_age_after_sponsor_account + 0.5))', 4]), "}", print_err(summary_m1['scale(log(user_age_after_sponsor_account + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(user_age_after_sponsor_account + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(user_age_after_sponsor_account + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(user_age_after_sponsor_account + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(user_age_after_sponsor_account + 0.5))', 4]), "}", print_err(summary_m2['scale(log(user_age_after_sponsor_account + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(user_age_after_sponsor_account + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(user_age_after_sponsor_account + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{user age after sponsor account} + 0.5)) & $", print_estimate(summary_m1['scale(log(user_age_after_sponsor_account + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(user_age_after_sponsor_account + 0.5))', 4]), "}", print_err(summary_m1['scale(log(user_age_after_sponsor_account + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(user_age_after_sponsor_account + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(user_age_after_sponsor_account + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(user_age_after_sponsor_account + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(user_age_after_sponsor_account + 0.5))', 4]), "}", print_err(summary_m2['scale(log(user_age_after_sponsor_account + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(user_age_after_sponsor_account + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(user_age_after_sponsor_account + 0.5))', 3]), "}$ \\\\", sep=""))
# 14. number of commits
lines = c(lines, paste("scale(log(\\emph{number of commits} + 0.5)) & $", print_estimate(summary_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 4]), "}", print_err(summary_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(after_sponsor_account_commit_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 4]), "}", print_err(summary_m2['scale(log(after_sponsor_account_commit_num + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(after_sponsor_account_commit_num + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(after_sponsor_account_commit_num + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{number of commits} + 0.5)) & $", print_estimate(summary_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 4]), "}", print_err(summary_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(after_sponsor_account_commit_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(after_sponsor_account_commit_num + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(after_sponsor_account_commit_num + 0.5))', 4]), "}", print_err(summary_m2['scale(log(after_sponsor_account_commit_num + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(after_sponsor_account_commit_num + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(after_sponsor_account_commit_num + 0.5))', 3]), "}$ \\\\", sep=""))
# 15. number of discussion
lines = c(lines, paste("scale(log(\\emph{number of discussions} + 0.5)) & $", print_estimate(summary_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 4]), "}", print_err(summary_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(after_sponsor_account_discussion_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 4]), "}", print_err(summary_m2['scale(log(after_sponsor_account_discussion_num + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(after_sponsor_account_discussion_num + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(after_sponsor_account_discussion_num + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{number of discussions} + 0.5)) & $", print_estimate(summary_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 4]), "}", print_err(summary_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(after_sponsor_account_discussion_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(after_sponsor_account_discussion_num + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(after_sponsor_account_discussion_num + 0.5))', 4]), "}", print_err(summary_m2['scale(log(after_sponsor_account_discussion_num + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(after_sponsor_account_discussion_num + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(after_sponsor_account_discussion_num + 0.5))', 3]), "}$ \\\\", sep=""))
# 16. sum star number
lines = c(lines, paste("scale(log(\\emph{sum star number} + 0.5)) & $", print_estimate(summary_m1['scale(log(sum_star_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(sum_star_num + 0.5))', 4]), "}", print_err(summary_m1['scale(log(sum_star_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(sum_star_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(sum_star_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(sum_star_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(sum_star_num + 0.5))', 4]), "}", print_err(summary_m2['scale(log(sum_star_num + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(sum_star_num + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(sum_star_num + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{sum star number} + 0.5)) & $", print_estimate(summary_m1['scale(log(sum_star_num + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(sum_star_num + 0.5))', 4]), "}", print_err(summary_m1['scale(log(sum_star_num + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(sum_star_num + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(sum_star_num + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(sum_star_num + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(sum_star_num + 0.5))', 4]), "}", print_err(summary_m2['scale(log(sum_star_num + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(sum_star_num + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(sum_star_num + 0.5))', 3]), "}$ \\\\", sep=""))
# 17. sum top repository star number
lines = c(lines, paste("scale(log(\\emph{sum top repository star number} + 0.5)) & $", print_estimate(summary_m1['scale(log(sum_top_proj_star + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(sum_top_proj_star + 0.5))', 4]), "}", print_err(summary_m1['scale(log(sum_top_proj_star + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(sum_top_proj_star + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(sum_top_proj_star + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(sum_top_proj_star + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(sum_top_proj_star + 0.5))', 4]), "}", print_err(summary_m2['scale(log(sum_top_proj_star + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(sum_top_proj_star + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(sum_top_proj_star + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{sum top repository star number} + 0.5)) & $", print_estimate(summary_m1['scale(log(sum_top_proj_star + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(sum_top_proj_star + 0.5))', 4]), "}", print_err(summary_m1['scale(log(sum_top_proj_star + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(sum_top_proj_star + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(sum_top_proj_star + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(sum_top_proj_star + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(sum_top_proj_star + 0.5))', 4]), "}", print_err(summary_m2['scale(log(sum_top_proj_star + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(sum_top_proj_star + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(sum_top_proj_star + 0.5))', 3]), "}$ \\\\", sep=""))
# 18. introduction richness
lines = c(lines, paste("scale(log(\\emph{introduction richness} + 0.5)) & $", print_estimate(summary_m1['scale(log(intro_complexity + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(intro_complexity + 0.5))', 4]), "}", print_err(summary_m1['scale(log(intro_complexity + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(intro_complexity + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(intro_complexity + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(intro_complexity + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(intro_complexity + 0.5))', 4]), "}", print_err(summary_m2['scale(log(intro_complexity + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(intro_complexity + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(intro_complexity + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{introduction richness} + 0.5)) & $", print_estimate(summary_m1['scale(log(intro_complexity + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(intro_complexity + 0.5))', 4]), "}", print_err(summary_m1['scale(log(intro_complexity + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(intro_complexity + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(intro_complexity + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(intro_complexity + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(intro_complexity + 0.5))', 4]), "}", print_err(summary_m2['scale(log(intro_complexity + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(intro_complexity + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(intro_complexity + 0.5))', 3]), "}$ \\\\", sep=""))
# 19. number of dependents
lines = c(lines, paste("scale(log(\\emph{number of dependents} + 0.5)) & $", print_estimate(summary_m1['scale(log(num_repo_dependents + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(num_repo_dependents + 0.5))', 4]), "}", print_err(summary_m1['scale(log(num_repo_dependents + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(num_repo_dependents + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(num_repo_dependents + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(num_repo_dependents + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(num_repo_dependents + 0.5))', 4]), "}", print_err(summary_m2['scale(log(num_repo_dependents + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(num_repo_dependents + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(num_repo_dependents + 0.5))', 3]), "}$ \\\\", sep=""))
lines = c(lines, paste("scale(log(\\emph{number of dependents} + 0.5)) & $", print_estimate(summary_m1['scale(log(num_repo_dependents + 0.5))', 1]), "^{", print_star(summary_m1['scale(log(num_repo_dependents + 0.5))', 4]), "}", print_err(summary_m1['scale(log(num_repo_dependents + 0.5))', 2]), "$ & $", print_variance(anova_m1['scale(log(num_repo_dependents + 0.5))', 1]), "^{", print_star(anova_m1['scale(log(num_repo_dependents + 0.5))', 3]), "}$ & $", print_estimate(summary_m2['scale(log(num_repo_dependents + 0.5))', 1]), "^{", print_star(summary_m2['scale(log(num_repo_dependents + 0.5))', 4]), "}", print_err(summary_m2['scale(log(num_repo_dependents + 0.5))', 2]), "$ & $", print_variance(anova_m2['scale(log(num_repo_dependents + 0.5))', 1]), "^{", print_star(anova_m2['scale(log(num_repo_dependents + 0.5))', 3]), "}$ \\\\", sep=""))
cat(paste(lines, "\n", sep=""))

16
analysis_wilcoxon.py Normal file
View File

@ -0,0 +1,16 @@
# aim: wilcoxon analysis
# date: 2021-05-30
# author: zxh
import pymysql, yaml, math, datetime, json
from utils import *
import seaborn as sns
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
import threading, queue # 多线程搜集数据
f = open('config.yaml', 'r')
config = yaml.load(f.read(), Loader=yaml.BaseLoader)
conn = connectMysqlDB(config, autocommit = True)
cur = conn.cursor(pymysql.cursors.DictCursor)

View File

@ -358,7 +358,7 @@ class myThread(threading.Thread):
self.q.task_done()
# gather all the infos for each user
THREADNUM = 10
THREADNUM = 100
tasks = queue.Queue()
for user in users:
tasks.put(user)
@ -367,4 +367,4 @@ for _ in range(THREADNUM):
t.start()
tasks.join()
print("finish")
print("finish")

200
collect_data_wilcoxon.py Normal file
View File

@ -0,0 +1,200 @@
# collect data for wilcoxon analysis
# aim: collect the data for each sponsor time or sponsor account creation time before and after 15 days
# date: 2021-05-30
# author: zxh
import pymysql, yaml, math, datetime, json
from utils import *
import seaborn as sns
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
import threading, queue # 多线程搜集数据
f = open('config.yaml', 'r')
config = yaml.load(f.read(), Loader=yaml.BaseLoader)
conn = connectMysqlDB(config, autocommit = True)
cur = conn.cursor(pymysql.cursors.DictCursor)
# read all the sponsors from database (0 sponsor, >=1 sponsor all considered)
cur.execute("select login from github_sponsor_listing where deleted=0")
users = cur.fetchall()
users = [u["login"] for u in users]
cur.execute("select login from middle_data_wilcoxon")
handled_users = cur.fetchall()
handled_users = [u["login"] for u in handled_users]
users = list(set(users) - set(handled_users))
unstable_n = 15 # 前后多少天是不稳定时间
class myThread(threading.Thread):
def __init__(self, q):
threading.Thread.__init__(self)
self.q = q
self.conn = connectMysqlDB(config, autocommit = False)
self.cur = self.conn.cursor(pymysql.cursors.DictCursor)
'''
params: {
login,
mid_time_point,
user_account_create_time,
data_collection_time,
which_time_sponsor
}
'''
def collect_factors(self, params):
login = params['login']
created_at = params['mid_time_point']
user_account_create_time = params['user_account_create_time']
data_collection_time = params['data_collection_time']
which_time_sponsor = params['which_time_sponsor']
start_at = created_at - datetime.timedelta(days=unstable_n)
end_at = created_at + datetime.timedelta(days=unstable_n)
results = [] # in which is the result
# before 15 days, after 15 days
if (created_at - user_account_create_time).days < unstable_n or (data_collection_time - created_at).days < unstable_n:
return results
else:
# 1. commit num
self.cur.execute("select sum(contribution_count) as commit_num from github_user_commits_per_day where date>%s and date<%s and login=%s", (start_at, created_at, login))
before_num = self.cur.fetchone()['commit_num']
if before_num is None:
before_num = 0
else:
before_num = int(before_num)
self.cur.execute("select sum(contribution_count) as commit_num from github_user_commits_per_day where date>%s and date<%s and login=%s", (created_at, end_at, login))
after_num = self.cur.fetchone()['commit_num']
if after_num is None:
after_num = 0
else:
after_num = int(after_num)
results.append({
"login": login,
"created_at": created_at,
"which_time_sponsor": which_time_sponsor,
"before_num": before_num,
"after_num": after_num,
"activity_type": "commit",
"start_at": start_at,
"end_at": end_at
})
# 2. discussion num
self.cur.execute("select count(*) as issue_comment_num from github_issue_comment where created_at>%s and created_at<%s and login=%s", (start_at, created_at, login))
issue_comment_num = self.cur.fetchone()['issue_comment_num']
self.cur.execute("select count(*) as pr_comment_num from github_pr_comment where created_at>%s and created_at<%s and login=%s", (start_at, created_at, login))
pr_comment_num = self.cur.fetchone()['pr_comment_num']
self.cur.execute("select count(*) as commit_comment_num from github_commit_comment where created_at>%s and created_at<%s and login=%s", (start_at, created_at, login))
commit_comment_num = self.cur.fetchone()['commit_comment_num']
before_num = issue_comment_num + pr_comment_num + commit_comment_num
self.cur.execute("select count(*) as issue_comment_num from github_issue_comment where created_at>%s and created_at<%s and login=%s", (created_at, end_at, login))
issue_comment_num = self.cur.fetchone()['issue_comment_num']
self.cur.execute("select count(*) as pr_comment_num from github_pr_comment where created_at>%s and created_at<%s and login=%s", (created_at, end_at, login))
pr_comment_num = self.cur.fetchone()['pr_comment_num']
self.cur.execute("select count(*) as commit_comment_num from github_commit_comment where created_at>%s and created_at<%s and login=%s", (created_at, end_at, login))
commit_comment_num = self.cur.fetchone()['commit_comment_num']
after_num = issue_comment_num + pr_comment_num + commit_comment_num
results.append({
"login": login,
"created_at": created_at,
"which_time_sponsor": which_time_sponsor,
"before_num": before_num,
"after_num": after_num,
"activity_type": "discussion",
"start_at": start_at,
"end_at": end_at
})
return results
def insert_dict(self, mydict, insert_table):
placeholders = ', '.join(['%s']* len(mydict))
columns = ', '.join(mydict.keys())
insert_sql = "INSERT INTO %s ( %s ) VALUES ( %s )" % (insert_table, columns, placeholders)
self.cur.execute(insert_sql, list(mydict.values()))
def run(self):
while(True):
try:
login = self.q.get(timeout=0)
print("loop how many threads left: %d" % (self.q.qsize()))
'''
params: {
login,
mid_time_point,
user_account_create_time,
data_collection_time,
which_time_sponsor
}
'''
# 0.1 the data collection time
collection_time = datetime.datetime.strptime("2021-01-23 11:24:27", "%Y-%m-%d %H:%M:%S")
# 0.2 sponsor account creation time
self.cur.execute("select created_at from github_sponsor_listing where login=%s", (login,))
sponsor_account_createtime = self.cur.fetchone()['created_at']
# 0.3 user account creation time
self.cur.execute("select created_at from github_user where login=%s", (login,))
user_account_createtime = self.cur.fetchone()['created_at']
params_list = []
params_list.append({
"login": login,
"mid_time_point": sponsor_account_createtime,
"user_account_create_time": user_account_createtime,
"data_collection_time": collection_time,
"which_time_sponsor": 0
})
# all time of sponsor times
self.cur.execute("select created_at from github_sponsorships_as_maintainer where login=%s order by created_at asc", (login,))
sponsorship_created_ats = self.cur.fetchall()
which_time_sponsor = 0
for sponsorship_created_at in sponsorship_created_ats:
created_at = sponsorship_created_at["created_at"]
which_time_sponsor += 1
params_list.append({
"login": login,
"mid_time_point": created_at,
"user_account_create_time": user_account_createtime,
"data_collection_time": collection_time,
"which_time_sponsor": which_time_sponsor
})
for params in params_list:
results = self.collect_factors(params=params)
for result in results:
# insert db
self.insert_dict(result, "middle_data_wilcoxon")
self.conn.commit()
except queue.Empty:
return
self.q.task_done()
# gather all the infos for each user
THREADNUM = 100
tasks = queue.Queue()
for user in users:
tasks.put(user)
for _ in range(THREADNUM):
t = myThread(tasks)
t.start()
tasks.join()
print("finish")

View File

@ -58,7 +58,7 @@ class myThread(threading.Thread):
THREADNUM = 10
THREADNUM = 70
tasks = queue.Queue()
for user in items:
tasks.put(user)
@ -67,4 +67,4 @@ for _ in range(THREADNUM):
t.start()
tasks.join()
print("finish")
print("finish")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

168
visualize_before_its.ipynb Normal file

File diff suppressed because one or more lines are too long