[关闭]
@fanxy 2020-10-23T15:03:19.000000Z 字数 6359 阅读 8876

数量分析软件应用:R语言

樊潇彦 复旦大学经济学院 数量软件


考试.zip

bop_iip.csv472.5kB
Exam20201023.R1.2kB

准备工作

  1. 资料下载:

  2. 软件安装:

    • 下载安装 RRstudio
    • Rstudio中依次选定 File --> New File --> .R,新建一个R语言脚本(看起来像个.txt文件),把code直接考到脚本里;
    • 改一下工作目录 setwd("D:\\..."),选中某段程序,点右上角的 run 就能运行了。
  3. 工作界面

    • 左上:程序和变量窗口,右侧有运行Run等命令键
    • 右上:显示内存中的变量名(Enviroment)和历史命令(History)
    • 左下:控制台(Console窗口,可以用 Ctrl+L清空
    • 右下:工作目录(File)、作图(Plot)、管理包(Packages)、帮助(Help)等。

第一讲 R语言基础

第二讲 数据处理

第三讲 数据可视化与编程基础

课堂练习

2020年10月9日

下载数据并解压到工作目录:
20201009.rar

  1. #---------- 1. 准备工作 ------------------------------------
  2. setwd("D:\\...") # 设置工作目录,数据也存在该目录下
  3. library(tidyverse)
  4. # library(dplyr)
  5. # library(tidyr)
  6. # library(ggplot2)
  7. library(readxl)
  8. #---------- 2. GDP与增长率 ---------------------------------
  9. data=read.csv("gdp.csv")
  10. str(data)
  11. gdp=data%>%
  12. rename(year=Sgnyea,GDP=Gdp0101)%>%arrange(year)%>%
  13. mutate(gr= GDP/lag(GDP)-1)%>%
  14. select(year,GDP,gr)%>%
  15. gather(var,value,-year)
  16. ggplot(gdp,aes(year,value))+
  17. geom_line(size=1)+ # 做线图,宽度为1
  18. facet_wrap(~var,scales="free")+ # 分面
  19. geom_vline(xintercept=c(1978,2001,2008), colour="black", linetype="dotted")+ # 加纵线
  20. labs(title="",x="",y="")+ # 图名与纵横坐标名称
  21. scale_x_continuous(breaks=seq(1952,2017,by=13))+
  22. theme_bw()+ # 黑白底
  23. theme(legend.position="bottom",
  24. strip.text= element_text(size=12), # 分面字号,纵横分面用element_text.x()和element_text.y()
  25. axis.text.x = element_text(size = 11), # 横轴字号
  26. axis.text.y = element_text(size = 11)) # 纵轴字号
  27. #---------- 3. 产业结构 ---------------------------------
  28. share=data.frame(var=paste("sh",1:3,sep=""), # 指标英文名称
  29. var_cn=factor(c("第一产业","第二产业","第三产业"), # 指标中文名称
  30. levels=c("第一产业","第二产业","第三产业"),
  31. ordered=T),
  32. stringsAsFactors = F)
  33. gdp_sh=data%>%
  34. rename(year=Sgnyea,gdp=Gdp0101)%>%
  35. mutate(sh1=Gdp0102/gdp,sh2=Gdp0103/gdp,sh3=Gdp0106/gdp)%>%
  36. select(year,sh1:sh3)%>%
  37. gather(var,share,-year)%>%
  38. left_join(share,by="var")%>%
  39. arrange(year,var_cn)
  40. ggplot(gdp_sh,aes(year,share,color=var_cn))+
  41. geom_line(size=1)+
  42. labs(title="历年GDP产业结构",x="",y="")+
  43. scale_colour_manual(values=c("green","red","blue"))+ # 设定线条颜色
  44. scale_x_continuous(breaks=seq(1952,2017,by=5))+
  45. scale_y_continuous(limits=c(0.05,0.55), breaks=seq(0.05,0.55,by=0.1),
  46. labels = scales::percent)+ # 纵轴为百分比
  47. guides(color=guide_legend(title=NULL))+ # 去掉颜色标签的title
  48. theme_bw()+
  49. theme(legend.position="bottom", # 颜色标签置于底部
  50. legend.text=element_text(size=12), # 标签字号12
  51. axis.text.x = element_text(size = 11),
  52. axis.text.y = element_text(size = 11))
  53. #---------- 4. 城乡居民收入 ---------------------------------
  54. ruub = read_excel("CME_Consmp3.xls") # 读取数据
  55. colnames(ruub)=c("year","inc_ru","inc_ub","incid_ru","incid_ub","engel_ru","engel_ub") # 改变量名
  56. ruub= ruub%>%
  57. select(-incid_ru,-incid_ub)%>% # 去掉 incid_ru incid_ub 两个指标
  58. gather(var,value,-year, na.rm=T)%>% # 将数据变为 year var value 三列
  59. mutate(region=sub(".*_","",var),
  60. var=sub("_.*","",var)) # 生成 region = ru, ub 和 var = inc, engel
  61. # 在一张图中画出城乡居民人均收入的线图
  62. ggplot(ruub%>%filter(var=="inc"), aes(year,value,color=region))+geom_line()
  63. # 在一张图中画出城乡居民恩格尔曲线的线图
  64. ggplot(ruub%>%filter(var=="engel"), aes(year,value,color=region))+geom_line()
  65. # 按 var 分面作图,比较城乡居民人均收入和恩格尔曲线
  66. ggplot(ruub, aes(year,value, color=region))+geom_line()+
  67. facet_wrap(~var,scales="free")

2020年10月16日:检验巴萨效应

下载数据:20201016.rar

  1. #---------- 0. 准备工作 ---------------------------------------
  2. setwd("D:\\...")
  3. install.packages("ggrepel") # geom_text_repel命令,自动调整标记文本
  4. library(tidyverse)
  5. library(readxl)
  6. library(ggrepel)
  7. #---------- 1. 国家信息 ---------------------------------
  8. countryinfo=read_excel("countryinfo.xlsx")
  9. country6=c("China","Japan","United Kingdom","Germany","France","United States")
  10. #---------- 2. BIS实际汇率指数 ---------------------------------
  11. # BIS "Effective exchange rate indices (monthly)"
  12. # https://www.bis.org/statistics/full_data_sets.htm
  13. re_ori=read.csv("BISWEB_EERDATAFLOW_csv_col.csv")
  14. # colnames(re_ori)[689] # 截至日期2020.08
  15. str(re_ori[,1:8])
  16. table(re_ori[,3])
  17. re=re_ori%>%
  18. filter(EER_TYPE=="R", EER_BASKET=="B")%>%
  19. rename(iso2=REF_AREA,country=Reference.area)%>%
  20. select(iso2,country,X1964.01:X2020.08)%>%
  21. gather(time,re,-iso2,-country, na.rm =T)%>%
  22. mutate(year=as.numeric(substring(time,2,5)))%>%
  23. group_by(iso2,country,year)%>%
  24. summarise(re=mean(re))%>%
  25. group_by()%>%
  26. left_join(countryinfo,by="iso2")
  27. g_re=re%>%
  28. filter(country %in% country6)%>%
  29. mutate(label=ifelse(year==2020,country_cn,""))
  30. ggplot(g_re,aes(year,re,color=country_cn))+geom_line(size=1)+
  31. geom_text_repel(aes(label=label))+
  32. labs(title="",x="",y="")+guides(linetype=guide_legend(NULL))+
  33. scale_x_continuous(breaks = seq(1994,2020,2))+ # 纵轴连续
  34. theme_bw()+
  35. theme(legend.position="non",
  36. strip.text= element_text(size=11), # 分面字号,纵横分面用element_text.x()和element_text.y()
  37. axis.text.x = element_text(size = 11), # 横轴字号
  38. axis.text.y = element_text(size = 11)) # 纵轴字号
  39. summary(re)
  40. data_re=re%>%spread(year,re)%>% # 生成回归所用数据
  41. mutate(grre=`2017`/`1994`-1)%>% # PWT数据截至到2017年
  42. select(iso3,grre)
  43. #---------- 3. PWT实际人均GDP ---------------------------------
  44. # Penn World Table version 9.1
  45. # https://www.rug.nl/ggdc/productivity/pwt/
  46. pwt=read_excel("pwt91.xlsx",sheet="Data")
  47. str(pwt)
  48. pwt=pwt%>%
  49. mutate(rgdppa=rgdpe/pop)%>%filter(!is.na(rgdppa))%>%
  50. rename(iso3=countrycode)%>%
  51. select(year,iso3,country,rgdppa)%>%
  52. left_join(countryinfo,by="iso3")
  53. g_pwt=pwt%>%
  54. filter(country %in% country6)%>%
  55. mutate(label=ifelse(year==1992,country_cn,""))
  56. ggplot(g_pwt,aes(year,rgdppa,color=country_cn))+geom_line(size=1)+
  57. geom_text_repel(aes(label=label))+
  58. labs(title="",x="",y="")+guides(linetype=guide_legend(NULL))+
  59. scale_x_continuous(breaks = seq(1952,2017,5))+ # 纵轴连续,中国数据从1952年开始
  60. theme_bw()+
  61. theme(legend.position="non",
  62. strip.text= element_text(size=11),# 分面字号,纵横分面用element_text.x()和element_text.y()
  63. axis.text.x = element_text(size = 11), # 横轴字号
  64. axis.text.y = element_text(size = 11)) # 纵轴字号
  65. data_pwt=pwt%>%filter(year>=1994)%>%
  66. spread(year,rgdppa)%>%
  67. mutate(grgdppa=`2017`/`1994`-1)%>% # 汇率数据中国从1994年开始
  68. select(iso3,country_UN,country_cn,grgdppa)
  69. #---------- 4. 合并数据,检验BS效应 ---------------------------------
  70. data=merge(data_re,data_pwt,by="iso3",all=T)%>%
  71. filter(!is.na(grre) & !is.na(grgdppa))%>%
  72. arrange(country_cn)%>%
  73. select(iso3,country_cn,country_UN,grre,grgdppa)
  74. ggplot(data,aes(grgdppa,grre))+geom_point()+geom_smooth(method="lm")+
  75. geom_text_repel(aes(label=country_cn))+
  76. labs(title="检验巴拉萨-萨缪尔森效应(1994-2017)",x="实际人均GDP增长",y="实际汇率指数增长")+
  77. theme_bw()+
  78. theme(strip.text= element_text(size=11),# 分面字号,纵横分面用element_text.x()和element_text.y()
  79. axis.text.x = element_text(size = 11), # 横轴字号
  80. axis.text.y = element_text(size = 11)) # 纵轴字号
  81. regbs=lm(grre~grgdppa,data)
  82. summary(regbs)

第四讲 概率统计与统计学习基础(选读)

4.1 概率统计基础

4.2 统计学习基础

第五讲 计量回归基础与应用(选读)

5.1 计量回归基础

5.2 广义线性回归与面板数据分析

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注