簡體   English   中英

如何在具有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寬度原始值的數量。 這是一張圖表,因此您可以大致了解我在說什么。 一日樣品

我的數據集還具有其他數據(主要是虛擬變量),例如工作日和假日。 出於本文的目的,我使用以下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個因變量?

我也將對如何使用其他方法解決此問題有任何其他想法(盡管上面提到的問題是上述問題)。

編輯 :我的數據集由因變量(交易次數)和虛擬變量組成。 因此,解決方案lm(cbind(-Weekday, -Holiday) ~ Weekday + Holiday, data=df)不起作用。

當然,您可以通過指定要排除的變量來選擇變量:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM