1.summary data
df= read.csv("../1.Input/All_live_data.csv")
cols <- c(
"is_pk_live",
# Control Variables
"gender_number",
"age_range_number",
"author_type_number",
"fre_country_region_number",
"fre_city_level_number",
"log_fans_num",
"log_history_total_cost",
"log_history_valid_play_duration",
"log_history_comment_cnt",
"log_history_like_cnt",
# Dependent Variables
"log_total_cost_amt",
"log_avg_valid_play_duration",
"log_follow_author_cnt",
"log_cancel_follow_author_cnt",
"log_follow_user_cnt",
"log_join_fans_group_cnt"
)
crs <- c(
# PK in Session
"is_pk_live" = "PK in Session",
# Control Variables
"gender_number" = "Gender",
"age_range_number" = "Age Category",
"author_type_number" = "Streamer Type",
"fre_country_region_number" = "Region",
"fre_city_level_number" = "City Level",
"log_fans_num" = "Fan Count (log)",
"log_history_total_cost" = "Historical Gifting (log)",
"log_history_valid_play_duration" = "Historical View Time (log)",
"log_history_comment_cnt" = "Historical Comment Count (log)",
"log_history_like_cnt" = "Historical Like Count (log)",
# Dependent Variables
"log_total_cost_amt" = "Total Gifting (log)",
"log_avg_valid_play_duration" = "Avg Play Duration Per Viewer (log)",
"log_follow_author_cnt" = "New Followers (log)",
"log_cancel_follow_author_cnt" = "Lost Followers (log)",
"log_follow_user_cnt" = "Viewer-to-Viewer Follows (log)",
"log_join_fans_group_cnt" = "New Loyal Fans (log)"
)
reversed_coef_rename <- setNames(names(crs), crs)
df_summary <- df %>%
select(cols) %>%
rename(all_of(reversed_coef_rename))
## Warning: Using an external vector in selections was deprecated in tidyselect 1.1.0.
## ℹ Please use `all_of()` or `any_of()` instead.
## # Was:
## data %>% select(cols)
##
## # Now:
## data %>% select(all_of(cols))
##
## See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Obs = function(x) sum(!is.na(x))
datasummary(All(df_summary) ~ Obs + Mean + SD + Min + Max,
data = df_summary,
title = 'Summary Statistics \\label{tab:summary}', escape=FALSE,
fmt = 2, output = "../2.Output/all_live_summary.tex")
## Warning: To compile a LaTeX document with this table, the following commands must be placed in the document preamble:
##
## \usepackage{tabularray}
## \usepackage{float}
## \usepackage{graphicx}
## \usepackage{codehigh}
## \usepackage[normalem]{ulem}
## \UseTblrLibrary{booktabs}
## \UseTblrLibrary{siunitx}
## \newcommand{\tinytableTabularrayUnderline}[1]{\underline{#1}}
## \newcommand{\tinytableTabularrayStrikeout}[1]{\sout{#1}}
## \NewTableCommand{\tinytableDefineColor}[3]{\definecolor{#1}{#2}{#3}}
##
## To disable `siunitx` and prevent `modelsummary` from wrapping numeric entries in `\num{}`, call:
##
## options("modelsummary_format_numeric_latex" = "plain")
## This warning appears once per session.
2.OLS
library(fixest)
model1 = feols(total_cost_amt~is_pk_live|author_id + p_date,data = df,vcov = ~author_id)
summary(model1)
## OLS estimation, Dep. Var.: total_cost_amt
## Observations: 196,684
## Fixed-effects: author_id: 55,824, p_date: 32
## Standard-errors: Clustered (author_id)
## Estimate Std. Error t value Pr(>|t|)
## is_pk_live 166.094 203.784 0.815046 0.41505
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 3,848.3 Adj. R2: 0.468529
## Within R2: 4.052e-5
model2 = feols(log(avg_valid_play_duration + 1)~is_pk_live|author_id + p_date,data = df,vcov = ~author_id)
summary(model2)
## OLS estimation, Dep. Var.: log(avg_valid_play_duration + 1)
## Observations: 196,684
## Fixed-effects: author_id: 55,824, p_date: 32
## Standard-errors: Clustered (author_id)
## Estimate Std. Error t value Pr(>|t|)
## is_pk_live 0.640031 0.019933 32.1083 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 1.63797 Adj. R2: 0.271545
## Within R2: 0.00331
model3 = feols(log(follow_author_cnt + 1)~is_pk_live|author_id + p_date,data = df[df$day>7,],vcov = ~author_id)
summary(model3)
## OLS estimation, Dep. Var.: log(follow_author_cnt + 1)
## Observations: 143,647
## Fixed-effects: author_id: 50,949, p_date: 24
## Standard-errors: Clustered (author_id)
## Estimate Std. Error t value Pr(>|t|)
## is_pk_live 0.330476 0.016739 19.7433 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.587203 Adj. R2: 0.736113
## Within R2: 0.006158
model4 = feols(log(cancel_follow_author_cnt + 1)~is_pk_live|author_id + p_date,data = df[df$day>7,],vcov = ~author_id)
summary(model4)
## OLS estimation, Dep. Var.: log(cancel_follow_author_cnt + 1)
## Observations: 143,647
## Fixed-effects: author_id: 50,949, p_date: 24
## Standard-errors: Clustered (author_id)
## Estimate Std. Error t value Pr(>|t|)
## is_pk_live 0.198087 0.011952 16.5729 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.410375 Adj. R2: 0.763615
## Within R2: 0.004537
model5 = feols(log(follow_user_cnt + 1)~is_pk_live|author_id + p_date,data = df[df$day>7,],vcov = ~author_id)
summary(model5)
## OLS estimation, Dep. Var.: log(follow_user_cnt + 1)
## Observations: 143,647
## Fixed-effects: author_id: 50,949, p_date: 24
## Standard-errors: Clustered (author_id)
## Estimate Std. Error t value Pr(>|t|)
## is_pk_live 0.161163 0.012114 13.3034 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.410138 Adj. R2: 0.580823
## Within R2: 0.003011
model6 = feols(log(join_fans_group_cnt + 1)~is_pk_live|author_id + p_date,data = df[df$day>7,],vcov = ~author_id)
summary(model6)
## OLS estimation, Dep. Var.: log(join_fans_group_cnt + 1)
## Observations: 143,647
## Fixed-effects: author_id: 50,949, p_date: 24
## Standard-errors: Clustered (author_id)
## Estimate Std. Error t value Pr(>|t|)
## is_pk_live 0.070047 0.007529 9.30336 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.270319 Adj. R2: 0.628248
## Within R2: 0.001312
3.Double ML
source("DoubleML_function.R")
## 载入需要的程序包:viridisLite
#直接把这些categorical变量变成one-hot vectors,这样会省去后面ML的麻烦
dummy_vars <- model.matrix(~ gender_number + age_range_number + author_type_number + fre_country_region_number + fre_city_level_number, # + relative_day
data = df)[, -1]
dummy_vars <- as.data.table(dummy_vars)
# # Replace non-ASCII characters with valid ASCII names
# clean_column_names <- function(names) {
# # Replace specific Chinese characters with their English equivalents
# names <- gsub("电商", "Commerce", names) # Replace '电商' with 'Commerce'
# names <- gsub("秀场", "Showcase", names) # Replace '秀场' with 'Showcase'
# # 因为一些ML模型里R的变量名不可以是中文,所以变成dummy后一些变量名要改
# # Optionally, if there are other Chinese characters, you can continue to add more replacements here
#
# # Additionally, ensure names comply with general naming conventions
# names <- make.names(names) # This replaces any other special characters with valid R names
#
# return(names)
# }
#
# # Apply the function to clean the column names in dummy_vars
# setnames(dummy_vars, old = colnames(dummy_vars), new = clean_column_names(colnames(dummy_vars)))
# df_with_dummies <- cbind(df, dummy_vars)
df_with_dummies =df
#把dummies和continuous covariates结合起来
features_base <- c("log_fans_num", "log_history_total_cost",
"log_history_valid_play_duration", "log_history_comment_cnt",
"log_history_like_cnt",
colnames(dummy_vars))
#把date format改成numeric,数据转换为data.table
df_with_dummies <- df_with_dummies %>% mutate(across(where(is.Date), as.numeric)) %>%
as.data.table()
category <- c("log_total_cost_amt", "log_avg_valid_play_duration", "log_follow_author_cnt",
"log_cancel_follow_author_cnt", "log_follow_user_cnt", "log_join_fans_group_cnt")
crs <- c(
"log_total_cost_amt" = "Total Gifting (log)",
"log_avg_valid_play_duration" = "Avg Play Duration Per Viewer (log)",
"log_follow_author_cnt" = "New Followers (log)",
"log_cancel_follow_author_cnt" = "Lost Followers (log)",
"log_follow_user_cnt" = "Viewer-to-Viewer Follows (log)",
"log_join_fans_group_cnt" = "New Loyal Fans (log)"
)
(1) log(Y+1)
log_total_cost_amt_result = run_dml_plr_models(df_with_dummies, Y = "log_total_cost_amt", D = "is_pk_live", Xs = features_base, crs=crs)
## INFO [15:19:55.621] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:19:57.589] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:19:58.808] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:20:00.181] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:20:07.374] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:20:14.616] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:20:22.340] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:20:42.701] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:21:13.539] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:21:44.393] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:22:07.776] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:22:30.176] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:22:54.956] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:22:55.377] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:22:55.742] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:22:56.445] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:22:56.981] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:22:57.592] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:22:59.004] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:23:01.678] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:23:04.311] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:23:06.953] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:23:09.699] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:23:12.365] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
log_avg_valid_play_duration_result = run_dml_plr_models(df_with_dummies, Y = "log_avg_valid_play_duration", D = "is_pk_live", Xs = features_base, crs=crs)
## INFO [15:23:16.572] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:23:17.836] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:23:19.245] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:23:20.833] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:23:30.140] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:23:39.327] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:23:48.878] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:24:21.824] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:24:54.807] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:25:23.123] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:25:44.892] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:26:05.693] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:26:29.026] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:26:29.488] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:26:29.910] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:26:30.633] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:26:31.311] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:26:31.878] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:26:33.539] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:26:36.710] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:26:39.863] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:26:43.359] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:26:47.139] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:26:50.675] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
log_follow_author_cnt_result = run_dml_plr_models(df_with_dummies, Y = "log_follow_author_cnt", D = "is_pk_live", Xs = features_base, crs=crs)
## INFO [15:26:55.600] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:26:57.178] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:26:58.634] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:27:00.552] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:27:12.035] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:27:23.158] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:27:35.368] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:28:04.625] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:28:30.693] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:28:56.626] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:29:14.262] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:29:36.030] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:29:58.396] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:29:58.750] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:29:59.090] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:29:59.730] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:30:00.355] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:30:00.909] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:30:02.174] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:30:04.517] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:30:06.924] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:30:09.558] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:30:12.351] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:30:15.156] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
log_cancel_follow_author_cnt_result = run_dml_plr_models(df_with_dummies, Y = "log_cancel_follow_author_cnt", D = "is_pk_live", Xs = features_base, crs=crs)
## INFO [15:30:18.891] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:30:20.325] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:30:21.724] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:30:23.238] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:30:32.127] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:30:40.119] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:30:49.138] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:31:10.730] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:31:31.755] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:31:53.376] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:32:10.916] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:32:28.566] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:32:46.420] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:32:46.694] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:32:47.078] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:32:47.603] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:32:48.136] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:32:48.597] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:32:49.856] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:32:52.147] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:32:54.500] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:32:56.952] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:32:59.578] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:33:02.300] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
log_follow_user_cnt_result = run_dml_plr_models(df_with_dummies, Y = "log_follow_user_cnt", D = "is_pk_live", Xs = features_base, crs=crs)
## INFO [15:33:05.937] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:33:07.384] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:33:08.865] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:33:10.431] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:33:18.859] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:33:28.476] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:33:38.002] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:34:02.548] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:34:23.570] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:34:47.094] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:35:03.411] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:35:19.001] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:35:35.180] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:35:35.455] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:35:35.779] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:35:36.268] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:35:36.726] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:35:37.206] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:35:38.309] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:35:40.479] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:35:42.664] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:35:44.988] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:35:47.333] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:35:49.882] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
log_join_fans_group_cnt_result = run_dml_plr_models(df_with_dummies, Y = "log_join_fans_group_cnt", D = "is_pk_live", Xs = features_base, crs=crs)
## INFO [15:35:53.289] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:35:54.521] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:35:55.540] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:35:56.900] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:36:04.300] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:36:12.242] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:36:23.891] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:36:43.738] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:37:01.658] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:37:21.679] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:37:39.241] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:37:56.203] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:38:14.263] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:38:14.612] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:38:14.887] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:38:15.473] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:38:15.940] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:38:16.412] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:38:17.879] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:38:19.973] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:38:22.070] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:38:24.308] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:38:26.720] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:38:29.135] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
MS_list <- list()
for (var in category) {
new_var <- crs[[var]]
MS_list[[new_var]] <- get(paste0(var, "_result"))[['mod']]
ggsave(paste0("../2.Output/DML_PK_vs_NonPK_", var, ".pdf"), plot = get(paste0(var, "_result"))[['plot']], device = "pdf", width = 16, height = 9, units = "in")
ggsave(paste0("../2.Output/DML_PK_vs_NonPK_", var, ".png"), plot = get(paste0(var, "_result"))[['plot']], device = "png", width = 16, height = 9, dpi = 300, units = "in")
}
modelsummary(MS_list)
| |
Total Gifting (log) |
Avg Play Duration Per Viewer (log) |
New Followers (log) |
Lost Followers (log) |
Viewer-to-Viewer Follows (log) |
New Loyal Fans (log) |
| LASSO |
0.879 |
0.477 |
0.192 |
0.096 |
0.170 |
0.023 |
| |
(0.025) |
(0.012) |
(0.015) |
(0.011) |
(0.012) |
(0.007) |
| Random Forest |
0.940 |
0.507 |
0.298 |
0.192 |
0.207 |
0.059 |
| |
(0.025) |
(0.012) |
(0.013) |
(0.009) |
(0.010) |
(0.006) |
| Regression Tree |
0.945 |
0.491 |
0.306 |
0.188 |
0.249 |
0.071 |
| |
(0.025) |
(0.012) |
(0.014) |
(0.010) |
(0.010) |
(0.006) |
| Boosted Trees |
0.910 |
0.439 |
0.296 |
0.190 |
0.203 |
0.065 |
| |
(0.024) |
(0.013) |
(0.013) |
(0.009) |
(0.009) |
(0.006) |
| Obs |
196684 |
196684 |
196684 |
196684 |
196684 |
196684 |
save_model_summaries <- function(list, new_cate_name) {
modelsummary(list, stars = c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
output = paste0("../2.Output/", new_cate_name, ".docx"))
title = paste0('The Impact of PK Event',
'\\label{tab:', new_cate_name, '}')
modelsummary(list, output = "latex", stars = c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
title = title, escape = FALSE) |>
theme_tt("resize") |>
save_tt(paste0("../2.Output/", new_cate_name, ".tex"), overwrite = TRUE)
}
save_model_summaries(MS_list, "DML_PK_vs_NonPK_log")
(2) Y
total_cost_amt_result = run_dml_plr_models(df_with_dummies, Y = "total_cost_amt", D = "is_pk_live", Xs = features_base)
## INFO [15:38:36.068] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:38:37.140] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:38:38.263] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:38:39.815] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:38:47.297] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:38:57.424] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:39:07.897] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:39:27.954] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:39:47.909] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:40:04.097] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:40:22.116] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:40:43.251] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:41:04.995] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:41:05.538] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:41:05.823] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:41:06.343] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:41:06.898] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:41:07.553] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:41:08.923] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:41:11.251] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:41:13.745] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:41:16.556] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:41:19.613] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:41:22.711] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
avg_valid_play_duration_result = run_dml_plr_models(df_with_dummies, Y = "avg_valid_play_duration", D = "is_pk_live", Xs = features_base)
## INFO [15:41:26.822] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:41:28.100] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:41:29.684] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:41:31.210] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:41:41.008] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:41:50.778] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:42:01.701] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:42:29.556] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:42:59.033] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:43:27.493] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:43:48.564] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:44:10.056] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:44:30.548] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:44:30.833] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:44:31.136] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:44:31.645] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:44:32.159] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:44:32.645] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:44:33.799] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:44:35.993] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:44:38.191] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:44:40.564] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:44:42.897] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:44:45.278] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
follow_author_cnt_result = run_dml_plr_models(df_with_dummies, Y = "follow_author_cnt", D = "is_pk_live", Xs = features_base)
## INFO [15:44:48.505] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:44:49.746] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:44:50.759] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:44:51.884] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:44:59.206] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:45:06.484] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:45:14.403] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:45:28.597] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:45:42.935] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:45:58.575] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:46:13.679] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:46:28.808] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:46:44.770] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:46:45.024] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:46:45.239] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:46:45.668] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:46:46.113] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:46:46.563] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:46:47.629] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:46:49.577] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:46:51.542] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:46:53.694] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:46:56.062] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:46:58.447] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
cancel_follow_author_cnt_result = run_dml_plr_models(df_with_dummies, Y = "cancel_follow_author_cnt", D = "is_pk_live", Xs = features_base)
## INFO [15:47:01.733] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:47:02.877] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:47:04.130] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:47:05.517] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:47:12.742] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:47:20.338] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:47:28.426] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:47:45.120] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:47:59.733] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:48:19.862] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:48:40.639] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:49:00.900] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:49:22.180] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:49:22.502] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:49:22.815] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:49:23.483] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:49:24.030] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:49:24.635] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:49:26.034] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:49:28.488] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:49:30.973] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:49:33.521] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:49:36.966] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:49:40.074] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
follow_user_cnt_result = run_dml_plr_models(df_with_dummies, Y = "follow_user_cnt", D = "is_pk_live", Xs = features_base)
## INFO [15:49:44.283] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:49:45.664] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:49:47.270] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:49:48.731] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:49:58.342] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:50:07.358] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:50:16.159] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:50:33.706] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:50:49.576] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:51:09.850] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:51:30.352] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:51:54.470] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:52:17.671] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:52:17.896] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:52:18.142] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:52:19.023] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:52:19.564] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:52:20.098] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:52:21.543] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:52:23.811] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:52:26.149] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:52:28.637] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:52:31.357] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:52:34.077] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
join_fans_group_cnt_result = run_dml_plr_models(df_with_dummies, Y = "join_fans_group_cnt", D = "is_pk_live", Xs = features_base)
## INFO [15:52:37.846] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:52:39.070] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:52:40.285] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:52:41.715] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:52:50.141] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:52:58.561] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:53:07.862] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:53:25.336] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:53:42.959] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:54:01.860] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:54:19.796] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:54:38.493] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:54:59.470] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:54:59.777] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:54:59.980] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:55:00.421] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:55:01.211] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:55:01.805] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:55:03.085] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:55:05.271] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:55:07.317] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:55:09.559] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:55:12.267] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:55:14.946] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
category <- c("total_cost_amt", "avg_valid_play_duration", "follow_author_cnt",
"cancel_follow_author_cnt", "follow_user_cnt", "join_fans_group_cnt")
crs <- c(
"total_cost_amt" = "Total Gifting",
"avg_valid_play_duration" = "Avg Play Duration Per Viewer",
"follow_author_cnt" = "New Followers",
"cancel_follow_author_cnt" = "Lost Followers",
"follow_user_cnt" = "Viewer-to-Viewer Follows",
"join_fans_group_cnt" = "New Loyal Fans (log)"
)
MS_list <- list()
for (var in category) {
new_var <- crs[[var]]
MS_list[[new_var]] <- get(paste0(var, "_result"))[['mod']]
ggsave(paste0("../2.Output/DML_PK_vs_NonPK_", var, ".pdf"), plot = get(paste0(var, "_result"))[['plot']], device = "pdf", width = 16, height = 9, units = "in")
ggsave(paste0("../2.Output/DML_PK_vs_NonPK_", var, ".png"), plot = get(paste0(var, "_result"))[['plot']], device = "png", width = 16, height = 9, dpi = 300, units = "in")
}
modelsummary(MS_list)
| |
Total Gifting |
Avg Play Duration Per Viewer |
New Followers |
Lost Followers |
Viewer-to-Viewer Follows |
New Loyal Fans (log) |
| LASSO |
323.849 |
-2728.283 |
2.906 |
-0.372 |
6.476 |
-0.223 |
| |
(111.513) |
(1145.574) |
(5.080) |
(1.983) |
(5.423) |
(0.744) |
| Random Forest |
353.885 |
-1662.194 |
10.554 |
2.578 |
7.180 |
-0.267 |
| |
(117.846) |
(935.584) |
(4.162) |
(1.072) |
(2.109) |
(0.581) |
| Regression Tree |
492.668 |
-4386.058 |
14.129 |
4.284 |
14.240 |
0.744 |
| |
(81.086) |
(1030.656) |
(5.259) |
(1.614) |
(4.176) |
(0.471) |
| Boosted Trees |
388.426 |
282.521 |
9.194 |
2.341 |
6.064 |
-0.017 |
| |
(85.170) |
(905.989) |
(3.598) |
(1.029) |
(2.365) |
(0.539) |
| Obs |
196684 |
196684 |
196684 |
196684 |
196684 |
196684 |
save_model_summaries <- function(list, new_cate_name) {
modelsummary(list, stars = c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
output = paste0("../2.Output/", new_cate_name, ".docx"))
title = paste0('The Impact of PK Event',
'\\label{tab:', new_cate_name, '}')
modelsummary(list, output = "latex", stars = c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
title = title, escape = FALSE) |>
theme_tt("resize") |>
save_tt(paste0("../2.Output/", new_cate_name, ".tex"), overwrite = TRUE)
}
save_model_summaries(MS_list, "DML_PK_vs_NonPK")
(3) log(0.01+x)
log001_total_cost_amt_result = run_dml_plr_models(df_with_dummies, Y = "log001_total_cost_amt", D = "is_pk_live", Xs = features_base)
## INFO [15:55:22.070] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:55:23.363] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:55:24.781] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:55:26.690] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:55:35.396] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:55:43.178] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:55:52.011] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:56:14.140] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:56:36.155] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:56:58.061] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:57:13.423] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [15:57:28.909] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [15:57:44.900] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [15:57:45.193] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [15:57:45.492] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [15:57:45.992] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [15:57:46.459] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [15:57:46.910] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [15:57:47.997] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [15:57:50.299] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [15:57:52.601] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [15:57:54.995] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [15:57:57.364] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [15:57:59.768] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
log001_avg_valid_play_duration_result = run_dml_plr_models(df_with_dummies, Y = "log001_avg_valid_play_duration", D = "is_pk_live", Xs = features_base)
## INFO [15:58:02.994] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [15:58:04.154] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [15:58:05.442] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [15:58:06.612] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [15:58:13.863] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [15:58:20.991] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [15:58:29.165] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [15:58:54.078] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [15:59:15.422] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [15:59:37.415] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [15:59:54.234] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [16:00:11.101] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [16:00:28.913] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [16:00:29.297] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [16:00:29.620] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [16:00:30.436] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [16:00:30.863] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [16:00:31.345] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [16:00:32.450] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [16:00:34.717] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [16:00:36.996] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [16:00:39.431] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [16:00:41.967] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [16:00:44.416] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
log001_follow_author_cnt_result = run_dml_plr_models(df_with_dummies, Y = "log001_follow_author_cnt", D = "is_pk_live", Xs = features_base)
## INFO [16:00:47.713] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [16:00:48.860] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [16:00:50.165] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [16:00:51.423] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [16:00:58.926] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [16:01:06.118] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [16:01:14.212] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [16:01:35.484] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [16:01:55.937] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [16:02:16.388] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [16:02:31.418] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [16:02:46.970] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [16:03:03.384] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [16:03:03.724] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [16:03:03.993] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [16:03:04.492] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [16:03:04.939] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [16:03:05.389] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [16:03:06.781] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [16:03:09.037] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [16:03:11.276] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [16:03:13.644] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [16:03:15.995] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [16:03:18.345] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
log001_cancel_follow_author_cnt_result = run_dml_plr_models(df_with_dummies, Y = "log001_cancel_follow_author_cnt", D = "is_pk_live", Xs = features_base)
## INFO [16:03:21.552] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [16:03:22.604] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [16:03:23.887] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [16:03:25.308] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [16:03:32.336] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [16:03:39.633] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [16:03:47.450] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [16:04:07.701] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [16:04:29.566] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [16:04:50.988] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [16:05:08.166] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [16:05:28.447] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [16:05:46.135] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [16:05:46.415] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [16:05:46.705] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [16:05:47.353] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [16:05:47.792] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [16:05:48.289] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [16:05:49.533] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [16:05:52.002] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [16:05:54.365] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [16:05:56.866] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [16:05:59.432] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [16:06:01.925] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
log001_follow_user_cnt_result = run_dml_plr_models(df_with_dummies, Y = "log001_follow_user_cnt", D = "is_pk_live", Xs = features_base)
## INFO [16:06:05.516] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [16:06:06.969] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [16:06:08.265] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [16:06:10.333] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [16:06:18.547] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [16:06:26.173] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [16:06:34.727] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [16:06:54.378] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [16:07:13.748] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [16:07:33.458] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [16:07:49.997] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [16:08:05.286] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [16:08:22.038] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [16:08:22.328] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [16:08:22.627] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [16:08:23.139] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [16:08:23.624] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [16:08:24.064] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [16:08:25.145] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [16:08:27.298] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [16:08:29.451] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [16:08:31.722] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [16:08:34.104] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [16:08:36.460] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
log001_join_fans_group_cnt_result = run_dml_plr_models(df_with_dummies, Y = "log001_join_fans_group_cnt", D = "is_pk_live", Xs = features_base)
## INFO [16:08:39.722] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 1/3)
## INFO [16:08:40.795] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 2/3)
## INFO [16:08:42.094] [mlr3] Applying learner 'regr.cv_glmnet' on task 'nuis_l' (iter 3/3)
## INFO [16:08:43.443] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 1/3)
## INFO [16:08:50.791] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 2/3)
## INFO [16:08:58.255] [mlr3] Applying learner 'classif.cv_glmnet' on task 'nuis_m' (iter 3/3)
## INFO [16:09:06.937] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 1/3)
## INFO [16:09:25.784] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 2/3)
## INFO [16:09:44.455] [mlr3] Applying learner 'regr.ranger' on task 'nuis_l' (iter 3/3)
## INFO [16:10:02.680] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 1/3)
## INFO [16:10:17.777] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 2/3)
## INFO [16:10:33.002] [mlr3] Applying learner 'classif.ranger' on task 'nuis_m' (iter 3/3)
## INFO [16:10:49.744] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 1/3)
## INFO [16:10:50.034] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 2/3)
## INFO [16:10:50.320] [mlr3] Applying learner 'regr.rpart' on task 'nuis_l' (iter 3/3)
## INFO [16:10:50.828] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 1/3)
## INFO [16:10:51.311] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 2/3)
## INFO [16:10:51.751] [mlr3] Applying learner 'classif.rpart' on task 'nuis_m' (iter 3/3)
## INFO [16:10:52.849] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 1/3)
## INFO [16:10:54.957] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 2/3)
## INFO [16:10:57.033] [mlr3] Applying learner 'regr.xgboost' on task 'nuis_l' (iter 3/3)
## INFO [16:10:59.258] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 1/3)
## INFO [16:11:01.648] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 2/3)
## INFO [16:11:03.999] [mlr3] Applying learner 'classif.xgboost' on task 'nuis_m' (iter 3/3)
category <- c("log001_total_cost_amt", "log001_avg_valid_play_duration", "log001_follow_author_cnt",
"log001_cancel_follow_author_cnt", "log001_follow_user_cnt", "log001_join_fans_group_cnt")
crs <- c(
"log001_total_cost_amt" = "Total Gifting (log001)",
"log001_avg_valid_play_duration" = "Avg Play Duration Per Viewer (log001)",
"log001_follow_author_cnt" = "New Followers (log001)",
"log001_cancel_follow_author_cnt" = "Lost Followers (log001)",
"log001_follow_user_cnt" = "Viewer-to-Viewer Follows (log001)",
"log001_join_fans_group_cnt" = "New Fans (log001)"
)
MS_list <- list()
for (var in category) {
new_var <- crs[[var]]
MS_list[[new_var]] <- get(paste0(var, "_result"))[['mod']]
ggsave(paste0("../2.Output/DML_PK_vs_NonPK_", var, ".pdf"), plot = get(paste0(var, "_result"))[['plot']], device = "pdf", width = 16, height = 9, units = "in")
ggsave(paste0("../2.Output/DML_PK_vs_NonPK_", var, ".png"), plot = get(paste0(var, "_result"))[['plot']], device = "png", width = 16, height = 9, dpi = 300, units = "in")
}
save_model_summaries <- function(list, new_cate_name) {
modelsummary(list, stars = c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
output = paste0("../2.Output/", new_cate_name, ".docx"))
title = paste0('The Impact of PK Event',
'\\label{tab:', new_cate_name, '}')
modelsummary(list, output = "latex", stars = c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
title = title, escape = FALSE) |>
theme_tt("resize") |>
save_tt(paste0("../2.Output/", new_cate_name, ".tex"), overwrite = TRUE)
}
save_model_summaries(MS_list, "DML_PK_vs_NonPK_log001")