Stata中基于截面数据的用户名层面OLS回归正确性确认求助
用户层面OLS回归的实现疑问
我手头有一份Reddit帖子的截面数据集,每行对应一条帖子,id变量对应用户名,不同用户的发帖数量存在差异。我的目标是用OLS回归,基于用户层面的协变量预测用户的平均情感值avg_sentiment——比如collective_action_prop这类指标,统计的是某个用户所有帖子中相关内容的提及占比。
我目前运行的OLS代码是:
regress avg_sentiment avg_response economic_demand_prop
但不确定当前的数据结构下,这样的代码是否正确实现了用户层面的OLS回归。以下是用dataex生成的样本数据:
* Example generated by -dataex-. For more info, type help dataex clear input float id double avg_sentiment float avg_response double economic_demand_prop 1 -1 1 0 1 2 -1 0 0 1 3 0 0 0 0 4 0 . 0 0 4 0 . 0 0 5 1 6 0 0
问题分析与修正方案
当前你的代码是直接在帖子层面执行回归,但你的目标是用户层面的分析——avg_sentiment、avg_response、economic_demand_prop均为用户级汇总指标,同一用户的多条帖子观测值是重复的用户数据,这会导致:
- 人为扩大样本量,低估标准误,影响统计推断的准确性
- 模型本质是对重复的用户观测值做回归,并非真正的用户层面分析
方案1:聚合到用户层面(推荐)
先将数据集压缩为用户级唯一观测,再执行回归:
- 保留每个用户的第一条观测(因用户级协变量对同一用户所有帖子一致):
bysort id: keep if _n == 1
- 运行OLS回归:
regress avg_sentiment avg_response economic_demand_prop
若需重新计算用户级指标,可直接用collapse生成用户层面数据集:
collapse (mean) avg_sentiment avg_response economic_demand_prop, by(id) regress avg_sentiment avg_response economic_demand_prop
方案2:聚类标准误修正(不改变原始数据)
若需保留原始帖子级数据结构,可通过聚类标准误修正重复观测的偏差:
regress avg_sentiment avg_response economic_demand_prop, robust cluster(id)
该方法将同一用户的所有观测视为聚类组,调整标准误以解决重复观测导致的统计推断问题。
内容的提问来源于stack exchange,提问作者nesta1990
相关产品推荐
相关产品推荐

