setwd("C:/Users/ASUS/Desktop/_pk_baoji/1.DataAnalysis")
rm(list=ls())
set.seed(1234)
getwd()
## [1] "C:/Users/ASUS/Desktop/_pk_baoji/1.DataAnalysis/0.Code"
library(lubridate)
library(dplyr)
# 加载 plm 包
library(dplyr)
library(plm)
library(fixest)
library(did)
library(ggplot2)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ purrr 1.0.2 ✔ tibble 3.2.1
## ✔ readr 2.1.5 ✔ tidyr 1.3.1
## ── 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 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
##
## The following objects are masked from 'package:lubridate':
##
## hour, isoweek, mday, minute, month, quarter, second, wday, week,
## yday, year
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)
1.读取处理数据:Subgroup分析:1:1:1;1
df = read.csv("../1.Input/pk_4_stage_author_level_data_clean_subgroup.csv")
colnames(df)
## [1] "pk_id" "author_id" "exp_name"
## [4] "is_baoji" "p_date" "p_hour"
## [7] "p_minute" "pk_anthor_cnt" "pk_formation"
## [10] "before_bj_gifts" "during_bj_gifts" "after_bj_gifts"
## [13] "during_tower_gifts" "total_gifts" "after_exp_gifts"
## [16] "rank" "diff_before_bj_gifts"
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),
log_after_exp_gifts = log(after_exp_gifts + 1)
)
2. all authors
(1) ATE – 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有暴击 5.074. (2.716) 0.0077 (0.1698) 19.53*** (1.058)
## 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 285,232 285,232 285,232
## R2 0.00135 0.00057 0.00327
## Within R2 2.97e-5 8.2e-9 0.00219
##
## after_bj_gifts during_tower_gifts after_exp_gifts
## Dependent Var.: after_bj_gifts during_tower_gifts after_exp_gifts
##
## exp_name有暴击 -8.588*** (1.152) -5.875*** (1.222) 5.066. (2.667)
## 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 285,232 285,232 285,232
## R2 0.00120 0.00085 0.00133
## Within R2 0.00037 0.00015 3.06e-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.0328** (0.0111) -0.0015 (0.0036) 0.5814*** (0.0070)
## 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 285,232 285,232 285,232
## R2 0.00346 0.00387 0.05176
## Within R2 6.25e-5 9.46e-7 0.04057
##
## 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.2691*** (0.0091) -0.1713*** (0.0080) 0.0389*** (0.0111)
## 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 285,232 285,232 285,232
## R2 0.01031 0.00524 0.00334
## Within R2 0.00565 0.00255 8.77e-5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(2) GAP HTE
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*diff_before_bj_gifts | 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*diff_before_bj_gifts | 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有暴击 -3.125 (3.319) -0.2860. (0.1474)
## diff_before_bj_gifts 0.8573*** (0.1322) 0.2692*** (0.0047)
## exp_name有暴击 x diff_before_bj_gifts 0.8571** (0.2985) 0.0374* (0.0180)
## Fixed-Effects: ------------------ ------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ __________________ __________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 285,232 285,232
## R2 0.04625 0.29547
## Within R2 0.04499 0.29507
##
## during_bj_gifts after_bj_gifts
## Dependent Var.: during_bj_gifts after_bj_gifts
##
## exp_name有暴击 16.70*** (1.186) -11.76*** (1.619)
## diff_before_bj_gifts 0.1657** (0.0552) 0.3053*** (0.0657)
## exp_name有暴击 x diff_before_bj_gifts 0.2921** (0.1032) 0.3310* (0.1625)
## Fixed-Effects: ----------------- ------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ _________________ __________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 285,232 285,232
## R2 0.01653 0.02728
## Within R2 0.01546 0.02646
##
## during_tower_gifts after_exp_gifts
## Dependent Var.: during_tower_gifts after_exp_gifts
##
## exp_name有暴击 -7.777*** (1.308) -2.839 (3.269)
## diff_before_bj_gifts 0.1172** (0.0380) 0.5882*** (0.1303)
## exp_name有暴击 x diff_before_bj_gifts 0.1966* (0.0828) 0.8197** (0.2910)
## Fixed-Effects: ------------------ ------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ __________________ __________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 285,232 285,232
## R2 0.00569 0.02933
## Within R2 0.00500 0.02808
## ---
## 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.0108 (0.0125) -0.0194*** (0.0059)
## diff_before_bj_gifts 0.0022*** (0.0005) 0.0019*** (0.0004)
## exp_name有暴击 x diff_before_bj_gifts 0.0023** (0.0007) 0.0019** (0.0006)
## Fixed-Effects: ------------------ -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ __________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 285,232 285,232
## R2 0.01842 0.08200
## Within R2 0.01507 0.07843
##
## log_during_bj_gifts log_after_bj_gifts
## Dependent Var.: log_during_bj_gifts log_after_bj_gifts
##
## exp_name有暴击 0.5655*** (0.0075) -0.2837*** (0.0097)
## diff_before_bj_gifts 0.0012*** (0.0002) 0.0015*** (0.0003)
## exp_name有暴击 x diff_before_bj_gifts 0.0017*** (0.0004) 0.0015*** (0.0005)
## Fixed-Effects: ------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ ___________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 285,232 285,232
## R2 0.06295 0.01951
## Within R2 0.05189 0.01489
##
## log_during_tower_gifts log_after_exp_gifts
## Dependent Var.: log_during_tower_gifts log_after_exp_gifts
##
## exp_name有暴击 -0.1812*** (0.0082) 0.0200. (0.0119)
## diff_before_bj_gifts 0.0007*** (0.0002) 0.0016*** (0.0004)
## exp_name有暴击 x diff_before_bj_gifts 0.0010*** (0.0003) 0.0020*** (0.0006)
## Fixed-Effects: ---------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ ______________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 285,232 285,232
## R2 0.00827 0.01276
## Within R2 0.00559 0.00954
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
3.第一名author
df_num1= df[df$rank==1,]
(1) ATE – 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_num1, 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_num1, 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有暴击 5.746. (3.429) -0.2656 (0.5861) 20.54*** (1.505)
## 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 71,308 71,308 71,308
## R2 0.00199 0.00175 0.00434
## Within R2 4.02e-5 2.54e-6 0.00264
##
## after_bj_gifts during_tower_gifts after_exp_gifts
## Dependent Var.: after_bj_gifts during_tower_gifts after_exp_gifts
##
## exp_name有暴击 -8.613*** (1.581) -5.916*** (1.555) 6.012. (3.247)
## 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 71,308 71,308 71,308
## R2 0.00180 0.00154 0.00194
## Within R2 0.00045 0.00020 4.96e-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.0466** (0.0154) -0.0072 (0.0095) 0.6320*** (0.0111)
## 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 71,308 71,308 71,308
## R2 0.00472 0.01027 0.05607
## Within R2 0.00013 8.09e-6 0.04352
##
## 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.2657*** (0.0138) -0.1808*** (0.0129) 0.0679*** (0.0155)
## 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 71,308 71,308 71,308
## R2 0.01131 0.00575 0.00393
## Within R2 0.00520 0.00276 0.00027
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(2) GAP HTE
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*diff_before_bj_gifts | p_date + p_hour + p_minute"))
models_gifts[[var]] <- feols(formula, data = df_num1, vcov = ~pk_id)
}
# 对 log 变量进行回归
for (var in variables_gifts_log) {
formula <- as.formula(paste(var, "~ exp_name*diff_before_bj_gifts | p_date + p_hour + p_minute"))
models_gifts_log[[var]] <- feols(formula, data = df_num1, 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有暴击 0.4369 (4.042) -0.0672 (0.0604)
## diff_before_bj_gifts 1.987*** (0.2639) 1.005*** (0.0018)
## exp_name有暴击 x diff_before_bj_gifts 0.5950 (0.3632) 0.0079 (0.0075)
## Fixed-Effects: ----------------- -----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ _________________ _________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.16132 0.99894
## Within R2 0.15968 0.99893
##
## during_bj_gifts after_bj_gifts
## Dependent Var.: during_bj_gifts after_bj_gifts
##
## exp_name有暴击 17.90*** (2.124) -10.16*** (2.009)
## diff_before_bj_gifts 0.3522* (0.1662) 0.5079*** (0.1395)
## exp_name有暴击 x diff_before_bj_gifts 0.2781 (0.2239) 0.1711 (0.1821)
## Fixed-Effects: ---------------- ------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ ________________ __________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.04015 0.05542
## Within R2 0.03852 0.05414
##
## during_tower_gifts after_exp_gifts
## Dependent Var.: during_tower_gifts after_exp_gifts
##
## exp_name有暴击 -7.240*** (1.563) 0.5041 (4.041)
## diff_before_bj_gifts 0.1219** (0.0441) 0.9820*** (0.2635)
## exp_name有暴击 x diff_before_bj_gifts 0.1379. (0.0792) 0.5871 (0.3633)
## Fixed-Effects: ------------------ ------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ __________________ __________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.00636 0.05564
## Within R2 0.00502 0.05386
## ---
## 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.0120 (0.0189) -0.0514** (0.0170)
## diff_before_bj_gifts 0.0038*** (0.0009) 0.0049*** (0.0012)
## exp_name有暴击 x diff_before_bj_gifts 0.0036** (0.0013) 0.0046** (0.0017)
## Fixed-Effects: ------------------ -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ __________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.04889 0.19891
## Within R2 0.04450 0.19060
##
## log_during_bj_gifts log_after_bj_gifts
## Dependent Var.: log_during_bj_gifts log_after_bj_gifts
##
## exp_name有暴击 0.6133*** (0.0116) -0.2843*** (0.0144)
## diff_before_bj_gifts 0.0016*** (0.0003) 0.0017*** (0.0004)
## exp_name有暴击 x diff_before_bj_gifts 0.0019*** (0.0005) 0.0019** (0.0006)
## Fixed-Effects: ------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ ___________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.07266 0.02398
## Within R2 0.06032 0.01795
##
## log_during_tower_gifts log_after_exp_gifts
## Dependent Var.: log_during_tower_gifts log_after_exp_gifts
##
## exp_name有暴击 -0.1914*** (0.0130) 0.0446** (0.0166)
## diff_before_bj_gifts 0.0006** (0.0002) 0.0020*** (0.0005)
## exp_name有暴击 x diff_before_bj_gifts 0.0011*** (0.0003) 0.0024** (0.0007)
## Fixed-Effects: ---------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ ______________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.00846 0.01817
## Within R2 0.00548 0.01456
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
3.最后一名author
df_num4= df[df$rank==4,]
(1) ATE – 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_num4, 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_num4, 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有暴击 2.970 (3.239) 0.0094 (0.0203) 18.56*** (1.650)
## 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 71,308 71,308 71,308
## R2 0.00142 0.00045 0.00300
## Within R2 1.25e-5 2.82e-6 0.00166
##
## after_bj_gifts during_tower_gifts after_exp_gifts
## Dependent Var.: after_bj_gifts during_tower_gifts after_exp_gifts
##
## exp_name有暴击 -9.873*** (1.727) -5.729*** (1.329) 2.961 (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 71,308 71,308 71,308
## R2 0.00160 0.00109 0.00142
## Within R2 0.00053 0.00027 1.24e-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.0296. (0.0155) 0.0004 (0.0013) 0.5512*** (0.0103)
## 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 71,308 71,308 71,308
## R2 0.00311 0.00161 0.05109
## Within R2 5.12e-5 1.67e-6 0.03909
##
## 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.2621*** (0.0131) -0.1557*** (0.0125) 0.0296. (0.0155)
## 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 71,308 71,308 71,308
## R2 0.00994 0.00472 0.00310
## Within R2 0.00560 0.00216 5.13e-5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(2) GAP HTE
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*diff_before_bj_gifts | p_date + p_hour + p_minute"))
models_gifts[[var]] <- feols(formula, data = df_num4, vcov = ~pk_id)
}
# 对 log 变量进行回归
for (var in variables_gifts_log) {
formula <- as.formula(paste(var, "~ exp_name*diff_before_bj_gifts | p_date + p_hour + p_minute"))
models_gifts_log[[var]] <- feols(formula, data = df_num4, 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有暴击 0.3931 (3.058) -0.0672 (0.0604)
## diff_before_bj_gifts 0.3574** (0.1178) 0.0050** (0.0018)
## exp_name有暴击 x diff_before_bj_gifts 0.2718. (0.1540) 0.0079 (0.0075)
## Fixed-Effects: ----------------- -----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ _________________ _________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.00962 0.06055
## Within R2 0.00822 0.06013
##
## during_bj_gifts after_bj_gifts
## Dependent Var.: during_bj_gifts after_bj_gifts
##
## exp_name有暴击 16.67*** (1.489) -10.01*** (1.613)
## diff_before_bj_gifts 0.0594* (0.0240) 0.1859** (0.0611)
## exp_name有暴击 x diff_before_bj_gifts 0.1942** (0.0637) 0.0188 (0.0690)
## Fixed-Effects: ----------------- -----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ _________________ _________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.00596 0.00712
## Within R2 0.00463 0.00605
##
## during_tower_gifts after_exp_gifts
## Dependent Var.: during_tower_gifts after_exp_gifts
##
## exp_name有暴击 -6.200*** (1.277) 0.4603 (3.052)
## diff_before_bj_gifts 0.1072** (0.0400) 0.3525** (0.1173)
## exp_name有暴击 x diff_before_bj_gifts 0.0509 (0.0551) 0.2639. (0.1526)
## Fixed-Effects: ------------------ -----------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ __________________ _________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.00458 0.00934
## Within R2 0.00376 0.00795
## ---
## 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.0148 (0.0159) -0.0037* (0.0015)
## diff_before_bj_gifts 0.0014*** (0.0003) 0.0004*** (6.72e-5)
## exp_name有暴击 x diff_before_bj_gifts 0.0015*** (0.0005) 0.0004** (0.0001)
## Fixed-Effects: ------------------ -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ __________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.00931 0.08603
## Within R2 0.00627 0.08456
##
## log_during_bj_gifts log_after_bj_gifts
## Dependent Var.: log_during_bj_gifts log_after_bj_gifts
##
## exp_name有暴击 0.5398*** (0.0105) -0.2718*** (0.0134)
## diff_before_bj_gifts 0.0009*** (0.0002) 0.0013*** (0.0003)
## exp_name有暴击 x diff_before_bj_gifts 0.0012*** (0.0003) 0.0010** (0.0004)
## Fixed-Effects: ------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ ___________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.05791 0.01600
## Within R2 0.04600 0.01168
##
## log_during_tower_gifts log_after_exp_gifts
## Dependent Var.: log_during_tower_gifts log_after_exp_gifts
##
## exp_name有暴击 -0.1624*** (0.0127) 0.0150 (0.0159)
## diff_before_bj_gifts 0.0006** (0.0002) 0.0013*** (0.0003)
## exp_name有暴击 x diff_before_bj_gifts 0.0007* (0.0003) 0.0015*** (0.0005)
## Fixed-Effects: ---------------------- -------------------
## p_date Yes Yes
## p_hour Yes Yes
## p_minute Yes Yes
## __________________________________ ______________________ ___________________
## S.E.: Clustered by: pk_id by: pk_id
## Observations 71,308 71,308
## R2 0.00662 0.00918
## Within R2 0.00406 0.00615
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1