# 毎正時のタイムスタンプを作成
px <- seq(as.POSIXct('2023-01-01 01:00:00'),
          as.POSIXct('2023-01-01 12:00:00'), by = 60 * 60)

n <- length(px)
x <- 1:n

# 時系列を扱うts型オブジェクトを作成
y <- ts(x) # 原系列

y.lag1 <- lag(y, k = -1) # 1次ラグ系列
y.lag2 <- lag(y, k = -2) # 2次ラグ系列
y.lag3 <- lag(y, k = -3) # 3次ラグ系列

ts4 <- cbind(y, y.lag1, y.lag2, y.lag3)[1:n, ]

d <- as.data.frame(ts4)
d
##     y y.lag1 y.lag2 y.lag3
## 1   1     NA     NA     NA
## 2   2      1     NA     NA
## 3   3      2      1     NA
## 4   4      3      2      1
## 5   5      4      3      2
## 6   6      5      4      3
## 7   7      6      5      4
## 8   8      7      6      5
## 9   9      8      7      6
## 10 10      9      8      7
## 11 11     10      9      8
## 12 12     11     10      9
matplot(x = px, y = d, type = 'o', lty = 1:4, col = 1:4, pch = 1:4, 
        main = '原系列とラグ系列', xlab = '時刻', ylab = '値')

grid()

legend('topleft', lty = 1:4, col = 1:4, pch = 1:4,
       legend = c('原系列', '1次ラグ系列', '2次ラグ系列', '3次ラグ系列'))

# 毎正時のタイムスタンプを作成
px <- seq(as.POSIXct('2023-01-01 01:00:00'),
          as.POSIXct('2023-01-01 12:00:00'), by = 60 * 60)

n <- length(px)
x <- 1:n

# 時系列を扱うts型オブジェクトを作成
y <- ts(x) # 原系列

y.lag1 <- lag(y, k = -1) # 1次ラグ系列
y.lag2 <- lag(y, k = -2) # 2次ラグ系列
y.lag3 <- lag(y, k = -3) # 3次ラグ系列

ts4 <- cbind(y, y.lag1, y.lag2, y.lag3)[1:n, ]

d <- as.data.frame(ts4)
d
##     y y.lag1 y.lag2 y.lag3
## 1   1     NA     NA     NA
## 2   2      1     NA     NA
## 3   3      2      1     NA
## 4   4      3      2      1
## 5   5      4      3      2
## 6   6      5      4      3
## 7   7      6      5      4
## 8   8      7      6      5
## 9   9      8      7      6
## 10 10      9      8      7
## 11 11     10      9      8
## 12 12     11     10      9
matplot(x = px, y = d, type = 'o', lty = 1:4, col = 1:4, pch = 1:4, 
        main = '原系列とラグ系列', xlab = '時刻', ylab = '値')

grid()

legend('topleft', lty = 1:4, col = 1:4, pch = 1:4,
       legend = c('原系列', '1次ラグ系列', '2次ラグ系列', '3次ラグ系列'))

# Create 1st lag and 1st lead series
y.lag1 <- lag(y, k = -1)  # 1st lag series
y.lead1 <- lag(y, k = 1)  # 1st lead series

# Combine all series into a data frame and remove rows with NA
ts_data <- cbind(y, y.lag1, y.lead1)
df <- as.data.frame(ts_data)
df <- df[complete.cases(df), ]  # Remove rows with NA
df$time <- px[1:nrow(df)]  # Adjust time column to match the data

# Plotting the series
matplot(x = df$time, y = df[, c("y", "y.lag1", "y.lead1")], type = 'o', lty = 1:3, col = 1:3, pch = 1:3,
        main = "原系列とラグ・リード系列", xlab = "時刻", ylab = "値")
grid()
legend("topright", lty = 1:3, col = 1:3, pch = 1:3, 
       legend = c("原系列", "1次ラグ系列", "1次リード系列"))