[英]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.