900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > R语言编程学习之函数与模型:VAR与SVAR和爬虫

R语言编程学习之函数与模型:VAR与SVAR和爬虫

时间:2020-10-19 15:18:13

相关推荐

R语言编程学习之函数与模型:VAR与SVAR和爬虫

R语言编程学习之函数与模型:VAR与SVAR和爬虫(图)

SVAR模型与VAR模型在模型设定形式上的区别是,VAR模型只包含变量的滞后项,而SVAR模型还包含了变量的当期项。SVAR模型还可以避免联立方程模型可能产生的偏倚问题。因此我们今天给出SVAR在R软件中的使用说明。需要特别说明的是,今天我们并非给出一个新的函数以简化SVAR参数设定,因为我们所使用的vars包中VAR()函数和SVAR函数的参数设定已经十分简洁了。

1. 函数说明

vars包(可以通过TaskView查看具有相似函数的其它包)中的函数很多,按照VAR的分析程序可以分为估计和检验两类函数:估计函数有VAR()和SVAR()函数;检验函数有VARselect()、irf()、fevd()等,分别用于模型选择、脉冲响应和方差分解。同时,vars包还提供了arch.test()、causality()、normality.test()、serial.test()、stability()等函数用于模型检验。

2. 案例与使用说明

#####data1包含内生变量,data2包含外生变量,下面直接给出了data1和data2的原始数据

#####VARselect()函数给出了不同滞后阶数模型的信息值,其中y设定内生变量数据集,exogen设定外生变量数据集,lag.max设定最大滞后阶数,我们设定为6,type设定确定性部分的类型,可选择的包括const截距,trend趋势,both同时包含截距和趋势,none不包含截距和趋势

> VARselect(y=data1,lag.max=6,type="const",exogen=data2)

$selection

AIC(n) HQ(n) SC(n) FPE(n)

4 4 4 5

$criteria

123 4 5 6

AIC(n) 9.588271 10.07365 7.637841 -Inf -Inf -Inf

HQ(n) 9.579220 10.06007 7.619740 -Inf -Inf -Inf

SC(n) 10.437931 11.34814 9.337162 -Inf -Inf -Inf

FPE(n) 16817.321879 41461.93286 12450.487405 NaN 0 0

#####VAR()函数给出了VAR的估计结果,我们将其保存在变量rvar中。VAR()函数设定的参数包括,y为内生变量,exogen为外生变量,ic为可选的信息准则,p为滞后阶数,type为确定性部分,其与VARselect()函数相同。我们通过names()函数查看rvar中VAR()的回归结果。由于VAR()保存为S3类型,可以直接通过$调用,如rvar$varresult调用第一个list。

> rvar=VAR(y=data1,p=3,type="const",exogen=data2,ic=c("AIC","SC","HQ","FPE"))

> names(rvar)

[1] "varresult" "datamat" "y""type""p""K"

[7] "obs""totobs" "restrictions" "call"

#####SVAR()函数给出了SVAR的估计结果,我们将其保存在变量rsvar中。在使用SVAR估计之前,我们需要定义A矩阵,即模型内生变量的当期影响。需要说明的是,由于内生变量方程中不可能与自身的当期值相关,因此A矩阵的对角线全部为1,其它为带估计参数。我们首先定义了一个全部为NA的3*3矩阵(3个内生变量),然后将对角线元素全部设定为1,保存在amat变量中。SVAR()需要设置的参数包括已经回归的VAR()对象,即上一步中的rvar,定义的A矩阵,即amat,估计方法选择的是直接使用极大似然估计“direct”。同样的,我们可以通过names()查看估计结果的名称,其中包括A矩阵和B矩阵的系数及系数标准误。SVAR的关键在于Amat矩阵,如果已经知道某些变量不存在当期相关,则可以通过amat[i,j]=0将该元素固定。

> amat=matrix(NA,3,3)

> amat[1,1]=amat[2,2]=amat[3,3]=1

> rsvar=SVAR(x=rvar,estmethod="direct",Amat=amat,Bmat=NULL,)

#####irf()和fevd()函数的设置相似,需要设置VAR()或者SVAR()估计对象,我们使用的是保存在rvar中的VAR()估计对象。irf()函数需要设定冲击变量和相应变量的名称,我们可以通过names()函数查看内生变量数据集中的变量名,n.ahead设定冲击响应的时期数,如果不设置则默认全部内生变量都进行分析。fevd()的参数设置与此一致。注意,irf()和fevd()返回的是脉冲响应和方差分解的数值,而不是图形。我们通过plot()函数简单的呈现。

> rirf=irf(rvar,impulse="m1",response="cpii",n.ahead=20)

> names(rirf)

[1] "irf" "Lower" "Upper" "response" "impulse" "ortho" "cumulative"

[8] "runs" "ci""boot" "model"

> rfevd=fevd(rvar,n.ahead=20)

> names(rfevd)

[1] "m1" "gdp" "cpii"

> plot(rirf$irf$m1,type="l")

#####因果分析函数、异方差检验函数和正态性检验函数均是以VAR()或者SVAR()的回归结果为基础,因此我们以保存了VAR()回归结果的变量rvar尽心说明。

> causality(rvar)

> arch.test(rvar,lags.single=5,lags.multi=2)

> normality.test(rvar)

最后说明,在vars包中也包含进行VEC和SVEC分析的函数,使用方法与VAR和SVAR一样。钢铁是怎样炼成的(/duhougan/6680.html)读后感400字心得体会,同时,MTS包中也提供了进行VAR、SVAR和VARX等分析的函数。进行多变量自回归分析的函数包可以在TaskView中进行查看。

R语言 函数与模型:爬虫

网络数据的价值不言而喻。越来越多的研究开始利用各种程序语言从网络爬取数据。爬取网页数据有两个难题——解析网页和文本提取。对“规矩”网页进行解析是很简单的事情:在edge浏览器中选择F12开发人员工具或者在Google Chrome中选择page view source都可以直接浏览网页代码。R中有现存的包进行网页解析,我推荐的是rvest包,因为不需要进行太多参数设置即可完成工作。配合管道函数%>%可以使网页结点解析更加简单。我们的任务就是在一堆代码中找到需要的数据,并查看数据前后的结点,<>和</>表示结点的开始和结束(在爬取数据的时候甚至都不需要知道结点符号表示的含义)。爬取数据的难点在于对解析出来的字符对象进行文本分割和提取,这需要爬虫的作者(使用爬虫的人)掌握基本的文本分析技巧。我的经验是,直接对字符进行定位,并根据起止位置分割。

爬虫的基本框架是:

网页解析

结点提取

字符串清洗和分割

提取并保存目标文本

翻页(循环)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。