首页 > 软件开发 > PYTHON >

用Python(Jupyter Notebook)复刻A级论文

来源:互联网 2023-03-16 19:09:37 185

用Python(Jupyter Notebook)复刻A级论文《2刘志远·政策不确定性与企业风险承担:机遇预期效应还是损失规避效应》的部分结论。9DB办公区 - 实用经验教程分享!

用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

工具/原料

  • Python语言
  • Jupyter Notebook编写软件

方法/步骤

  • 1

    从数据库中下载各证券公司的相关数据,并进行筛选和处理。9DB办公区 - 实用经验教程分享!

    (注:数据库需登录才能使用)9DB办公区 - 实用经验教程分享!

    用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

  • 2

    下载《1995-2015中国经济政策不确定性指数(斯坦福大学和芝加哥大学联合发布)》9DB办公区 - 实用经验教程分享!

    用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

  • 2此文章未经许可获取自百度经验
  • 3

    随意新建一个文件夹,在箭头所示地方输入cmd,弹出黑框,进入控制面板;9DB办公区 - 实用经验教程分享!

    然后输入 jupyter notebook,进入网页。9DB办公区 - 实用经验教程分享!

    用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

  • 4

    进行程序的编写,主代码如下(#之后内容为备注),详细内容见截图所示:9DB办公区 - 实用经验教程分享!

    import pandas as pd9DB办公区 - 实用经验教程分享!

    import numpy as np9DB办公区 - 实用经验教程分享!

    import matplotlib.pyplot as plt9DB办公区 - 实用经验教程分享!

    import matplotlib9DB办公区 - 实用经验教程分享!

    from scipy import stats9DB办公区 - 实用经验教程分享!

    import seaborn as sns9DB办公区 - 实用经验教程分享!

    import math9DB办公区 - 实用经验教程分享!

    from math import sqrt9DB办公区 - 实用经验教程分享!

    from math import sqrt9DB办公区 - 实用经验教程分享!

    import statsmodels9DB办公区 - 实用经验教程分享!

    %matplotlib inline9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #获取1995-2015年中国经济政策不确定性指数(文件一)9DB办公区 - 实用经验教程分享!

    f = open('1995-2015中国经济政策不确定性指数(斯坦福大学和芝加哥大学联合发布).txt','rb') 9DB办公区 - 实用经验教程分享!

    epus = pd.read_table(f,names=['year','month','epu'])9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #删除文件一原有标题行9DB办公区 - 实用经验教程分享!

    epus.drop([0],axis = 0,inplace=True)9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #对文件一数据进行描述性统计9DB办公区 - 实用经验教程分享!

    epus_describe=epus["epu"].describe()9DB办公区 - 实用经验教程分享!

    epus_describe9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #获取2010年1月1日至2015年12月31日期间,企业的有关数据(文件二)9DB办公区 - 实用经验教程分享!

    company = pd.read_table("company.txt",9DB办公区 - 实用经验教程分享!

    names=['报告公布日','公司名称','息税前收入','主营业务收入'9DB办公区 - 实用经验教程分享!

    ,'总资产收益率','净资产收益率']) 9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #使用float()函数将文件一中str类型转换浮点型9DB办公区 - 实用经验教程分享!

    epus["epu"] = [float(line) for line in epus["epu"]]9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #消除数量级差异,减少计算误差9DB办公区 - 实用经验教程分享!

    epus["epu"] = epus.epu/10000.09DB办公区 - 实用经验教程分享!

    def epu(df):9DB办公区 - 实用经验教程分享!

    df["EPU"] = df.epu/10000.09DB办公区 - 实用经验教程分享!

    return df9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #将计算结果生成新的数列,并添加在原列表中9DB办公区 - 实用经验教程分享!

    epus.apply(epu,axis=1).head()9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    epus["epu"].describe()9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #将新生成的数据集储存为.csv文件9DB办公区 - 实用经验教程分享!

    epus.apply(epu,axis=1).to_csv("epu_new.csv")9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #提取excel文件中的“EPU”列,并生成list9DB办公区 - 实用经验教程分享!

    import xlrd9DB办公区 - 实用经验教程分享!

    data = xlrd.open_workbook('epu_new.xls')9DB办公区 - 实用经验教程分享!

    table = data.sheet_by_index(0)9DB办公区 - 实用经验教程分享!

    data = [table.cell(i,ord('E')-ord('A')).value for i in range(1, 247)]9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    df1 = pd.DataFrame(list(range(1,247)))9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #将data的数据储存为后缀名为.csv的文件9DB办公区 - 实用经验教程分享!

    list1=data9DB办公区 - 实用经验教程分享!

    name=df19DB办公区 - 实用经验教程分享!

    test=pd.DataFrame(index=name,data=list1)9DB办公区 - 实用经验教程分享!

    test.to_csv("test1.csv")9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #筛选出文件二中“总资产收益率”非空的数值9DB办公区 - 实用经验教程分享!

    company_notnull=company.总资产收益率[company.总资产收益率.notnull()]9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    company_notnull = [float(line) for line in company_notnull]9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    epu_groupby = epus.groupby("year")9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #将文件一按年份进行分组,并求平均值9DB办公区 - 实用经验教程分享!

    epu_groupby["epu"].mean()9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #生成中国经济政策不确定性指数的折线图9DB办公区 - 实用经验教程分享!

    epu_groupby["epu"].mean().plot.line()9DB办公区 - 实用经验教程分享!

    plt.xlabel("year")9DB办公区 - 实用经验教程分享!

    plt.ylabel("EPU")9DB办公区 - 实用经验教程分享!

    plt.savefig("中国经济政策不确定指数的年度变化趋势.png")9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #求求文件一中经济政策不确定性指数的平均值9DB办公区 - 实用经验教程分享!

    epu_mean = epus["epu"].mean()9DB办公区 - 实用经验教程分享!

    epu_mean9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #计算文件二中企业风险承担水平=总资产收益率未来累计滚动标准差9DB办公区 - 实用经验教程分享!

    def handle(self):9DB办公区 - 实用经验教程分享!

    list_new=[]9DB办公区 - 实用经验教程分享!

    value=[]9DB办公区 - 实用经验教程分享!

    while len(self)!=0:9DB办公区 - 实用经验教程分享!

    list_new.append(self.pop())9DB办公区 - 实用经验教程分享!

    while len(list_new)>=2:9DB办公区 - 实用经验教程分享!

    pro(list_new)9DB办公区 - 实用经验教程分享!

    value.append(pro(list_new))9DB办公区 - 实用经验教程分享!

    break9DB办公区 - 实用经验教程分享!

    return value9DB办公区 - 实用经验教程分享!

    def pro(self):9DB办公区 - 实用经验教程分享!

    sum1=09DB办公区 - 实用经验教程分享!

    for i in self: 9DB办公区 - 实用经验教程分享!

    #求和9DB办公区 - 实用经验教程分享!

    sum1=int(i) sum19DB办公区 - 实用经验教程分享!

    #算平均数9DB办公区 - 实用经验教程分享!

    argv=int(sum1/len(self))9DB办公区 - 实用经验教程分享!

    aa=09DB办公区 - 实用经验教程分享!

    for j in self:9DB办公区 - 实用经验教程分享!

    #计算方差9DB办公区 - 实用经验教程分享!

    aa=aa np.square(int(j)-argv)9DB办公区 - 实用经验教程分享!

    #开方得标准差9DB办公区 - 实用经验教程分享!

    RiskT1=math.sqrt(aa/len(self))9DB办公区 - 实用经验教程分享!

    return RiskT19DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    company_notnull.reverse()9DB办公区 - 实用经验教程分享!

    RiskT=handle(company_notnull)9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    df2 = pd.DataFrame(list(range(1,9342)))9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #将RiskT的数据储存为后缀名为.csv的文件9DB办公区 - 实用经验教程分享!

    list2=RiskT9DB办公区 - 实用经验教程分享!

    name=df29DB办公区 - 实用经验教程分享!

    test=pd.DataFrame(index=name,data=list2)9DB办公区 - 实用经验教程分享!

    test.to_csv("test2.csv")9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #计算企业风险承担与经济政策不确定性的相关系数9DB办公区 - 实用经验教程分享!

    def multipl(a,b):9DB办公区 - 实用经验教程分享!

    sumofab=0.09DB办公区 - 实用经验教程分享!

    for i in range(len(a)-9095):9DB办公区 - 实用经验教程分享!

    temp=a[i]*b[i]9DB办公区 - 实用经验教程分享!

    sumofab =temp9DB办公区 - 实用经验教程分享!

    return sumofab9DB办公区 - 实用经验教程分享!

    def corrcoef(x,y):9DB办公区 - 实用经验教程分享!

    n=len(x)9DB办公区 - 实用经验教程分享!

    #求和9DB办公区 - 实用经验教程分享!

    sum1=sum(x)9DB办公区 - 实用经验教程分享!

    sum2=sum(y)9DB办公区 - 实用经验教程分享!

    #求乘积之和9DB办公区 - 实用经验教程分享!

    sumofxy=multipl(x,y)9DB办公区 - 实用经验教程分享!

    #求平方和9DB办公区 - 实用经验教程分享!

    sumofx2 = sum([pow(i,2) for i in x])9DB办公区 - 实用经验教程分享!

    sumofy2 = sum([pow(j,2) for j in y])9DB办公区 - 实用经验教程分享!

    num=sumofxy-(float(sum1)*float(sum2)/n)9DB办公区 - 实用经验教程分享!

    #计算皮尔逊相关系数9DB办公区 - 实用经验教程分享!

    den=sqrt((sumofx2-float(sum1**2)/n)*(sumofy2-float(sum2**2)/n))9DB办公区 - 实用经验教程分享!

    return num/den9DB办公区 - 实用经验教程分享!

    x = RiskT9DB办公区 - 实用经验教程分享!

    y = data9DB办公区 - 实用经验教程分享!

    print (corrcoef(x,y))9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #读取新生成的有关企业风险承担与经济政策不确定性指数的csv表格9DB办公区 - 实用经验教程分享!

    huigui = pd.read_csv("test.csv",names=['epu','RiskT']) 9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    from sklearn import linear_model9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #建立线性回归模型9DB办公区 - 实用经验教程分享!

    regr = linear_model.LinearRegression()9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #拟合9DB办公区 - 实用经验教程分享!

    regr.fit(huigui['epu'].reshape(-1, 1), huigui['RiskT'])9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #得到直线的斜率——a,截距——b9DB办公区 - 实用经验教程分享!

    a, b = regr.coef_, regr.intercept_9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    print("a=",a)9DB办公区 - 实用经验教程分享!

    print("b=",b)9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    import seaborn as sns 9DB办公区 - 实用经验教程分享!

    # 使用散点图可视化x和y之间的关系,并添加一条最佳拟合直线和95%的置信带9DB办公区 - 实用经验教程分享!

    sns.pairplot(huigui, x_vars='epu', y_vars='RiskT', size=5, aspect=2.0, kind='reg')9DB办公区 - 实用经验教程分享!

    plt.show()9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    #将拟合的直线单独提出,更明显、直观9DB办公区 - 实用经验教程分享!

    plt.plot(huigui['epu'], regr.predict(huigui['epu'].reshape(-1,1)), color='red', linewidth=4)9DB办公区 - 实用经验教程分享!

    plt.show()9DB办公区 - 实用经验教程分享!

    用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

    用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

    用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

    用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

    用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

    用Python(Jupyter Notebook)复刻A级论文9DB办公区 - 实用经验教程分享!

  • 5

    得出结论:9DB办公区 - 实用经验教程分享!

    1.受数据的可用性、有效性的影响,本文只验证了假设H1a与假设H1b,证实其结果均与原论文相符合;9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    2.本文对经济政策不确定性如何影响企业风险承担进行了实证检验,经过以上数据的分析和计算,本文验证了经济政策不确定性提升了中国企业的风险承担水平。上述结果意味着,在中国制度背景下,经济政策不确定性的“机遇预期效应”在上市公司中发挥主导作用;9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    3.唯一与原论文结果差异较大的就是回归系数,虽然其对最终的结论并未造成大的影响,但对于直线的拟合、数据分布规律的分析均带来了一定的误差,分析其可能的原因,我认为应该是滚动标准差RiskT的计算结果与原论文差距较大——为了便于计算,我将未来五年滚动标准差改为了未来累计滚动标准差——使得数据分布的波动更大,便于计算的同时却也带来了较大的误差,影响了回归系数的计算。9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    4.经济政策不确定性引发企业风险承担水平的提高,表明政府在执行宏观调控职能时也要关注政策调整对企业经营产生的潜在影响。当政府决定改变现行经济政策时,要尽可能保持新政策的长期性和稳定性;9DB办公区 - 实用经验教程分享!

    9DB办公区 - 实用经验教程分享!

    5.对企业而言经济政策不确定既可能蕴含投资机遇,也可能增大投资风险。在经济政策不确定环境下,企业要保持清醒的头脑,合理研判未来的政策走势。此外,企业需要完善内部激励和决策机制,合理利用经济政策不确定下的有利机会,在激烈的市场竞争中脱颖而出。9DB办公区 - 实用经验教程分享!

  • 注意事项

    • 数据的获取比较麻烦,可根据实际情况选取有用数据
    • 计算相关系数时耗时很长,建议耐心等待

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!9DB办公区 - 实用经验教程分享!


    标签: python硬件

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码