我有两个相关的数据集,其中一个可以略低于0。
我正在尝试计算两者之间的“线性”百分比差异。
我写了一些示例代码: perc [1]是正确的百分比方法,但是在最后两个示例情况下,双方的百分比差异都不是“线性的”(即-87与700相比)-我需要它们相等或线性相关计算,而我猜后三种方法是线性的。我喜欢perc [3],因为它只是绝对的差异并且被放大,但是有点无单元。以这两个用例的均值为分母,也许[4]或[5]是最准确的?
(gdb) help skip
Ignore a function while stepping.
Usage: skip [FUNCTION-NAME]
skip [FILE-SPEC] [FUNCTION-SPEC]
If no arguments are given, ignore the current function.
FILE-SPEC is one of:
-fi|-file FILE-NAME
-gfi|-gfile GLOB-FILE-PATTERN
FUNCTION-SPEC is one of:
-fu|-function FUNCTION-NAME
-rfu|-rfunction FUNCTION-NAME-REGULAR-EXPRESSION
...
统计不是我的强项。任何人都可以提供合理的理由说明为什么我应该使用[4]或[5]。我知道0、1、2和3可能不是这里的正确选择
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]
答案 0 :(得分:1)
参照此Wikipedia article,相对百分比通常采用以下形式
| x-y | / | f(x,y)|
| x-y |中的绝对值如果您有参考点,可以将其删除,以得到负百分比。如果这对您没有意义,则应保留。
函数| f(x,y)|是通常所说的缩放因子。您可以在这里选择多个选项,具体取决于应用程序。
您可以像在(1)中一样仅取f(x,y)= y。通常,这是在比较实验值和理论值时完成的,例如在某些实验中进行测量后;或衡量过去状态的变化时。但是请注意,它需要一个参考点(理论值或更改完成前的值),并且由于您的缩放比例会发生变化,因此它不具有您要查找的“线性”属性交换x和y时(如果使用1和2,则为1/2 vs 1)。这是因为,对于值为2的值,突然更改为10意味着增加400%,但是将10变为2则意味着减少80%。
因此,您需要一些函数f在交换参数时不会改变。在数学上,这称为 symmetric function 。 the article referenced before中显示了许多示例。我建议(| x | + | y |)/ 2,但尝试其他方法以了解更合理的方法。
perc6 = abs(x-y) / ((abs(x)+abs(y)) / 2) * 100
要通过绘图进行测试,请尝试固定y的值(例如10),并进行x与perc_calc(x, 10)[6]
的散点图。