1.读取处理数据
df = read.csv("../1.Input/pk_4_stage_level_data_clean_full.csv")
colnames(df)
## [1] "pk_id" "exp_name" "is_baoji"
## [4] "p_date" "p_hour" "p_minute"
## [7] "pk_anthor_cnt" "pk_formation" "before_bj_gifts"
## [10] "during_bj_gifts" "after_bj_gifts" "during_tower_gifts"
## [13] "total_gifts" "before_bj_gift_cnt" "before_bj_gifters"
## [16] "during_bj_gift_cnt" "during_bj_gifters" "after_bj_gift_cnt"
## [19] "after_bj_gifters" "during_tower_gift_cnt" "during_tower_gifters"
## [22] "after_exp_gift_cnt" "after_exp_gifters" "total_gift_cnt"
## [25] "total_gifters" "after_exp_gifts" "total_gifts_sd"
## [28] "before_bj_gifts_sd" "during_bj_gifts_sd" "after_bj_gifts_sd"
## [31] "during_tower_gifts_sd" "after_exp_gifts_sd"
library(dplyr)
df <- df %>%
mutate(
# gifts
log_total_gifts = log(total_gifts + 1),
log_before_bj_gifts = log(before_bj_gifts + 1),
log_during_bj_gifts = log(during_bj_gifts + 1),
log_after_bj_gifts = log(after_bj_gifts + 1),
log_during_tower_gifts = log(during_tower_gifts + 1),
after_exp_gifts = during_bj_gifts + after_bj_gifts + during_tower_gifts,
log_after_exp_gifts = log(after_exp_gifts + 1),
# gifters
log_before_bj_gift_cnt=log(before_bj_gift_cnt+1),
log_before_bj_gifters= log(before_bj_gifters+1),
log_total_gift_cnt = log(total_gift_cnt + 1),
log_total_gifters = log(total_gifters + 1),
log_after_exp_gift_cnt = log(after_exp_gift_cnt + 1),
log_after_exp_gifters = log(after_exp_gifters + 1),
# 人均打赏次数
before_bj_gift_times = before_bj_gift_cnt / (before_bj_gifters + 1),
log_before_bj_gift_times = log(before_bj_gift_times + 1),
total_gift_times = total_gift_cnt / (total_gifters + 1),
log_total_gift_times = log(total_gift_times + 1),
after_exp_total_gift_times = after_exp_gift_cnt / (after_exp_gifters + 1),
log_after_exp_total_gift_times = log(after_exp_total_gift_times + 1),
# 人均打赏金额
avg_before_bj_gifts = before_bj_gifts / (before_bj_gifters + 1),
log_avg_before_bj_gifts = log(avg_before_bj_gifts + 1),
avg_total_gifts = total_gifts / (total_gifters + 1),
log_avg_total_gifts = log(avg_total_gifts + 1),
avg_after_exp_gifts = after_exp_gifts / (after_exp_gifters + 1),
log_avg_after_exp_gifts = log(avg_after_exp_gifts + 1)
)
2.查看数据分布/summary
table(df$p_date)
##
## 20220620 20220621 20220622 20220623 20220624 20220625 20220626 20220627
## 14406 14761 15332 14919 15391 14664 15149 15971
## 20220628
## 16368
table(df$p_hour)
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12
## 11052 5764 2849 1545 858 593 724 1114 1732 3240 4041 3730 3464
## 13 14 15 16 17 18 19 20 21 22 23
## 3806 4164 4859 4795 3703 2836 3463 8632 18646 23765 17586
table(df$p_minute)
##
## 1)0-14 2)15-29 3)30-44 4)45-59
## 34524 34695 34963 32779
table(df$exp_name)
##
## 无暴击 有暴击
## 69088 67873
summary(df$gifter_num)
## Length Class Mode
## 0 NULL NULL
summary(df$unique_gifter_num)
## Length Class Mode
## 0 NULL NULL
3.ATE
(1) Gifts
library(fixest)
# 定义非 log 变量和 log 变量
variables_gifts <- c(
"total_gifts",
"before_bj_gifts",
"during_bj_gifts",
"after_bj_gifts",
"during_tower_gifts",
"after_exp_gifts"
)
variables_gifts_log <- c(
"log_total_gifts",
"log_before_bj_gifts",
"log_during_bj_gifts",
"log_after_bj_gifts",
"log_during_tower_gifts",
"log_after_exp_gifts"
)
# 初始化列表存储模型
models_gifts <- list()
models_gifts_log <- list()
# 对非 log 变量进行回归
for (var in variables_gifts) {
formula <- as.formula(paste(var, "~ exp_name | p_date + p_hour + p_minute"))
models_gifts[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 对 log 变量进行回归
for (var in variables_gifts_log) {
formula <- as.formula(paste(var, "~ exp_name | p_date + p_hour + p_minute"))
models_gifts_log[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 输出非 log 变量回归结果
cat("\n--- Results for Non-log Variables ---\n")
##
## --- Results for Non-log Variables ---
etable(models_gifts)
## total_gifts before_bj_gifts during_bj_gifts
## Dependent Var.: total_gifts before_bj_gifts during_bj_gifts
##
## exp_name有暴击 16.45. (9.430) 0.2498 (0.6873) 83.87*** (3.237)
## Fixed-Effects: -------------- --------------- ----------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ ______________ _______________ ________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00124 0.00123 0.00654
## Within R2 2.31e-5 8.69e-7 0.00490
##
## after_bj_gifts during_tower_gifts after_exp_gifts
## Dependent Var.: after_bj_gifts during_tower_gifts after_exp_gifts
##
## exp_name有暴击 -39.12*** (4.292) -28.55*** (4.364) 16.20. (9.243)
## Fixed-Effects: ----------------- ------------------ ---------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ _________________ __________________ _______________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00192 0.00112 0.00123
## Within R2 0.00064 0.00033 2.34e-5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 输出 log 变量回归结果
cat("\n--- Results for Log Variables ---\n")
##
## --- Results for Log Variables ---
etable(models_gifts_log)
## log_total_gifts log_before_bj_gifts log_during_bj_gifts
## Dependent Var.: log_total_gifts log_before_bj_gifts log_during_bj_gifts
##
## exp_name有暴击 0.0646*** (0.0110) -0.0085 (0.0070) 1.137*** (0.0106)
## Fixed-Effects: ------------------ ------------------- -------------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ __________________ ___________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00593 0.00904 0.09964
## Within R2 0.00025 1.06e-5 0.07850
##
## log_after_bj_gifts log_during_tower_gifts log_after_exp_gifts
## Dependent Var.: log_after_bj_gifts log_during_tower_gifts log_after_exp_gifts
##
## exp_name有暴击 -0.3717*** (0.0109) -0.3161*** (0.0125) 0.0721*** (0.0112)
## Fixed-Effects: ------------------- ---------------------- -------------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ ___________________ ______________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.01689 0.00967 0.00596
## Within R2 0.00839 0.00463 0.00030
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(2) Gifters
library(fixest)
# 定义非 log 变量和 log 变量
variables_gifters <- c(
"before_bj_gift_cnt",
"before_bj_gifters",
"total_gift_cnt",
"total_gifters",
"after_exp_gift_cnt",
"after_exp_gifters"
)
variables_gifters_log <- c(
"log_before_bj_gift_cnt",
"log_before_bj_gifters",
"log_total_gift_cnt",
"log_total_gifters",
"log_after_exp_gift_cnt",
"log_after_exp_gifters"
)
# 初始化列表存储模型
models_gifters <- list()
models_gifters_log <- list()
# 对非 log 变量进行回归
for (var in variables_gifters) {
formula <- as.formula(paste(var, "~ exp_name | p_date + p_hour + p_minute"))
models_gifters[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 对 log 变量进行回归
for (var in variables_gifters_log) {
formula <- as.formula(paste(var, "~ exp_name | p_date + p_hour + p_minute"))
models_gifters_log[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 输出非 log 变量回归结果
cat("\n--- Results for Non-log Gifters Variables ---\n")
##
## --- Results for Non-log Gifters Variables ---
etable(models_gifters)
## before_bj_gift_cnt before_bj_gifters total_gift_cnt
## Dependent Var.: before_bj_gift_cnt before_bj_gifters total_gift_cnt
##
## exp_name有暴击 0.0585 (0.1244) 0.0202 (0.0482) -0.9640 (0.8735)
## Fixed-Effects: ------------------ ----------------- ----------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ __________________ _________________ ________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00225 0.00221 0.00238
## Within R2 1.63e-6 1.28e-6 8.98e-6
##
## total_gifters after_exp_gift_cnt after_exp_gifters
## Dependent Var.: total_gifters after_exp_gift_cnt after_exp_gifters
##
## exp_name有暴击 0.1606 (0.2502) -1.023 (0.7654) 0.1851 (0.2235)
## Fixed-Effects: --------------- ------------------ -----------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ _______________ __________________ _________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00226 0.00237 0.00231
## Within R2 2.99e-6 1.32e-5 4.98e-6
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 输出 log 变量回归结果
cat("\n--- Results for Log Gifters Variables ---\n")
##
## --- Results for Log Gifters Variables ---
etable(models_gifters_log)
## log_before_bj_gift_cnt log_before_bj_gifters log_total_gift_cnt
## Dependent Var.: log_before_bj_gift_cnt log_before_bj_gifters log_total_gift_cnt
##
## exp_name有暴击 -0.0028 (0.0054) -0.0032 (0.0038) -0.0045 (0.0069)
## Fixed-Effects: ---------------------- --------------------- ------------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ ______________________ _____________________ __________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00801 0.00766 0.01012
## Within R2 2.01e-6 5.31e-6 3.18e-6
##
## log_total_gifters log_after_exp_gift_cnt log_after_exp_gifters
## Dependent Var.: log_total_gifters log_after_exp_gift_cnt log_after_exp_gifters
##
## exp_name有暴击 0.0088. (0.0049) -0.0022 (0.0069) 0.0143** (0.0048)
## Fixed-Effects: ----------------- ---------------------- ---------------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ _________________ ______________________ _____________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00949 0.00981 0.00947
## Within R2 2.4e-5 7.09e-7 6.37e-5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(3) 人均打赏次数
library(fixest)
# 定义非 log 变量和 log 变量
variables_gift_times <- c(
"before_bj_gift_times",
"total_gift_times",
"after_exp_total_gift_times"
)
variables_gift_times_log <- c(
"log_before_bj_gift_times",
"log_total_gift_times",
"log_after_exp_total_gift_times"
)
# 初始化列表存储模型
models_gift_times <- list()
models_gift_times_log <- list()
# 对非 log 变量进行回归
for (var in variables_gift_times) {
formula <- as.formula(paste(var, "~ exp_name | p_date + p_hour + p_minute"))
models_gift_times[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 对 log 变量进行回归
for (var in variables_gift_times_log) {
formula <- as.formula(paste(var, "~ exp_name | p_date + p_hour + p_minute"))
models_gift_times_log[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 输出非 log 变量回归结果
cat("\n--- Results for Non-log Gift Times Variables ---\n")
##
## --- Results for Non-log Gift Times Variables ---
etable(models_gift_times)
## before_bj_gift_times total_gift_times
## Dependent Var.: before_bj_gift_times total_gift_times
##
## exp_name有暴击 -0.0026 (0.0073) -0.0790*** (0.0157)
## Fixed-Effects: -------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## _______________ ____________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.00424 0.00416
## Within R2 9.66e-7 0.00018
##
## after_exp_total_gift_times
## Dependent Var.: after_exp_total_gift_times
##
## exp_name有暴击 -0.0902*** (0.0152)
## Fixed-Effects: --------------------------
## p_date Yes
## p_hour Yes
## p_minute Yes
## _______________ __________________________
## S.E.: Clustered by: pk_id
## Observations 136,961
## R2 0.00400
## Within R2 0.00026
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 输出 log 变量回归结果
cat("\n--- Results for Log Gift Times Variables ---\n")
##
## --- Results for Log Gift Times Variables ---
etable(models_gift_times_log)
## log_before_bj_gift_times log_total_gift_times
## Dependent Var.: log_before_bj_gift_times log_total_gift_times
##
## exp_name有暴击 -0.0011 (0.0027) -0.0082** (0.0030)
## Fixed-Effects: ------------------------ --------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## _______________ ________________________ ____________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.00683 0.00696
## Within R2 1.13e-6 5.33e-5
##
## log_after_exp_total_gift_times
## Dependent Var.: log_after_exp_total_gift_times
##
## exp_name有暴击 -0.0095** (0.0030)
## Fixed-Effects: ------------------------------
## p_date Yes
## p_hour Yes
## p_minute Yes
## _______________ ______________________________
## S.E.: Clustered by: pk_id
## Observations 136,961
## R2 0.00670
## Within R2 7.13e-5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(4) 人均打赏金额
library(fixest)
# 定义非 log 变量和 log 变量
variables_avg_gifts <- c(
"avg_before_bj_gifts",
"avg_total_gifts",
"avg_after_exp_gifts"
)
variables_avg_gifts_log <- c(
"log_avg_before_bj_gifts",
"log_avg_total_gifts",
"log_avg_after_exp_gifts"
)
# 初始化列表存储模型
models_avg_gifts <- list()
models_avg_gifts_log <- list()
# 对非 log 变量进行回归
for (var in variables_avg_gifts) {
formula <- as.formula(paste(var, "~ exp_name | p_date + p_hour + p_minute"))
models_avg_gifts[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 对 log 变量进行回归
for (var in variables_avg_gifts_log) {
formula <- as.formula(paste(var, "~ exp_name | p_date + p_hour + p_minute"))
models_avg_gifts_log[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 输出非 log 变量回归结果
cat("\n--- Results for Non-log Average Gifts Variables ---\n")
##
## --- Results for Non-log Average Gifts Variables ---
etable(models_avg_gifts)
## avg_before_bj_gifts avg_total_gifts avg_after_exp_gifts
## Dependent Var.: avg_before_bj_gifts avg_total_gifts avg_after_exp_gifts
##
## exp_name有暴击 -0.3218* (0.1316) 1.154*** (0.3251) 1.324*** (0.3243)
## Fixed-Effects: ------------------- ----------------- -------------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ ___________________ _________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00140 0.00506 0.00521
## Within R2 3.68e-5 8.87e-5 0.00012
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 输出 log 变量回归结果
cat("\n--- Results for Log Average Gifts Variables ---\n")
##
## --- Results for Log Average Gifts Variables ---
etable(models_avg_gifts_log)
## log_avg_before_bj_gifts log_avg_total_gifts
## Dependent Var.: log_avg_before_bj_gifts log_avg_total_gifts
##
## exp_name有暴击 -0.0062 (0.0048) 0.0521*** (0.0074)
## Fixed-Effects: ----------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## _______________ _______________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.00823 0.01064
## Within R2 1.21e-5 0.00036
##
## log_avg_after_exp_gifts
## Dependent Var.: log_avg_after_exp_gifts
##
## exp_name有暴击 0.0545*** (0.0075)
## Fixed-Effects: -----------------------
## p_date Yes
## p_hour Yes
## p_minute Yes
## _______________ _______________________
## S.E.: Clustered by: pk_id
## Observations 136,961
## R2 0.01008
## Within R2 0.00038
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(5) 打赏标准差:inequalty
library(fixest)
# 定义标准差变量
variables_gifts_sd <- c(
"total_gifts_sd",
"before_bj_gifts_sd",
"during_bj_gifts_sd",
"after_bj_gifts_sd",
"during_tower_gifts_sd",
"after_exp_gifts_sd"
)
# 初始化列表存储模型
models_gifts_sd <- list()
# 对标准差变量进行回归
for (var in variables_gifts_sd) {
formula <- as.formula(paste(var, "~ exp_name | p_date + p_hour + p_minute"))
models_gifts_sd[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 输出回归结果
cat("\n--- Results for Standard Deviation of Gifts Variables ---\n")
##
## --- Results for Standard Deviation of Gifts Variables ---
etable(models_gifts_sd)
## total_gifts_sd before_bj_gifts_sd during_bj_gifts_sd
## Dependent Var.: total_gifts_sd before_bj_gifts_sd during_bj_gifts_sd
##
## exp_name有暴击 5.556* (2.711) -0.0073 (0.3179) 27.62*** (1.145)
## Fixed-Effects: -------------- ------------------ ------------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ ______________ __________________ __________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00123 0.00106 0.00579
## Within R2 3.19e-5 3.43e-9 0.00426
##
## after_bj_gifts_sd during_tower_gifts_sd after_exp_gifts_sd
## Dependent Var.: after_bj_gifts_sd during_tower_gifts_sd after_exp_gifts_sd
##
## exp_name有暴击 -8.511*** (1.462) -8.105*** (1.617) 5.438* (2.659)
## Fixed-Effects: ----------------- --------------------- ------------------
## p_date Yes Yes Yes
## p_hour Yes Yes Yes
## p_minute Yes Yes Yes
## _______________ _________________ _____________________ __________________
## S.E.: Clustered by: pk_id by: pk_id by: pk_id
## Observations 136,961 136,961 136,961
## R2 0.00143 0.00100 0.00124
## Within R2 0.00026 0.00019 3.18e-5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
4.HTE
(1) PK author数
library(fixest)
# 定义非 log 变量和 log 变量
variables_gifts <- c(
"total_gifts",
"before_bj_gifts",
"during_bj_gifts",
"after_bj_gifts",
"during_tower_gifts",
"after_exp_gifts"
)
variables_gifts_log <- c(
"log_total_gifts",
"log_before_bj_gifts",
"log_during_bj_gifts",
"log_after_bj_gifts",
"log_during_tower_gifts",
"log_after_exp_gifts"
)
# 初始化列表存储模型
models_gifts <- list()
models_gifts_log <- list()
# 对非 log 变量进行回归
for (var in variables_gifts) {
formula <- as.formula(paste(var, "~ exp_name*pk_anthor_cnt | p_date + p_hour + p_minute"))
models_gifts[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 对 log 变量进行回归
for (var in variables_gifts_log) {
formula <- as.formula(paste(var, "~ exp_name*pk_anthor_cnt | p_date + p_hour + p_minute"))
models_gifts_log[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 输出非 log 变量回归结果
cat("\n--- Results for Non-log Variables ---\n")
##
## --- Results for Non-log Variables ---
etable(models_gifts)
## total_gifts before_bj_gifts
## Dependent Var.: total_gifts before_bj_gifts
##
## exp_name有暴击 -14.98 (50.58) -0.8067 (3.701)
## pk_anthor_cnt 273.0*** (9.272) 8.389*** (0.7132)
## exp_name有暴击 x pk_anthor_cnt 8.526 (14.53) 0.2856 (1.077)
## Fixed-Effects: ---------------- -----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ___________________________ ________________ _________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.00488 0.00179
## Within R2 0.00367 0.00056
##
## during_bj_gifts after_bj_gifts
## Dependent Var.: during_bj_gifts after_bj_gifts
##
## exp_name有暴击 -175.3*** (19.51) 65.82** (23.32)
## pk_anthor_cnt 26.33*** (1.788) 120.7*** (5.247)
## exp_name有暴击 x pk_anthor_cnt 67.64*** (5.487) -27.22*** (6.660)
## Fixed-Effects: ----------------- -----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ___________________________ _________________ _________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.00838 0.00463
## Within R2 0.00675 0.00336
##
## during_tower_gifts after_exp_gifts
## Dependent Var.: during_tower_gifts after_exp_gifts
##
## exp_name有暴击 95.35*** (22.62) -14.18 (49.47)
## pk_anthor_cnt 117.5*** (4.381) 264.6*** (9.054)
## exp_name有暴击 x pk_anthor_cnt -32.17*** (6.553) 8.241 (14.22)
## Fixed-Effects: ------------------ ----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ___________________________ __________________ ________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.00345 0.00480
## Within R2 0.00266 0.00360
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 输出 log 变量回归结果
cat("\n--- Results for Log Variables ---\n")
##
## --- Results for Log Variables ---
etable(models_gifts_log)
## log_total_gifts log_before_bj_gifts
## Dependent Var.: log_total_gifts log_before_bj_gifts
##
## exp_name有暴击 0.0842 (0.1135) 0.0128 (0.0599)
## pk_anthor_cnt 1.595*** (0.0209) 0.3296*** (0.0113)
## exp_name有暴击 x pk_anthor_cnt -0.0032 (0.0294) -0.0052 (0.0158)
## Fixed-Effects: ----------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ___________________________ _________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.09026 0.01766
## Within R2 0.08506 0.00871
##
## log_during_bj_gifts log_after_bj_gifts
## Dependent Var.: log_during_bj_gifts log_after_bj_gifts
##
## exp_name有暴击 -1.104*** (0.0894) 0.2756** (0.1061)
## pk_anthor_cnt 0.6868*** (0.0146) 1.333*** (0.0199)
## exp_name有暴击 x pk_anthor_cnt 0.5854*** (0.0236) -0.1672*** (0.0276)
## Fixed-Effects: ------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ___________________________ ___________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.13406 0.06925
## Within R2 0.11373 0.06121
##
## log_during_tower_gifts log_after_exp_gifts
## Dependent Var.: log_during_tower_gifts log_after_exp_gifts
##
## exp_name有暴击 0.4257*** (0.1016) 0.0976 (0.1147)
## pk_anthor_cnt 1.430*** (0.0196) 1.625*** (0.0211)
## exp_name有暴击 x pk_anthor_cnt -0.1918*** (0.0270) -0.0047 (0.0297)
## Fixed-Effects: ---------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ___________________________ ______________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.05538 0.09075
## Within R2 0.05058 0.08558
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(2) gifters(before Baoji)
打赏金额
summary(df$before_bj_gifters)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 0.000 1.667 1.000 590.000
df <- df %>%
mutate(
before_bj_gifters_binary = as.numeric(case_when(
before_bj_gifters > 1.667 ~ 1,
TRUE ~ 0
))
)
library(fixest)
# 定义非 log 变量和 log 变量
variables_gifts <- c(
"total_gifts",
"before_bj_gifts",
"during_bj_gifts",
"after_bj_gifts",
"during_tower_gifts",
"after_exp_gifts"
)
variables_gifts_log <- c(
"log_total_gifts",
"log_before_bj_gifts",
"log_during_bj_gifts",
"log_after_bj_gifts",
"log_during_tower_gifts",
"log_after_exp_gifts"
)
# 初始化列表存储模型
models_gifts <- list()
models_gifts_log <- list()
# 对非 log 变量进行回归
for (var in variables_gifts) {
formula <- as.formula(paste(var, "~ exp_name*before_bj_gifters_binary | p_date + p_hour + p_minute"))
models_gifts[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 对 log 变量进行回归
for (var in variables_gifts_log) {
formula <- as.formula(paste(var, "~ exp_name*before_bj_gifters_binary | p_date + p_hour + p_minute"))
models_gifts_log[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 输出非 log 变量回归结果
cat("\n--- Results for Non-log Variables ---\n")
##
## --- Results for Non-log Variables ---
etable(models_gifts)
## total_gifts before_bj_gifts
## Dependent Var.: total_gifts before_bj_gifts
##
## exp_name有暴击 5.812* (2.842) -0.3882 (0.2995)
## before_bj_gifters_binary 773.0*** (26.58) 35.61*** (1.764)
## exp_name有暴击 x before_bj_gifters_binary 55.82 (37.92) 3.214 (2.930)
## Fixed-Effects: ---------------- ----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ______________________________________ ________________ ________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.04069 0.01511
## Within R2 0.03952 0.01390
##
## during_bj_gifts after_bj_gifts
## Dependent Var.: during_bj_gifts after_bj_gifts
##
## exp_name有暴击 37.09*** (0.8821) -20.39*** (1.536)
## before_bj_gifters_binary 84.35*** (4.771) 349.8*** (12.93)
## exp_name有暴击 x before_bj_gifters_binary 204.3*** (13.60) -77.02*** (16.94)
## Fixed-Effects: ----------------- -----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ______________________________________ _________________ _________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.02898 0.03173
## Within R2 0.02738 0.03049
##
## during_tower_gifts after_exp_gifts
## Dependent Var.: during_tower_gifts after_exp_gifts
##
## exp_name有暴击 -10.50*** (1.380) 6.200* (2.801)
## before_bj_gifters_binary 303.3*** (14.32) 737.4*** (26.11)
## exp_name有暴击 x before_bj_gifters_binary -74.65*** (17.59) 52.60 (37.12)
## Fixed-Effects: ------------------ ----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ______________________________________ __________________ ________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.02191 0.03870
## Within R2 0.02113 0.03754
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 输出 log 变量回归结果
cat("\n--- Results for Log Variables ---\n")
##
## --- Results for Log Variables ---
etable(models_gifts_log)
## log_total_gifts log_before_bj_gifts
## Dependent Var.: log_total_gifts log_before_bj_gifts
##
## exp_name有暴击 0.0760*** (0.0121) -0.0048 (0.0056)
## before_bj_gifters_binary 1.740*** (0.0155) 1.696*** (0.0127)
## exp_name有暴击 x before_bj_gifters_binary -0.0276 (0.0219) 0.0049 (0.0182)
## Fixed-Effects: ------------------ -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ______________________________________ __________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.13449 0.31099
## Within R2 0.12955 0.30471
##
## log_during_bj_gifts log_after_bj_gifts
## Dependent Var.: log_during_bj_gifts log_after_bj_gifts
##
## exp_name有暴击 1.091*** (0.0109) -0.3584*** (0.0118)
## before_bj_gifters_binary 1.399*** (0.0171) 1.518*** (0.0169)
## exp_name有暴击 x before_bj_gifters_binary 0.2197*** (0.0255) -0.0387 (0.0244)
## Fixed-Effects: ------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## ______________________________________ ___________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.19718 0.11442
## Within R2 0.17834 0.10677
##
## log_during_tower_gifts
## Dependent Var.: log_during_tower_gifts
##
## exp_name有暴击 -0.2724*** (0.0132)
## before_bj_gifters_binary 1.457*** (0.0220)
## exp_name有暴击 x before_bj_gifters_binary -0.1720*** (0.0312)
## Fixed-Effects: ----------------------
## p_date Yes
## p_hour Yes
## p_minute Yes
## ______________________________________ ______________________
## S.E.: Clustered by: pk_id
## Observations 136,961
## R2 0.07245
## Within R2 0.06773
##
## log_after_exp_gifts
## Dependent Var.: log_after_exp_gifts
##
## exp_name有暴击 0.0803*** (0.0123)
## before_bj_gifters_binary 1.639*** (0.0165)
## exp_name有暴击 x before_bj_gifters_binary -0.0152 (0.0233)
## Fixed-Effects: -------------------
## p_date Yes
## p_hour Yes
## p_minute Yes
## ______________________________________ ___________________
## S.E.: Clustered by: pk_id
## Observations 136,961
## R2 0.11732
## Within R2 0.11229
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
打赏人数
library(fixest)
# 定义非 log 变量和 log 变量
variables_gifters <- c(
"before_bj_gift_cnt",
"before_bj_gifters",
"total_gift_cnt",
"total_gifters",
"after_exp_gift_cnt",
"after_exp_gifters"
)
variables_gifters_log <- c(
"log_before_bj_gift_cnt",
"log_before_bj_gifters",
"log_total_gift_cnt",
"log_total_gifters",
"log_after_exp_gift_cnt",
"log_after_exp_gifters"
)
# 初始化列表存储模型
models_gifters <- list()
models_gifters_log <- list()
# 对非 log 变量进行回归
for (var in variables_gifters) {
formula <- as.formula(paste(var, "~ exp_name*before_bj_gifters | p_date + p_hour + p_minute"))
models_gifters[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 对 log 变量进行回归
for (var in variables_gifters_log) {
formula <- as.formula(paste(var, "~ exp_name*before_bj_gifters | p_date + p_hour + p_minute"))
models_gifters_log[[var]] <- feols(formula, data = df, vcov = ~pk_id)
}
# 输出非 log 变量回归结果
cat("\n--- Results for Non-log Gifters Variables ---\n")
##
## --- Results for Non-log Gifters Variables ---
etable(models_gifters)
## before_bj_gift_cnt before_bj_gifters
## Dependent Var.: before_bj_gift_cnt before_bj_gifters
##
## exp_name有暴击 0.1186 (0.1837) 4.44e-16*** (8.18e-17)
## before_bj_gifters 2.489*** (0.1056) 1*** (4.93e-20)
## exp_name有暴击 x before_bj_gifters -0.0659 (0.1266) -4.44e-16*** (5.59e-17)
## Fixed-Effects: ------------------ -----------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## _______________________________ __________________ _______________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.91593 1
## Within R2 0.91574 1
##
## total_gift_cnt total_gifters
## Dependent Var.: total_gift_cnt total_gifters
##
## exp_name有暴击 -0.2564 (1.216) -0.0302 (0.3599)
## before_bj_gifters 16.62*** (0.7054) 4.746*** (0.1938)
## exp_name有暴击 x before_bj_gifters -0.6228 (0.8517) 0.0565 (0.2497)
## Fixed-Effects: ----------------- -----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## _______________________________ _________________ _________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.81968 0.84420
## Within R2 0.81925 0.84385
##
## after_exp_gift_cnt after_exp_gifters
## Dependent Var.: after_exp_gift_cnt after_exp_gifters
##
## exp_name有暴击 -0.3750 (1.200) 0.0076 (0.3613)
## before_bj_gifters 14.13*** (0.6958) 4.130*** (0.1943)
## exp_name有暴击 x before_bj_gifters -0.5568 (0.8382) 0.0561 (0.2509)
## Fixed-Effects: ------------------ -----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## _______________________________ __________________ _________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.77008 0.80238
## Within R2 0.76954 0.80193
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 输出 log 变量回归结果
cat("\n--- Results for Log Gifters Variables ---\n")
##
## --- Results for Log Gifters Variables ---
etable(models_gifters_log)
## log_before_bj_gift_cnt log_before_bj_gifters
## Dependent Var.: log_before_bj_gift_cnt log_before_bj_gifters
##
## exp_name有暴击 -0.0039 (0.0116) -0.0043 (0.0090)
## before_bj_gifters 0.0515*** (0.0053) 0.0424*** (0.0042)
## exp_name有暴击 x before_bj_gifters 2.42e-5 (0.0072) 0.0001 (0.0057)
## Fixed-Effects: ---------------------- ---------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## _______________________________ ______________________ _____________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.21747 0.30389
## Within R2 0.21115 0.29851
##
## log_total_gift_cnt log_total_gifters
## Dependent Var.: log_total_gift_cnt log_total_gifters
##
## exp_name有暴击 -0.0048 (0.0120) 0.0079 (0.0099)
## before_bj_gifters 0.0498*** (0.0051) 0.0447*** (0.0045)
## exp_name有暴击 x before_bj_gifters -0.0004 (0.0069) 3.5e-6 (0.0061)
## Fixed-Effects: ------------------ ------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## _______________________________ __________________ __________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.13046 0.20587
## Within R2 0.12158 0.19828
##
## log_after_exp_gift_cnt log_after_exp_gifters
## Dependent Var.: log_after_exp_gift_cnt log_after_exp_gifters
##
## exp_name有暴击 -0.0024 (0.0117) 0.0132 (0.0096)
## before_bj_gifters 0.0479*** (0.0049) 0.0430*** (0.0043)
## exp_name有暴击 x before_bj_gifters -0.0004 (0.0066) 9.63e-5 (0.0058)
## Fixed-Effects: ---------------------- ---------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## _______________________________ ______________________ _____________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 136,961 136,961
## R2 0.11989 0.19285
## Within R2 0.11117 0.18519
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1