[SAS UE]不使用proc model實現Newey and West調整

2021-01-14 SAS之家

本文章參考文獻

Newey, W. and West, K. (1987) A Simple, Positive Semi-Definite, Heteroscedastic and Autocorrelation Consistent Covariance Matrix. Econometric, 55, 703-708.


在Newey and West (1987) 的文章中,提出了當數據存在自相關時,需要進行殘差的調整,這個調整的方程式如下式


其中,

由該定義來看,其實這表示原來數值的方差不能夠精準計算出t統計量,要加入自相關的修正項,就是原來數值的方法,則是自相關的修正像(協方差),我們可以將這個式子逐漸拓展,以便更好了解它的意義

假設數列Y_t,存在一階自相關(m=1),則他的一階修正的Newey and West的方差可以表示為


存在二階自相關(m=2),則他的二階修正的Newey and West的方差可以表示為

存在三階自相關(m=3),則他的三階修正的Newey and West的方差可以表示為


藉由這樣的反覆循環,我們只要使用

proc means 可以算出y的方差

以及lag函數求出Y的滯後期數數值,就能夠利用proc corr可以算出他們的協方差

最終算出Newey and West修正後的標準偏誤

以下為我們開發出來的宏語法使用代碼

data a;   do i=1 to 10000;   a=rannor(1);   b=rannor(2);   output;   end;run;
%let lag=4;
proc model data=a; parms aa; exogenous a ;instruments / intonly; a =aa;fit a / gmm kernel=(bart, %eval(&lag+1), 0); quit;
proc model data=a; parms aa; exogenous b ;instruments / intonly; b =aa;fit b / gmm kernel=(bart, %eval(&lag+1), 0); quit;


為了先檢驗算出的調整後標準誤與GMM一致,我們先檢驗滯後4期的結果,首先給出變量a的Newey and West調整四期的結果


接下來為變量b的結果


/*
file 要進行檢定的文件time 時間變量很重要nwvar 要進行檢定的變量nwlag 要調整的期數生成的文件為stderr
*/%newey_west(file=a,time=i,nwvar=a b,nwlag=4);
proc print data=stderr noobs;run;

結果可以發現,修正四期的結果與proc model運行的結果一致,接下來測試3期的結果

%let lag=3;
proc model data=a; parms aa; exogenous a ;instruments / intonly; a =aa;fit a / gmm kernel=(bart, %eval(&lag+1), 0); quit;proc model data=a; parms aa; exogenous b ;instruments / intonly; b =aa;fit b / gmm kernel=(bart, %eval(&lag+1), 0); quit;%newey_west(file=a,time=i,nwvar=a b,nwlag=3);
proc print data=stderr noobs;run;

這些結果也是完全相同的,我們重複測試了20期,結果都是與proc model計算出來的數值一致,而且該宏語法可以同時針對多個變量一同檢定,以下為我們宏語法的完整文件。


%macro newey_west(file,time,nwvar,nwlag);proc sort data=&file(keep=&time &nwvar) out=nw(keep=&nwvar);by &time;run;proc means data=nw noprint;   var &nwvar;   output out=nw00  var=&nwvar;run;
data _null_; b=countc("&nwvar",' ')+1; call symputx('iannwn',b);run;%do nwn=1 %to &iannwn;data _null_; call symputx('nwnw',scan("&nwvar",&nwn));run; %if &nwn=1 %then %do; proc delete data=nw0; run; %end; %else %do; proc delete data=nw1; run; %end; %do nnlag=1 %to &nwlag; data nwnw; set nw(keep=&nwnw); nwnw=lag&nnlag(&nwnw); run; proc corr data=nwnw cov outp=nwnw(keep=_type_ &nwnw where=(_type_='COV')) noprint; var &nwnw nwnw; run; data nwnw; set nwnw(drop=_type_); &nwnw=&nwnw*2*(1+&nwlag-&nnlag)/(1+&nwlag); if _n_=2; run; %if &nwn=1 %then %do; proc append base=nw0 data=nwnw force; quit; %end; %else %do; proc append base=nw1 data=nwnw force; quit; %end; %end; %if &nwn>1 %then %do; data nw0; merge nw0 nw1; run; %end;%end; data nw00; set nw00 nw0; run; proc delete data=nw0 nw1 nwnw nw; run; proc means data=nw00 noprint; var _freq_ &nwvar; output out=nw00(drop=_type_ _freq_) sum=NW_TTT &nwvar; run; %do nwn=1 %to &iannwn;data _null_; call symputx('nwnw',scan("&nwvar",&nwn));run;data nw00; set nw00; &nwnw=(&nwnw/nw_TTT)**0.5; run; %end; data stderr; set nw00; drop nw_ttt; run;proc delete data=nw00;run;%mend;

如果喜歡我們的介紹,還請多多支持。


[小天使專區]  有需要SAS之家協助,歡迎在小天使專區留言。



SAS大學版安裝包-->"大學版"

SAS之家群助手-->"群小助手"

本人兩本著作代碼-->"作品代碼"


相關焦點

  • SAS時間序列模型預測未來航班數量
    以下就使用sashelp.air這份時間序列數據集進行預測模型的建立。 proc gplot data=sashelp.air;plot air*date;symbol c=red i=spline v=dot;run;通過趨勢圖不難發現其存在長期趨勢並且隨著季節存在周期性的變動
  • 多因子回歸檢驗中的 Newey-West 調整
    在 portfolio test 中,通過時序回歸,並應用 Newey-West 調整對多個 regressors 的回歸係數的標準誤同時修正;在 regression test 中,首先通過 T 期截面回歸得到因子的收益率時序,然後再對該時序進行 Newey-West 調整從而得到因子預期收益率的標準誤。
  • 使用srsLTE搭建4G基站
    最低成本可以使用LimeSDR Mini+PC機,也可以使用BladeRF x40或者x115來實現。如果條件允許,還是使用USRP B200mini、B210或者N210甚至X310比較舒服。srsLTE 是軟體無線電系統(SRS)的開源SDR LTE軟體套件。
  • 【已完結】西部世界 Westworld 第二季
    自己去看吧你可以使用百度網盤下載:https://pan.baidu.com/s/1cT-w6zf7vrwngs396nVRpA但是沒有第9集。也可以採用電驢下載,下載方法:【To新手】利用百度離線下載電驢連結的方法或者添加百度網盤好友:worldofwest索取。
  • SAS回歸分析教程
    樣條曲線是一種非參數回歸的曲線擬合方法。光滑樣條為分段的三次多項式,曲線在每一段內是一個三次多項式,在兩段的連接點是連續、光滑的。為擬合樣條曲線,只要選「Curves | Spline」,使用預設的GCV準則(廣義交叉核實)來選取光滑係數(光滑係數c越大,得到的曲線越光滑,但擬合同時變差,光滑係數c小的時候得到的曲線較曲折,而擬合較好),就可以在散點圖的基礎上畫出樣條曲線。
  • Deep CARs:使用Pytorch學習框架實現遷移學習
    本模型將通過神經網絡來實現目標。更準確地說,是使用一個深度神經網絡,因此得名Deep CARs(深度計算機自動額定值系統)。想要實現這一目標,需要完成兩部分的學習,第1部分:構建汽車分類器;第2部分:部署分類器。本文將著重論述第1部分內容。我們將使用一種叫做遷移學習的方法來訓練分類器。什麼是遷移學習?
  • 高可用負載均衡最佳實踐五:總體實現
    一、選擇服務商及硬體上架  由於特殊的原因,中國的網絡形成了劃江而治的格局,這導致南北互聯很大的問題,即網通和電信互訪效果極差,要達到南北用戶都能快速的訪問網站,得使用第三方的idc機房。第三方的idc機房有兩種可選,一種是雙線機房,另一種是BGP機房。這兩種機房相比較,BGP效果最佳,但價格最貴,可根據自己的資金預算和性能要求來權衡使用哪一類機房。
  • 組合元音ue,ure發音方法,不用國際音標準確朗讀英語。句型造句
    第九課 組合元音的發音方法  本文發布組合元音ue的發音方法文字教材。要學習好英語請免費看視頻和教材。視頻教您準確發音,教材幫助您記憶單詞、句子、語法。  我製作了帶快易準英語字幕的英語電視劇。對難讀詞標記4個讀音符號。
  • 使用TF2與Keras實現經典GNN的開源庫——Spektral
    該項目的主要目的是提供一個簡單但又不失靈活性的圖神經網絡(graph neural networks,GNNs) 框架。我們可以使用 Spektral 來進行網絡節點分類、預測分子特性、使用 GAN 生成新的拓撲圖、節點聚類、預測連結以及其他任意數據是使用拓撲圖來描述的任務。
  • lost in westworld(迷失在西部世界)
    第一階段,westworld籌建,到準備開放前。重要事件:阿諾德喪子;德洛麗絲自我意識產生;阿諾德自殺;福特以阿諾德的背景製造出伯納德作為自己助手,並開始認同並貫徹阿諾德的思想,在德洛麗絲身上繼續驗證「冥思」,開放westworld。第二階段,westworld開放,到威廉找遍整個westworld後,在甜水鎮見到被重置的德洛麗絲。
  • 雲伺服器如何實現的原理
    雲伺服器如何實現的原理?雲伺服器是基於雲計算技術實現,雲計算是指IT基礎設施的交付和使用模式,指通過網絡以按需、易擴展的方式獲得所需的資源(硬體、平臺、軟體)。 提供資源的網絡被稱為「雲」。「雲」中的資源在使用者看來是可以無限擴展的,並且可以隨時獲取,按需使用,按使用付費。
  • 在PyTorch中使用深度自編碼器實現圖像重建
    圖像重建有許多重要的應用,特別是在醫學領域,需要從現有的不完整或有噪聲的圖像中提取解碼後的無噪聲圖像。在本文中,我們將演示在PyTorch中實現用於重建圖像的深度自編碼器。該深度學習模型將以MNIST手寫數字為訓練對象,在學習輸入圖像的表示後重建數字圖像。自編碼器自編碼器是人工神經網絡的變體,通常用於以無監督的方式學習有效的數據編碼。
  • 如何使用LSTM在Keras中快速實現情感分析任務
    本文對 LSTM 進行了簡單介紹,並講述了如何使用 LSTM 在 Keras 中快速實現情感分析任務。長短期記憶網絡通常被稱為 LSTM,它是由 Hochreiter 和 Schmiduber 提出的,被廣泛地應用在語音識別、語言建模、情感分析和文本預測中。
  • 如何使用 Julia 語言實現「同態加密+機器學習」?
    而在這些概念背後,少不了一項技術的影子——「同態加密」。本文介紹了使用 Julia 語言進行基於同態加密數據機器學習的全過程,對於入門者具有極大的參考價值。注意:本文討論了最前沿的密碼學技術,旨在提供一種利用「Julia Computing」進行研究的視角。請不要將文中的任何示例用於生產應用程式。在使用密碼學之前一定要諮詢專業的密碼學專家。
  • 輕鬆學Pytorch-使用ResNet50實現圖像分類
    本文將會介紹如何使用torchvison的預訓練模型ResNet50實現圖像分類。然後對輸入圖像完成預處理,使用ResNet50模型實現分類預測,對預測結果解析之後,顯示標籤文本,完整的代碼演示如下: 1with open('imagenet_classes.txt') as f: 2    labels = [line.strip() for line in f.readlines()] 3 4src = cv.imread("D:/images