Python 到 R:删除趋势
Python to R: Removing Trends
我正在尝试将此 Python 代码“翻译”为 R:
# create a differenced series
def difference(dataset, interval=1):
diff = list()
for i in range(interval, len(dataset)):
value = dataset[i] - dataset[i - interval]
diff.append(value)
return diff
# invert differenced forecast
def inverse_difference(last_ob, value):
return value + last_ob
# define a dataset with a linear trend
data = [i+1 for i in range(20)]
print(data)
# difference the dataset
diff = difference(data)
print(diff)
# invert the difference
inverted = [inverse_difference(data[i], diff[i]) for i in range(len(diff))]
print(inverted)
这应该导致输出:
1 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
2 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
3 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
这是我尝试过的方法,但我在以下方面非常失败:
# Create a differenced series
difference <- function(dataset, interval=1) {
my_diff <- list()
for (i in seq(interval, length(dataset))) {
value <- dataset[i] - dataset[i-interval]
c(my_diff, value)
}
return(my_diff)
}
# Invert differences forecast
inverse_difference <- function(last_ob, value) {
return(value + last_ob)
}
# Defining a dataset with a linear trend
my_data <- seq(1,20)
my_data
# Difference the dataset
my_diff <- difference(my_data)
my_diff
# Invert the difference
inverted <- inverse_difference(my_data[i], my_diff[i])
正确的做法是什么?
原始 Python 代码可在以下位置找到:https://machinelearningmastery.com/remove-trends-seasonality-difference-transform-python/
我相信你在寻找下面的代码
# Create a differenced series
difference <- function(dataset, interval=1) {
my_diff <- NULL
for (i in seq(interval, length(dataset))) {
value <- dataset[i] - dataset[i-interval]
my_diff <- c(my_diff, value)
}
return(my_diff)
}
# Invert differences forecast
inverse_difference <- function(last_ob, value) {
return(cumsum(value) + last_ob)
}
# Defining a dataset with a linear trend
my_data <- seq(1,20)
my_data
# Difference the dataset
my_diff <- difference(my_data)
my_diff
# Invert the difference
inverted <- inverse_difference(my_data[1], my_diff)
my_data
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
my_diff
# [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
inverted
# [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
我正在尝试将此 Python 代码“翻译”为 R:
# create a differenced series
def difference(dataset, interval=1):
diff = list()
for i in range(interval, len(dataset)):
value = dataset[i] - dataset[i - interval]
diff.append(value)
return diff
# invert differenced forecast
def inverse_difference(last_ob, value):
return value + last_ob
# define a dataset with a linear trend
data = [i+1 for i in range(20)]
print(data)
# difference the dataset
diff = difference(data)
print(diff)
# invert the difference
inverted = [inverse_difference(data[i], diff[i]) for i in range(len(diff))]
print(inverted)
这应该导致输出:
1 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
2 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
3 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
这是我尝试过的方法,但我在以下方面非常失败:
# Create a differenced series
difference <- function(dataset, interval=1) {
my_diff <- list()
for (i in seq(interval, length(dataset))) {
value <- dataset[i] - dataset[i-interval]
c(my_diff, value)
}
return(my_diff)
}
# Invert differences forecast
inverse_difference <- function(last_ob, value) {
return(value + last_ob)
}
# Defining a dataset with a linear trend
my_data <- seq(1,20)
my_data
# Difference the dataset
my_diff <- difference(my_data)
my_diff
# Invert the difference
inverted <- inverse_difference(my_data[i], my_diff[i])
正确的做法是什么?
原始 Python 代码可在以下位置找到:https://machinelearningmastery.com/remove-trends-seasonality-difference-transform-python/
我相信你在寻找下面的代码
# Create a differenced series
difference <- function(dataset, interval=1) {
my_diff <- NULL
for (i in seq(interval, length(dataset))) {
value <- dataset[i] - dataset[i-interval]
my_diff <- c(my_diff, value)
}
return(my_diff)
}
# Invert differences forecast
inverse_difference <- function(last_ob, value) {
return(cumsum(value) + last_ob)
}
# Defining a dataset with a linear trend
my_data <- seq(1,20)
my_data
# Difference the dataset
my_diff <- difference(my_data)
my_diff
# Invert the difference
inverted <- inverse_difference(my_data[1], my_diff)
my_data
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
my_diff
# [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
inverted
# [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20