文章 "MQL5 中的统计分布 - 取最佳的 R" - 页 19 1...121314151617181920 新评论 Aleksey Nikolayev 2019.10.22 08:54 #181 Aleksey Nikolayev: 我们希望将Kolmogorov 分布 加入库中。它非常有用,因为它可用于柯尔莫哥洛夫-斯米尔诺夫准则和搜索随机过程的分解问题。 为了以防万一,我将把它留在这里。计算双面单样本检验的柯尔莫哥洛夫-斯米尔诺夫统计量分布的 CDF 及其增量。 附加的文件: KS.mqh 16 kb Aleksey Nikolayev 2019.11.10 18:34 #182 有人用过吗? Renat Fatkhullin 2020.01.29 10:13 #183 Aleksey Nikolayev:MathCumulativeDistributionHypergeometric() 函数错误地计算了超几何分布的 CDF。根据定义,概率分布函数必须为任何实数定义。以下是 mql5 上的脚本及其结果,为便于比较,还提供了 R 上的相同结果。结果-1.0 nan 20.0 0.0 00.5 纳 2超几何.mqh'中的零除法 (241,35)结果:[1] 0.0000000 0.0000000 0.0000000 0.2222222 您传递了错误的参数,得到了 ERR_ARGUMENTS_INVALID (2)。我们正在更详细地检查输入参数,R 似乎已将答案替换为零。 //+------------------------------------------------------------------+ //| 超几何累积分布函数(CDF) | | //+------------------------------------------------------------------+ //| 该函数返回观测值 | 的概率。 //| 来自参数为 m,n,k 的超几何分布 //| 小于或等于 x。| //|| //| 参数:| //| x :所需的对象数量 //| m :种群数量 //| k :具有所需特征的物品数量 //|| 在人口中| //| n :抽取的样本数 //| tail :计算下部尾部的标志 //| log_mode : 对数模式,如果为真,则计算对数值。 //| error_code : 错误代码变量 //|| //| 返回值:| //> 超几何累积分布函数的值 //| 带参数 m,n,k, 在 x 处求值。 //+------------------------------------------------------------------+ //| 基于 John Burkardt 的算法| //+------------------------------------------------------------------+ double MathCumulativeDistributionHypergeometric(const double x,const double m,const double k,const double n,const bool tail,const bool log_mode,int &error_code) { //--- 检查 NaN if(!MathIsValidNumber(x) || !MathIsValidNumber(m) || !MathIsValidNumber(k) || !MathIsValidNumber(n)) { error_code=ERR_ARGUMENTS_NAN; return QNaN; } //--- m,k,n,x 必须是整数 if(m!=MathRound(m) || k!=MathRound(k) || n!=MathRound(n) || x!=MathRound(x)) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } //--- m,k,n,x 必须为正数 if(m<0 || k<0 || n<0 || x<0) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } //--- 检查范围 if(n>m || k>m) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } Renat Fatkhullin 2020.01.29 10:31 #184 Aleksey Nikolayev:例如,有些(并非所有)二项式系数是负数:结果: -309196571788882235应为:349615716557887488 由于 K 较大(28),64 位 long 在此处溢出。返回值 为 long。 要在这种限制内计算数值,需要将函数改写为双数值。 Aleksey Nikolayev 2020.01.29 10:35 #185 Renat Fatkhullin:您传递了错误的参数,得到了 ERR_ARGUMENTS_INVALID (2)。我们更详细地检查了输入参数,R 似乎用零替换了答案。 1) 任何 CDF - 概率分布函数(离散型也不例外!)都必须定义为所有实数。下面是 R 代码的类似代码及其结果,说明在现实中应该如何计算。顺便说一下,有些离散 CDF 函数计算正确,有些则不正确。 2) 对于值 1,您会遇到除以零的错误。 Renat Fatkhullin 2020.01.29 10:52 #186 Aleksey Nikolayev:1) 任何 CDF - 概率分布函数(离散型也不例外!)都必须定义为所有实数。下面是 R 代码的类似代码,其结果显示了在现实中应如何考虑这一点。顺便说一下,有些离散 CDF 函数你算对了,有些算错了。2) 对于值 1,您会出现除以零的错误。 请阅读源代码中的函数代码及其检查。 我手头没有 R,我必须单独检查。我看到除以零,我们需要了解边界条件。 Aleksey Nikolayev 2020.01.29 11:22 #187 Renat Fatkhullin:由于 K 较大(28),64 位 long 在此处溢出。返回值 为 long。要在这种限制内计算数值,应将函数改写为双数值。 这很清楚。只是整数参数的二项式系数对数出现了错误,我以为是这个原因。现在我看了代码,发现我错了--原因另有其人。 #include <Math\Stat\Math.mqh> void OnStart() { Print(MathBinomialCoefficientLog(62,28)); Print(MathBinomialCoefficientLog(62.0,28.0)); } 结果: test_clog (EURUSD.m,MN1) -nan(ind) test_clog (EURUSD.m,MN1) 40.39561099351077 PS 错,问题还在于溢出 Aleksey Nikolayev 2020.01.29 11:27 #188 Renat Fatkhullin:手头没有 R、 R 在线 compile R online rextester.com compile R online Denis Kirichenko 2024.07.20 00:21 #189 NoncentralBeta 遇到了一些麻烦。我从文档 中提取了脚本。 这些是不同参数下的结果。 Документация по MQL5: Стандартная библиотека / Математика / Статистика / Нецентральное бета-распределение www.mql5.com В данном разделе представлены функции для работы с нецентральным бета-распределением. Они позволяют производить расчет плотности, вероятности... Denis Kirichenko 2024.07.20 00:33 #190 文档 中的公式: 是维基百科中的类似内容: 查看了代码。 MathRandomNoncentralBeta() 函数中有这样几行: //--- 使用非中心 ChiSquare 生成随机数 double chi1=MathRandomNoncentralChiSquare(a2,lambda2,error_code); double chi2=MathRandomNoncentralChiSquare(b2,lambda2,error_code); result[i]=chi1/(chi1+chi2); 维基百科中也有这样的内容: The noncentral beta distribution (Type I) is the distribution of the ratio 其中 是一个自由度为 m 、 非中心性 参数 为 𝜆 的非中心秩方 随机变量 , 且 𝜒 𝑛 2 是自由度为 n 的中心奇平方 随机变量 ,与𝜒 𝑚 2 ( 𝜆 ) 无关。 也就是说,有两个随机变量,第一个来自非中心的卡方分布,第二个来自中心的 卡方分布。也许代码可以这样修改: //--- 使用非中心 ChiSquare 生成随机数 double chi1=MathRandomNoncentralChiSquare(a2,lambda2,error_code); double chi2=MathRandomChiSquare(b2,error_code); result[i]=chi1/(chi1+chi2); 示例中修改后的图形如下。 Документация по MQL5: Стандартная библиотека / Математика / Статистика / Нецентральное бета-распределение www.mql5.com В данном разделе представлены функции для работы с нецентральным бета-распределением. Они позволяют производить расчет плотности, вероятности... 1...121314151617181920 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我们希望将Kolmogorov 分布 加入库中。它非常有用,因为它可用于柯尔莫哥洛夫-斯米尔诺夫准则和搜索随机过程的分解问题。
为了以防万一,我将把它留在这里。计算双面单样本检验的柯尔莫哥洛夫-斯米尔诺夫统计量分布的 CDF 及其增量。
MathCumulativeDistributionHypergeometric() 函数错误地计算了超几何分布的 CDF。根据定义,概率分布函数必须为任何实数定义。以下是 mql5 上的脚本及其结果,为便于比较,还提供了 R 上的相同结果。
结果
-1.0 nan 2
0.0 0.0 0
0.5 纳 2
超几何.mqh'中的零除法 (241,35)
结果:
[1] 0.0000000 0.0000000 0.0000000 0.2222222
您传递了错误的参数,得到了 ERR_ARGUMENTS_INVALID (2)。我们正在更详细地检查输入参数,R 似乎已将答案替换为零。
例如,有些(并非所有)二项式系数是负数:
结果: -309196571788882235
应为:349615716557887488
由于 K 较大(28),64 位 long 在此处溢出。返回值 为 long。
要在这种限制内计算数值,需要将函数改写为双数值。
您传递了错误的参数,得到了 ERR_ARGUMENTS_INVALID (2)。我们更详细地检查了输入参数,R 似乎用零替换了答案。
1) 任何 CDF - 概率分布函数(离散型也不例外!)都必须定义为所有实数。下面是 R 代码的类似代码及其结果,说明在现实中应该如何计算。顺便说一下,有些离散 CDF 函数计算正确,有些则不正确。
2) 对于值 1,您会遇到除以零的错误。
1) 任何 CDF - 概率分布函数(离散型也不例外!)都必须定义为所有实数。下面是 R 代码的类似代码,其结果显示了在现实中应如何考虑这一点。顺便说一下,有些离散 CDF 函数你算对了,有些算错了。
2) 对于值 1,您会出现除以零的错误。
请阅读源代码中的函数代码及其检查。
我手头没有 R,我必须单独检查。我看到除以零,我们需要了解边界条件。
由于 K 较大(28),64 位 long 在此处溢出。返回值 为 long。
要在这种限制内计算数值,应将函数改写为双数值。
这很清楚。只是整数参数的二项式系数对数出现了错误,我以为是这个原因。现在我看了代码,发现我错了--原因另有其人。
结果:
test_clog (EURUSD.m,MN1) -nan(ind)
test_clog (EURUSD.m,MN1) 40.39561099351077
PS 错,问题还在于溢出
手头没有 R、
R 在线
NoncentralBeta 遇到了一些麻烦。我从文档 中提取了脚本。
这些是不同参数下的结果。
文档 中的公式:
是维基百科中的类似内容:
查看了代码。
MathRandomNoncentralBeta() 函数中有这样几行:
维基百科中也有这样的内容:
The noncentral beta distribution (Type I) is the distribution of the ratio
其中
是一个自由度为 m 、 非中心性 参数 为 𝜆 的非中心秩方 随机变量 , 且 𝜒 𝑛 2 是自由度为 n 的中心奇平方 随机变量 ,与𝜒 𝑚 2 ( 𝜆 ) 无关。
也就是说,有两个随机变量,第一个来自非中心的卡方分布,第二个来自中心的 卡方分布。也许代码可以这样修改:
示例中修改后的图形如下。