对于R中的每个变量具有不同预测因子的多元回归

时间:2016-07-07 14:24:02

标签: r time-series regression linear-regression lm

我有一个时间序列矩阵Y。行数是观察数。我还有一个预测变量矩阵X。我想对特定于这些列的预测变量的Y列进行回归。 1&0和39的逻辑矩阵显示i - th变量是否应在j个预测变量上回归。

例如:

y1 <- c(1, 2, 3, 5, 7, 3, 2, 1)
y2 <- c(5, 1, 3, 1, 3, 4, 5, 3)
y3 <- c(1, 3, 4, 5, 1, 2, 1, 2)
x1 <- c(2, 5, 4, 2, 1, 3, 6, 7)
x2 <- c(1, 5, 1, 3, 4, 2, 1, 3)

Y <- cbind(y1, y2, y3)
X <- cbind(x1, x2)

logical <- matrix(c(1,1,0,1,0,1), 3, 2)
lm <- lm(Y ~ ??? - 1)

此处,y1应仅在x1x2y2仅在x1y3 x2上进行回归仅

我试图在lm函数中指定模型,但我无法这样做。在$coefficients结果中,我希望&#34; 0&#34;当变量未在j预测变量上回归时。

是否可以在没有严重脏环的情况下这样做?

1 个答案:

答案 0 :(得分:1)

不幸的是,你不能用一个公式来做。您必须使用for循环或lapply()来完成此任务。继续这个:

y1 <- c(1, 2, 3, 5, 7, 3, 2, 1)
y2 <- c(5, 1, 3, 1, 3, 4, 5, 3)
y3 <- c(1, 3, 4, 5, 1, 2, 1, 2)
x1 <- c(2, 5, 4, 2, 1, 3, 6, 7)
x2 <- c(1, 5, 1, 3, 4, 2, 1, 3)

flst <- c(y1 ~ x1 + x2, y2 ~ x1, y3 ~ x2)  ## formula list
lmlist <- lapply(flst, lm)  ## linear model list

首先收集列表中的所有公式,然后使用lapply循环遍历它们。最后,lmlist中将有三个线性模型。使用lmlist[[1]]提取第一个。

lmlist[[1]]
#Call:
#FUN(formula = X[[i]])

#Coefficients:
#(Intercept)           x1           x2  
#     4.2972      -0.6521       0.4592