我正试图用正数和负数来计算excel的增长率。
This Year's value: 2434
Last Year's value: -2我使用的公式是:
(This_Year - Last_Year) / Last_Year
=(2434 - -2) / -2问题是我得到了一个负面的结果。能否计算出一个近似的增长数,如果是的话,如何计算?
发布于 2012-09-20 14:42:53
你应该得到一个负的结果--你被一个负数除以。如果去年是负增长,那么你就会出现负增长。您可以通过除以Abs(Last Year)来避免这种异常。
发布于 2013-08-23 05:45:16
,您可以尝试将数字空间向上移动,以便它们都变为正数。
为了计算任意两个正数或负数之间的增益,你必须在量值增长世界中保持一只脚,在体积增长世界中保持另一只脚。你可以靠在一边或另一边,这取决于你想要的结果如何出现,每一个选择都有后果。
战略
例如,:
old -> new
-50 -> 30 //Calculate a shift like (2*(50 + 30)) = 160
shifted_old -> shifted_new
110 -> 190
= (new-old)/old
= (190-110)/110 = 72.73%如何选择移位函数
如果您的shift函数将数字调得太高,例如,将每个数字加10000,则总是会出现微小的增长/下降。但是,如果这一转变足够大,足以将这两个数字都纳入正数区间,那么在边缘情况下,增长/下降就会出现剧烈波动。您需要在shift函数中拨号,以便对您的特定应用程序有意义。这个问题没有完全正确的解决办法,你必须吃苦耐劳。
将此添加到excel中,查看数字和收益是如何移动的:
shift function
old new abs_old abs_new 2*abs(old)+abs(new) shiftedold shiftednew gain
-50 30 50 30 160 110 190 72.73%
-50 40 50 40 180 130 220 69.23%
10 20 10 20 60 70 80 14.29%
10 30 10 30 80 90 110 22.22%
1 10 1 10 22 23 32 39.13%
1 20 1 20 42 43 62 44.19%
-10 10 10 10 40 30 50 66.67%
-10 20 10 20 60 50 80 60.00%
1 100 1 100 202 203 302 48.77%
1 1000 1 1000 2002 2003 3002 49.88%增益百分比受数字大小的影响。上面的数字是一个糟糕的例子,它是由一个基本移位函数产生的。
你必须扪心自问,哪种生物获得的收益最多:
Evaluate the growth of critters A, B, C, and D:
A used to consume 0.01 units of energy and now consumes 10 units.
B used to consume 500 units and now consumes 700 units.
C used to consume -50 units (Producing units!) and now consumes 30 units.
D used to consume -0.01 units (Producing) and now consumes -30 units (producing).在某些方面,可以说每种生物都是各自最大的种植者。有些人说B是最好的种植者,另一些人则会说D是更大的收益。你得自己决定哪一个更好。
问题是,我们能否将这种我们称之为增长的直觉映射成一个连续的功能,告诉我们人类往往认为什么是“令人敬畏的增长”,而不是“平庸的增长”。
增长是一件神秘的事情
然后你必须考虑到,克里特B可能比生物困难得多,克里特D在未来可能比其他生物有更多的前景。它有个优势!你如何衡量增长的opportunity、difficulty、velocity和acceleration?为了能够预测未来,你需要对什么构成“大本垒打”和“生产力上的蹩脚进步”有一种直觉的感觉。
函数的第一和第二导数将给出“增长速度”和“增长加速”。学习微积分,它们是非常重要的。
哪个长得更快?一种正在一分钟一分钟加速其生长的生物,还是一种正在减缓其生长的生物?那么高、低速度和高/低变化率呢?那么耗尽增长机会的概念呢?成本效益分析和利用机会的能力/能力。对抗性系统(你的成功来自于另一个人的失败)和零和游戏呢?
有指数增长,线性增长。和不可持续的增长。成本效益分析和拟合曲线的数据。这个世界比我们想象的要奇怪得多。绘制一条完美的数据线并不能告诉你下一个数据点是哪个,因为黑天鹅效应。我建议所有的人都听这个关于增长的讲座,科罗拉多大学博尔德分校发表了一篇关于增长、它是什么、它不是什么、以及人类是如何完全误解它的精彩演讲。http://www.youtube.com/watch?v=u5iFESMAU58
与热水的温度成一条线,一旦你认为你已经拟合了一条曲线,一只黑天鹅就会出现,水就会沸腾。这种影响在我们整个宇宙中都会发生,你的原始函数(新老的)/old不会对你有所帮助。
这里是代码,它在一个适合我需要的简洁的包中完成了上述大部分概念:
生物生长-(生物可以是“无线电波”、“甲虫”、“石油温度”、“股票期权”等等)。
public double evaluate_critter_growth_return_a_gain_percentage(
double old_value, double new_value) throws Exception{
double abs_old = Math.abs(old_value);
double abs_new = Math.abs(new_value);
//This is your shift function, fool around with it and see how
//It changes. Have a full battery of unit tests though before you fiddle.
double biggest_absolute_value = (Math.max(abs_old, abs_new)+1)*2;
if (new_value <= 0 || old_value <= 0){
new_value = new_value + (biggest_absolute_value+1);
old_value = old_value + (biggest_absolute_value+1);
}
if (old_value == 0 || new_value == 0){
old_value+=1;
new_value+=1;
}
if (old_value <= 0)
throw new Exception("This should never happen.");
if (new_value <= 0)
throw new Exception("This should never happen.");
return (new_value - old_value) / old_value;
}结果
它表现得像人类一样,对动物的成长有一种本能的感觉。当我们的银行账户从-9000到-3000的时候,我们说这比从1000到2000年的增长要好。
1->2 (1.0) should be bigger than 1->1 (0.0)
1->2 (1.0) should be smaller than 1->4 (3.0)
0->1 (0.2) should be smaller than 1->3 (2.0)
-5-> -3 (0.25) should be smaller than -5->-1 (0.5)
-5->1 (0.75) should be smaller than -5->5 (1.25)
100->200 (1.0) should be the same as 10->20 (1.0)
-10->1 (0.84) should be smaller than -20->1 (0.91)
-10->10 (1.53) should be smaller than -20->20 (1.73)
-200->200 should not be in outer space (say more than 500%):(1.97)
handle edge case 1-> -4: (-0.41)
1-> -4: (-0.42) should be bigger than 1-> -9:(-0.45)发布于 2016-10-20 12:28:05
最简单的解决办法如下:
=(NEW/OLD-1)*SIGN(OLD)如果值为负值,SIGN()函数将产生-1,如果值为正,则生成1。如果前面的值是负值,那么乘以它,就会有条件地反演结果。
https://stackoverflow.com/questions/12515043
复制相似问题