python - Python 中的泰尔 U 1/泰尔 U 2 预测系数公式

标签 python metrics forecast

我在 Python 代码中实现 Theil U 预测系数公式时遇到问题。问题之一是我发现了该公式的几个不同版本。 我想尝试的 3 个公式如下:

Theil's U 1 和 2 来自一篇论文,该论文讽刺性地讨论了 Theil's U 预测系数的困惑:https://journals.sagepub.com/na101/home/literatum/publisher/sage/journals/content/mrja/1973/mrja_10_4/002224377301000413/20181220/002224377301000413.fp.png_v03

与 Oracle 帮助页面不同的 Theil's U 预测系数版本:https://docs.oracle.com/cd/E40248_01/epm.1112/cb_statistical/frameset.htm?ch07s02s03s04.html

如果预测只是简单的滞后预测,则这三个公式的值应为 1。因此,让我们考虑以下简单列表:list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 并假设每个值的预测都是前一个值。

这是我的 3 个公式的代码:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

num = (sum([(list[row] - list[row - 1]) ** 2 for row in [1, 2, 3, 4, 5, 6, 7, 8, 9]]) / 9) ** 0.5
denum = ((sum([list[row] ** 2 for row in [1, 2, 3, 4, 5, 6, 7, 8, 9]]) / 9) ** 0.5) + \
    ((sum([list[row - 1] ** 2 for row in [1, 2, 3, 4, 5, 6, 7, 8, 9]]) / 9) ** 0.5)

UI = num / denum
print(UI)

num = sum([(list[row - 1] - list[row]) ** 2 for row in [1, 2, 3, 4, 5, 6, 7, 8, 9]]) ** 0.5
denum = (sum([list[row] ** 2 for row in [1, 2, 3, 4, 5, 6, 7, 8, 9]])) ** 0.5

UII = num / denum
print(UII)

num = sum([((list[row - 1] - list[row]) / list[row - 1]) ** 2 for row in [1, 2, 3, 4, 5, 6, 7, 8, 9]]) ** 0.5
denum = sum([((list[row] - list[row - 1]) / list[row - 1]) ** 2 for row in [1, 2, 3, 4, 5, 6, 7, 8, 9]]) ** 0.5

U_Oracle = num / denum
print(U_Oracle)

以下是 3 个结果:

0.08224166442822099

0.15309310892394865

1.0

我不明白为什么不是所有 3 个值都等于 1。我的代码有问题吗?

最佳答案

Briemel 的论文被称为澄清,实际上非常令人困惑,因为它说 Ai 和 Pi 是实际值和预测值。这不是真的,您应该使用这些值作为“变化率”(引用自论文本身如果用 Ai 和 Pj 表示观察到的变化和 预测的变化...),这将需要您为其编写另一个代码。

长话短说,Oracle 实现就是您正在寻找的正确选择!

关于python - Python 中的泰尔 U 1/泰尔 U 2 预测系数公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54931514/

相关文章:

python - 我应该使用 "self"来定义不需要从外部访问的类实例化变量/对象吗?

python - model.fit() 是否在每个时期后重置指标?如何手动重置指标?

r - 如何计算 DRPS(离散秩概率分数)

python - Statsmodels "predict"函数 - 为什么我无法预测样本外的情况? :(

r - 由数据框中的列名引起的 arima xreg 参数错误

Python - 如何将列映射到字母序列?

python - Flasgger - 上传文件

python - 添加列表和字符串并导入当前年份

project-management - 如何衡量软件开发绩效?

c++ - 具有余弦距离的 mlpack 最近邻?