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()等函數用於模型檢驗。html

R語言編程學習之函數與模型:VAR與SVAR和爬蟲(圖)
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
1           2            3    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同樣。鋼鐵是怎樣煉成的讀後感(http://www.simayi.net/duhougan/6680.html)400字心得體會,同時,MTS包中也提供了進行VAR、SVAR和VARX等分析的函數。進行多變量自迴歸分析的函數包能夠在TaskView中進行查看。
R語言 函數與模型:爬蟲
網絡數據的價值不言而喻。愈來愈多的研究開始利用各類程序語言從網絡爬取數據。爬取網頁數據有兩個難題——解析網頁和文本提取。對「規矩」網頁進行解析是很簡單的事情:在edge瀏覽器中選擇F12開發人員工具或者在Google Chrome中選擇page view source均可以直接瀏覽網頁代碼。R中有現存的包進行網頁解析,我推薦的是rvest包,由於不須要進行太多參數設置便可完成工做。配合管道函數%>%可使網頁結點解析更加簡單。咱們的任務就是在一堆代碼中找到須要的數據,並查看數據先後的結點,<>和</>表示結點的開始和結束(在爬取數據的時候甚至都不須要知道結點符號表示的含義)。爬取數據的難點在於對解析出來的字符對象進行文本分割和提取,這須要爬蟲的做者(使用爬蟲的人)掌握基本的文本分析技巧。個人經驗是,直接對字符進行定位,並根據起止位置分割。
爬蟲的基本框架是:
網頁解析
結點提取
字符串清洗和分割
提取並保存目標文本
翻頁(循環)編程

相關文章
相關標籤/搜索