我花了很多时间寻找一个可以运行Pesaran(2007)单位根测试的特殊包(假设横截面依赖性不同于其他大多数)并且我没有找到。所以,我决定手动完成;但是,我不知道我哪里出错了,因为我的结果与Microsoft Excel的结果非常不同(非常容易完成)。
我的数据框架由22个国家/地区组成,每日价格指数为506。以下是使用Pesaran(2007)单位根测试运行的模型:
(i)只有拦截
其中$ \ overline {Y} $是每个国家/地区观察时的横截面平均值$ t $和$ b $是我们感兴趣的系数,因为它可以让我们计算ADF检验统计量然后确定该过程是否静止。
我以下列方式构建了这些变量:
(德尔塔)Y(t)的
dif.yt = diff(yt)
## yt is the object containing all the observations for a specific country
## (e.g. Australia)
Y(T-1)
yt.lag.1 = lag(yt, -1)
Y(巴)(T-1)
ybar.lag.1 = lag(c(rowMeans(x)), -1)
## x is the object containing my entire data frame
(德尔塔)Y(巴)(T-1)
dif.ybar.lag.1 = diff(ybar.lag.1)
(德尔塔)Y(巴)(T-2)
dif.ybar.lag.2 = diff(lag(c(rowMeans(x)), -2))
(德尔塔)Y(T-1)
dif.yt.lag.1 = diff(yt.lag.1)
(德尔塔)Y(T-2)
dif.yt.lag.2 = diff(lag(yt, -2)
在单独构建每个变量之后,我运行线性回归
reg = lm(dif.yt ~ yt.lag.1[-1] + ybar.lag.1[-1] + dif.ybar.lag.1 +
dif.ybar.lag.2 + dif.yt.lag.1 + dif.yt.lag.2)
summary(reg)
很明显,我的回归方程中的解释变量长度不同,所以我想知道R中是否有一种方法可以使所有变量长度相等(可能带有函数)。
另外,我想知道我使用的程序是否正确以及是否有更优化的方法。
答案 0 :(得分:1)
library(dynlm)
#object class is a zoo or ts
reg = dynlm(d(yt) ~ (L(yt, 1) + L(ybar,1) + d(L(ybar,1) + ....
data = ~yourdata, start = .... other args)
summary(reg)
有关该套餐的更多详情:http://cran.r-project.org/web/packages/dynlm/dynlm.pdf