0 r time-series
我正在尝试使用 3 年前的每日价格数据集来预测每日电力市场价格,我们想要纠正一些季节性影响,因为我们无法预测价格,我们想要做一个虚拟来区分一周中的每一天,如每周一、每周二等。
有人可以解释一下如何在 R 中制作虚拟模型以区分一周中的日子吗?我的数据集是每日价格,带有日期。太感谢了。
您不必这样做,在 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)