☰
2007-2024上市公司媒体关注度数据处理与实证研究指南
2026/10/10 6:55:18 网站建设 项目流程

如果一个数据表的年份跨度是2007到2024,名字里又带着“媒体关注”四个字,那十有八九是做公司金融或资产定价方向的人在找的研究样本。我这些年帮人处理过不少类似数据,也看过很多基于这类数据写出来的论文。一个比较普遍的现象是:大家拿到“上市公司媒体关注日、年数据”之后,第一反应是直接按年度聚合成面板,丢进回归里跑,等被审稿人问起数据口径和样本筛选,才意识到问题没那么简单。

媒体关注度这个变量,表面上看只是“某公司某天被媒体报道了多少次”,但在实证研究里,它既是信息环境代理变量,也是外部治理机制,还是可以影响股价和公司行为的可观测因子。2007-2024这个时间窗口尤其有意思:它同时覆盖了传统纸媒主导阶段、网络财经媒体爆发阶段和自媒体碎片化阶段。在这种情况下,你要是不把数据口径吃透,2024年的媒体报道数量跟2009年比起来,完全不具有可比性——这是这类数据里最隐蔽、也最致命的坑。

我这篇就结合自己做数据校验和论文复现的经验,把一份2007-2024年上市公司媒体关注日、年数据从字段结构、口径演变、样本陷阱到回归前的处理链路,完整拆开讲一遍。如果你是正要拿这类数据做实证的硕士生、博士生,或者刚入行量化研究的朋友,这篇文章应该能帮你少走不少弯路。

1. 为什么实证文章都绕不开“媒体关注度”这个变量

1.1 理论支撑与研究场景

媒体关注度在学术文献里叫 media attention,也叫 media coverage,它之所以能成为高频变量,底层逻辑是信息不对称。在一个信息不透明的市场里,公司管理层和外部投资者掌握的信息天然不一致。媒体报道承担了信息中介的角色:它把公司经营动态、财务表现、治理问题传播出去,从而降低投资者获取信息的成本,也压缩内幕信息的优势空间。

放到回归方程里,这个变量可以出现在很多位置:

  • 做解释变量:媒体关注度越高,信息不对称越低,从而影响股价同步性、盈余管理程度、公司治理水平、企业社会责任行为。这类研究非常多,被解释变量可以是审计费用、投资效率、创新投入、股票崩盘风险等。
  • 做被解释变量:哪些公司更容易获得媒体关注?公司规模、业绩、股权结构、机构投资者持股比例、突发事件等因素都可以作为解释变量。
  • 做调节变量或分组变量:比如研究信息披露质量对公司价值的影响时,用媒体关注度做调节,逻辑是媒体关注高的组里信息传递更充分。

所以你会看到,只要研究里涉及“信息环境”这个概念,媒体关注度几乎就是默认首选代理变量。这也是为什么2007-2024年上市公司媒体关注日、年数据这类产品有稳定需求——它把“获取公开新闻并清洗成面板数据”这个累活提前做完了。

1.2 时间窗口选择:2007年为什么是常见起点

很多研究者拿到数据后先看年份,2007年作为起点不是随手定的。2007年是中国上市公司执行新企业会计准则的元年,财务数据口径的连贯性从那一年开始明显改善。更重要的是,2005年启动的股权分置改革在2006年末、2007年初进入完成阶段,A股的市场化程度和信息披露监管环境发生了结构性变化。如果媒体关注度数据从2007年起步,能和大多数公司财务数据、股票交易数据的可比区间对齐。

另一方面,2007到2024这十几年恰好是媒体形态剧烈变化的时期。早期公众获取上市公司信息主要靠报纸和电视,2009年后新浪财经、东方财富网等网络财经媒体快速崛起,2013年之后微博、微信、股吧等社交平台的讨论量变成不可忽略的信息源。这种媒体结构变化对研究者来说是挑战也是机遇——你可以用网络媒体的兴起做自然实验,也可以用“传统报纸报道量”和“网络媒体讨论量”做对比检验。

2. 日度表与年度表的字段逻辑:别被“媒体”两个字带偏

2.1 一份典型日度数据的字段长什么样

市面上这类数据的字段设计大同小异,核心是“谁、哪天、被哪些媒体、报道了多少次”。我经手过的日度数据表,常见字段大概是这样:

字段名类型示例含义
股票代码文本600519证券交易所代码
股票简称文本贵州茅台公司简称
交易日期日期2023-08-01媒体报道所属日期
媒体来源文本新浪财经、东方财富网具体媒体渠道
报道标题文本公司发布半年度业绩预告新闻标题
报道数量整数5当日该来源报道篇数
情感倾向分类正面/中性/负面如果数据商做了文本情绪分析

需要注意,不同来源的日度表设计差异很大。有的数据商把“报道数量”细分成“标题提及次数”和“正文提及次数”;有的会把“负面新闻数量”单列一列;有的只统计公司全称出现在新闻标题或正文中的情况。就我的经验来说,拿到日度表第一件事不是跑回归,而是确认它的“报道数量”到底怎么定义——是公司全称、简称出现在标题中的新闻篇数,还是正文中提及公司的次数。这两个口径差别能有一倍以上。

2.2 年度表的生成逻辑与两个口径差异

年度表通常是从日度表聚合出来的,核心变量是“上市公司当年被媒体报道的总次数/总篇数”。但聚合方式不止一种,最常见的有四种:

  • 年度总报道数量:当年日度报道数量求和,直观但容易受极端值影响;
  • 年度报道天数:当年有多少个交易日出现了该公司的报道,能体现覆盖持续性;
  • 月度报道数量均值:先算月度,再算年度均值,能缓解某个月集中报道的问题;
  • 是否有报道的虚拟变量:当年有没有在任何媒体上出现过,用于区分“被关注”和“完全没被关注”。

年代数据看起来简洁,但如果你打算用年度数据做模型,一定要搞清楚数据商用的是哪种聚合逻辑。更谨慎的做法是:拿到日度数据后,自己按研究假设重新聚合一遍。比如你研究的是“持续关注”对治理的影响,那就应该用年度报道天数而不是总报道次数;如果你研究的是“舆情热度峰值”,那应该用全年最高单日报道量,而不是总量。

2.3 日报与网络财经媒体混用的边界

“媒体关注”里的媒体来源通常分为几层:一是传统权威报纸,二是网络财经媒体,三是股吧和社交平台。学术研究中一个比较稳妥的做法,是用“权威报纸 + 主要网络财经媒体”的合并口径作为主回归测量,把股吧讨论量单独拿出来做稳健性检验。原因在于社交平台讨论噪音大、匿名化严重,话题发散性强,直接混进核心变量会让结果很难解释。

但也要提醒一句:不要把“媒体报道”和“网络搜索热度”画等号。搜索热度反映的是主动检索行为,媒体报道反映的是新闻供给行为,两者的生成机制完全不同。用媒体报道数据去解释“投资者关注”时,需要注意理论链条上还有一层“媒体报道→投资者注意→交易行为”的传导关系,不是所有研究都适合直接替代。

3. 2007-2024年里的数据口径演变和样本陷阱

3.1 报纸电子化的覆盖率问题

如果你拿到一份从2007年开始包含“报纸媒体报道”的数据,要警惕早年报纸电子化的覆盖率问题。2007到2011年前后,很多报纸数据库对早期版面的扫描质量参差不齐,OCR识别会产生漏报和错字。对上市公司简称这种高频词,错字影响尤其大——公司简称一旦被识别成别的词形,这篇文章就会被漏掉。所以年份越早的媒体关注数据,理论上漏报率越高。

怎么判断你有没有碰上这个问题?很简单,挑几个在2008年、2010年发生过大事件的知名公司,查一查当年数据里有没有对应报道记录。如果事件本身在当时被各大财经媒体广泛报道,而数据表里完全没有记录,那说明早期覆盖率有缺口。这种缺口不一定会毁掉你的回归,但一定要在稳健性检验里说明,或者干脆把主样本起始年份后移到报纸电子化更稳定的时点。

3.2 网络媒体崛起带来的结构性断点

抛开覆盖率问题,2007到2024年最明显的特征就是媒体报道总量逐年上升。这主要不是上市公司变得更“有新闻”,而是媒体供给能力发生了数量级变化。2015年之后,各种财经客户端、自媒体平台的机器写作和快速转载,让同一条公司新闻可以在几个小时内被几十个站点重复发布。

这对面板数据意味着什么?意味着“年度媒体报道总量”这个变量的均值会随年份系统性抬升。如果你不控制年份固定效应,很容易出现伪相关——媒体报道多的年份,股价波动或公司指标也可能恰好有系统性变化。我看过不少初稿,把年份效应漏掉了,结果媒体关注度的系数被吹得非常大,这就是典型的遗漏变量问题在作祟。反过来,如果你故意只保留传统权威报纸来源,可以部分规避网络媒体数量膨胀的噪音,但代价是2012年后报纸媒体的信息代表性也在下降。

3.3 公司状态变化:退市、借壳、更名与简称匹配

媒体关注度数据是按股票代码和公司简称组织的,但A股里有大量状态变化:

  • 公司被ST、*ST,简称里多了字母,媒体会继续按新简称报道;
  • 公司被借壳上市,股票代码不变,但公司名字、行业属性和主营业务全变了;
  • 公司主动更名,比如从“某某科技”改成“某某控股”;
  • 公司退市,后期不再有媒体报道记录,但财务数据表里可能仍有少量交易记录直到退市日。

这类变化处理得是否干净,直接决定样本的连续性。我的建议是保留股票代码作为唯一标识,不要用简称做连接键。做实证时,如果你想研究存续公司样本,可以把“后续退市”的观测保留到退市当年,然后单独加一个“是否退市”虚拟变量,而不是武断删除。删除有退市记录的样本,本质上是对失败公司做条件删除,会让回归样本产生生存者偏差。

公司简称匹配是另一个细节坑。有些数据商按“公司全称”去匹配新闻,匹配率高但会漏掉大量用简称报道的文章;有些按“股票简称”匹配,又容易撞车,比如“某某科技”这种简称在A股里可能对应好几家公司。经验做法是维护一张别名表,把全称、简称、缩写、历史曾用名全部映射到统一股票代码。处理过这类数据的人都知道,这个环节不能省。

3.4 时间对齐:报告期错位和交易日归属

媒体关注度的日期归属看似简单,实际经常出问题。一个典型场景是:很多新闻是前一个交易日收盘后或者当天凌晨发布的,数据商是按“发布时间”还是“抓取时间”打标,会导致报道落在不同的交易日。如果你用事件研究法,把“第0天媒体关注度”作为事件窗口指标,日期归属差一天,整个累计超额收益的计算都会跟着跑偏。

还有财务数据拼接时的报告期错位。年度媒体关注度数据通常是自然年度的,比如2020年1月1日到2020年12月31日;而财务数据里的“年度”可能是2020年12月31日的年报数据。多数实证研究里,t年媒体关注度会对t+1年或t年的公司行为产生影响,这里到底用同期还是滞后一期,需要跟你的研究假设完全匹配。审稿人很爱抓这个细节,我在修改论文时就被问过“为什么媒体关注度与被解释变量用的是同期数据”,如果没有扎实的理论解释,这就是个风险点。

4. 从日度到回归样本:一条可复现的处理链路

4.1 日度数据的标准化清洗

拿到日度数据后,我一般会按下面的顺序做标准化清洗:

  1. 统一股票代码格式。深交所和上交所代码都是6位数字,但不同来源可能带后缀或前导符号,统一清洗成纯6位文本。
  2. 剔除交易日期缺失、股票代码缺失的样本。
  3. 处理重复记录。两张数据表拼接后如果出现同一股票同一天多条重复记录,需要确认是多个媒体来源还是数据重复。
  4. 检查“报道数量”有没有异常值,比如某天媒体报道量上万,通常是抓取环节出了问题,要逐条核实。
  5. 对每家公司计算“年报道量”,同时保留“有报道天数”和“报道来源数”辅助变量。

这个环节不要贪快。日度数据少则几十万行,多则几百万行,人为排查不现实,但统计筛查一定要做干净,否则后面的回归结果都是海市蜃楼。

4.2 Python聚合代码:把日度变成年度

下面我贴一段可以直接跑的Python代码,逻辑是统计每家上市公司每年的媒体报道总量、报道天数和月度报道均值:

import pandas as pd # 读取日度数据 df = pd.read_csv("media_daily_2007_2024.csv", dtype={"股票代码": str}) df["交易日期"] = pd.to_datetime(df["交易日期"]) # 提取年份和月份 df["年份"] = df["交易日期"].dt.year df["月份"] = df["交易日期"].dt.month # 先按公司+年月统计月度报道量 monthly = ( df.groupby(["股票代码", "年份", "月份"])["报道数量"] .sum() .reset_index() ) # 再按公司+年聚合 yearly = ( month.groupby(["股票代码", "年份"])["报道数量"] .agg(年度报道总量="sum", 月度报道均值="mean") .reset_index() ) # 统计有报道的交易日天数 active_days = ( df.groupby(["股票代码", "年份"]) .agg(有报道天数=("交易日期", "nunique")) .reset_index() ) # 合并 yearly = yearly.merge(active_days, on=["股票代码", "年份"], how="left")

这段代码的一个关键处理是:先聚合到月度,再聚合到年度。这么做的目的是同时得到“年度总量”和“月度均值”,后者能避免某一个月集中爆发式报道对年总量的过度拉动。如果你只按天直接求和,那2023年某家公司在连续一周内被刷屏的数值,就会给它全年媒体关注度贡献巨大比重,研究结论容易受个别舆情事件支配。

4.3 与财务数据的拼接和描述性统计

聚合出年度媒体关注度后,下一步就是跟财务数据表做匹配。我用Stata比较多,常用的拼接代码是:

* year 为年份,stkcd 为股票代码 merge m:1 stkcd year using "financial_data.dta" keep if _merge == 3 drop _merge

拼接时有几个细节必须注意:

  • 行业代码和行业名称要用同一版本,不同年份如果行业分类标准变化,要做前后统一;
  • 财务变量里的“年度”要确认是报表期还是公告期,避免把2020年报的数据错误匹配到2020年媒体关注度上;
  • 一年内上市的次新股,上市前没有股票代码,媒体关注数据本来就缺失,这类样本要单独记录缺失原因。

描述性统计阶段,媒体关注度变量通常严重右偏,绝大多数公司每年只有少量报道,少数热门公司被大量报道。所以主回归之前,对媒体报道总量取对数或做Winsorize(前后各缩尾1%)都是常规操作。不过要注意,取对数后系数的经济含义是“媒体报道数量增长1%”对因变量的影响,写论文解读时要对应清楚。

4.4 数据质量校验的几种方法

我每处理一批数据,会做三层校验:

第一层是总量校验。日度数据按年汇总后的总量,应当和年度数据表一致;如果对不上,说明日度表和年度表来自两套清洗流程,先解决差异再往下走。

第二层是案例校验。选几家知名度较高的公司,比如某大型白酒消费企业、某头部股份制银行,按年份手动收集它们当年是否有可证实的大事件,再查数据表里对应年份的报道数量。一个健康的数据集,在大事件爆发月的报道量应该有明显跃升。

第三层是分布校验。按年度、行业分组看报道量均值和中位数,正常情况下应该呈逐年缓慢上升或者随市场热度波动的趋势。如果某个年份突然从几千跳到几百万,八成是网络媒体口径在某一年扩大了来源范围。这种结构性变化不是你公司层面的处理能解决的,必须通过数据商或者来源标记去识别。

5. 我用这类数据踩过的实用坑

5.1 关注度不是情绪:两个最易混淆的概念

这是我在论文评审里见过最多的一种混淆。“媒体关注度”只回答“有没有人报道”,不回答“报道者态度是好是坏”。一家公司可能因为业绩暴雷获得极高关注度,但新闻内容几乎全是负面的;另一家公司可能因为发布重磅利好也获得高关注度。这两类情况在“媒体报道次数”这个维度上数值可能接近,但经济含义完全相反。

如果你的研究假设涉及媒体基调,那就必须另外引入情感分析数据或者文本情绪数据,替成“正面报道数量”“负面报道数量”,而不能在“报道总数”上直接做解释。否则遇到股价下跌、崩盘风险这类被解释变量,报道总数系数符号很容易出现悖论。这一点写论文时最好用一小节单独交代清楚,审稿人非常看重测量的有效性。

5.2 转载计数:多算出来的热度

新闻转载是媒体关注度数据里最麻烦的问题。一条关于上市公司的新闻稿发出后,几十家财经网站和客户端都会原样转发,从公司信息传播角度看,这些转载确实扩大了信息的覆盖面;但从“独立报道”角度看,它们本质上是同一条内容的重复计数。

两种口径没有绝对对错,但你必须知道自己用的是哪一种。我用过一个比较折中的方案:主回归用“去重后的独立报道数量”,稳健性检验用“包含转载的媒体提及次数”。如果你的数据商没有提供去重标识,有一个近似处理是按“新闻标题”去重,完全相同的标题视为同一篇报道。这个方法不完美,但能在很大程度上避免某一条被无限转载的新闻主导整年数据。

5.3 大文件读不进去的应对

2007到2024年的日度媒体数据,全量行数通常在千万级左右,用Excel直接打开会卡到怀疑人生。日常处理我建议用Python或者R,把清洗后的数据转成parquet格式,读取速度快很多,而且能保留日期类型和中文文本编码。如果团队里有人习惯Stata,记得把最终生成的年度面板导出成dta格式,中文变量名在旧版Stata里容易乱码,保险起见变量名用英文命名,标签里保留中文说明。

我见过不少同学因为数据量太大,直接用数据商提供的年度汇总表跑回归,结果审稿人要求补充稳健性检验时才发现年度表里没有日度信息,无法重构变量。所以哪怕最终只用年度数据,也建议把日度表在本地保留一份,跑模型前做一次自聚合对比。

5.4 论文里“数据来源与口径”这一段怎么写

如果你最后要写论文,数据口径这部分别偷懒,把下面几个要素写清楚基本就稳了:

  • 媒体来源范围:哪些报纸、哪些网络财经媒体、是否包含股吧等社交平台;
  • 统计口径:标题提及还是正文提及,是否去重;
  • 时间范围与频率:2007-2024年日度、年度数据;
  • 公司样本范围:是否剔除金融行业、是否剔除ST、是否剔除当年上市的新股;
  • 数据处理方式:如何对公司简称做映射、如何匹配股票代码、如何做缩尾处理。

这套写法的好处是,别人拿到论文能完整复现你的数据处理过程。很多经验丰富的审稿人不会看你的回归表格前先看这段,如果这段写得含糊,后面结论再漂亮也会被质疑。

最后分享一个我自己的习惯:任何媒体关注度数据,我都会额外构造一个“是否连续多日被媒体报道”的变量。它比单纯的年度报道总量更能体现“持续关注”这个理论概念。你可以从日度数据里先统计每家公司每段连续出现报道的天数,取全年最长连续天数作为新变量,放进稳健性检验里,往往比总量指标更有故事性。数据到手的价值,很多时候取决于你还能从字段里挖出什么,而不只是直接拿现成列跑回归。这类细节,数据商不会写在说明文档里,只能自己动手试出来。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询