给定一些实值经验数据(时间序列),我可以将其转换为直方图,以获得数据的(非参数)经验分布,但直方图是块状和锯齿状的。
相反,我想从scipy
或scipy.stats
分布函数库中确定最佳拟合的参数分布,这样我就可以人为地生成一个参数分布,它与我的真实的数据的经验分布非常吻合。
例如,如果经验数据是经验AAPL股票收益率的月度收益率,我知道参数Json-SU分布类似于,并且可以模仿股票收益率分布,因为它具有可定制的偏斜。然而,scipy
中的JsonSU分布需要校准四个输入参数。我如何从scipy
中搜索这个参数分布的最佳参数设置,以拟合我的AAPL回报样本的经验分布?
2条答案
按热度按时间pu3pd22g1#
Q:“我想从
scipy
或scipy.stats
分布函数库中识别最佳拟合的参数分布,以便人工生成一个参数分布,该分布与我的真实的数据的经验分布密切拟合。"上面来自@SeverinPappadeux的链接可能会有所帮助(K-S测试很好),但它很好地服务于一对已经完成的分布的 * 分析比较 *,而不是实际建设性生成的过程。
所以让我们明确一下目标:
scipy
/scipy.stats
生成器?或
如果前者是你的愿望
然后
我们遇到了一个矛盾,寻求一个参数化的(脚本化的)分布生成器引擎,它将(在某种意义上的“最佳”)匹配一个主要不可脚本化的经验分布
好吧,因为一个人可能仍然希望这样做,
然后
您将确实以某种痛苦的ParameterSPACE搜索策略(使用现成的或定制的
scipy
/scipy.stats
硬编码生成器)结束,该策略将试图找到这些生成器的硬编码参数的ParameterSPACE向量的“最佳”匹配值。这可能会在某种程度上教会你增加维度的罪恶(硬编码生成器的参数越多,参数空间搜索空间就越大,进入**O( n * i^N * f^M * c^P * b^Q)
**双重麻烦,具有相应硬编码生成器的N
-整数,M
-浮点,P
-基数和Q
-布尔参数,这对你的时间预算来说很不好不是吗).如果是后者,
然后
我们可以通过适当地定义什么是“匹配”“原始” 的“健康”,来集中注意力于一种更有成效的方式。
第一个候选是生成一个非常随机的(很容易是PRNG产生的)噪声,如果在PriceDOMAIN方向内不是太“强”,可以简单地添加到经验-“原始” 中。
可能会添加更多复杂性,使用相同的技巧,使用叠加,退出,频率特定技巧,离群值添加(如果稍后测试某些低响应策略的稳健性特性/限制等)
无论如何,后一个目标的所有这些方法都有一个可爱的特性,即不会对高维参数空间进行任何大规模的搜索,但通常与
O( n )
-scaled一样好--这很酷,不是吗?所以,只有一个人自己的想象力是这里的极限:o)
92vpleto2#
如果你愿意使用R,
JSUparameters
是一个R包,它可以满足你的需要;它将估计给定数据集的最佳拟合Json$S_U$分布的参数。该软件包可以从CRAN下载:https://CRAN.R-project.org/package=JSUparameters
您还可以从其GitHub存储库中查看它的使用示例:https://github.com/cjclarke98/JSUparameters
最后,你可以阅读一篇关于pacakge的简短博客文章:https://cjclarke.weebly.com/blog