赤脚论坛[原临沮论坛]

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7731|回复: 4

R语言函数与模型学习笔记:残差相关性零均值检验及跨期相关系数(图)

[复制链接]
     
鲜花(1) 鸡蛋(0)
荆楚不肖生 发表于 2018-7-26 15:38 | 显示全部楼层 |阅读模式 来自 湖北省宜昌市 电信

赶紧注册,享受更多功能!查看帖内大图!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
R语言函数与模型学习笔记:残差相关性零均值检验及跨期相关系数(图)
使用极大似然估计模型参数的假设包括:残差正态性、包含截距时的零均值、以及联合正态分布。如果我们更进一步假设待估计方程矩阵的方差-协方差矩阵为对称矩阵,那么就需要进行残差独立性检验。正态性检验方法很多,包括偏度、峰度和样本分布等参数检验,在normtest、nortest和normwhn包中有许多进行进行正态检验的方法,且函数使用简单。我们今天推送的代码就是为了方便解决残差零均值和相关性检验的——cor.test()函数不能直接对残差矩阵进行。因此我们今天提供这样一个函数,可以将其直接嵌套进ML估计的模型之中,对残差矩阵进行检验。
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=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进行调整。在返还的相关系数矩阵和伴随概率矩阵中,上三角部分为调整后的值,下三角为调整前的值。

R语言函数与模型学习笔记:残差相关性零均值检验及跨期相关系数(图)

R语言函数与模型学习笔记:残差相关性零均值检验及跨期相关系数(图)
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=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为不同个体或者时间的方式排列。骆驼祥子读后感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期;
特别提醒:
在使用上面的代码时,一定要将哪个是进行滞后操作的变量铭记于心,因为跨期相关分析中,领先滞后变量不同,实际分析(如顺周期/逆周期分析,经济周期中领先和滞后关系)的结果将完全相反。

百姓地盘、草根平台!手机访问论坛,更方便更快捷!
点击修改为自己的签名)本站客服QQ:
     
鲜花(19) 鸡蛋(0)
荆山野女 发表于 2018-7-26 16:57 | 显示全部楼层 来自 广东省清远市 电信
姐顶的不是寂寞,是楼主的帖!
百姓地盘、草根平台!手机访问论坛,更方便更快捷!
点击修改为自己的签名)本站客服QQ:
     
鲜花(2) 鸡蛋(0)
子非鱼 发表于 2018-7-26 16:58 | 显示全部楼层 来自 广东省揭阳市 电信
赞一个!
百姓地盘、草根平台!手机访问论坛,更方便更快捷!
点击修改为自己的签名)本站客服QQ:
     
鲜花(4) 鸡蛋(0)
年轻就是资本 发表于 2018-7-27 13:13 | 显示全部楼层 来自 湖北省宜昌市 移动
小手一抖,金币拿走。
百姓地盘、草根平台!手机访问论坛,更方便更快捷!
点击修改为自己的签名)本站客服QQ:
     
鲜花(7) 鸡蛋(0)
冰凌儿 发表于 2018-7-27 16:00 | 显示全部楼层 来自 湖北省宜昌市 电信
百姓地盘、草根平台!手机访问论坛,更方便更快捷!
点击修改为自己的签名)本站客服QQ:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|认证|简介|联系我们|赤脚网 ( 鄂ICP备18015422号 )

GMT+8, 2024-10-7 10:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

网站内容仅代表网友个人观点,非本站认同之观点!删帖请用删帖卡,或联系【 bbs@yalj.net 】我们会尽快处理。
声明:严禁任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
技术管理:远安坤哥    主办单位:远安县临沮网信息管理中心
                   
快速回复 返回顶部 返回列表