如何在具有 100 个因变量的线性模型中指定公式,而不必在 R 中显式编写它们

How to specify formula in linear model with 100 dependent variables without having to write them explicitly in R

问题是 (a) 为 ATM Widthrawals 中的日内需求建模,以及 (b) 创建未来需求的预测区间。一天有 144 个 10 分钟的时间段,我的数据集是每个时间段内的 ATM widthrawals 数量。这是一张图表,因此您可以大致了解我在说什么。

我的数据集还有其他数据(主要是虚拟数据),例如工作日和假日。出于此 post 的目的,我使用以下 data.frame 作为我的数据集的表示(它只有 6 个时间段,在 00:10 和 01:00 之间,而不是全天)

df <- data.frame(H0010=1, H0020=2, H0030=3, H0050=4, H0050=5, H0100=6,
                 WeekDay=7, Holiday=8)

我想到的第一个想法是拟合线性回归。更准确地说,多元多元线性回归。但是因为我有 144 个因变量(每 10 分钟一个时间段一个)而不是只有 6 个,所以我在 R 中的代码会非常长:

lm.fit <- lm(cbind(H0010, H0020, H0030, H0050, H0050, H0100,
                   H0200, H0210, H0220, H0230, H0240, H0250,

                  (and in goes on and on till midnight)

                   H2310, H2320, H2330, H2340, H2350, H2359) 
                  ~ WeekDay + Holiday, data = df)

有没有一种方法可以编写模型公式而不必指定所有 144 个因变量?

对于如何使用其他方法解决此问题的任何其他想法,我也很感激(尽管上面提到了这个 post 的问题)。

编辑: 我的数据集由因变量(交易数量)和作为因素的虚拟变量组成。因此,解决方案 lm(cbind(-Weekday, -Holiday) ~ Weekday + Holiday, data=df) 不起作用。

当然,您可以通过指定要排除的变量来 select 个变量:

lm(cbind(-WeekDay, -Holiday) ~ WeekDay + Holiday, data=df)

编辑:

这个怎么样?我也包含了一个更真实的数据框。

df <- data.frame(H0010=rnorm(100, 1, 1), H0020=rnorm(100, 2, 1), 
             H0030=rnorm(100, 3, 1), H0050=rnorm(100, 4, 1), 
             H0050=rnorm(100, 5, 1), H0100=rnorm(100, 6, 1),
             WeekDay=factor(c(rep(seq(1,7), 14), 1, 2)),
             Holiday=factor(rbinom(100, 1, prob = .05)))


y <- as.matrix(df[,1:6])
x <- model.matrix(~df$WeekDay+df$Holiday)
lm(y~0+x) #suppress intercept, as it's in the model.matrix
f <- sprintf("cbind(%s) ~ WeekDay + Holiday", paste(names(df)[1:6], collapse = ", "))
lm(f, data = df)