У меня есть два связанных набора данных, один из которых может быть немного ниже 0.
Я пытаюсь вычислить «линейную» процентную разницу между двумя.
Я написал пример кода: perc [1] - правильный метод процентного отношения, однако в двух последних случаях процентные различия не являются «линейными» для обеих сторон (ie -87 по сравнению с 700) - мне нужно, чтобы они были равны или иметь некоторую линейность в своих вычислениях, тогда как последние три метода являются линейными, я думаю. Мне нравится perc [3], так как это просто абсолютное различие и усиление, но отчасти без единиц. Может быть, [4] или [5] является наиболее точным для этого варианта использования, используя среднее значение двух в качестве знаменателя?
1, 8: [12.5, -87.5, 700.0, -700, -155.55555555555557, 155.55555555555557]
8, 1: [800.0, 700.0, -87.5, 700, 155.55555555555557, -155.55555555555557]
Статистика не является моей сильной стороной. Может ли кто-нибудь дать рациональное объяснение, почему я должен использовать [4] или [5]. Я знаю, что 0,1,2 и 3, вероятно, не правильный выбор здесь
import numpy as np
import matplotlib.pyplot as plt
def perc_calc(x,y):
perc0=(x/y)*100 #Original one i used but is non-linear
perc1=((x-y)/(y))*100 #Proper % method but still nonlinear
perc2=((y-x)/x)*100 #Depends if use x or y
perc3=(x-y)*100 #Just amplifying the real difference
perc4=(x-y)/((x+y)/2)*100 #Difference by the mean
perc5=(y-x)/((x+y)/2)*100 #Opposite difference by the mean
return [perc0,perc1,perc2,perc3,perc4,perc5]
x=np.random.uniform(-0.005, 1, size=600)
y=np.random.uniform(0.005,1,size=600)
plt.plot(perc_calc(x,y)[3])
plt.show()
plt.plot(perc_calc(x,y)[4])
plt.show()
def example(x,y):
print(str(x)+', '+str(y)+': '+str(perc_calc(x,y)))
#Example Cases:
example(5,10)
example(-1,10)
example(1,8)
example(8,1)