时间序列图不显示流体线
Time series graph does not show a fluid line
我对 r 很陌生,正在尝试执行 ARIMA 时间序列预测。我正在查看每 15 分钟的电力负荷数据。我的数据如下所示:
day month year PTE periode_van periode_tm gemeten_uitwisseling
1 1 01 2010 1 0 secs 900 secs 2636
2 1 01 2010 2 900 secs 1800 secs 2621
3 1 01 2010 3 1800 secs 2700 secs 2617
4 1 01 2010 4 2700 secs 3600 secs 2600
5 1 01 2010 5 3600 secs 4500 secs 2582
geplande_import geplande_export date weekend
1 719 -284 2010-01-01 00:00:00 0
2 719 -284 2010-01-01 00:15:00 0
3 719 -284 2010-01-01 00:30:00 0
4 719 -284 2010-01-01 00:45:00 0
5 650 -253 2010-01-01 01:00:00 0
weekday Month gu_ma
1 5 01 NA
2 5 01 NA
3 5 01 NA
4 5 01 NA
5 5 01 NA
为了创建时间序列,我使用了以下代码
library("zoo")
ZOO <- zoo(NLData$gemeten_uitwisseling,
order.by=as.POSIXct(NLData$date, format="%Y-%m-%d %H:%M:%S"))
ZOO <- na.approx(ZOO)
tsNLData <- ts(ZOO)
plot(tsNLData)
我也试过以下
NLDatats <- ts(NLData$gemeten_uitwisseling, frequency = 96)
然而,当我绘制数据时,我得到以下信息;
我该如何解决这个问题?
您的图表似乎没有任何问题,但您的数据以 15 分钟的间隔出现,并且您正在绘制 4 年的数据。所以它自然会看起来像一个深色阴影区域,因为无法在单个图中显示您系列中的数千个数据点。
如果您正在努力处理这么多数据,您可以考虑在绘图之前从您的数据框中抽样,尽管这会消除结果中的季节性和自相关性。如果您想了解一段时间内结果的平均值,这可能会有所帮助,但对于查看数据中的季节性和自相关结构则没有帮助。
请参阅下面的代码,其中使用 dplyr
和 ggplot2
绘制了一些模拟时间序列来说明这些问题。最好从模拟数据开始,然后使用您自己的数据。
require(ggplot2)
require(dplyr)
sim_data <- arima.sim(model=list(ar=.88,order=c(1,0,0)),n=10000,sd=.3)
#Too many points
data_frame(y=as.numeric(sim_data),x=1:10000) %>% ggplot(aes(y=y,x=x)) + geom_line() +
theme_minimal() + xlab('Time') + ylab('Y_t')
#Sample from data (random sample)
#However, this will remove autocorrelation/seasonality
data_frame(y=as.numeric(sim_data),x=1:10000) %>% sample_n(500) %>%
ggplot(aes(y=y,x=x)) + geom_line() + theme_minimal() + xlab('Time') + ylab('Y_t')
# Plot a subset, which preserves autocorrelation and seasonality
data_frame(y=as.numeric(sim_data),x=1:10000) %>% slice(1:300) %>%
ggplot(aes(y=y,x=x)) + geom_line() + theme_minimal() + xlab('Time') + ylab('Y_t')
我对 r 很陌生,正在尝试执行 ARIMA 时间序列预测。我正在查看每 15 分钟的电力负荷数据。我的数据如下所示:
day month year PTE periode_van periode_tm gemeten_uitwisseling
1 1 01 2010 1 0 secs 900 secs 2636
2 1 01 2010 2 900 secs 1800 secs 2621
3 1 01 2010 3 1800 secs 2700 secs 2617
4 1 01 2010 4 2700 secs 3600 secs 2600
5 1 01 2010 5 3600 secs 4500 secs 2582
geplande_import geplande_export date weekend
1 719 -284 2010-01-01 00:00:00 0
2 719 -284 2010-01-01 00:15:00 0
3 719 -284 2010-01-01 00:30:00 0
4 719 -284 2010-01-01 00:45:00 0
5 650 -253 2010-01-01 01:00:00 0
weekday Month gu_ma
1 5 01 NA
2 5 01 NA
3 5 01 NA
4 5 01 NA
5 5 01 NA
为了创建时间序列,我使用了以下代码
library("zoo")
ZOO <- zoo(NLData$gemeten_uitwisseling,
order.by=as.POSIXct(NLData$date, format="%Y-%m-%d %H:%M:%S"))
ZOO <- na.approx(ZOO)
tsNLData <- ts(ZOO)
plot(tsNLData)
我也试过以下
NLDatats <- ts(NLData$gemeten_uitwisseling, frequency = 96)
然而,当我绘制数据时,我得到以下信息;
我该如何解决这个问题?
您的图表似乎没有任何问题,但您的数据以 15 分钟的间隔出现,并且您正在绘制 4 年的数据。所以它自然会看起来像一个深色阴影区域,因为无法在单个图中显示您系列中的数千个数据点。
如果您正在努力处理这么多数据,您可以考虑在绘图之前从您的数据框中抽样,尽管这会消除结果中的季节性和自相关性。如果您想了解一段时间内结果的平均值,这可能会有所帮助,但对于查看数据中的季节性和自相关结构则没有帮助。
请参阅下面的代码,其中使用 dplyr
和 ggplot2
绘制了一些模拟时间序列来说明这些问题。最好从模拟数据开始,然后使用您自己的数据。
require(ggplot2)
require(dplyr)
sim_data <- arima.sim(model=list(ar=.88,order=c(1,0,0)),n=10000,sd=.3)
#Too many points
data_frame(y=as.numeric(sim_data),x=1:10000) %>% ggplot(aes(y=y,x=x)) + geom_line() +
theme_minimal() + xlab('Time') + ylab('Y_t')
#Sample from data (random sample)
#However, this will remove autocorrelation/seasonality
data_frame(y=as.numeric(sim_data),x=1:10000) %>% sample_n(500) %>%
ggplot(aes(y=y,x=x)) + geom_line() + theme_minimal() + xlab('Time') + ylab('Y_t')
# Plot a subset, which preserves autocorrelation and seasonality
data_frame(y=as.numeric(sim_data),x=1:10000) %>% slice(1:300) %>%
ggplot(aes(y=y,x=x)) + geom_line() + theme_minimal() + xlab('Time') + ylab('Y_t')