【问题标题】:Finding similarities in a multidimensional array在多维数组中查找相似性
【发布时间】:2010-12-03 02:23:24
【问题描述】:

假设有一个销售部门为每一天设定一个销售目标。总目标不重要,但年龄过大或未成年很重要。例如,如果第 1 周的星期一的目标是 50,而我们卖出 60,则当天的得分为 +10。周二,我们的目标是 48,我们以 -2 的成绩卖出 46。在一周结束时,我们对这一周进行评分:

[0,0]=10,[0,1]=-2,[0,2]=1,[0,3]=7,[0,4]=6

在此示例中,星期一 (0,0) 和星期四和星期五 (0,3 和 0,4) 都是“热”的

如果我们查看第 2 周的结果,我们会看到:

[1,0]=-4,[1,1]=2,[1,2]=-1,[1,3]=4,[1,4]=5

对于第 2 周,周末炎热,周二温暖。

接下来,如果我们比较第一周和第二周,我们会发现周末往往比第一周要好。所以,现在让我们添加第 3 周和第 4 周:

[0,0]=10,[0,1]=-2,[0,2]=1,[0,3]=7,[0,4]=6
[1,0]=-4,[1,1]=2,[1,2]=-1,[1,3]=4,[1,4]=5
[2,0]=-8,[2,1]=-2,[2,2]=-1,[2,3]=2,[2,4]=3
[3,0]=2,[3,1]=3,[3,2]=4,[3,3]=7,[3,4]=9

由此,我们看到周末是更好的理论是正确的。但我们也看到月底好于月初。当然,接下来我们希望将本月与下个月进行比较,或者比较一组月份的季度或年度结果。

我不是数学或统计专家,但我很确定有针对此类问题设计的算法。由于我没有数学背景(并且不记得我早期的任何代数),我该去哪里寻求帮助?这种类型的“热点”逻辑有名字吗?是否有可以切片和切块以及比较多维数组的公式或算法?

感谢任何帮助、指点或建议!

【问题讨论】:

    标签: algorithm math statistics time-series


    【解决方案1】:

    这可能超出了您正在寻找的范围,但一种可以让您进行预测、查看统计显着性等内容的技术方法是 ARIMA 或类似的 Box-詹金斯模型。

    【讨论】:

      【解决方案2】:

      Daniel 提出相关性的建议是正确的,但我不认为自相关是您想要的。相反,我建议将每周与其他周关联起来。相关性的峰值(即接近 1 的值)表明该特定转变的周值彼此相似(即是周期性的)。

      例如当你交叉关联时

      0 0 1 2 0 0
      

      0 0 0 1 1 0
      

      结果是

       2 0 0 1 3 0
      

      最大值为3,对应于将第二个数组右移4

      0 0 0 1 1 0 -->  0 0 1 1 0 0
      

      然后逐个乘法

      0   0   1   2   0   0
      0   0   1   1   0   0
      ----------------------
      0 + 0 + 1 + 2 + 0 + 0 = 3
      

      请注意,当您进行关联时,您可以创建自己的“假”周并交叉关联您所有的真实周,这个想法是您正在寻找与您的假周形状相对应的每周值的“形状”通过寻找相关结果中的峰值。

      因此,如果您有兴趣找到接近周末的周数,您可以使用“假”周

       -1 -1 -1 -1  1  1
      

      如果您在相关性的第一个值中得到高响应,这意味着您与之相关的真实周大致具有这种形状。

      【讨论】:

        【解决方案3】:

        以下内容可能与您相关:技术分析中的Stochastic oscillators,用于确定股票是否被超买或超卖。

        我在这里过于简单化了,但基本上你有两个移动计算:

        • 14 天随机数:100 *(今天收盘价 - 过去 14 天的最低价)/(过去 14 天的最高价 - 过去 14 天的最低价)
        • 3 天随机:相同的计算,但相对于 3 天。

        14 天和 3 天随机指标将倾向于遵循相同的曲线。您的随机指标将介于 1.0 和 0.0 之间;随机指标高于 0.8 被认为是超买或看跌,低于 0.2 则表示超卖或看涨。更具体地说,当您的 3 天随机指标在其中一个区域“穿越”14 天随机指标时,您就可以预测价格的动量。

        虽然有些人认为技术分析是巫术,但empirical evidence 表明它具有一定的预测能力。就其价值而言,随机指标是一种非常简单且有效的方式来可视化价格随时间的动量。

        【讨论】:

          【解决方案4】:

          您要做的很简单——您只需计算数据的autocorrelation 并查看correlogram。从相关图中,您可以看到数据的“隐藏”周期,然后您可以使用此信息来分析周期。

          这是结果 - 您的数字及其标准化自相关。

          10 1,000 -2 0,097 1 -0,121 7 0,084 6 0,098 -4 0,154 2 -0,082 -1 -0,550 4 -0,341 5 -0,027 -8 -0,165 -2 -0,212 -1 -0,555 2 -0,426 3 -0,279 2 0,195 3 0,000 4 -0,795 7 -1,000 9

          我使用 Excel 来获取值。但是A列中的序列并将方程=CORREL($A$1:$A$20;$A1:$A20)添加到单元格B1,然后将其复制到B19。如果你添加一个折线图,你可以很好地看到数据的结构。

          【讨论】:

            【解决方案5】:

            您已经可以对模式的周期做出合理的猜测 - 您正在查看诸如每周和每月之类的内容。例如,要查找每周模式,只需将所有星期一平均起来,等等。一个月中的几天,一年中的几个月也是如此。

            当然,您可以使用复杂的算法来找出每周的模式,但您已经知道可以预期这一点。如果您认为确实可能隐藏着您从未怀疑过的模式(有一个奇怪的社区,他们每周工作 5 天并经常光顾您的业务),请务必使用强大的工具 - 但如果您知道找什么东西,真的没必要。

            【讨论】:

              【解决方案6】:

              在我看来,OLAP 方法(如 MS Excel 中的数据透视表)非常适合该问题。

              【讨论】:

              • 我认为对于那些不想在 R 或其他东西中破解这些数据并获得复杂预测或统计显着性结果的人来说,这是最有用的建议。 Excel 中的数据透视表非常有用,设置或使用并不难,而且您几乎可以肯定已经拥有合适的工具。
              【解决方案7】:

              这些数据并不是真正的多维数据,它只是一个简单的时间序列,并且有很多种方法来分析它。我建议你从Fourier Transform 开始,它会检测一系列的“节奏”,所以这个数据会在 7 天和 30 天左右显示一个峰值,如果你将数据集扩展到几年,它会显示季节和节假日的一年峰值。这应该会让你忙一阵子,直到你准备好使用真正的多维数据,比如添加天气信息、股市数据、最近体育赛事的结果等等。

              【讨论】:

              • 哎呀,快了几秒钟。
              • 我把整个事情都设置成了热键。我知道有一天有人会问一个问题,其答案是“傅立叶变换”。这释放了 [f10],只剩下两个了。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2023-03-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多