我在Python代码中实现theilu预测系数公式时遇到了一个问题。其中一个问题是我发现了这个公式的几个不同版本。
我想尝试的3个公式如下:
如果预测只是一个幼稚的滞后预测,这三个公式的值应该为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。我的代码有问题吗?在