rm(list=ls())
set.seed(1234)
getwd()
## [1] "C:/Users/ASUS/Desktop/_pk_live/1.DataAnalysis/0.Code"
library(dplyr)  
## 
## 载入程序包:'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(plm)
## 
## 载入程序包:'plm'
## The following objects are masked from 'package:dplyr':
## 
##     between, lag, lead
library(fixest)
library(did)
library(ggplot2)
library(dplyr)
library("tidyverse")
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ✔ readr     2.1.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ plm::between()  masks dplyr::between()
## ✖ dplyr::filter() masks stats::filter()
## ✖ plm::lag()      masks dplyr::lag(), stats::lag()
## ✖ plm::lead()     masks dplyr::lead()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library("arrow")
## 
## 载入程序包:'arrow'
## 
## The following object is masked from 'package:lubridate':
## 
##     duration
## 
## The following object is masked from 'package:utils':
## 
##     timestamp
library(data.table)
## 
## 载入程序包:'data.table'
## 
## The following objects are masked from 'package:lubridate':
## 
##     hour, isoweek, mday, minute, month, quarter, second, wday, week,
##     yday, year
## 
## The following object is masked from 'package:purrr':
## 
##     transpose
## 
## The following object is masked from 'package:plm':
## 
##     between
## 
## The following objects are masked from 'package:dplyr':
## 
##     between, first, last
library(modelsummary)
## `modelsummary` 2.0.0 now uses `tinytable` as its default table-drawing
##   backend. Learn more at: https://vincentarelbundock.github.io/tinytable/
## 
## Revert to `kableExtra` for one session:
## 
##   options(modelsummary_factory_default = 'kableExtra')
##   options(modelsummary_factory_latex = 'kableExtra')
##   options(modelsummary_factory_html = 'kableExtra')
## 
## Silence this message forever:
## 
##   config_modelsummary(startup_message = FALSE)
library(tinytable)
setwd("C:/Users/ASUS/Desktop/_pk_live/1.DataAnalysis")

数据:2022.01.01–2024.09.01 全部的random PK pair

1.summary data

df = read.csv("../1.Input/Within_Random_Pk_data.csv")
cols <- c(
  # 自变量 (Independent Variables)
  "is_same_category",
  "fan_size_pair",
  # 控制变量 (Control Variables)
  "gender_number",
  "age_range_number",
  # "author_type_number",
  "fre_country_region_number",
  "fre_city_level_number",
  # 因变量 (Dependent Variables)
  "log_avg_viewer_total_cost_amt",
  "log_already_follow_other_fans_count",
  "log_other_already_follow_other_fans_count",
  "log_follow_author_fans_count",
  "log_unfollow_author_fans_count",
  "log_net_follow_fans"
)

crs <- c(
  # 自变量 (Independent Variables)
  "is_same_category" = "Same Category in PK",
  "fan_size_pair" = "Fan Size Pair in PK",
  # 控制变量 (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",
  # 因变量 (Dependent Variables)
  "log_avg_viewer_total_cost_amt" = "Avg Gifting per Viewer (log)",
  "log_already_follow_other_fans_count" = "Opponent Followers Attracted by Focal (log)",
  "log_other_already_follow_other_fans_count" = "Focal Followers Attracted by Opponent (log)",
  "log_follow_author_fans_count" = "New Followers Gained (log)",
  "log_unfollow_author_fans_count" = "Followers Lost (log)",
  "log_net_follow_fans" = "Net Follower Gain (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/Within_Random_PK_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

df = df %>%mutate(fan_size_pair = case_when(
  (before_fans_count>=10000) & (other_before_fans_count>=10000)~ 3,
  (before_fans_count>=10000) & (other_before_fans_count<10000)~ 2,
  (before_fans_count<10000) & (other_before_fans_count>= 10000)~ 1,
  (before_fans_count<10000) & (other_before_fans_count<10000)~ 0
))

df <- df %>% 
  mutate(fan_size_pair = factor(fan_size_pair, level = c(0,1,2,3), labels = c("Small vs Small ", "Small vs Big", "Big vs Small", "Big vs Big")))
source("Plot_CI_function.R")
# Call the functions with your data and formula
plot_pct_change(df)

savesave <- function(p, var) {
  ggsave(paste0("../2.Output/RANDOM_PK_", var, ".pdf"), plot = p, device = "pdf", width = 16, height = 9, units = "in")
  ggsave(paste0("../2.Output/RANDOM_PK_", var, ".png"), plot = p, device = "png", width = 16, height = 9, dpi = 300, units = "in")
}
crs <- c(
  # Independent Variables
  "is_same_category" = "Same Category in PK",
  "fan_size_pair" = "Fan Size Pair in PK",
  
  # Control Variables
  "gender" = "Gender",
  "age_range" = "Age Category",
  "author_type" = "Streamer Type",
  "fre_country_region" = "Region",
  "fre_city_level" = "City Level",
  "log_fans_num" = "Follower 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_avg_fan_total_cost_amt" = "Avg Gifting per Follower (log)",
  "log_avg_viewer_total_cost_amt" = "Avg Gifting per Viewer (log)",
  "log_already_follow_other_fans_count" = "Opponent Followers Attracted by Focal (log)",
  "log_other_already_follow_other_fans_count" = "Focal Followers Attracted by Opponent (log)",
  "log_follow_author_fans_count" = "New Followers Gained (log)",
  "log_unfollow_author_fans_count" = "Followers Lost (log)",
  "log_net_follow_fans" = "Net Follower Gain (log)"
)

(1) log_avg_viewer_total_cost_amt

library(fixest)
model1 <- feols(log_avg_viewer_total_cost_amt ~ factor(fan_size_pair)*is_same_category, data = df,vcov = ~ author_id)
model1_with_ctrls <- feols(log_avg_viewer_total_cost_amt ~ factor(fan_size_pair)*is_same_category + factor(gender) + factor(age_range) + 
                             factor(fre_country_region) + factor(fre_city_level) + factor(year) + factor(month) + factor(day),
                           data = df, vcov = ~ author_id)
summary(model1)
## OLS estimation, Dep. Var.: log_avg_viewer_total_cost_amt
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         0.102593   0.001198
## factor(fan_size_pair)Small vs Big                   0.189591   0.007837
## factor(fan_size_pair)Big vs Small                   0.173918   0.007724
## factor(fan_size_pair)Big vs Big                     0.209492   0.006955
## is_same_category                                    0.030984   0.002218
## factor(fan_size_pair)Small vs Big:is_same_category  0.033079   0.013099
## factor(fan_size_pair)Big vs Small:is_same_category  0.004540   0.012272
## factor(fan_size_pair)Big vs Big:is_same_category   -0.026354   0.010313
##                                                      t value  Pr(>|t|)    
## (Intercept)                                        85.620070 < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big                  24.190809 < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small                  22.517194 < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big                    30.122494 < 2.2e-16 ***
## is_same_category                                   13.971806 < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big:is_same_category  2.525314  0.011560 *  
## factor(fan_size_pair)Big vs Small:is_same_category  0.369919  0.711443    
## factor(fan_size_pair)Big vs Big:is_same_category   -2.555456  0.010606 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.441278   Adj. R2: 0.031388
summary(model1_with_ctrls)
## OLS estimation, Dep. Var.: log_avg_viewer_total_cost_amt
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         0.138408   0.029030
## factor(fan_size_pair)Small vs Big                   0.139634   0.007644
## factor(fan_size_pair)Big vs Small                   0.120432   0.007697
## factor(fan_size_pair)Big vs Big                     0.140952   0.006996
## is_same_category                                    0.022379   0.002202
## factor(gender)M                                    -0.100360   0.002077
## factor(gender)U                                    -0.199254   0.085551
## factor(age_range)12-17                              0.086268   0.010792
## factor(age_range)18-23                              0.115591   0.010634
## factor(age_range)24-30                              0.112304   0.010944
## factor(age_range)31-40                              0.080253   0.010471
## factor(age_range)41-49                              0.036146   0.010428
## factor(age_range)50+                                0.004964   0.010340
## factor(age_range)UNKNOWN                            0.260665   0.013099
## factor(fre_country_region)北方                     -0.066165   0.029631
## factor(fre_country_region)南方                     -0.072203   0.029666
## factor(fre_city_level)二线城市                      0.063810   0.013928
## factor(fre_city_level)三线城市                      0.058506   0.013775
## factor(fre_city_level)四线城市                      0.046747   0.013688
## factor(fre_city_level)五线城市                      0.018727   0.013581
## factor(fre_city_level)新一线城市                    0.078088   0.014266
## factor(fre_city_level)一线城市                      0.066807   0.015195
## factor(year)2023                                   -0.008258   0.002662
## factor(year)2024                                    0.005291   0.002788
## factor(month)2                                     -0.011242   0.004164
## factor(month)3                                     -0.010680   0.004215
## factor(month)4                                     -0.015820   0.004246
## factor(month)5                                     -0.004667   0.004481
## factor(month)6                                      0.008091   0.005012
## factor(month)7                                      0.006981   0.004782
## factor(month)8                                      0.017130   0.004914
## factor(month)9                                      0.018626   0.005771
## factor(month)10                                     0.011181   0.005574
## factor(month)11                                     0.011785   0.005637
## factor(month)12                                     0.000608   0.005291
## factor(day)2                                       -0.014348   0.007968
## factor(day)3                                       -0.016704   0.007900
## factor(day)4                                       -0.012001   0.007840
## factor(day)5                                       -0.014832   0.007787
## factor(day)6                                       -0.017961   0.007908
## factor(day)7                                       -0.014949   0.007792
## factor(day)8                                       -0.011518   0.007870
## factor(day)9                                       -0.011219   0.008151
## factor(day)10                                      -0.002268   0.008117
## factor(day)11                                      -0.016023   0.007791
## factor(day)12                                      -0.014128   0.007804
## factor(day)13                                      -0.015629   0.007761
## factor(day)14                                      -0.017464   0.007845
## factor(day)15                                      -0.021870   0.007804
## factor(day)16                                      -0.012391   0.007855
## factor(day)17                                      -0.007735   0.007992
## factor(day)18                                      -0.019945   0.008054
## factor(day)19                                      -0.011045   0.008096
## factor(day)20                                      -0.003274   0.008168
## factor(day)21                                      -0.016592   0.008014
## factor(day)22                                      -0.004949   0.008144
## factor(day)23                                      -0.008010   0.008010
## factor(day)24                                      -0.007540   0.008284
## factor(day)25                                      -0.009744   0.008257
## factor(day)26                                      -0.011702   0.008033
## factor(day)27                                      -0.008287   0.008015
## factor(day)28                                      -0.004038   0.008036
## factor(day)29                                      -0.002727   0.008451
## factor(day)30                                      -0.006230   0.008426
## factor(day)31                                      -0.008277   0.009504
## factor(fan_size_pair)Small vs Big:is_same_category  0.023488   0.012930
## factor(fan_size_pair)Big vs Small:is_same_category -0.001104   0.012172
## factor(fan_size_pair)Big vs Big:is_same_category   -0.025883   0.010223
##                                                       t value   Pr(>|t|)    
## (Intercept)                                          4.767709 1.8650e-06 ***
## factor(fan_size_pair)Small vs Big                   18.266419  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small                   15.646227  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big                     20.148652  < 2.2e-16 ***
## is_same_category                                    10.163614  < 2.2e-16 ***
## factor(gender)M                                    -48.310318  < 2.2e-16 ***
## factor(gender)U                                     -2.329076 1.9856e-02 *  
## factor(age_range)12-17                               7.993476 1.3207e-15 ***
## factor(age_range)18-23                              10.870305  < 2.2e-16 ***
## factor(age_range)24-30                              10.261591  < 2.2e-16 ***
## factor(age_range)31-40                               7.664503 1.8054e-14 ***
## factor(age_range)41-49                               3.466339 5.2774e-04 ***
## factor(age_range)50+                                 0.480037 6.3120e-01    
## factor(age_range)UNKNOWN                            19.900253  < 2.2e-16 ***
## factor(fre_country_region)北方                      -2.232985 2.5551e-02 *  
## factor(fre_country_region)南方                      -2.433904 1.4938e-02 *  
## factor(fre_city_level)二线城市                       4.581256 4.6254e-06 ***
## factor(fre_city_level)三线城市                       4.247075 2.1670e-05 ***
## factor(fre_city_level)四线城市                       3.415288 6.3731e-04 ***
## factor(fre_city_level)五线城市                       1.378968 1.6791e-01    
## factor(fre_city_level)新一线城市                     5.473864 4.4100e-08 ***
## factor(fre_city_level)一线城市                       4.396582 1.1004e-05 ***
## factor(year)2023                                    -3.102094 1.9219e-03 ** 
## factor(year)2024                                     1.897862 5.7716e-02 .  
## factor(month)2                                      -2.699582 6.9434e-03 ** 
## factor(month)3                                      -2.533562 1.1292e-02 *  
## factor(month)4                                      -3.726071 1.9456e-04 ***
## factor(month)5                                      -1.041569 2.9761e-01    
## factor(month)6                                       1.614262 1.0647e-01    
## factor(month)7                                       1.459942 1.4431e-01    
## factor(month)8                                       3.485849 4.9071e-04 ***
## factor(month)9                                       3.227481 1.2491e-03 ** 
## factor(month)10                                      2.005999 4.4858e-02 *  
## factor(month)11                                      2.090653 3.6561e-02 *  
## factor(month)12                                      0.114930 9.0850e-01    
## factor(day)2                                        -1.800702 7.1752e-02 .  
## factor(day)3                                        -2.114454 3.4478e-02 *  
## factor(day)4                                        -1.530774 1.2583e-01    
## factor(day)5                                        -1.904802 5.6808e-02 .  
## factor(day)6                                        -2.271240 2.3134e-02 *  
## factor(day)7                                        -1.918497 5.5050e-02 .  
## factor(day)8                                        -1.463538 1.4332e-01    
## factor(day)9                                        -1.376481 1.6867e-01    
## factor(day)10                                       -0.279363 7.7997e-01    
## factor(day)11                                       -2.056601 3.9726e-02 *  
## factor(day)12                                       -1.810335 7.0246e-02 .  
## factor(day)13                                       -2.013719 4.4041e-02 *  
## factor(day)14                                       -2.226001 2.6016e-02 *  
## factor(day)15                                       -2.802403 5.0730e-03 ** 
## factor(day)16                                       -1.577577 1.1466e-01    
## factor(day)17                                       -0.967915 3.3309e-01    
## factor(day)18                                       -2.476417 1.3272e-02 *  
## factor(day)19                                       -1.364169 1.7252e-01    
## factor(day)20                                       -0.400750 6.8860e-01    
## factor(day)21                                       -2.070442 3.8413e-02 *  
## factor(day)22                                       -0.607697 5.4339e-01    
## factor(day)23                                       -1.000010 3.1731e-01    
## factor(day)24                                       -0.910171 3.6273e-01    
## factor(day)25                                       -1.179996 2.3800e-01    
## factor(day)26                                       -1.456635 1.4522e-01    
## factor(day)27                                       -1.033881 3.0119e-01    
## factor(day)28                                       -0.502483 6.1533e-01    
## factor(day)29                                       -0.322685 7.4693e-01    
## factor(day)30                                       -0.739378 4.5968e-01    
## factor(day)31                                       -0.870862 3.8383e-01    
## factor(fan_size_pair)Small vs Big:is_same_category   1.816528 6.9291e-02 .  
## factor(fan_size_pair)Big vs Small:is_same_category  -0.090721 9.2771e-01    
## factor(fan_size_pair)Big vs Big:is_same_category    -2.531740 1.1351e-02 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.43532   Adj. R2: 0.057066
savesave(plot_predictions_with_ci(model1, df, "log_avg_viewer_total_cost_amt"), "log_avg_viewer_total_cost_amt")

# fan_size
model <- feols(log_avg_viewer_total_cost_amt ~ factor(fan_size_pair), data = df, vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_avg_viewer_total_cost_amt
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                   Estimate Std. Error  t value  Pr(>|t|)    
## (Intercept)                       0.113025   0.001037 108.9989 < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big 0.203451   0.006593  30.8575 < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small 0.176910   0.006384  27.7094 < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big   0.201003   0.005573  36.0645 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.441556   Adj. R2: 0.030188
savesave(plot_predictions_fans(model, df, "log_avg_viewer_total_cost_amt"), "log_avg_viewer_total_cost_amt_fan_size_pair")

# category
model <- feols(log_avg_viewer_total_cost_amt ~ is_same_category, data = df,vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_avg_viewer_total_cost_amt
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                  Estimate Std. Error  t value  Pr(>|t|)    
## (Intercept)      0.138194   0.001308 105.6180 < 2.2e-16 ***
## is_same_category 0.038982   0.002283  17.0749 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.447995   Adj. R2: 0.001711
savesave(plot_predictions_cate(model, df, "log_avg_viewer_total_cost_amt"), "log_avg_viewer_total_cost_amt_is_same_category")

# plot_coefficients(data, "log_avg_viewer_total_cost_amt")
savesave(plot_coefficients(df, "log_avg_viewer_total_cost_amt"), "log_avg_viewer_total_cost_amt_evolution")

summary(df$log_avg_viewer_total_cost_amt)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00000 0.00000 0.00000 0.15178 0.03774 8.29425
# Call the functions with your data and formula
heatmap_plot <- plot_heatmap(
  data = df,
  y_var = log_avg_viewer_total_cost_amt,  # Column name as a symbol
  crs = crs,
  limits = c(0,0.5)
)
## `summarise()` has grouped output by 'fans_new_range'. You can override using
## the `.groups` argument.
savesave(heatmap_plot, "log_avg_viewer_total_cost_amt_heatmap")
print(heatmap_plot)

# 存储OLS 结果到latex
modelsummary(list("Avg Gifting per Viewer (log)" = model1, "Avg Gifting per Viewer (log)" = model1_with_ctrls), 
             stars =  c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
             coef_omit = 'gender|age_range|fre_country_region|fre_city_level|year|month|day',  # Omit the specified variables
              add_rows = data.frame("Control" = "Control:", "Model 1" = "No", "Model 2" = "Yes"),  # Add custom row for control variables
             # coef_map = crs, 
             title = "The Impact on Avg Gifting per Viewer (log)",
             output = "latex") |>
theme_tt("resize") |>
save_tt("../2.Output/ols_avg_viewer_total_cost_amt.tex", overwrite = TRUE)

(2) llog_already_follow_other_fans_count

model2 <- feols(log_already_follow_other_fans_count ~ factor(fan_size_pair)*is_same_category, data = df,vcov = ~ author_id)
model2_with_ctrls <- feols(log_already_follow_other_fans_count ~ factor(fan_size_pair)*is_same_category + factor(gender) + factor(age_range) + 
                             factor(fre_country_region) + factor(fre_city_level) + factor(year) + factor(month) + factor(day),
                           data = df, vcov = ~ author_id)
summary(model2)
## OLS estimation, Dep. Var.: log_already_follow_other_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         0.002521   0.000140
## factor(fan_size_pair)Small vs Big                   0.010836   0.001431
## factor(fan_size_pair)Big vs Small                   0.004956   0.000927
## factor(fan_size_pair)Big vs Big                     0.032031   0.002134
## is_same_category                                    0.001063   0.000271
## factor(fan_size_pair)Small vs Big:is_same_category  0.003174   0.002440
## factor(fan_size_pair)Big vs Small:is_same_category -0.000312   0.001606
## factor(fan_size_pair)Big vs Big:is_same_category    0.017504   0.003920
##                                                      t value   Pr(>|t|)    
## (Intercept)                                        18.053466  < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big                   7.570511 3.7377e-14 ***
## factor(fan_size_pair)Big vs Small                   5.347891 8.9109e-08 ***
## factor(fan_size_pair)Big vs Big                    15.008200  < 2.2e-16 ***
## is_same_category                                    3.919948 8.8605e-05 ***
## factor(fan_size_pair)Small vs Big:is_same_category  1.301019 1.9325e-01    
## factor(fan_size_pair)Big vs Small:is_same_category -0.194050 8.4614e-01    
## factor(fan_size_pair)Big vs Big:is_same_category    4.465170 8.0061e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.084923   Adj. R2: 0.017542
summary(model2_with_ctrls)
## OLS estimation, Dep. Var.: log_already_follow_other_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         0.014668   0.010341
## factor(fan_size_pair)Small vs Big                   0.009294   0.001419
## factor(fan_size_pair)Big vs Small                   0.003135   0.000948
## factor(fan_size_pair)Big vs Big                     0.029757   0.002143
## is_same_category                                    0.000756   0.000278
## factor(gender)M                                    -0.003561   0.000372
## factor(gender)U                                    -0.011759   0.010501
## factor(age_range)12-17                              0.000490   0.001115
## factor(age_range)18-23                              0.001466   0.001152
## factor(age_range)24-30                              0.000264   0.001242
## factor(age_range)31-40                              0.000657   0.001145
## factor(age_range)41-49                              0.001595   0.001157
## factor(age_range)50+                                0.001754   0.001131
## factor(age_range)UNKNOWN                           -0.007637   0.002017
## factor(fre_country_region)北方                     -0.012245   0.011033
## factor(fre_country_region)南方                     -0.013995   0.011021
## factor(fre_city_level)二线城市                     -0.000224   0.003994
## factor(fre_city_level)三线城市                     -0.002057   0.003967
## factor(fre_city_level)四线城市                     -0.003312   0.003955
## factor(fre_city_level)五线城市                     -0.003307   0.003947
## factor(fre_city_level)新一线城市                   -0.000685   0.004012
## factor(fre_city_level)一线城市                      0.001233   0.004278
## factor(year)2023                                    0.002822   0.000478
## factor(year)2024                                    0.004515   0.000490
## factor(month)2                                      0.000723   0.000712
## factor(month)3                                     -0.000015   0.000724
## factor(month)4                                     -0.000246   0.000695
## factor(month)5                                      0.000885   0.000853
## factor(month)6                                      0.001869   0.001051
## factor(month)7                                     -0.000193   0.000765
## factor(month)8                                      0.001200   0.000827
## factor(month)9                                      0.001174   0.000965
## factor(month)10                                     0.001706   0.001025
## factor(month)11                                     0.002208   0.001049
## factor(month)12                                     0.003332   0.001173
## factor(day)2                                        0.001988   0.001378
## factor(day)3                                        0.002312   0.001422
## factor(day)4                                        0.000781   0.001310
## factor(day)5                                        0.002959   0.001551
## factor(day)6                                        0.002437   0.001470
## factor(day)7                                       -0.000367   0.001219
## factor(day)8                                        0.001924   0.001451
## factor(day)9                                        0.000792   0.001231
## factor(day)10                                       0.000573   0.001282
## factor(day)11                                      -0.000137   0.001247
## factor(day)12                                       0.001840   0.001410
## factor(day)13                                      -0.000064   0.001252
## factor(day)14                                      -0.000658   0.001293
## factor(day)15                                       0.002944   0.001714
## factor(day)16                                      -0.001109   0.001122
## factor(day)17                                       0.003414   0.001593
## factor(day)18                                       0.001970   0.001612
## factor(day)19                                       0.001171   0.001396
## factor(day)20                                       0.000057   0.001322
## factor(day)21                                       0.000892   0.001381
## factor(day)22                                       0.000137   0.001224
## factor(day)23                                      -0.000645   0.001133
## factor(day)24                                      -0.000470   0.001186
## factor(day)25                                       0.003184   0.001424
## factor(day)26                                       0.002147   0.001348
## factor(day)27                                       0.002492   0.001417
## factor(day)28                                      -0.000348   0.001308
## factor(day)29                                      -0.000639   0.001195
## factor(day)30                                      -0.000350   0.001238
## factor(day)31                                       0.000949   0.001582
## factor(fan_size_pair)Small vs Big:is_same_category  0.002965   0.002439
## factor(fan_size_pair)Big vs Small:is_same_category -0.000374   0.001613
## factor(fan_size_pair)Big vs Big:is_same_category    0.017543   0.003917
##                                                      t value   Pr(>|t|)    
## (Intercept)                                         1.418358 1.5609e-01    
## factor(fan_size_pair)Small vs Big                   6.550814 5.7399e-11 ***
## factor(fan_size_pair)Big vs Small                   3.307445 9.4172e-04 ***
## factor(fan_size_pair)Big vs Big                    13.888610  < 2.2e-16 ***
## is_same_category                                    2.717461 6.5792e-03 ** 
## factor(gender)M                                    -9.566927  < 2.2e-16 ***
## factor(gender)U                                    -1.119858 2.6278e-01    
## factor(age_range)12-17                              0.439282 6.6046e-01    
## factor(age_range)18-23                              1.273041 2.0301e-01    
## factor(age_range)24-30                              0.212525 8.3170e-01    
## factor(age_range)31-40                              0.573900 5.6604e-01    
## factor(age_range)41-49                              1.378278 1.6812e-01    
## factor(age_range)50+                                1.551124 1.2087e-01    
## factor(age_range)UNKNOWN                           -3.786696 1.5272e-04 ***
## factor(fre_country_region)北方                     -1.109844 2.6707e-01    
## factor(fre_country_region)南方                     -1.269851 2.0414e-01    
## factor(fre_city_level)二线城市                     -0.056119 9.5525e-01    
## factor(fre_city_level)三线城市                     -0.518634 6.0402e-01    
## factor(fre_city_level)四线城市                     -0.837356 4.0239e-01    
## factor(fre_city_level)五线城市                     -0.837831 4.0213e-01    
## factor(fre_city_level)新一线城市                   -0.170749 8.6442e-01    
## factor(fre_city_level)一线城市                      0.288291 7.7312e-01    
## factor(year)2023                                    5.901693 3.6052e-09 ***
## factor(year)2024                                    9.212588  < 2.2e-16 ***
## factor(month)2                                      1.015446 3.0990e-01    
## factor(month)3                                     -0.021070 9.8319e-01    
## factor(month)4                                     -0.354198 7.2319e-01    
## factor(month)5                                      1.037078 2.9970e-01    
## factor(month)6                                      1.779133 7.5220e-02 .  
## factor(month)7                                     -0.251839 8.0117e-01    
## factor(month)8                                      1.451960 1.4651e-01    
## factor(month)9                                      1.216740 2.2371e-01    
## factor(month)10                                     1.665366 9.5842e-02 .  
## factor(month)11                                     2.103861 3.5392e-02 *  
## factor(month)12                                     2.840608 4.5033e-03 ** 
## factor(day)2                                        1.442892 1.4905e-01    
## factor(day)3                                        1.626031 1.0395e-01    
## factor(day)4                                        0.596114 5.5110e-01    
## factor(day)5                                        1.907205 5.6496e-02 .  
## factor(day)6                                        1.657570 9.7406e-02 .  
## factor(day)7                                       -0.300978 7.6343e-01    
## factor(day)8                                        1.325862 1.8489e-01    
## factor(day)9                                        0.643531 5.1988e-01    
## factor(day)10                                       0.447234 6.5471e-01    
## factor(day)11                                      -0.109606 9.1272e-01    
## factor(day)12                                       1.304595 1.9203e-01    
## factor(day)13                                      -0.050796 9.5949e-01    
## factor(day)14                                      -0.508598 6.1103e-01    
## factor(day)15                                       1.717775 8.5840e-02 .  
## factor(day)16                                      -0.988661 3.2283e-01    
## factor(day)17                                       2.143276 3.2092e-02 *  
## factor(day)18                                       1.221729 2.2181e-01    
## factor(day)19                                       0.838737 4.0162e-01    
## factor(day)20                                       0.043141 9.6559e-01    
## factor(day)21                                       0.645946 5.1832e-01    
## factor(day)22                                       0.112197 9.1067e-01    
## factor(day)23                                      -0.569359 5.6911e-01    
## factor(day)24                                      -0.396520 6.9172e-01    
## factor(day)25                                       2.235639 2.5377e-02 *  
## factor(day)26                                       1.592216 1.1134e-01    
## factor(day)27                                       1.759024 7.8575e-02 .  
## factor(day)28                                      -0.266076 7.9018e-01    
## factor(day)29                                      -0.534520 5.9298e-01    
## factor(day)30                                      -0.282612 7.7747e-01    
## factor(day)31                                       0.600045 5.4848e-01    
## factor(fan_size_pair)Small vs Big:is_same_category  1.215893 2.2403e-01    
## factor(fan_size_pair)Big vs Small:is_same_category -0.232040 8.1651e-01    
## factor(fan_size_pair)Big vs Big:is_same_category    4.478907 7.5079e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.084856   Adj. R2: 0.018784
savesave(plot_predictions_with_ci(model2,df, "log_already_follow_other_fans_count"), "log_already_follow_other_fans_count")

#
model <- feols(log_already_follow_other_fans_count ~ factor(fan_size_pair), data = df, vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_already_follow_other_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                   Estimate Std. Error  t value   Pr(>|t|)    
## (Intercept)                       0.002879   0.000122 23.61571  < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big 0.012085   0.001167 10.35895  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small 0.004882   0.000758  6.43631 1.2277e-10 ***
## factor(fan_size_pair)Big vs Big   0.039464   0.001878 21.01515  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.084967   Adj. R2: 0.016546
savesave(plot_predictions_fans(model, df, "log_already_follow_other_fans_count"), "log_already_follow_other_fans_count_fan_size_pair")

#
model <- feols(log_already_follow_other_fans_count ~ is_same_category, data = df,vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_already_follow_other_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                  Estimate Std. Error  t value  Pr(>|t|)    
## (Intercept)      0.005774   0.000218 26.53756 < 2.2e-16 ***
## is_same_category 0.003965   0.000463  8.56617 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.085658   Adj. R2: 4.809e-4
savesave(plot_predictions_cate(model, df, "log_already_follow_other_fans_count"), "log_already_follow_other_fans_count_is_same_category")

# plot_coefficients(data, "log_already_follow_other_fans_count")
savesave(plot_coefficients(df, "log_already_follow_other_fans_count"), "log_already_follow_other_fans_count_evolution")

# Call the functions with your data and formula
heatmap_plot <- plot_heatmap(
  data = df,
  y_var = log_already_follow_other_fans_count,  # Column name as a symbol
  crs = crs,
  limits = c(0,0.5)
)
## `summarise()` has grouped output by 'fans_new_range'. You can override using
## the `.groups` argument.
savesave(heatmap_plot, "log_already_follow_other_fans_count_heatmap")
print(heatmap_plot)

modelsummary(
  list(
    "Opponent Followers Attracted by Focal (log)" = model2, 
    "Opponent Followers Attracted by Focal (log)" = model2_with_ctrls
  ), 
  stars = c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
  coef_omit = 'gender|age_range|fre_country_region|fre_city_level|year|month|day',  # Omit the specified variables
  add_rows = data.frame("Control" = "Control:", "Model 1" = "No", "Model 2" = "Yes"),  # Add custom row for control variables
  title = "The Impact on Opponent Followers Attracted by Focal (log)",
  output = "latex"
) |>
  theme_tt("resize") |>
  save_tt("../2.Output/ols_already_follow_other_fans_count.tex", overwrite = TRUE)
# 存储OLS 结果到latex
modelsummary(list("Opponent Followers Attracted by Focal (log)" = model2, "Opponent Followers Attracted by Focal (log)" = model2_with_ctrls), 
             stars =  c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
             # coef_map = crs, 
              coef_omit = 'gender|age_range|fre_country_region|fre_city_level|year|month|day',  # Omit the specified variables
              add_rows = data.frame("Control" = "Control:", "Model 1" = "No", "Model 2" = "Yes"),  # Add custom row for control variables
             title = "The Impact on Opponent Followers Attracted by Focal (log)",
             output = "latex") |>
theme_tt("resize") |>
save_tt("../2.Output/ols_already_follow_other_fans_count.tex", overwrite = TRUE)

(3) log_other_already_follow_other_fans_count

model3 <- feols(log_other_already_follow_other_fans_count ~ factor(fan_size_pair)*is_same_category, data = df,vcov = ~ author_id)
model3_with_ctrls <- feols(log_other_already_follow_other_fans_count ~ factor(fan_size_pair)*is_same_category + factor(gender) + factor(age_range) + 
                             factor(fre_country_region) + factor(fre_city_level) + factor(year) + factor(month) + factor(day),
                           data = df, vcov = ~ author_id)
summary(model3)
## OLS estimation, Dep. Var.: log_other_already_follow_other_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                    Estimate Std. Error
## (Intercept)                                        0.002605   0.000139
## factor(fan_size_pair)Small vs Big                  0.005623   0.000989
## factor(fan_size_pair)Big vs Small                  0.008615   0.001276
## factor(fan_size_pair)Big vs Big                    0.033566   0.002336
## is_same_category                                   0.000924   0.000270
## factor(fan_size_pair)Small vs Big:is_same_category 0.001306   0.001820
## factor(fan_size_pair)Big vs Small:is_same_category 0.006098   0.002285
## factor(fan_size_pair)Big vs Big:is_same_category   0.016606   0.003999
##                                                      t value   Pr(>|t|)    
## (Intercept)                                        18.754614  < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big                   5.685753 1.3047e-08 ***
## factor(fan_size_pair)Big vs Small                   6.750289 1.4806e-11 ***
## factor(fan_size_pair)Big vs Big                    14.371513  < 2.2e-16 ***
## is_same_category                                    3.424468 6.1616e-04 ***
## factor(fan_size_pair)Small vs Big:is_same_category  0.717307 4.7319e-01    
## factor(fan_size_pair)Big vs Small:is_same_category  2.668675 7.6159e-03 ** 
## factor(fan_size_pair)Big vs Big:is_same_category    4.152754 3.2867e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.086662   Adj. R2: 0.017588
summary(model3_with_ctrls)
## OLS estimation, Dep. Var.: log_other_already_follow_other_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         0.001024   0.006692
## factor(fan_size_pair)Small vs Big                   0.004685   0.000996
## factor(fan_size_pair)Big vs Small                   0.007665   0.001294
## factor(fan_size_pair)Big vs Big                     0.032212   0.002339
## is_same_category                                    0.000637   0.000276
## factor(gender)M                                    -0.000854   0.000390
## factor(gender)U                                    -0.003478   0.006871
## factor(age_range)12-17                              0.000640   0.000376
## factor(age_range)18-23                              0.001887   0.000481
## factor(age_range)24-30                              0.002803   0.000754
## factor(age_range)31-40                              0.001216   0.000480
## factor(age_range)41-49                              0.000936   0.000477
## factor(age_range)50+                                0.001878   0.000439
## factor(age_range)UNKNOWN                           -0.003022   0.001587
## factor(fre_country_region)北方                     -0.007685   0.006649
## factor(fre_country_region)南方                     -0.008771   0.006640
## factor(fre_city_level)二线城市                      0.004414   0.000779
## factor(fre_city_level)三线城市                      0.003399   0.000666
## factor(fre_city_level)四线城市                      0.003122   0.000600
## factor(fre_city_level)五线城市                      0.003074   0.000530
## factor(fre_city_level)新一线城市                    0.004607   0.000873
## factor(fre_city_level)一线城市                      0.009075   0.002000
## factor(year)2023                                    0.003908   0.000482
## factor(year)2024                                    0.005123   0.000493
## factor(month)2                                      0.001192   0.000774
## factor(month)3                                      0.000266   0.000774
## factor(month)4                                      0.001100   0.000794
## factor(month)5                                      0.001023   0.000894
## factor(month)6                                      0.000396   0.001008
## factor(month)7                                     -0.000360   0.000871
## factor(month)8                                     -0.000192   0.000847
## factor(month)9                                      0.000513   0.000998
## factor(month)10                                     0.003120   0.001104
## factor(month)11                                     0.004260   0.001209
## factor(month)12                                     0.003426   0.001236
## factor(day)2                                        0.001972   0.001493
## factor(day)3                                        0.001363   0.001267
## factor(day)4                                       -0.000181   0.001299
## factor(day)5                                        0.002585   0.001484
## factor(day)6                                        0.001296   0.001429
## factor(day)7                                        0.000290   0.001333
## factor(day)8                                        0.000408   0.001367
## factor(day)9                                        0.001269   0.001321
## factor(day)10                                       0.001832   0.001366
## factor(day)11                                       0.001754   0.001395
## factor(day)12                                       0.002408   0.001405
## factor(day)13                                      -0.000505   0.001245
## factor(day)14                                       0.001259   0.001391
## factor(day)15                                       0.002884   0.001734
## factor(day)16                                       0.001331   0.001301
## factor(day)17                                       0.001254   0.001565
## factor(day)18                                       0.001864   0.001544
## factor(day)19                                       0.002194   0.001454
## factor(day)20                                       0.000440   0.001371
## factor(day)21                                       0.000487   0.001342
## factor(day)22                                       0.001827   0.001425
## factor(day)23                                       0.001330   0.001373
## factor(day)24                                       0.002107   0.001482
## factor(day)25                                       0.000516   0.001350
## factor(day)26                                       0.001286   0.001339
## factor(day)27                                       0.001564   0.001400
## factor(day)28                                       0.000998   0.001397
## factor(day)29                                       0.002541   0.001628
## factor(day)30                                       0.002313   0.001470
## factor(day)31                                       0.002295   0.001598
## factor(fan_size_pair)Small vs Big:is_same_category  0.001354   0.001826
## factor(fan_size_pair)Big vs Small:is_same_category  0.006163   0.002281
## factor(fan_size_pair)Big vs Big:is_same_category    0.016715   0.003998
##                                                      t value   Pr(>|t|)    
## (Intercept)                                         0.153090 8.7833e-01    
## factor(fan_size_pair)Small vs Big                   4.705562 2.5338e-06 ***
## factor(fan_size_pair)Big vs Small                   5.923936 3.1498e-09 ***
## factor(fan_size_pair)Big vs Big                    13.770113  < 2.2e-16 ***
## is_same_category                                    2.311239 2.0821e-02 *  
## factor(gender)M                                    -2.188602 2.8627e-02 *  
## factor(gender)U                                    -0.506241 6.1269e-01    
## factor(age_range)12-17                              1.704134 8.8358e-02 .  
## factor(age_range)18-23                              3.925004 8.6765e-05 ***
## factor(age_range)24-30                              3.719284 1.9986e-04 ***
## factor(age_range)31-40                              2.535959 1.1215e-02 *  
## factor(age_range)41-49                              1.961047 4.9875e-02 *  
## factor(age_range)50+                                4.281989 1.8534e-05 ***
## factor(age_range)UNKNOWN                           -1.904440 5.6855e-02 .  
## factor(fre_country_region)北方                     -1.155862 2.4774e-01    
## factor(fre_country_region)南方                     -1.320867 1.8655e-01    
## factor(fre_city_level)二线城市                      5.668051 1.4468e-08 ***
## factor(fre_city_level)三线城市                      5.106457 3.2864e-07 ***
## factor(fre_city_level)四线城市                      5.204449 1.9482e-07 ***
## factor(fre_city_level)五线城市                      5.797283 6.7526e-09 ***
## factor(fre_city_level)新一线城市                    5.277927 1.3083e-07 ***
## factor(fre_city_level)一线城市                      4.538004 5.6831e-06 ***
## factor(year)2023                                    8.108298 5.1698e-16 ***
## factor(year)2024                                   10.390225  < 2.2e-16 ***
## factor(month)2                                      1.540964 1.2333e-01    
## factor(month)3                                      0.343730 7.3105e-01    
## factor(month)4                                      1.385911 1.6578e-01    
## factor(month)5                                      1.144452 2.5244e-01    
## factor(month)6                                      0.392762 6.9450e-01    
## factor(month)7                                     -0.412917 6.7967e-01    
## factor(month)8                                     -0.227059 8.2038e-01    
## factor(month)9                                      0.514251 6.0708e-01    
## factor(month)10                                     2.826222 4.7106e-03 ** 
## factor(month)11                                     3.522779 4.2717e-04 ***
## factor(month)12                                     2.771803 5.5753e-03 ** 
## factor(day)2                                        1.320537 1.8666e-01    
## factor(day)3                                        1.075714 2.8206e-01    
## factor(day)4                                       -0.139317 8.8920e-01    
## factor(day)5                                        1.741738 8.1556e-02 .  
## factor(day)6                                        0.907356 3.6422e-01    
## factor(day)7                                        0.217588 8.2775e-01    
## factor(day)8                                        0.298468 7.6535e-01    
## factor(day)9                                        0.960702 3.3670e-01    
## factor(day)10                                       1.341355 1.7981e-01    
## factor(day)11                                       1.256814 2.0882e-01    
## factor(day)12                                       1.713932 8.6543e-02 .  
## factor(day)13                                      -0.405155 6.8536e-01    
## factor(day)14                                       0.905393 3.6526e-01    
## factor(day)15                                       1.663245 9.6265e-02 .  
## factor(day)16                                       1.022769 3.0642e-01    
## factor(day)17                                       0.801606 4.2278e-01    
## factor(day)18                                       1.207420 2.2727e-01    
## factor(day)19                                       1.509237 1.3124e-01    
## factor(day)20                                       0.320944 7.4825e-01    
## factor(day)21                                       0.363207 7.1645e-01    
## factor(day)22                                       1.282305 1.9974e-01    
## factor(day)23                                       0.968872 3.3261e-01    
## factor(day)24                                       1.421631 1.5514e-01    
## factor(day)25                                       0.382325 7.0222e-01    
## factor(day)26                                       0.960994 3.3656e-01    
## factor(day)27                                       1.117185 2.6392e-01    
## factor(day)28                                       0.714312 4.7504e-01    
## factor(day)29                                       1.560816 1.1857e-01    
## factor(day)30                                       1.573452 1.1562e-01    
## factor(day)31                                       1.435810 1.5106e-01    
## factor(fan_size_pair)Small vs Big:is_same_category  0.741860 4.5817e-01    
## factor(fan_size_pair)Big vs Small:is_same_category  2.701467 6.9042e-03 ** 
## factor(fan_size_pair)Big vs Big:is_same_category    4.180666 2.9081e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.086613   Adj. R2: 0.018395
savesave(plot_predictions_with_ci(model3, df, "log_other_already_follow_other_fans_count"), "log_other_already_follow_other_fans_count")

# 
model <- feols(log_other_already_follow_other_fans_count ~ factor(fan_size_pair), data = df, vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_other_already_follow_other_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                   Estimate Std. Error  t value   Pr(>|t|)    
## (Intercept)                       0.002916   0.000121 24.13329  < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big 0.006158   0.000845  7.28617 3.2038e-13 ***
## factor(fan_size_pair)Big vs Small 0.010958   0.001085 10.09931  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big   0.040611   0.001966 20.65299  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.086703   Adj. R2: 0.016676
savesave(plot_predictions_fans(model, df, "log_other_already_follow_other_fans_count"), "log_other_already_follow_other_fans_count_fan_size_pair")

#
model <- feols(log_other_already_follow_other_fans_count ~ is_same_category, data = df,vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_other_already_follow_other_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                  Estimate Std. Error  t value  Pr(>|t|)    
## (Intercept)      0.005884   0.000227 25.95738 < 2.2e-16 ***
## is_same_category 0.004042   0.000466  8.67741 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.087415   Adj. R2: 4.797e-4
savesave(plot_predictions_cate(model, df, "log_other_already_follow_other_fans_count"), "log_other_already_follow_other_fans_count_is_same_category")

# plot_coefficients(data, "log_other_already_follow_other_fans_count")
savesave(plot_coefficients(df, "log_other_already_follow_other_fans_count"), "log_other_already_follow_other_fans_count_evolution")

# Call the functions with your data and formula
heatmap_plot <- plot_heatmap(
  data = df,
  y_var = log_other_already_follow_other_fans_count,  # Column name as a symbol
  crs = crs,
  limits = c(0,0.5)
)
## `summarise()` has grouped output by 'fans_new_range'. You can override using
## the `.groups` argument.
savesave(heatmap_plot, "log_other_already_follow_other_fans_count_heatmap")

# Display the plot
print(heatmap_plot)

# 存储OLS 结果到latex
modelsummary(list("Focal Followers Attracted by Opponent (log)" = model3, "Focal Followers Attracted by Opponent (log)" = model3_with_ctrls), 
             stars =  c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
             # coef_map = crs, 
             coef_omit = 'gender|age_range|fre_country_region|fre_city_level|year|month|day',  # Omit the specified variables
             add_rows = data.frame("Control" = "Control:", "Model 1" = "No", "Model 2" = "Yes"),  # Add custom row for control variables
             title = "The Impact on Focal Followers Attracted by Opponent (log)",
             output = "latex") |>
theme_tt("resize") |>
save_tt("../2.Output/ols_other_already_follow_other_fans_count.tex", overwrite = TRUE)
modelsummary(
  list(
    "Opponent Followers Attracted by Focal (log)" = model2, 
    "Opponent Followers Attracted by Focal (log)" = model2_with_ctrls,
    "Focal Followers Attracted by Opponent (log)" = model3, 
    "Focal Followers Attracted by Opponent (log)" = model3_with_ctrls
  ), 
  stars = c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
  coef_omit = 'gender|age_range|fre_country_region|fre_city_level|year|month|day',  # Omit the specified variables
  add_rows = data.frame(
    "Control" = "Control:", 
    "Model 1" = "No", 
    "Model 2" = "Yes", 
    "Model 3" = "No", 
    "Model 4" = "Yes"
  ),  # Add custom row for control variables
  title = "The Impact on Followers Change between Streamers (log)",
  output = "latex"
) |>
  theme_tt("resize") |>
  save_tt("../2.Output/ols_fans_change_between_streamer.tex", overwrite = TRUE)

(4) log_follow_author_fans_count

model4 <- feols(log_follow_author_fans_count ~ factor(fan_size_pair)*is_same_category, data = df,vcov = ~ author_id)
model4_with_ctrls <- feols(log_follow_author_fans_count ~ factor(fan_size_pair)*is_same_category + factor(gender) + factor(age_range) + 
                             factor(fre_country_region) + factor(fre_city_level) + factor(year) + factor(month) + factor(day),
                           data = df, vcov = ~ author_id)
summary(model4)
## OLS estimation, Dep. Var.: log_follow_author_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         0.138316   0.001459
## factor(fan_size_pair)Small vs Big                   0.214154   0.009468
## factor(fan_size_pair)Big vs Small                   0.420725   0.012629
## factor(fan_size_pair)Big vs Big                     0.703409   0.014582
## is_same_category                                   -0.007221   0.002362
## factor(fan_size_pair)Small vs Big:is_same_category  0.035045   0.015275
## factor(fan_size_pair)Big vs Small:is_same_category -0.119104   0.017658
## factor(fan_size_pair)Big vs Big:is_same_category    0.037522   0.021388
##                                                     t value   Pr(>|t|)    
## (Intercept)                                        94.81912  < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big                  22.61896  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small                  33.31467  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big                    48.23854  < 2.2e-16 ***
## is_same_category                                   -3.05786 2.2296e-03 ** 
## factor(fan_size_pair)Small vs Big:is_same_category  2.29431 2.1774e-02 *  
## factor(fan_size_pair)Big vs Small:is_same_category -6.74525 1.5328e-11 ***
## factor(fan_size_pair)Big vs Big:is_same_category    1.75431 7.9380e-02 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.60549   Adj. R2: 0.110288
summary(model4_with_ctrls)
## OLS estimation, Dep. Var.: log_follow_author_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         0.142258   0.049612
## factor(fan_size_pair)Small vs Big                   0.175342   0.009521
## factor(fan_size_pair)Big vs Small                   0.375201   0.012674
## factor(fan_size_pair)Big vs Big                     0.643170   0.014628
## is_same_category                                   -0.009164   0.002388
## factor(gender)M                                    -0.045110   0.003140
## factor(gender)U                                    -0.025369   0.056469
## factor(age_range)12-17                              0.008301   0.010179
## factor(age_range)18-23                              0.077547   0.010469
## factor(age_range)24-30                              0.090015   0.011307
## factor(age_range)31-40                              0.102640   0.010563
## factor(age_range)41-49                              0.078292   0.010555
## factor(age_range)50+                                0.052374   0.010406
## factor(age_range)UNKNOWN                           -0.132867   0.015257
## factor(fre_country_region)北方                     -0.153983   0.052436
## factor(fre_country_region)南方                     -0.207822   0.052399
## factor(fre_city_level)二线城市                      0.075494   0.021712
## factor(fre_city_level)三线城市                      0.066548   0.021526
## factor(fre_city_level)四线城市                      0.038129   0.021373
## factor(fre_city_level)五线城市                      0.018837   0.021261
## factor(fre_city_level)新一线城市                    0.086637   0.022030
## factor(fre_city_level)一线城市                      0.097091   0.023774
## factor(year)2023                                    0.082393   0.003639
## factor(year)2024                                    0.089765   0.003779
## factor(month)2                                     -0.002687   0.005639
## factor(month)3                                      0.016089   0.005910
## factor(month)4                                      0.001648   0.005817
## factor(month)5                                      0.001598   0.006162
## factor(month)6                                      0.006848   0.006796
## factor(month)7                                     -0.011136   0.006213
## factor(month)8                                      0.005011   0.006443
## factor(month)9                                      0.026090   0.007592
## factor(month)10                                     0.024471   0.007501
## factor(month)11                                     0.055962   0.008071
## factor(month)12                                     0.050935   0.008059
## factor(day)2                                        0.006968   0.009939
## factor(day)3                                        0.016731   0.010300
## factor(day)4                                        0.008804   0.010099
## factor(day)5                                        0.026562   0.010455
## factor(day)6                                        0.023617   0.010459
## factor(day)7                                        0.001107   0.010128
## factor(day)8                                        0.018425   0.010467
## factor(day)9                                        0.007302   0.010068
## factor(day)10                                      -0.005641   0.010095
## factor(day)11                                       0.022010   0.010477
## factor(day)12                                       0.016130   0.010172
## factor(day)13                                       0.006597   0.010245
## factor(day)14                                       0.002038   0.010318
## factor(day)15                                       0.012159   0.010669
## factor(day)16                                       0.016726   0.010461
## factor(day)17                                       0.019254   0.010544
## factor(day)18                                       0.007959   0.010343
## factor(day)19                                       0.024132   0.010879
## factor(day)20                                       0.015836   0.010586
## factor(day)21                                       0.007619   0.010726
## factor(day)22                                       0.008009   0.010384
## factor(day)23                                       0.004087   0.010243
## factor(day)24                                       0.018981   0.010561
## factor(day)25                                       0.035449   0.011016
## factor(day)26                                       0.028713   0.010753
## factor(day)27                                       0.015305   0.010481
## factor(day)28                                       0.013343   0.010556
## factor(day)29                                      -0.000929   0.010396
## factor(day)30                                       0.010643   0.010981
## factor(day)31                                       0.002630   0.012291
## factor(fan_size_pair)Small vs Big:is_same_category  0.026738   0.015224
## factor(fan_size_pair)Big vs Small:is_same_category -0.125355   0.017634
## factor(fan_size_pair)Big vs Big:is_same_category    0.033717   0.021313
##                                                       t value   Pr(>|t|)    
## (Intercept)                                          2.867421 4.1389e-03 ** 
## factor(fan_size_pair)Small vs Big                   18.416355  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small                   29.605047  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big                     43.968409  < 2.2e-16 ***
## is_same_category                                    -3.837473 1.2436e-04 ***
## factor(gender)M                                    -14.367869  < 2.2e-16 ***
## factor(gender)U                                     -0.449258 6.5325e-01    
## factor(age_range)12-17                               0.815557 4.1475e-01    
## factor(age_range)18-23                               7.407114 1.2972e-13 ***
## factor(age_range)24-30                               7.960865 1.7197e-15 ***
## factor(age_range)31-40                               9.717096  < 2.2e-16 ***
## factor(age_range)41-49                               7.417808 1.1967e-13 ***
## factor(age_range)50+                                 5.033009 4.8337e-07 ***
## factor(age_range)UNKNOWN                            -8.708835  < 2.2e-16 ***
## factor(fre_country_region)北方                      -2.936612 3.3187e-03 ** 
## factor(fre_country_region)南方                      -3.966110 7.3087e-05 ***
## factor(fre_city_level)二线城市                       3.477088 5.0703e-04 ***
## factor(fre_city_level)三线城市                       3.091531 1.9916e-03 ** 
## factor(fre_city_level)四线城市                       1.783979 7.4429e-02 .  
## factor(fre_city_level)五线城市                       0.885969 3.7564e-01    
## factor(fre_city_level)新一线城市                     3.932647 8.4051e-05 ***
## factor(fre_city_level)一线城市                       4.083980 4.4293e-05 ***
## factor(year)2023                                    22.641312  < 2.2e-16 ***
## factor(year)2024                                    23.751085  < 2.2e-16 ***
## factor(month)2                                      -0.476475 6.3374e-01    
## factor(month)3                                       2.722267 6.4843e-03 ** 
## factor(month)4                                       0.283229 7.7700e-01    
## factor(month)5                                       0.259380 7.9534e-01    
## factor(month)6                                       1.007587 3.1365e-01    
## factor(month)7                                      -1.792235 7.3097e-02 .  
## factor(month)8                                       0.777704 4.3674e-01    
## factor(month)9                                       3.436565 5.8929e-04 ***
## factor(month)10                                      3.262293 1.1054e-03 ** 
## factor(month)11                                      6.933377 4.1248e-12 ***
## factor(month)12                                      6.320161 2.6199e-10 ***
## factor(day)2                                         0.701059 4.8327e-01    
## factor(day)3                                         1.624409 1.0429e-01    
## factor(day)4                                         0.871762 3.8334e-01    
## factor(day)5                                         2.540564 1.1068e-02 *  
## factor(day)6                                         2.258117 2.3940e-02 *  
## factor(day)7                                         0.109317 9.1295e-01    
## factor(day)8                                         1.760324 7.8355e-02 .  
## factor(day)9                                         0.725227 4.6831e-01    
## factor(day)10                                       -0.558785 5.7631e-01    
## factor(day)11                                        2.100908 3.5651e-02 *  
## factor(day)12                                        1.585760 1.1280e-01    
## factor(day)13                                        0.643921 5.1963e-01    
## factor(day)14                                        0.197535 8.4341e-01    
## factor(day)15                                        1.139655 2.5443e-01    
## factor(day)16                                        1.598789 1.0987e-01    
## factor(day)17                                        1.826111 6.7835e-02 .  
## factor(day)18                                        0.769507 4.4159e-01    
## factor(day)19                                        2.218076 2.6551e-02 *  
## factor(day)20                                        1.495954 1.3467e-01    
## factor(day)21                                        0.710375 4.7747e-01    
## factor(day)22                                        0.771329 4.4051e-01    
## factor(day)23                                        0.398988 6.8990e-01    
## factor(day)24                                        1.797220 7.2303e-02 .  
## factor(day)25                                        3.217795 1.2921e-03 ** 
## factor(day)26                                        2.670358 7.5778e-03 ** 
## factor(day)27                                        1.460235 1.4423e-01    
## factor(day)28                                        1.264036 2.0622e-01    
## factor(day)29                                       -0.089388 9.2877e-01    
## factor(day)30                                        0.969211 3.3244e-01    
## factor(day)31                                        0.213968 8.3057e-01    
## factor(fan_size_pair)Small vs Big:is_same_category   1.756348 7.9031e-02 .  
## factor(fan_size_pair)Big vs Small:is_same_category  -7.108818 1.1754e-12 ***
## factor(fan_size_pair)Big vs Big:is_same_category     1.581945 1.1366e-01    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.602069   Adj. R2: 0.120031
savesave(plot_predictions_with_ci(model4, df, "log_follow_author_fans_count"), "log_follow_author_fans_count")

#
model <- feols(log_follow_author_fans_count ~ factor(fan_size_pair), data = df, vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_follow_author_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                   Estimate Std. Error  t value  Pr(>|t|)    
## (Intercept)                       0.135885   0.001169 116.2743 < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big 0.227136   0.007746  29.3224 < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small 0.375422   0.009936  37.7827 < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big   0.718555   0.012223  58.7862 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.605699   Adj. R2: 0.109692
savesave(plot_predictions_fans(model, df, "log_follow_author_fans_count"), "log_follow_author_fans_count_fan_size_pair")

#
model <- feols(log_follow_author_fans_count ~ is_same_category, data = df,vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_follow_author_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                  Estimate Std. Error   t value   Pr(>|t|)    
## (Intercept)      0.225502   0.001907 118.25556  < 2.2e-16 ***
## is_same_category 0.014598   0.003213   4.54369 5.5319e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.641896   Adj. R2: 1.121e-4
savesave(plot_predictions_cate(model, df, "log_follow_author_fans_count"), "log_follow_author_fans_count_is_same_category")

# plot_coefficients(data, "log_follow_author_fans_count")
savesave(plot_coefficients(df, "log_follow_author_fans_count"), "log_follow_author_fans_count_evolution")

# Call the functions with your data and formula
heatmap_plot <- plot_heatmap(
  data = df,
  y_var = log_follow_author_fans_count,  # Column name as a symbol
  crs = crs,
  limits = c(0,3)
)
## `summarise()` has grouped output by 'fans_new_range'. You can override using
## the `.groups` argument.
savesave(heatmap_plot, "log_follow_author_fans_count_heatmap")

# Display the plot
print(heatmap_plot)

# 存储OLS 结果到latex
modelsummary(list("New Followers Gained (log)" = model4, "New Followers Gained (log)" = model4_with_ctrls), 
             stars =  c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
             coef_omit = 'gender|age_range|fre_country_region|fre_city_level|year|month|day',  # Omit the specified variables
             add_rows = data.frame("Control" = "Control:", "Model 1" = "No", "Model 2" = "Yes"),  # Add custom row for control variables
             # coef_map = crs, 
             title = "The Impact on New Followers Gained (log)",
             output = "latex") |>
theme_tt("resize") |>
save_tt("../2.Output/ols_follow_author_fans_count.tex", overwrite = TRUE)

(5) log_unfollow_author_fans_count

model5 <- feols(log_unfollow_author_fans_count ~ factor(fan_size_pair)*is_same_category, data = df,vcov = ~ author_id)
model5_with_ctrls <- feols(log_unfollow_author_fans_count ~ factor(fan_size_pair)*is_same_category + factor(gender) + factor(age_range) + 
                             factor(fre_country_region) + factor(fre_city_level) + factor(year) + factor(month) + factor(day),
                           data = df, vcov = ~ author_id)
summary(model5)
## OLS estimation, Dep. Var.: log_unfollow_author_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         0.082245   0.000905
## factor(fan_size_pair)Small vs Big                   0.139755   0.006197
## factor(fan_size_pair)Big vs Small                   0.412286   0.010057
## factor(fan_size_pair)Big vs Big                     0.764016   0.013280
## is_same_category                                   -0.003801   0.001509
## factor(fan_size_pair)Small vs Big:is_same_category  0.012288   0.009834
## factor(fan_size_pair)Big vs Small:is_same_category -0.105027   0.013919
## factor(fan_size_pair)Big vs Big:is_same_category   -0.016427   0.018948
##                                                      t value   Pr(>|t|)    
## (Intercept)                                        90.910686  < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big                  22.552793  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small                  40.993612  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big                    57.529231  < 2.2e-16 ***
## is_same_category                                   -2.518605 1.1783e-02 *  
## factor(fan_size_pair)Small vs Big:is_same_category  1.249499 2.1148e-01    
## factor(fan_size_pair)Big vs Small:is_same_category -7.545477 4.5304e-14 ***
## factor(fan_size_pair)Big vs Big:is_same_category   -0.866983 3.8595e-01    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.456834   Adj. R2: 0.18857
summary(model5_with_ctrls)
## OLS estimation, Dep. Var.: log_unfollow_author_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         0.113570   0.036398
## factor(fan_size_pair)Small vs Big                   0.126872   0.006229
## factor(fan_size_pair)Big vs Small                   0.395473   0.009973
## factor(fan_size_pair)Big vs Big                     0.741054   0.013169
## is_same_category                                   -0.003375   0.001540
## factor(gender)M                                    -0.006167   0.002322
## factor(gender)U                                    -0.069267   0.039504
## factor(age_range)12-17                              0.007559   0.005878
## factor(age_range)18-23                              0.028083   0.006147
## factor(age_range)24-30                              0.033806   0.007081
## factor(age_range)31-40                              0.056141   0.006280
## factor(age_range)41-49                              0.051079   0.006279
## factor(age_range)50+                                0.041575   0.006119
## factor(age_range)UNKNOWN                           -0.068164   0.010458
## factor(fre_country_region)北方                     -0.142969   0.037697
## factor(fre_country_region)南方                     -0.180425   0.037669
## factor(fre_city_level)二线城市                      0.069583   0.013344
## factor(fre_city_level)三线城市                      0.055028   0.013093
## factor(fre_city_level)四线城市                      0.039470   0.012935
## factor(fre_city_level)五线城市                      0.030406   0.012826
## factor(fre_city_level)新一线城市                    0.068683   0.013616
## factor(fre_city_level)一线城市                      0.093400   0.015762
## factor(year)2023                                    0.048751   0.002751
## factor(year)2024                                    0.055589   0.002859
## factor(month)2                                     -0.001057   0.004176
## factor(month)3                                      0.007807   0.004423
## factor(month)4                                     -0.004452   0.004315
## factor(month)5                                      0.000381   0.004646
## factor(month)6                                     -0.009768   0.005057
## factor(month)7                                     -0.018159   0.004609
## factor(month)8                                     -0.005064   0.004794
## factor(month)9                                      0.008701   0.005681
## factor(month)10                                     0.011611   0.005692
## factor(month)11                                     0.048506   0.006138
## factor(month)12                                     0.044102   0.006189
## factor(day)2                                       -0.006180   0.007375
## factor(day)3                                        0.008133   0.007728
## factor(day)4                                        0.006932   0.007658
## factor(day)5                                        0.009097   0.007670
## factor(day)6                                        0.011359   0.007840
## factor(day)7                                       -0.003379   0.007648
## factor(day)8                                        0.006232   0.007812
## factor(day)9                                       -0.001603   0.007599
## factor(day)10                                      -0.006468   0.007570
## factor(day)11                                       0.015977   0.007856
## factor(day)12                                       0.001907   0.007603
## factor(day)13                                      -0.003528   0.007627
## factor(day)14                                      -0.004768   0.007746
## factor(day)15                                       0.000330   0.008047
## factor(day)16                                       0.004492   0.007804
## factor(day)17                                       0.013181   0.007947
## factor(day)18                                       0.003163   0.007805
## factor(day)19                                       0.016035   0.008179
## factor(day)20                                       0.004960   0.007945
## factor(day)21                                       0.005608   0.008184
## factor(day)22                                      -0.001594   0.007692
## factor(day)23                                       0.003775   0.007789
## factor(day)24                                      -0.002671   0.007877
## factor(day)25                                       0.027654   0.008397
## factor(day)26                                       0.009099   0.007970
## factor(day)27                                       0.005452   0.007927
## factor(day)28                                       0.005964   0.007884
## factor(day)29                                       0.002358   0.007987
## factor(day)30                                       0.000384   0.008096
## factor(day)31                                       0.002632   0.009187
## factor(fan_size_pair)Small vs Big:is_same_category  0.009407   0.009804
## factor(fan_size_pair)Big vs Small:is_same_category -0.107318   0.013868
## factor(fan_size_pair)Big vs Big:is_same_category   -0.018824   0.018847
##                                                      t value   Pr(>|t|)    
## (Intercept)                                         3.120225 1.8075e-03 ** 
## factor(fan_size_pair)Small vs Big                  20.368295  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small                  39.654562  < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big                    56.271828  < 2.2e-16 ***
## is_same_category                                   -2.190866 2.8463e-02 *  
## factor(gender)M                                    -2.656105 7.9057e-03 ** 
## factor(gender)U                                    -1.753429 7.9530e-02 .  
## factor(age_range)12-17                              1.285981 1.9845e-01    
## factor(age_range)18-23                              4.568553 4.9147e-06 ***
## factor(age_range)24-30                              4.773854 1.8090e-06 ***
## factor(age_range)31-40                              8.939856  < 2.2e-16 ***
## factor(age_range)41-49                              8.134651 4.1610e-16 ***
## factor(age_range)50+                                6.793925 1.0951e-11 ***
## factor(age_range)UNKNOWN                           -6.517968 7.1480e-11 ***
## factor(fre_country_region)北方                     -3.792546 1.4917e-04 ***
## factor(fre_country_region)南方                     -4.789804 1.6710e-06 ***
## factor(fre_city_level)二线城市                      5.214365 1.8468e-07 ***
## factor(fre_city_level)三线城市                      4.202688 2.6391e-05 ***
## factor(fre_city_level)四线城市                      3.051352 2.2785e-03 ** 
## factor(fre_city_level)五线城市                      2.370746 1.7753e-02 *  
## factor(fre_city_level)新一线城市                    5.044441 4.5535e-07 ***
## factor(fre_city_level)一线城市                      5.925505 3.1198e-09 ***
## factor(year)2023                                   17.718184  < 2.2e-16 ***
## factor(year)2024                                   19.442674  < 2.2e-16 ***
## factor(month)2                                     -0.253053 8.0023e-01    
## factor(month)3                                      1.765111 7.7547e-02 .  
## factor(month)4                                     -1.031857 3.0214e-01    
## factor(month)5                                      0.081993 9.3465e-01    
## factor(month)6                                     -1.931499 5.3423e-02 .  
## factor(month)7                                     -3.939876 8.1559e-05 ***
## factor(month)8                                     -1.056458 2.9076e-01    
## factor(month)9                                      1.531650 1.2561e-01    
## factor(month)10                                     2.039997 4.1352e-02 *  
## factor(month)11                                     7.902870 2.7430e-15 ***
## factor(month)12                                     7.125831 1.0390e-12 ***
## factor(day)2                                       -0.838075 4.0199e-01    
## factor(day)3                                        1.052411 2.9261e-01    
## factor(day)4                                        0.905246 3.6534e-01    
## factor(day)5                                        1.185945 2.3565e-01    
## factor(day)6                                        1.448903 1.4737e-01    
## factor(day)7                                       -0.441895 6.5857e-01    
## factor(day)8                                        0.797811 4.2498e-01    
## factor(day)9                                       -0.210880 8.3298e-01    
## factor(day)10                                      -0.854426 3.9287e-01    
## factor(day)11                                       2.033804 4.1973e-02 *  
## factor(day)12                                       0.250770 8.0199e-01    
## factor(day)13                                      -0.462626 6.4363e-01    
## factor(day)14                                      -0.615510 5.3822e-01    
## factor(day)15                                       0.041069 9.6724e-01    
## factor(day)16                                       0.575620 5.6487e-01    
## factor(day)17                                       1.658672 9.7184e-02 .  
## factor(day)18                                       0.405261 6.8529e-01    
## factor(day)19                                       1.960665 4.9920e-02 *  
## factor(day)20                                       0.624267 5.3245e-01    
## factor(day)21                                       0.685200 4.9322e-01    
## factor(day)22                                      -0.207230 8.3583e-01    
## factor(day)23                                       0.484643 6.2793e-01    
## factor(day)24                                      -0.339070 7.3456e-01    
## factor(day)25                                       3.293416 9.9000e-04 ***
## factor(day)26                                       1.141607 2.5362e-01    
## factor(day)27                                       0.687858 4.9154e-01    
## factor(day)28                                       0.756556 4.4932e-01    
## factor(day)29                                       0.295275 7.6778e-01    
## factor(day)30                                       0.047458 9.6215e-01    
## factor(day)31                                       0.286482 7.7451e-01    
## factor(fan_size_pair)Small vs Big:is_same_category  0.959485 3.3732e-01    
## factor(fan_size_pair)Big vs Small:is_same_category -7.738679 1.0105e-14 ***
## factor(fan_size_pair)Big vs Big:is_same_category   -0.998756 3.1791e-01    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.454983   Adj. R2: 0.194875
savesave(plot_predictions_with_ci(model5, df, "log_unfollow_author_fans_count"), "log_unfollow_author_fans_count")

# 
model <- feols(log_unfollow_author_fans_count ~ factor(fan_size_pair), data = df, vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_unfollow_author_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                   Estimate Std. Error  t value  Pr(>|t|)    
## (Intercept)                       0.080966   0.000731 110.8084 < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big 0.144253   0.004997  28.8657 < 2.2e-16 ***
## factor(fan_size_pair)Big vs Small 0.372443   0.008061  46.2054 < 2.2e-16 ***
## factor(fan_size_pair)Big vs Big   0.756807   0.011282  67.0790 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.457021   Adj. R2: 0.187921
savesave(plot_predictions_fans(model, df, "log_unfollow_author_fans_count"), "log_unfollow_author_fans_count_fan_size_pair")

# 
model <- feols(log_unfollow_author_fans_count ~ is_same_category, data = df,vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_unfollow_author_fans_count
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                  Estimate Std. Error   t value   Pr(>|t|)    
## (Intercept)      0.169352   0.001498 113.04422  < 2.2e-16 ***
## is_same_category 0.012966   0.002562   5.06069 4.1822e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.507117   Adj. R2: 1.43e-4
savesave(plot_predictions_cate(model, df, "log_unfollow_author_fans_count"), "log_unfollow_author_fans_count_is_same_category")

# plot_coefficients(data, "log_unfollow_author_fans_count")
savesave(plot_coefficients(df, "log_unfollow_author_fans_count"), "log_unfollow_author_fans_count_evolution")

# Call the functions with your data and formula
heatmap_plot <- plot_heatmap(
  data = df,
  y_var = log_unfollow_author_fans_count,  # Column name as a symbol
  crs = crs,
  limits = c(0,4)
)
## `summarise()` has grouped output by 'fans_new_range'. You can override using
## the `.groups` argument.
savesave(heatmap_plot, "log_unfollow_author_fans_count_heatmap")

# Display the plot
print(heatmap_plot)

# 存储OLS 结果到latex
modelsummary(list("Followers Lost (log)" = model5, "Followers Lost (log)" = model5_with_ctrls), 
             stars =  c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
             coef_omit = 'gender|age_range|fre_country_region|fre_city_level|year|month|day',  # Omit the specified variables
             add_rows = data.frame("Control" = "Control:", "Model 1" = "No", "Model 2" = "Yes"),  # Add custom row for control variables
             # coef_map = crs, 
             title = "The Impact on Followers Lost (log)",
             output = "latex") |>
theme_tt("resize") |>
save_tt("../2.Output/ols_unfollow_author_fans_count.tex", overwrite = TRUE)

(6) log_net_follow_fans

model6 <- feols(log_net_follow_fans ~ factor(fan_size_pair)*is_same_category, data = df,vcov = ~ author_id)
model6_with_ctrls <- feols(log_net_follow_fans ~ factor(fan_size_pair)*is_same_category + factor(gender) + factor(age_range) + 
                             factor(fre_country_region) + factor(fre_city_level) + factor(year) + factor(month) + factor(day),
                           data = df, vcov = ~ author_id)
summary(model6)
## OLS estimation, Dep. Var.: log_net_follow_fans
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         6.427059   0.000025
## factor(fan_size_pair)Small vs Big                   0.001704   0.000344
## factor(fan_size_pair)Big vs Small                   0.002958   0.000374
## factor(fan_size_pair)Big vs Big                     0.003373   0.000886
## is_same_category                                   -0.000128   0.000036
## factor(fan_size_pair)Small vs Big:is_same_category  0.000134   0.000451
## factor(fan_size_pair)Big vs Small:is_same_category -0.001601   0.000443
## factor(fan_size_pair)Big vs Big:is_same_category    0.001992   0.001266
##                                                          t value   Pr(>|t|)    
## (Intercept)                                        260660.968018  < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big                       4.957315 7.1548e-07 ***
## factor(fan_size_pair)Big vs Small                       7.901519 2.7729e-15 ***
## factor(fan_size_pair)Big vs Big                         3.806110 1.4122e-04 ***
## is_same_category                                       -3.539554 4.0092e-04 ***
## factor(fan_size_pair)Small vs Big:is_same_category      0.296478 7.6687e-01    
## factor(fan_size_pair)Big vs Small:is_same_category     -3.613976 3.0163e-04 ***
## factor(fan_size_pair)Big vs Big:is_same_category        1.573231 1.1567e-01    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.025394   Adj. R2: 0.002646
summary(model6_with_ctrls)
## OLS estimation, Dep. Var.: log_net_follow_fans
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                                     Estimate Std. Error
## (Intercept)                                         6.430924   0.003565
## factor(fan_size_pair)Small vs Big                   0.001488   0.000354
## factor(fan_size_pair)Big vs Small                   0.002701   0.000375
## factor(fan_size_pair)Big vs Big                     0.002999   0.000894
## is_same_category                                   -0.000134   0.000039
## factor(gender)M                                    -0.000057   0.000155
## factor(gender)U                                    -0.004254   0.003633
## factor(age_range)12-17                             -0.000092   0.000114
## factor(age_range)18-23                              0.000175   0.000136
## factor(age_range)24-30                              0.000411   0.000206
## factor(age_range)31-40                              0.000443   0.000140
## factor(age_range)41-49                              0.000190   0.000168
## factor(age_range)50+                               -0.000126   0.000155
## factor(age_range)UNKNOWN                           -0.000313   0.000464
## factor(fre_country_region)北方                     -0.004368   0.003592
## factor(fre_country_region)南方                     -0.004928   0.003586
## factor(fre_city_level)二线城市                      0.000154   0.000349
## factor(fre_city_level)三线城市                      0.000525   0.000233
## factor(fre_city_level)四线城市                      0.000169   0.000216
## factor(fre_city_level)五线城市                      0.000074   0.000214
## factor(fre_city_level)新一线城市                    0.000826   0.000285
## factor(fre_city_level)一线城市                      0.001006   0.000375
## factor(year)2023                                    0.000613   0.000111
## factor(year)2024                                    0.000630   0.000125
## factor(month)2                                     -0.000367   0.000267
## factor(month)3                                     -0.000151   0.000189
## factor(month)4                                     -0.000250   0.000174
## factor(month)5                                     -0.000251   0.000211
## factor(month)6                                     -0.000079   0.000226
## factor(month)7                                     -0.000231   0.000210
## factor(month)8                                      0.000022   0.000226
## factor(month)9                                     -0.000040   0.000219
## factor(month)10                                    -0.000211   0.000213
## factor(month)11                                    -0.000110   0.000236
## factor(month)12                                    -0.000575   0.000660
## factor(day)2                                       -0.000064   0.000222
## factor(day)3                                        0.000217   0.000291
## factor(day)4                                       -0.000231   0.000212
## factor(day)5                                        0.000601   0.000334
## factor(day)6                                        0.000211   0.000393
## factor(day)7                                       -0.000269   0.000215
## factor(day)8                                        0.000203   0.000304
## factor(day)9                                       -0.000238   0.000223
## factor(day)10                                      -0.000099   0.000234
## factor(day)11                                       0.000047   0.000257
## factor(day)12                                       0.000084   0.000294
## factor(day)13                                      -0.000176   0.000212
## factor(day)14                                      -0.000066   0.000226
## factor(day)15                                       0.000535   0.000397
## factor(day)16                                      -0.000071   0.000227
## factor(day)17                                       0.000144   0.000262
## factor(day)18                                      -0.000066   0.000229
## factor(day)19                                       0.000310   0.000288
## factor(day)20                                       0.000113   0.000352
## factor(day)21                                      -0.001490   0.001289
## factor(day)22                                      -0.000054   0.000211
## factor(day)23                                       0.000272   0.000362
## factor(day)24                                       0.000028   0.000256
## factor(day)25                                       0.000577   0.000387
## factor(day)26                                       0.000578   0.000325
## factor(day)27                                       0.000301   0.000317
## factor(day)28                                       0.000303   0.000355
## factor(day)29                                      -0.000234   0.000281
## factor(day)30                                       0.000180   0.000266
## factor(day)31                                       0.000816   0.000545
## factor(fan_size_pair)Small vs Big:is_same_category  0.000112   0.000448
## factor(fan_size_pair)Big vs Small:is_same_category -0.001645   0.000443
## factor(fan_size_pair)Big vs Big:is_same_category    0.001996   0.001266
##                                                        t value   Pr(>|t|)    
## (Intercept)                                        1803.859709  < 2.2e-16 ***
## factor(fan_size_pair)Small vs Big                     4.204264 2.6208e-05 ***
## factor(fan_size_pair)Big vs Small                     7.210300 5.6078e-13 ***
## factor(fan_size_pair)Big vs Big                       3.353884 7.9705e-04 ***
## is_same_category                                     -3.452381 5.5581e-04 ***
## factor(gender)M                                      -0.364325 7.1562e-01    
## factor(gender)U                                      -1.170808 2.4168e-01    
## factor(age_range)12-17                               -0.807078 4.1962e-01    
## factor(age_range)18-23                                1.287294 1.9799e-01    
## factor(age_range)24-30                                1.994299 4.6121e-02 *  
## factor(age_range)31-40                                3.161707 1.5688e-03 ** 
## factor(age_range)41-49                                1.129966 2.5849e-01    
## factor(age_range)50+                                 -0.810499 4.1765e-01    
## factor(age_range)UNKNOWN                             -0.673966 5.0033e-01    
## factor(fre_country_region)北方                       -1.215910 2.2402e-01    
## factor(fre_country_region)南方                       -1.374081 1.6942e-01    
## factor(fre_city_level)二线城市                        0.441851 6.5860e-01    
## factor(fre_city_level)三线城市                        2.251692 2.4343e-02 *  
## factor(fre_city_level)四线城市                        0.783708 4.3321e-01    
## factor(fre_city_level)五线城市                        0.347212 7.2843e-01    
## factor(fre_city_level)新一线城市                      2.897994 3.7561e-03 ** 
## factor(fre_city_level)一线城市                        2.686207 7.2276e-03 ** 
## factor(year)2023                                      5.516986 3.4540e-08 ***
## factor(year)2024                                      5.060655 4.1829e-07 ***
## factor(month)2                                       -1.373688 1.6954e-01    
## factor(month)3                                       -0.799690 4.2389e-01    
## factor(month)4                                       -1.438450 1.5031e-01    
## factor(month)5                                       -1.190412 2.3389e-01    
## factor(month)6                                       -0.350286 7.2612e-01    
## factor(month)7                                       -1.101107 2.7085e-01    
## factor(month)8                                        0.096310 9.2327e-01    
## factor(month)9                                       -0.183758 8.5420e-01    
## factor(month)10                                      -0.989451 3.2244e-01    
## factor(month)11                                      -0.465102 6.4186e-01    
## factor(month)12                                      -0.871715 3.8337e-01    
## factor(day)2                                         -0.286402 7.7457e-01    
## factor(day)3                                          0.745730 4.5583e-01    
## factor(day)4                                         -1.092169 2.7476e-01    
## factor(day)5                                          1.800471 7.1788e-02 .  
## factor(day)6                                          0.537179 5.9114e-01    
## factor(day)7                                         -1.251600 2.1072e-01    
## factor(day)8                                          0.666425 5.0514e-01    
## factor(day)9                                         -1.066248 2.8631e-01    
## factor(day)10                                        -0.423957 6.7160e-01    
## factor(day)11                                         0.180934 8.5642e-01    
## factor(day)12                                         0.284929 7.7570e-01    
## factor(day)13                                        -0.829223 4.0698e-01    
## factor(day)14                                        -0.292544 7.6987e-01    
## factor(day)15                                         1.346695 1.7808e-01    
## factor(day)16                                        -0.311335 7.5555e-01    
## factor(day)17                                         0.548857 5.8310e-01    
## factor(day)18                                        -0.287049 7.7408e-01    
## factor(day)19                                         1.075782 2.8203e-01    
## factor(day)20                                         0.320973 7.4823e-01    
## factor(day)21                                        -1.155953 2.4770e-01    
## factor(day)22                                        -0.256276 7.9774e-01    
## factor(day)23                                         0.752572 4.5171e-01    
## factor(day)24                                         0.109042 9.1317e-01    
## factor(day)25                                         1.490685 1.3605e-01    
## factor(day)26                                         1.779456 7.5167e-02 .  
## factor(day)27                                         0.951417 3.4139e-01    
## factor(day)28                                         0.854526 3.9282e-01    
## factor(day)29                                        -0.831068 4.0594e-01    
## factor(day)30                                         0.676984 4.9842e-01    
## factor(day)31                                         1.496503 1.3452e-01    
## factor(fan_size_pair)Small vs Big:is_same_category    0.249264 8.0316e-01    
## factor(fan_size_pair)Big vs Small:is_same_category   -3.713456 2.0452e-04 ***
## factor(fan_size_pair)Big vs Big:is_same_category      1.577017 1.1479e-01    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.025385   Adj. R2: 0.003003
savesave(plot_predictions_with_ci(model6, df, "log_net_follow_fans"), "log_net_follow_fans")

# 
model <- feols(log_net_follow_fans ~ factor(fan_size_pair), data = df, vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_net_follow_fans
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                                   Estimate Std. Error      t value   Pr(>|t|)
## (Intercept)                       6.427016   0.000019 344554.58703  < 2.2e-16
## factor(fan_size_pair)Small vs Big 0.001749   0.000241      7.24468 4.3544e-13
## factor(fan_size_pair)Big vs Small 0.002348   0.000254      9.24193  < 2.2e-16
## factor(fan_size_pair)Big vs Big   0.004198   0.000642      6.54471 5.9794e-11
##                                      
## (Intercept)                       ***
## factor(fan_size_pair)Small vs Big ***
## factor(fan_size_pair)Big vs Small ***
## factor(fan_size_pair)Big vs Big   ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.025396   Adj. R2: 0.002491
savesave(plot_predictions_fans(model, df, "log_net_follow_fans"), "log_net_follow_fans_fan_size_pair")

#
model <- feols(log_net_follow_fans ~ is_same_category, data = df,vcov = ~author_id)
summary(model)
## OLS estimation, Dep. Var.: log_net_follow_fans
## Observations: 187,126
## Standard-errors: Clustered (author_id) 
##                  Estimate Std. Error      t value  Pr(>|t|)    
## (Intercept)      6.427566   0.000074 86407.955603 < 2.2e-16 ***
## is_same_category 0.000105   0.000122     0.861757   0.38882    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 0.025428   Adj. R2: -1.485e-6
savesave(plot_predictions_cate(model, df, "log_net_follow_fans"), "log_net_follow_fans_is_same_category")

# plot_coefficients(data, "log_net_follow_fans")
savesave(plot_coefficients(df, "log_net_follow_fans"), "log_net_follow_fans_evolution")

summary(df$log_net_follow_fans)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   6.426   6.426   6.428   6.426   8.005
# Call the functions with your data and formula
heatmap_plot <- plot_heatmap(
  data = df,
  y_var = log_net_follow_fans,  # Column name as a symbol
  crs = crs,
  limits = c(6,8)
)
## `summarise()` has grouped output by 'fans_new_range'. You can override using
## the `.groups` argument.
savesave(heatmap_plot, "log_net_follow_fans_heatmap")

# Display the plot
print(heatmap_plot)

# 存储OLS 结果到latex
modelsummary(list("Net Follower Gain (log)" = model6, "Net Follower Gain (log)" = model6_with_ctrls), 
             stars =  c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
             coef_omit = 'gender|age_range|fre_country_region|fre_city_level|year|month|day',  # Omit the specified variables
             add_rows = data.frame("Control" = "Control:", "Model 1" = "No", "Model 2" = "Yes"),  # Add custom row for control variables
             # coef_map = crs, 
             title = "The Impact on Net Follower Gain (log)",
             output = "latex") |>
theme_tt("resize") |>
save_tt("../2.Output/ols_net_follow_fans.tex", overwrite = TRUE)
modelsummary(
  list(
    "New Followers Gained (log)" = model4, 
    "New Followers Gained (log)" = model4_with_ctrls,
    "Followers Lost (log)" = model5, 
    "Followers Lost (log)" = model5_with_ctrls,
    "Net Follower Gain (log)" = model6, 
    "Net Follower Gain (log)" = model6_with_ctrls
  ), 
  coef_omit = 'gender|age_range|fre_country_region|fre_city_level|year|month|day',  # Omit specified variables
  add_rows = data.frame(
    "Control" = "Control:", 
    "Model 1" = "No", 
    "Model 2" = "Yes", 
    "Model 3" = "No", 
    "Model 4" = "Yes", 
    "Model 5" = "No", 
    "Model 6" = "Yes"
  ),  # Add custom row for control variables
  stars = c('+' = .1, '*' = .05, '**' = .01, '***' = .001),
  title = "The Impact on Follower Change (log)",
  output = "latex"
) |>
  theme_tt("resize") |>
  save_tt("../2.Output/ols_fans_change.tex", overwrite = TRUE)