出现True

发布日期:2024-06-21 14:20    点击次数:150

出现True

一、经济政策不细则性方针

经济政策不细则性(Economic Policy Uncertainty, EPU) 频繁是用来筹商经济中政策不细则性水平的一种度量方式。本文参考

Huang, Yun, and Paul Luk. "Measuring economic policy uncertainty in China." China Economic Review 59 (2020): 101367
1.1 新闻数据库

新闻数据集 | 含 东说念主民日报/经济日报/光明日报 等 7 家媒体(2023.12.18)

东说念主民日报rmrb:        1946-05-15 ~ 2023-12-18光明日报gmrb:        1985-01-01 ~ 2023-12-18东说念主民政协报rmzxb:     2008-01-02 ~ 2023-12-18经济日报jjrb:        2008-01-27 ~ 2023-12-18中国后生报zqb:       2005-01-01 ~ 2023-12-18南边周末nfzm:        2008-01-02 ~ 2023-5-31
1.2 算法
Step-1. 遴荐了114家中国大陆的报纸,其中包括北京、上海、广州和天津等主要城市的报纸。Step-2. 关于每家报纸,搜索包含以下三个要害词之一的著作:经济、不细则性和政策。这些要害词的华文和英文对照不错在论文的表格1中找到。Step-3. 将每个月的著作数目按照知足第一个要害词的著作数目进行缩放。Step-4. 将时刻序列尺度化,使其在2000年1月至2011年12月本领的尺度差为1。 保证总计媒体筹谋得到的epu是可比的。Step-5. 对十家报纸的月度序列进行浮浅平均,并将方针归一化,使其在2000年1月至2011年12月本领的平均值为100。

淌若是欺诈一个媒体源进行 类 EPU 方针的构建, 只需用到算法中的前 3 个要领。

免费得到EPU指数文献 rmrb_epu.csv ,涵盖1946-05-31 ~ 2023-12-18https://textdata.cn/blog/2023-12-20-measure-china-economic-policy-uncertainty/rmrb_epu.csv二、基本学问2.1 放哨数据

大邓的 新闻数据集 | 含 东说念主民日报/经济日报/光明日报 等 7 家媒体(2023.12.18)中的总计媒体, 均有csv形状, 内含 date 和 text 两个字段, csv中的每行是一条新闻。

import pandas as pddf = pd.read_csv('rmrb.csv.gzip', compression='gzip')df.head()

图片

2.2 日历滚动
df['date'] = pd.to_datetime(df['date'])print('东说念主民日报: ', df['date'].min().date(), '~', df['date'].max().date())

Run

东说念主民日报:  1946-05-15 ~ 2023-12-18
2.3 按日历进行分组

使用日历进行分组, 常见的周期是年Y、月M、日D。以 df.groupby(pd.Grouper(key='date', freq='M')) 为例, 会得到不同 year-month 及对应的dataframe 。不雅察 freq 建造成 Y、M、D, 代码启动成果,领略代码字段名含义。

for date, Yfreq_df in df.groupby(pd.Grouper(key='date', freq='Y')):    print(date, type(Yfreq_df))

Run

1946-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1947-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1948-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1949-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1950-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1951-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1952-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>......2016-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2017-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2018-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2019-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2020-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2021-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2022-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>
for date, Mfreq_df in df.groupby(pd.Grouper(key='date', freq='M')):    print(date, type(Mfreq_df))

Run

1946-05-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-06-30 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-07-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-08-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-09-30 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-10-31 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-11-30 00:00:00 <class 'pandas.core.frame.DataFrame'>......2023-05-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-06-30 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-07-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-08-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-09-30 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-10-31 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-11-30 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-12-31 00:00:00 <class 'pandas.core.frame.DataFrame'>
for date, Dfreq_df in df.groupby(pd.Grouper(key='date', freq='D')):    print(date, type(Dfreq_df))

Run

1946-05-15 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-05-16 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-05-17 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-05-18 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-05-19 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-05-20 00:00:00 <class 'pandas.core.frame.DataFrame'>1946-05-21 00:00:00 <class 'pandas.core.frame.DataFrame'>......2023-12-11 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-12-12 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-12-13 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-12-14 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-12-15 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-12-16 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-12-17 00:00:00 <class 'pandas.core.frame.DataFrame'>2023-12-18 00:00:00 <class 'pandas.core.frame.DataFrame'>
2.4 文本操作

dataframe中字段淌若是字符串形状, 不错用 .str属性, 该str属性具有以下本性功能。

#某词word_pattern1 = '不细则'#某类词word_pattern2 = '不细则|不解确|波动|震动'#是否含某词   df['text'].str.contains(word_pattern1)  #是否含某类词   df['text'].str.contains(word_pattern2)  #某词出现的次数 df['text'].str.count(word_pattern1)  #某类词出现的次数 df['text'].str.count(word_pattern2)  

杭州一楠五金工具有限公司 "Segoe UI", 江苏格林电器有限公司 Arial,肇东市利匹净水器有限公司 freesans, sans-serif;font-size: 15px;text-wrap: wrap;text-size-adjust: auto;line-height: 1.75em;">在 EPU 的筹谋中,使用的是contains。另外  即不错是

uncertainty_pattern = '不细则|不解确|波动|震动|悠扬|不稳|未明|不轩敞|不明晰|未明晰|难料|难以预想|难以预测|难以瞻望|难以料到|无法预想|无法预测|无法瞻望|无法料到|不行预想|不行预测|不行瞻望|不行料到'#每条新闻是否出现 uncertainty_pattern , 出现True,不出现Falsedf['text'].str.contains(uncertainty_pattern)

Run

0          False1          False2          False3          False4          False           ...  2014656    False2014657    False2014658    False2014659    False2014660    FalseName: text, Length: 2014661, dtype: bool

通过加总True的个数,得到出现 uncertainty_pattern 的新闻纪录数

df['text'].str.contains(uncertainty_pattern).sum()

Run

56358
2.4 布尔值的筹谋

逻辑且 操作,

economic_pattern = '经济|金融'uncertainty_pattern = '不细则|不解确|波动|震动|悠扬|不稳|未明|不轩敞|不明晰|未明晰|难料|难以预想|难以预测|难以瞻望|难以料到|无法预想|无法预测|无法瞻望|无法料到|不行预想|不行预测|不行瞻望|不行料到'policy_pattern = '政策|轨制|体制|策略|法子|划定|规例|条例|政事|在野|政府|政委|国务院|东说念主大|东说念主民代表大会|中央|国度主席|总文书|国度指点东说念主|总理|校正|整改|整治|规管|监管|财政|税|东说念主民银行|央行|赤字|利率'    economic_mask = df['text'].fillna('').str.contains(economic_pattern)policy_mask = df['text'].fillna('').str.contains(policy_pattern)uncertainty_mask = df['text'].fillna('').str.contains(uncertainty_pattern)print('enconomic新闻条数: ', economic_mask.sum())print('policy新闻条数: ', policy_mask.sum())print('uncertainty新闻条数: ', uncertainty_mask.sum())print()print('enconomic&policy同期出现条数: ', (economic_mask & policy_mask).sum())print('enconomic&policy&uncertainty同期出现条数: ', (economic_mask & policy_mask & uncertainty_mask).sum())

Run

enconomic新闻条数:  617182policy新闻条数:  1246681uncertainty新闻条数:  56358enconomic&policy同期出现条数:  510791enconomic&policy&uncertainty同期出现条数:  34332
三、EPU筹谋函数

原料 freesans, sans-serif;font-size: 15px;text-wrap: wrap;text-size-adjust: auto;line-height: 1.75em;">有了以上基本学问,就不错使用大邓诡计的 cal_epu_index 函数,该函数可针对纵情一个新闻数据(csv形状) 筹谋 EPU 。

需要防备, 因为是对一个媒体进行筹谋,是以莫得进行尺度化和归一化。

是以媒体1、媒体2筹谋得到的两个 epu1、epu2 进行数值大小的比拟是没特有趣的。淌若你有多个媒体,筹谋得到多个 epu1 、epu2、 epu3, 思筹谋 mean_epu , 那么铭刻已矣论文算法里的 step4, 再扩充 step5 求均值。

def cal_epu_index(csvf, freq='M'):    """    csvf  新闻csv文献的位置, 含date和text两个字段,每行是一条新闻    freq  epu的粒度, 年Y、月M、日D        #economic、uncertainty、policy整理自    #Huang, Yun, and Paul Luk. "Measuring economic policy uncertainty in China." China Economic Review 59 (2020): 101367        复返dataFrame, 含字段date和epu    """    import pandas as pd    economic_pattern = '经济|金融'    uncertainty_pattern = '不细则|不解确|波动|震动|悠扬|不稳|未明|不轩敞|不明晰|未明晰|难料|难以预想|难以预测|难以瞻望|难以料到|无法预想|无法预测|无法瞻望|无法料到|不行预想|不行预测|不行瞻望|不行料到'    policy_pattern = '政策|轨制|体制|策略|法子|划定|规例|条例|政事|在野|政府|政委|国务院|东说念主大|东说念主民代表大会|中央|国度主席|总文书|国度指点东说念主|总理|校正|整改|整治|规管|监管|财政|税|东说念主民银行|央行|赤字|利率'        df = pd.read_csv(csvf, compression='gzip')    df['date'] = pd.to_datetime(df['date'])        datas = []    for date, period_df in df.groupby(pd.Grouper(key='date', freq=freq)):        data = dict()        data['date'] = date #month是datetime型日历,一般为每个月的临了一日        economic_mask = period_df['text'].fillna('').str.contains(economic_pattern)        policy_mask = period_df['text'].fillna('').str.contains(policy_pattern)        uncertainty_mask = period_df['text'].fillna('').str.contains(uncertainty_pattern)        #在出现经济词的新闻中,统计出现政策、不细则新的比例        data['epu'] = (economic_mask & policy_mask & uncertainty_mask).sum() / economic_mask.sum()        datas.append(data)    raw_epu_df = pd.DataFrame(datas)    return raw_epu_df
#东说念主民日报rmrb_EPU_df = cal_epu_index(csvf='rmrb.csv.gzip', freq='M')rmrb_EPU_df

图片

gmrb_EPU_df = cal_epu_index(csvf='gmrb.csv.gzip', freq='M')gmrb_EPU_df

图片

四、可视化4.1 df.plot

df.plot使用的前提是要将日历字段错误为index, 知足底下形态的数据不错使用.plot画图

rmrb_EPU_df.set_index('date')

图片

rmrb_EPU_df.set_index('date').plot(figsize=(10, 5), title='EPU Index \nsource: China Renmin Daily News')

图片

4.2 复古华文

复古华文的代码,无脑copy

import matplotlib.pyplot as pltimport matplotlibimport scienceplotsimport platformimport matplotlib_inlinematplotlib_inline.backend_inline.set_matplotlib_formats('png', 'svg')plt.style.use(['science', 'no-latex', 'cjk-sc-font'])system = platform.system()  # 得到操作系统类型if system == 'Windows':    font = {'family': 'SimHei'}elif system == 'Darwin':    font = {'family': 'Arial Unicode MS'}else:    font = {'family': 'sans-serif'}matplotlib.rc('font', **font)  # 建造全局字体rmrb_EPU_df.set_index('date').plot(figsize=(10, 5))plt.title('经济政策不细则性EPU \nsource: 东说念主民日报', size=15)plt.xticks(size=12)plt.xlabel('年份', size=13)plt.ylabel('EPU值', size=13)plt.show()

图片

4.3 比拟两个媒体的走势

两个新闻媒体掩饰的时刻段不同,

东说念主民日报rmrb:       1946-05-15 ~ 2023-12-18光明日报gmrb:       1985-01-01 ~ 2023-12-18

截取1985-01-01之后的数据,进行比拟。

rmrb_EPU_df2 = rmrb_EPU_df[rmrb_EPU_df['date']>'1985-01-01']gmrb_EPU_df2 = gmrb_EPU_df[gmrb_EPU_df['date']>'1985-01-01']rmrb_EPU_df2.set_index('date').plot(figsize=(10, 5))plt.title('月度经济政策不细则性EPU \nsource: 东说念主民日报', size=15)plt.xticks(size=12)plt.xlabel('年份', size=13)plt.ylabel('EPU值', size=13)plt.show()

图片

gmrb_EPU_df2.set_index('date').plot(figsize=(10, 5))plt.title('月度经济政策不细则性EPU \nsource: 光明日报', size=15)plt.xticks(size=12)plt.xlabel('年份', size=13)plt.ylabel('EPU值', size=13)plt.show()

图片

光明日报数据中缺失了1989年了,是以图中有空挡。然则从两个图中不错看到 epu 的走势节略一致。

动作过后诸葛的大邓, 从东说念主民日报和光明日报筹谋出的EPU不错看到, 23年不应该投资,应该保守点。

嗯嗯, 同期动作投资小白,东说念主群中的反向方针东说念主,本年本东说念主收益率-20%,大师旺盛不~

精选本色

数据集 | 国省市三级gov职责诠释文本

数据集  |  东说念主民日报/经济日报/光明日报 等 7 家新闻数据集

代码 | 使用「新闻数据」生成观点词频「面板数据」

代码 | 使用 3571w 专利苦求数据集构造面板数据

LIST | 文分内析代码汇总

LIST | 社科(料理)文本挖掘文献汇总

LIST | 可供社科(料理)限度使用的数据集原料

本站仅提供存储奇迹,总计本色均由用户发布,如发现存害或侵权本色,请点击举报。

栏目分类



Powered by 首页-新名宝仓储有限公司 @2013-2022 RSS地图 HTML地图

Copyright 站群 © 2013-2024 <"SSWL"> 版权所有