我有一个时间序列矩阵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
应仅在x1
和x2
,y2
仅在x1
和y3
x2
上进行回归仅
我试图在lm
函数中指定模型,但我无法这样做。在$coefficients
结果中,我希望&#34; 0&#34;当变量未在j
预测变量上回归时。
是否可以在没有严重脏环的情况下这样做?
答案 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