使用ar1模型进行面板回归

时间:2018-03-12 03:34:45

标签: r plm

请原谅我的天真。我不确定这种类型的模型是什么 - 也许是面板回归。

想象一下,我有以下数据:

n <- 100
x1 <- rnorm(n)
y1 <- x1 * 0.5 + rnorm(n)/2

x2 <- rnorm(n)
y2 <- x2 * 0.5 + rnorm(n)/2

x3 <- rnorm(n)
y3 <- x3 * 0.25 + rnorm(n)/2

x4 <- rnorm(n)
y4 <- x4 * 0 + rnorm(n)/2

x5 <- rnorm(n)
y5 <- x5 * -0.25 + rnorm(n)/2

x6 <- rnorm(n)
y6 <- x6 * -0.5 + rnorm(n) + rnorm(n)/2

x7 <- rnorm(n)
y7 <- x7 * -0.75 + rnorm(n)/2

foo <- data.frame(s=rep(1:100,times=7),
                  y=c(y1,y2,y3,y4,y5,y6,y7),
                  x=c(x1,x2,x3,x4,x5,x6,x7),
                  i=rep(1:7,each=n))

其中y和x是在100秒内测量的单个AR1时间序列(我对时间变量使用's'而不是't')平均分为组(i)。我希望将它们建模为:

y_t = b_0 + b_1(y_ {t-1})+ b_2(x_ {t})+ e_t

但考虑到小组(i):

y_ {it)= b_0 + b_1(y_ {it-1})+ b_2(x_ {it})+ e_ {it}

我想知道b_2(x上的系数)是否是y的良好预测因子以及该系数如何随组变化。我还希望按组知道R2和RMSE,并在给定x_i和i的情况下预测y_i。分组变量可以是离散的或连续的。

我认为这种类型的问题叫做面板回归,但它不是我熟悉的术语。在R中使用plm是一个很好的方法来研究这个问题吗?

根据以下评论,我想这是一个简单的开始:

require(dplyr)
require(broom)
fitted_models <- foo %>% group_by(grp) %>% do(model = lm(y ~ x, data = .))
fitted_models %>% tidy(model)
fitted_models %>% glance(model)

1 个答案:

答案 0 :(得分:0)

由于您不在模型中包含固定或随机效果,我们正在处理可以使用lmplm估算的合并OLS(POLS)。

让我们构建100组的示例数据,每组100个观察结果:

df <- data.frame(x = rnorm(100 * 100), y = rnorm(100 * 100), 
                 group = factor(rep(1:100, each = 100)))
df$ly <- unlist(tapply(df$y, df$group, function(x) c(NA, head(x, -1))))
head(df, 2)
#            x          y group         ly
# 1  1.7893855  1.2694873     1         NA
# 2  0.8671304 -0.9538848     1  1.2694873

然后

m1 <- lm(y ~ ly + x:group, data = df)

是具有共同自回归系数的模型,具有x的依赖于群体的效果:

head(coef(m1)[-1:-2], 5)
#    x:group1    x:group2    x:group3    x:group4    x:group5 
# -0.02057244  0.06779381  0.04628942 -0.11384630  0.06377069 

这允许你绘制它们等等。我想你要做的一件事是测试那些系数是否相等。这可以按如下方式完成:

m2 <- lm(y ~ ly + x, data = df)
library(lmtest)
lrtest(m1, m2)
# Likelihood ratio test
#
# Model 1: y ~ ly + x:group
# Model 2: y ~ ly + x
#   #Df LogLik  Df  Chisq Pr(>Chisq)
# 1 103 -14093                      
# 2   4 -14148 -99 110.48     0.2024

因此,我们不能拒绝x的效果与预期相同。