如何用 R 制作假人

0 r time-series

我正在尝试使用 3 年前的每日价格数据集来预测每日电力市场价格,我们想要纠正一些季节性影响,因为我们无法预测价格,我们想要做一个虚拟来区分一周中的每一天,如每周一、每周二等。

有人可以解释一下如何在 R 中制作虚拟模型以区分一周中的日子吗?我的数据集是每日价格,带有日期。太感谢了。

Pen*_*ght 5

您不必这样做,在 R 中,您可以使用as.factor()将变量视为分类变量:

set.seed(784)
week <- sample(1:7, 50, rep=T)
y    <- rnorm(50)

# To treat week as a factor:
m1 <- lm(y ~ as.factor(week))
summary(m1)
Run Code Online (Sandbox Code Playgroud)

结果:

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)
(Intercept)        0.3148     0.3417   0.921    0.362
as.factor(week)2   0.2059     0.5029   0.410    0.684
as.factor(week)3   0.3623     0.5293   0.684    0.497
as.factor(week)4  -0.1308     0.4678  -0.280    0.781
as.factor(week)5   0.6916     0.4678   1.478    0.147
as.factor(week)6  -0.3285     0.4832  -0.680    0.500
as.factor(week)7  -0.6165     0.4555  -1.353    0.183
Run Code Online (Sandbox Code Playgroud)

但是,如果您坚持,您可以使用此命令来制作假人:

# To manually make dummies:
sun <- (week==1)
mon <- (week==2)
tue <- (week==3)
wed <- (week==4)
thu <- (week==5)
fri <- (week==6)
sat <- (week==7)

m2 <- lm(y ~ mon + tue + wed + thu + fri + sat)
summary(m2)
Run Code Online (Sandbox Code Playgroud)

结果是一样的:

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   0.3148     0.3417   0.921    0.362
monTRUE       0.2059     0.5029   0.410    0.684
tueTRUE       0.3623     0.5293   0.684    0.497
wedTRUE      -0.1308     0.4678  -0.280    0.781
thuTRUE       0.6916     0.4678   1.478    0.147
friTRUE      -0.3285     0.4832  -0.680    0.500
satTRUE      -0.6165     0.4555  -1.353    0.183
Run Code Online (Sandbox Code Playgroud)

您可能还想检查如何处理 R 中的日期,例如,您可以使用以下命令提取星期几weekdays()

x <- as.Date('3/20/2014',format='%m/%d/%Y')
weekdays(x)
Run Code Online (Sandbox Code Playgroud)

结果:

"Thursday"
Run Code Online (Sandbox Code Playgroud)