【问题标题】:Estimating linear fit as a moving average将线性拟合估计为移动平均线
【发布时间】:2016-07-18 21:14:54
【问题描述】:

假设我有以下数据:

Year  Day  Amount
2015  1    2
2015  2    3
2015  3    4
2015  4    5

使用窗口函数或聚合,我想为每一行获取一个数字,表示“基于前 n 行的线性”。在这个简单的示例中,对于带有day = 4 的行,线性度会非常高,原因很明显,基于前 n 天,其中 n 为 3。

当前几天不存在时会弹出问题,在这种情况下,我只想使用默认值 -1,例如以其他方式表示。

我没有想要表示线性度的确切值,但作为示例,类似于相关系数,1 可以表示高线性度,而 0 则没有。

编辑:

作为一个临时用例,我所做的是在每一行中添加一个代表日期的列(并考虑到年份),并使用窗口函数来查找前 4 个值(如果它们存在) .在得到(或没有得到这些值)之后,我做了一个简单的计算来计算每个点组合的差异,并使用除法来查看它们彼此的接近程度(1 最好)。抱歉,由于代码共享协议,我无法共享任何代码。

【问题讨论】:

  • 所以我们知道您想要什么。现在,您为实现这一目标做了什么尝试?
  • @zero323 我已经用我尝试过的方法更新了我的问题。

标签: apache-spark apache-spark-sql window-functions


【解决方案1】:
  • 生成包含您要估计的所有日期的系列
  • 左外加入输入
  • Amountnull 值替换为要估计的值
  • 转换为 RDD
  • generate keys with lower bound -> for 2015 4 generate keys [2015 4, 2015 3, 2015 2] amd flatten
  • groupByKey
  • 估计组

【讨论】:

  • 您能否详细介绍“生成具有下限的密钥”?不确定你的意思。
猜你喜欢
  • 2014-11-18
  • 2013-12-22
  • 2017-09-01
  • 2021-05-30
  • 1970-01-01
相关资源
最近更新 更多