R語言函數與模型學習筆記:殘差相關性零均值檢驗及跨期相關係數(圖)

R語言函數與模型學習筆記:殘差相關性零均值檢驗及跨期相關係數(圖)
使用極大似然估計模型參數的假設包括:殘差正態性、包含截距時的零均值、以及聯合正態分佈。若是咱們更進一步假設待估計方程矩陣的方差-協方差矩陣爲對稱矩陣,那麼就須要進行殘差獨立性檢驗。正態性檢驗方法不少,包括偏度、峯度和樣本分佈等參數檢驗,在normtest、nortest和normwhn包中有許多進行進行正態檢驗的方法,且函數使用簡單。咱們今天推送的代碼就是爲了方便解決殘差零均值和相關性檢驗的——cor.test()函數不能直接對殘差矩陣進行。所以咱們今天提供這樣一個函數,能夠將其直接嵌套進ML估計的模型之中,對殘差矩陣進行檢驗。html

R語言函數與模型學習筆記:殘差相關性零均值檢驗及跨期相關係數(圖)
1. 原始代碼
residual.test=function(x){
library(psych)
library(psych)
colnames(x)=c(1:ncol(x))
rownames(x)=c(1:nrow(x))
cor.test.hommel=corr.test(x,adjust="hommel")
cor.test.BH=corr.test(x,adjust="BH")
residual.zero.p=c(NA)
for(i in 1:ncol(x)){
residual.zero.p[i]=t.test(x[,i])$p.value
}
result=list(cor.test.hommel,cor.test.BH,residual.zero.p)
names(result)=c("cor.test.hommel###correlation test,controlling family-wise error rate",
"cor.test.BH###correlation test,controlling false discovery rate",
"residual.zero.p###zero-mean test,t test for zero mean in residuals")
return(result)
}
2. 使用說明
直接將上述函數在R console中運行,而後就可使用residual.test(x)函數對殘差矩陣進行相關性檢驗和零均值t檢驗(極大似然估計結果可以使用該函數對殘差矩陣進行分析)。在使用中x爲矩陣,列爲變量,行爲個體或時間。核心函數corr.test()來自於psych包(所以須要加載該包),相關性檢驗分別對Family-wise error rate和False discovery rate進行調整。在返還的相關係數矩陣和伴隨機率矩陣中,上三角部分爲調整後的值,下三角爲調整前的值。
3. 案例
返回結果包含三部分:(1)控制FWER的相關性檢驗結果,見第一個數值矩陣(相關係數)和第二個數值矩陣(機率值);(2)控制FDR的相關性檢驗結果,見第三個數值矩陣(相關係數)和第四個數值矩陣(機率值);(3)零均值檢驗結果,最後一行的數值向量。
R語言 函數與模型:跨期相關係數
前言
在研究和學習過程當中,咱們老是須要不斷的調用各種函數,R軟件的強大就在於集成了大量的包可供用戶使用。然而,困難在於對於數據清洗和簡單的統計分析,咱們很難從Task Views中尋找到想要的函數——Task Views對包的分類管理頗有效。好比咱們今天推送的「跨期相關係數矩陣」。所以,咱們會根據自身的實踐經驗,分享本身寫出來的R語言函數,以解決這些簡單卻繁瑣的問題。因爲經驗有限,咱們將從本身研究領域的時間出發,不按期更新,並公佈代碼和運行結果。若在使用過程當中遇到bugs,也可直接發送留言或發送郵件給代碼做者,幫助改善自定義函數。此外,R語言須要調用許多函數完成模型的估計和假設檢驗,咱們也會推送一些自定義函數,使模型估計及假設一次性呈現,使你們能更加方便快捷的使用R軟件。
1. 跨期相關係數計算原始代碼
cor.time=function(x,y,n){
###x is matrix and y is vector,and the lag term is y###
###n is total periods of lag, while first half is the LAG###
###row of x must be variates, column of x must be time###
###n must be odd number###
###based on fBasics package###
cor.time.cross=matrix(NA,nrow(x),n)
rowname=c(NA)
colname=c(NA)
for(j in 1:nrow(x)){
for(i in 1:n){
cor.time.cross[j,i]=cor(x[j,],tslag(y,k=(n-1)/2-i),use="na.or.complete")
colname[i]=paste("periods","(",-(n+1)/2+i,")",sep="")
}
rowname[j]=paste("variate","-",j,sep="")
}
rownames(cor.time.cross)=rowname
colnames(cor.time.cross)=colname
return(cor.time.cross)
}
2. 使用說明
直接將上述函數在R console中運行,而後就可使用cor.time(x,y,n)函數計算跨期相關係數,其中x爲變量矩陣,列爲時間(個體),行爲變量,n爲領先滯後期。運行前須要加載fBasics包,由於使用了tslag()函數。
在使用前,必須將x定義爲矩陣,並按照row爲不一樣變量,col爲不一樣個體或者時間的方式排列。駱駝祥子讀後感(http://www.simayi.net/duhougan/6676.html)400字心得體會,若是有使用者習慣於col爲變量,row爲時間或者個體,那麼能夠在定義了矩陣後,使用t()函數將其轉置,y爲向量,其爲進行領先滯後操做的向量,n爲單個數值,須要定義爲奇數,由於cor.time(x,y,n)函數自動計算對稱型的領先滯後相關係數。
3. 例子
fluc[1:2,1:10]爲2*10矩陣
fluc.west.t[1:10]爲長度爲10的向量
領先滯後期爲3
cor.time()函數返回了滯後1期、當期、領先1期的相關係數,總共爲3期;
fluc.west.t爲長度爲36的向量,所以使用matrix()函數將其定義爲1*36的矩陣
fluc.nonwest.t爲長度爲36的向量
領先滯後期爲共爲5
cor.time()函數返回了滯後2期、滯後1期、當期、領先1期和領先2期的相關係數,總共爲5期;
特別提醒:
在使用上面的代碼時,必定要將哪一個是進行滯後操做的變量銘記於心,由於跨期相關分析中,領先滯後變量不一樣,實際分析(如順週期/逆週期分析,經濟週期中領先和滯後關係)的結果將徹底相反。函數

相關文章
相關標籤/搜索