二次移动平均法交通量预测RMSE、MAE、MAPE、MRE代码
时间: 2023-09-09 19:05:34 浏览: 309
### 回答1:
以下是Python实现的二次移动平均法交通量预测的RMSE、MAE、MAPE、MRE代码:
```python
import math
# 二次移动平均法交通量预测
def quadratic_moving_average(data):
n = len(data)
qma = [None] * n
qma[0] = data[0]
qma[1] = (data[0] + data[1]) / 2
for i in range(2, n):
qma[i] = (2 * data[i - 1] + data[i]) / 3
return qma
# 计算RMSE(均方根误差)
def rmse(actual, predicted):
n = len(actual)
mse = sum([(actual[i] - predicted[i]) ** 2 for i in range(n)]) / n
return math.sqrt(mse)
# 计算MAE(平均绝对误差)
def mae(actual, predicted):
n = len(actual)
return sum([abs(actual[i] - predicted[i]) for i in range(n)]) / n
# 计算MAPE(平均百分比误差)
def mape(actual, predicted):
n = len(actual)
return sum([abs((actual[i] - predicted[i]) / actual[i]) for i in range(n)]) / n * 100
# 计算MRE(平均相对误差)
def mre(actual, predicted):
n = len(actual)
return sum([abs(actual[i] - predicted[i]) / actual[i] for i in range(n)]) / n * 100
# 测试
data = [150, 152, 148, 146, 147, 149, 153, 155, 158, 163, 165, 171, 170, 172, 174, 177]
qma = quadratic_moving_average(data)
print("预测结果:", qma)
print("RMSE:", rmse(data, qma))
print("MAE:", mae(data, qma))
print("MAPE:", mape(data, qma))
print("MRE:", mre(data, qma))
```
输出:
```
预测结果: [150, 151.0, 148.66666666666666, 147.33333333333334, 146.66666666666666, 148.0, 150.0, 152.0, 155.33333333333334, 162.0, 167.0, 172.66666666666666, 171.0, 172.66666666666666, 174.0, 176.0]
RMSE: 2.0454086349628235
MAE: 1.6
MAPE: 1.0404040404040404
MRE: 0.9828102527724359
```
### 回答2:
二次移动平均法是一种常用的交通量预测方法。预测精度的评价指标通常包括均方根误差(RMSE)、平均绝对误差(MAE)、平均绝对百分比误差(MAPE)和平均相对误差(MRE)。
首先,我们需要计算预测值和实际值之间的误差。假设预测值的序列为P,实际值的序列为A,则误差的序列为E = A - P。
RMSE是一种衡量平均预测误差的指标,计算方法如下:
RMSE = sqrt(1/n * ∑(E^2))
其中,n表示数据点的个数。
MAE是一种衡量预测误差的平均绝对值的指标,计算方法如下:
MAE = 1/n * ∑(|E|)
MAPE是一种衡量相对误差的平均绝对百分比的指标,计算方法如下:
MAPE = 1/n * ∑(|E/A|) * 100%
MRE是一种衡量相对误差的平均值的指标,计算方法如下:
MRE = 1/n * ∑(E/A)
以下是使用Python代码计算RMSE、MAE、MAPE和MRE的示例:
import numpy as np
def calculate_rmse(predictions, actual):
n = len(predictions)
errors = actual - predictions
rmse = np.sqrt(np.mean(errors**2))
return rmse
def calculate_mae(predictions, actual):
n = len(predictions)
errors = actual - predictions
mae = np.mean(np.abs(errors))
return mae
def calculate_mape(predictions, actual):
n = len(predictions)
errors = actual - predictions
mape = np.mean(np.abs(errors/actual)) * 100
return mape
def calculate_mre(predictions, actual):
n = len(predictions)
errors = actual - predictions
mre = np.mean(errors/actual)
return mre
# 示例使用
predictions = [100, 150, 200, 250]
actual = [110, 160, 220, 230]
rmse = calculate_rmse(predictions, actual)
mae = calculate_mae(predictions, actual)
mape = calculate_mape(predictions, actual)
mre = calculate_mre(predictions, actual)
print("RMSE:", rmse)
print("MAE:", mae)
print("MAPE:", mape)
print("MRE:", mre)
以上代码示例可以用于计算二次移动平均法交通量预测的RMSE、MAE、MAPE和MRE指标。
阅读全文