一、用途 systemfit()函数与包同名,可以用于估计方程组间的回归分析及检验,例如"OLS", "WLS", "似不相关回归(SUR)", "2SLS", "W2SLS", or "3SLS"。
使用前请先下载安装"systemfit"包(函数名与包同名),之后加载"systemfit"包
二、使用(以似不相关(SUR)为例)
1、首先存在两个不同的回归方程
demand <- q~p+d#方程1,q为被解释变量,p和d为解释变量,截距项被省略,β1为截距项,β2对应的为p
supply <- q~p+f+d#方程2 ,与方程1含有不同的解释变量,β6对应的为f
system <- list(demand,supply)#将两个方程放入一个列表中
fitsur<-systemfit(system, method = "SUR", data="xxx")#method为可选项,含义是接下里要进行的回归方法,默认项时OLS,可选择OLS,WLS,SUR,2SLS,W2SLS,3SLS.
summary(fitsur)#报告回归摘要,如果嫌弃太长,可以在语句中添加residCov=FALSE来省略对协方差系数的报告
2、回归方程具有统一形式
INVESTit=VALUEit+CAPITALit#假设方程具有该形式,被解释变量为时间t的i公司投资,解释变量为对应时间t的i公司的价值及资本
首先安装并加载"plm"包,这是接下来必须使用的包。
以数据x为例,假设x中包含INVEST、VALUE、CAPITAL、YEAR、FIRM五个变量
g<-pdata.frame(x,c("FIRM","YEAR"))#这一步的目的是将x数据集中的变量进行封装
gsur<-systemfit(INVEST~VALUE+CAPITAL, method="SUR", data=g)#前面是回归方程,后面是选择回归的方法及数据。
summary(gsur)#假设x数据中包含的FIRM为5家公司(也就是i=5),那这里就会汇报5个单独的方程回归结果
如果要限定五个方程的系数必须相同,可在systemfit()函数中添加pooled=TRUE
3、限制方程中系数
先加载"car"包以方便后面调用linearHypothesis函数
假定限制条件为β2+β6=0,有多种方式添加,这里只论述两种
一种是使用car包中linearHypothesis的restrict.matrix,例如:
restrict<-"β2对应的变量名称"+"β6对应的变量名称"="0"#假设如1中的方程,那么β2对应的变量名应该为p(不要忘记还有省略没写的截距项)
fitsur<-systemfit(system, method="SUR", restrict.matrix=restrict)
另一种是使用矩阵matrix和向量vector
Rmat<-matrix(0,nrow=1,ncol=7)#创建一个全部都是零值的1行7列矩阵
Rmat[1,2]<- 1#第1行第2列赋值为1
Rmat[1,6]<- 1#第1行第2列赋值为1
qvec<-c(0)#创建一个为0的向量
fitsur<-systemfit(system, method="SUR", restrict.matrix = Rmat, restrict.rhs= qvec)
4、线性约束检验
这里只论述使用linearHypothesis进行的F检验及Wald检验
和前面对应,检验回归方程的β2是否等于-β6
linearHypothesis(fitsur, Rmat, qvec, test="FT")#具体参数含义见上文,test=""这里可选不同的检验,"FT"对应的是Theil的F检验,"F"对应的是Wald检验,"Chisq"对应的是卡方检验