Spark SQL中的累积偏差



我有此格式的数据框架:

Date        |   Return
01/01/2015       0.0
02/02/2015       0.04
03/02/2015       0.06
04/02/2015       0.16

我需要计算每个行的累积标准偏差,还需要选择上方的行数。因此,我的结果看起来有点像这样:

Date          | Rows above | Compounded
01/01/2015         0         0(First element to be kept zero)
02/02/2015         1         0.02828427125(Std_Dev of 0,0.04)         
03/02/2015         2         0.03055050463(Std_Dev of 0,0.04,0.06)
04/02/2015         3         0.06806859286(Std_Dev of 0,0.04,0.06,0.16)

我是SparkSQL的新手,特别是窗口功能的新手。因此,Java的答案将是高度敬意的。谢谢。

您实际上可以使用标准操作和窗口功能进行操作。基本上可以通过计算总和x^2,sum x和n(元素数)来计算标准偏差。因此,对窗口函数中的所有三个进行聚合,然后计算出与这些标准的偏差。

所以类似的东西(Freeform pyspark):

 window = Window.sortby("Date")
 aggDF = df.agg(sum(df["Returns"]).alias("sumx"), sum(df["Returns"]*df["returns"]).alias("sumx2"), count(df["returns"]).alias("cnt"))
 Ex_2 = aggDF["sumx2"] / aggDF["cnt"])
 Ex = aggDF["sumx"] / aggDF["cnt"])
 newDF = df.withcolumn("Var", Ex_2 - (Ex * Ex))

当然,您必须处理0个元素的情况,如果要进行标准偏差而不是方差,则应采用平方根

相关内容

  • 没有找到相关文章

最新更新