[英]Is there an algorithm to average using different constraints on data?
月 | 产品 | 产品 | 产品 | 当前的 |
---|---|---|---|---|
1 | 是 | 一种 | 17 | |
2 | 是 | 一种 | 22 | |
3 | 是 | 一种 | 21 | |
4 | 是 | 秒 | 问 | 44 |
5 | 是 | 秒 | 问 | 32 |
6 | 是 | 秒 | 问 | 23 |
7 | 是 | 秒 | 乙 | 56 |
8 | 是 | 秒 | 乙 | 73 |
9 | 是 | 秒 | 乙 | 12 |
10 | 是 | C | 26 | |
11 | 是 | C | 45 | |
12 | 是 | C | 37 |
如上表所示,我有一些数据,其中的元素构成了不同产品的一部分。 例如,上表中的第 4 个元素(突出显示的行)即44
是乘积Q
、 S
和Y
。 每个产品的平均值如下:
average of Product A=(17+22+21)/3=20
average of Product Q=(44+32+23)/3=33
average of Product S=(44+32+23+56+73+12)/6=40
average of Product Y=(17+22+21+44+32+23+56+73+12+26+45+37)/12=34
现在我想操纵数据,使新的平均值是:
Average of product A= 25
Average of product Q = 35
Average of Product S= 32
Average of product Y= 39
应保持产品内的月份形状。
所以结果应该是(示例计算):
new Month 1= (new average - current average) +current month 1 value
new Month 1= (25 - 20) + 17 = 22
new Month 2= (new average - current average) +current month 2 value
new month 2 = (25 - 20 ) + 22 = 27
new Month 3= (new average - current average) +current month 3 value
new months 3 =(25-20)+ 21= 26
月形差示例
月 | 第 1 个月 | 第 2 个月 | 第 3 个月 |
---|---|---|---|
当前的 | 17 | 22 | 21 |
当前月差 | 22-17= 5 | 21-22= -1 | |
新的 | 22 | 27 | 26 |
新月差 | 27-22= 5 | 26-27= -1 |
可以看到当前数据和新数据的第month 2 - month1
是5
而当前数据和新数据的5
month 3- month 2
是-1
。 因此,产品A
月度形状保持不变。
月 | 产品 | 产品 | 产品 | 新的 |
---|---|---|---|---|
1 | 是 | 一种 | 22 | |
2 | 是 | 一种 | 27 | |
3 | 是 | 一种 | 26 | |
4 | 是 | 秒 | 问 | 46 |
5 | 是 | 秒 | 问 | 34 |
6 | 是 | 秒 | 问 | 25 |
7 | 是 | 秒 | 乙 | 38 |
8 | 是 | 秒 | 乙 | 55 |
9 | 是 | 秒 | 乙 | -6 |
10 | 是 | C | 57 | |
11 | 是 | C | 76 | |
12 | 是 | C | 68 |
目前我有一个 VBA 代码,它在每个元素上循环多次以计算当前平均值和新平均值之间的差异并将这种差异应用于元素。 我可以使用任何矩阵算法来进行相同的计算而不是使用迭代循环吗? 算法代码将在 Matlab、C++ 或 Python 或 VBA 中实现。 目前我一直在探索 MATLAB 函数lsqlin
但无法让它做我想做的事。
能否请你帮忙?
步骤 1:第 1-4 行 | 步骤 2:第 5-8 行
定义:
价值与关系 | “当前”案例 | “新”案 |
---|---|---|
a = sum(mth1,mth2,mth3) | 60 | ? |
b = sum(mth4,mth5,mth6) | 99 | ? |
c = sum(mth7,mth8,mth9) | 141 | ? |
d = sum(mth10,mth11,mth12) | 108 | ? |
avg_A = a/3 | 20 | 25 |
avg_Q = b/3 | 33 | 35 |
avg_S = (b+c)/6 | 40 | 32 |
avg_Y = (a+b+c+d)/12 | 34 | 39 |
在“当前”情况下:上面的所有变量都有定义的值。
在“新”情况下(步骤 3):
avg_A = a/3 = 25 >> a = 25*3 = 75
avg_Q = b/3 = 35 >> b = 35*3 = 105
avg_S = (b+c)/6 = ((105)+c)/6 = 32 >> c = 32*6-105 = 87
avg_Y = (a+b+c+d)/12 = ((75)+(105)+(87)+d)/12 = 39 >> d = 201
将 mth1-12 填入任何可以产生上述 a,b,c,d 值的值。
完毕。
p/s:由于 OP 仅共享 1 个新“案例”,因此步骤 2 的详细信息可能会有所不同。 然而,至少对于这个“形状”,这是有效的。
我之前的评论实际上指向一个陈述“因为(观察到的关系不是真正的线性,矩阵不能建立在原始表上”。然而,如果你能弄清楚如何解决/将 Step2 关系放在矩阵形式中, step3 应该更容易/自动化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.