交易中的机器学习:理论、模型、实践和算法交易 - 页 206

 
量子化

有趣的事实

伽马分布密度值的定义在俄文译本的

Johnson N.L., Kotz S., Balakrishnan N.单变量连续分布.第一部分和早期的英文版本不同。



但由于字符不同,英文版本有一个疑似错字。

这不是一个打字错误。如果你花点心思看看几个不同的伽玛教程...你会看到,不同定义的支持是...某个地方有零,某个地方没有零。
 
阿列克谢-伯纳科夫
这不是一个误印。如果你费心看了几个不同的伽马教程...你会看到,服务台的定义是不同的...某个地方有零,某个地方没有零。

你并不像@Quantum 那样,懒得去看这些非常的材料并引用它们

而你甚至还提到了Excel和Python,以便不给出一个明确的例子。

到目前为止,你是唯一一个练习机智的人。

不要忘记引用R的答案,当然,如果你得到了答案。

 

R的开发者如何解释他们的结果。

dgamma(0,0.5,1)=inf

pgamma(0,0.5,1)=0

如果它们包含一个0点(如定义中所看到的),在x=0处给出无限的密度,然后当在pgamma(x,0.5,1)中积分时,无限被视为零,就像它不存在一样。

 
量子化

R开发人员将如何解释他们的结果。

好问题,但你为什么在论坛上问这个问题?按照雷纳特的说法,你有一整个科学家团队在那里解析R算法,问他们,然后告诉我们。了解R的源代码是你的团队的直接责任,如果你想做一个完整的移植。

现在在我看来,你所有的 "R算法分析 "都是在做与R中相同参数的函数,由大学教科书来实现,而没有深入研究细节。然后,像把 "0^0=1 "称为错误这样的误解就因此而发生。
在目前的趋势下,你最终会发现具有类似R的接口的函数,由于实现方式不同,在某些条件下的表现也不同。而如果有人想把他的代码从R转移到mql,他最终会得到不同的结果,会厌倦了寻找为什么结果不同,并会放弃这一切。单元测试只会揭示这种差异的一小部分,因为它们只会覆盖一些常见的没有问题的数据。

复制R的接口,甚至不研究R的源代码就自己实现函数,用wolfram检查结果,这是一种非常奇怪的做法。你甚至想通过这种方法得到什么?
你所做的,我可以称之为 "自写的统计库mql,其接口是从R中复制过来的,并在未指明的情况下与wolfram相适应"。在https://www.mql5.com/ru/articles/2742,所有关于R的其他话语都只是营销,与R没有任何关系。失望。

 
量子化

然后当在pgamma(x,0.5,1)中进行积分时,无限被认为是零,就像它不存在一样。

让我们举一个更简单的例子。
x=1*10^(-90)
这个数字非常小,不是零,而且没有不确定因素。
> dgamma(1*10^(-90), 0.5, 1)
[1] 5.641896e+44
> pgamma(1*10^(-90), 0.5, 1)
[1] 1.128379e-45

钨,其结果是一样的。
PDF[GammaDistribution[0.5,1], 1*10^(-90)]
5.6419×10^44
CDF[GammaDistribution[0.5,1], 1*10^(-90)]
1.12838×10^-45

现在,套用你的问题,在公式中没有任何无限性。
你如何整合dgamma,它返回大的数字如5.641896e+44,最后得到一个非常小的数字1.128379e-45
答案是不可能的。*积分dgamma()不是用来计算pgamma()的,还有其他公式,dgamma()的无穷大也不是用来计算的。

我对这种情况下pgamma(0, 0.5, 1)的计算理解为--如果你取一个无限大的数字集[0;Inf],并随机选择其中的一个,选择一个<=0的数字的机会是多少?答案是1/Inf,或0。这与pgamma()的结果相对应。如果有什么不对的地方请纠正我,我不太擅长在直觉和逻辑的层面上处理无穷大和界限的问题。

*我在这里跌倒了,低估了dgamma()的结果随着x的减少而减少的速度。请忽略这句话。

 
Dr.Trader:

好问题,但你为什么在论坛上问这个问题?按照雷纳特的说法,你有一整个科学家团队在那里解析R算法,问他们,然后告诉我们。了解R的源代码是你的团队的直接责任,如果你想做一个完整的移植。

现在在我看来,你所有的 "R算法分析 "都是用R中的参数做函数,用大学的教科书来实现,而不去研究细节。然后,像把 "0^0=1 "称为错误这样的误解就因此而发生。
在目前的趋势下,你最终会发现具有类似R的接口的函数,由于实现方式不同,在某些条件下的表现也不同。而如果有人想把他的代码从R转移到mql,他最终会得到不同的结果,会厌倦了寻找为什么结果不同,并会放弃这一切。单元测试只会揭示这种差异的一小部分,因为它们只会覆盖一些常见的没有问题的数据。

复制R的接口,甚至不研究R的源代码就自己实现函数,用wolfram检查结果,这是一种非常奇怪的做法。你甚至想通过这种方法得到什么?
你正在做的事情,我可以称之为 "自我编写的统计库mql,其接口是从R中复制的,并在未指明的情况下适应wolfram"。在https://www.mql5.com/ru/articles/2742,所有关于R的其他话语都只是营销,与R没有任何关系。令人失望的是。

关于R,我们已经误导了自己,包括我。当然,我们可以把这种错觉归咎于元引号,但事实却不同。

使用R的人可以回忆起R晋升为其奥林匹斯的历史。1993年,整个R系统从S系统中完全剥离出来,再过10年,整个R系统在狭窄的圈子里广为人知。而从成立到现在只有10年的时间,与S有20年的历史,从20世纪90年代初开始逐渐上升,并在五年前进入前十名,今天只有一个竞争对手,即python。今天,R是一个巨大的系统,代表了统计学的标准。

因此,结论是:MKL内的R的类似物是不可能的。

我们面对的是什么呢?

我们正在处理MKL5在数学功能方面的一个非常积极的发展进程。如果metaquotes能够用统计学R包中的函数的类似物来补充数学函数集,那么这个过程应该是受欢迎的。也就是说,把R而不是其他数学包作为模仿的原件,是一个非常好的选择。但这不是从R中导入函数--这些是 写的函数,是类似物,可能与原函数重合也可能不重合。但不匹配丝毫不影响元引号所启动的工作的重要性。决定将代码从R移植到MKL5的人应该记住,它是相对于R的另一种实现,有它自己的细微差别,它自己的错误,它自己的语言环境。

所以没有必要去比较什么。MKL5正在进行统计功能的扩展,这很好。如果在此基础上增加绘图方法,将是MKL5图形工具的一次革命。

PS

而你、我和许多其他R的用户将不会只在一种情况下失望:终端将被重写,其编程语言将是R。

 

筏子的第一个版本已经出现:https://www.mql5.com/ru/forum/97153/page10#comment_3831485

你将不得不忍受R中的错误;相信无懈可击是一个糟糕的伴侣。我们也揭穿了关于R的计算速度的神话。那里的代码写得很直白,很粗心。

使用AS 243的错误是不容置疑的,我们对结果质量的研究证明了这一点,并得到了第三方材料的证实。

你现在只是在争论零,但你在这里也必须放弃。你已经在极力通过建议其他观点来摆脱这个问题了。

我们再一次做了高质量的工作,处理了这个主题,并且用测试覆盖了一切。

Обсуждение статьи "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее"
Обсуждение статьи "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее"
  • www.mql5.com
Опубликована статья Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее: Автор: MetaQuotes Software Corp...
 

在R语言中,它--正确地说--来自S,并且已经存在了至少15年,如果不是20年的话,拥有高级学位的人提供了每个统计功能的代码。美国大学统计系的教授、副教授,在许多方面都是如此。他们的计算不只是因为他们免费做而被愚蠢地接受为承诺,而是伴随着在同行评议的期刊上发表的科学论文。这也适用于任何不太重要的功能和包装。这一点很重要!例如,当我使用一个函数来寻找一个测试的力量时,我必须为效应大小输入一个参数。而在文件中我读到,集合的标准差 是这样计算的。我在互联网上找到该方法的作者,阅读相关资料...而我争论的是应用这个函数的结果。

dgamma是基于Catherine Loader提供的二项分布代码。她关于这种方法的文章是2000年的。请随意阅读。

而现在的MQL问题--你写你的算法,很明显你几乎都是借用的。在极少数情况下,你说这个算法不够准确,但这本杂志上有另一种算法描述,我们将使用它。其他算法呢?你是否在文件中写明你在借用它们?我不认为你会重新发明二项分布中的概率计算......

你的参考资料中是否有这样的参考?

pwr.t2n.test {pwr} R 文档

两个样本(不同大小)t检验的功率计算


描述


计算测试的功率或确定参数以获得目标功率(类似于power.t.test)。


使用方法


pwr.t2n.test(n1 = NULL, n2= NULL, d = NULL, sig.level = 0.05, power = NULL,

选择 = c("two.sided",

"小","大"))

论点


n1

第一个样本中的观察值数量

n2

第二个样本中的观察值数量

d

效果大小

σ.水平

显著性水平(第一类错误概率)

权力

测试的力量(1减去第二类错误概率)

替代方案

指定备选假设的字符串,必须是 "双面"(默认)、"大 "或 "小 "中的一个。

详细内容


参数'd'、'n1'、'n2'、'power'和'sig.level'中必须有一个参数被传递为NULL,并且该参数是由其他参数决定。请注意,最后一个有非NULL的默认值,所以如果你想计算它,必须明确传递NULL。


价值


power.htest''类的对象,一个由'method'和'note'元素组成的参数列表(包括计算过的参数)。


注意事项


uniroot'用于解决未知数的幂方程,所以你可能会看到它的错误,特别是在给出无效参数时无法括号根。


作者


Stephane Champely <champely@univ-lyon1.fr> 但这仅仅是Peter Dalgaard作品的复制(power.t.test)。


参考文献


Cohen, J. (1988).行为科学的统计能力分析(第二版)。Hillsdale,NJ: Lawrence Erlbaum.

而如果你借用代码,而不注明代码的来源和方法的作者,你的工作就是抄袭。而在统计学界将如何看待你,如果某个量子发表了一篇关于从凯瑟琳的工作中得出的不正确的密度函数的不实文章,这就是一个大问题。我不认为他们会...

对于伽马函数家族。

GammaDist {stats} R文档

伽马分布


描述


具有参数形状和规模的伽马分布的密度、分布函数、量化函数和随机生成。


使用方法


dgamma(x, shape, rate = 1, scale = 1/rate, log = FALSE)

pgamma(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE,

log.p = FALSE)

qgamma(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE,

log.p = FALSE)

rgamma(n, shape, rate = 1, scale = 1/rate)

论点


x, q

量值的向量。

p

概率的向量。

n

观察的数量。如果length(n)>1,则长度被认为是所需的数字。

另一种指定比例的方法。

形状、规模

形状和比例参数。必须是积极的,规模严格。

日志,日志.p

逻辑的;如果是TRUE,概率/密度p会以log(p)的形式返回。

下部.尾部

逻辑的;如果是TRUE(默认),概率是P[X≤x],否则是P[X>x]。

详细内容


如果省略了scale,它将假定默认值为1。


具有参数shape = a和scale = s的Gamma分布的密度为


f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)


这里的Gamma(a)是由R的gamma()实现并在其帮助中定义的函数。请注意,a=0对应于所有质量都在0点的三态分布)。


平均数和方差为E(X)=a*s,Var(X)=a*s^2。


累积风险H(t) = - log(1 - F(t))为


-pgamma(t, ..., lower = FALSE, log = TRUE)

请注意,对于小的形状值(和适度的规模),Gamma分布的很大一部分质量是在x的值上,以至于它们在计算机运算中会被表示为零。所以rgamma很可能返回的值将被表示为零。(这也会发生在非常大的尺度值上,因为实际的生成是在尺度=1的情况下完成的)。


价值


dgamma给出密度,pgamma给出分布函数,qgamma给出量化函数,rgamma生成随机偏差。


无效的参数将导致返回值为NaN,并发出警告。


对于rgamma来说,结果的长度由n决定,并且是其他函数的数字参数长度的最大值。


n以外的数字参数被回收到结果的长度中。只使用逻辑论证的第一要素。


注意事项


S(Becker等人(1988)的参数化是通过形状和速率进行的:S没有规模参数。在R 2.x.y中,比例优先于速率,但现在两者都提供是一个错误。


pgamma与不完全伽马函数密切相关。正如Abramowitz和Stegun 6.5.1所定义的那样(以及 "数字配方"),这就是


P(a,x) = 1/Gamma(a) integral_0^x t^(a-1) exp(-t) dt


P(a, x)是pgamma(x, a)。其他作者(例如卡尔-皮尔逊在他1922年的表格中)省略了归一化因素,将不完全伽马函数γ(a,x)定义为gamma(a,x) = integral_0^x t^(a-1) exp(-t) dt,即pgamma(x, a) * gamma(a) 。然而还有一些人使用 "上 "不完全伽马函数。


Gamma(a,x) = integral_x^Inf t^(a-1) exp(-t) dt。


可以通过pgamma(x, a, lower = FALSE)* gamma(a)来计算。


但是请注意,pgamma(x, a, ...)目前要求a>0,而不完全伽马函数也是针对负a定义的。在这种情况下,你可以使用软件包gsl中的gamma_inc(a,x)(用于Γ(a,x))。


另见https://en.wikipedia.org/wiki/Incomplete_gamma_function,或http://dlmf.nist.gov/8.2#i。


来源


dgamma是通过泊松密度计算的,使用的是Catherine Loader贡献的代码(见dbinom)。


pgamma使用一个未发表的(也没有其他记录)算法,"主要由Morten Welinder"。


qgamma是基于C语言翻译的


Best, D.J. 和 D. E. Roberts (1975)。算法AS91。卡方分布的百分比点。应用统计,24,385-388。


加上最后的牛顿步骤,以提高近似度。


形状>=1的rgamma使用


Ahrens, J. H. and Dieter, U.(1982).通过修改后的拒绝技术生成伽马变体。Communications of the ACM, 25, 47-54,


而对于0 < 形状 < 1,则使用


Ahrens, J. H. and Dieter, U.(1974).从伽马、贝塔、泊松和二项分布中取样的计算机方法。计算, 12, 223-246.


参考文献


Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language.Wadsworth & Brooks/Cole.


Shea, B. L. (1988) Algorithm AS 239, Chi-squared and incomplete Gamma integral, Applied Statistics (JRSS C) 37, 466-473.


Abramowitz, M. and Stegun, I.A.(1972) Handbook of Mathematical Functions.纽约:多佛。第六章:伽马和相关函数。


NIST的数学函数数字图书馆。http://dlmf.nist.gov/,第8.2节。


因此,亲爱的人们,移植代码与在统计学家的著作阵列上组装代码完全是不同层次的任务。

 

这一部分是科学的胡说八道。

6. Обнаруженные ошибки расчетов в R

В процессе тестирования расчетов в R была обнаружена ошибка расчета функции плотности для распределений Gamma, и ChiSquare и Noncentral ChiSquare в точке x=0.

> n <- 5
> k <- seq(0,1,by=1/n)
> gamma_pdf<-dgamma(k, 1,1, log = FALSE)
> gamma_cdf<-pgamma(k, 1,1, log = FALSE)
> k
[1] 0.0 0.2 0.4 0.6 0.8 1.0
> gamma_pdf
[1] 1.0000000 0.8187308 0.6703200 0.5488116 0.4493290 0.3678794
> gamma_cdf
[1] 0.0000000 0.1812692 0.3296800 0.4511884 0.5506710 0.6321206

Значение вероятности гамма-распределения в точке x=0 считается верно (gamma_cdf=0), но значение плотности гамма-распределения (функция dgamma() в R) в точке x=0 должно быть равно 0 (а показывает gamma_pdf=1) по определению плотности вероятности гамма-распределения.

Для функций ChiSquare и Noncentral ChiSquare плотность вероятности в точке x=0 также вычисляется с ошибкой:

> n <- 5
> k <- seq(0,1,by=1/n)
> chisquare_pdf<-dchisq(k,2,log = FALSE)
> chisquare_cdf<-pchisq(k,2,log = FALSE)
> k
[1] 0.0 0.2 0.4 0.6 0.8 1.0
> chisquare_pdf
[1] 0.5000000 0.4524187 0.4093654 0.3704091 0.3351600 0.3032653
> chisquare_cdf
[1] 0.00000000 0.09516258 0.18126925 0.25918178 0.32967995 0.39346934
> n <- 5
> k <- seq(0,1,by=1/n)
> nchisquare_pdf<-dchisq(k,2,1,log = FALSE)
> nchisquare_cdf<-pchisq(k,2,1,log = FALSE)
> k
[1] 0.0 0.2 0.4 0.6 0.8 1.0
> nchisquare_pdf
[1] 0.3032653 0.2882986 0.2737496 0.2596492 0.2460204 0.2328798
> nchisquare_cdf
[1] 0.00000000 0.05914973 0.11534730 0.16867948 0.21923842 0.26712020

В точке x=0 функция dchisq()  выдает ненулевые значения 0.5 и 0.3032653, при этом функция pchisq() вероятности вычисляет правильно (они равны 0).

它应该被称为--在计算单向分布的极端点的 密度函数时的惯例差异。并为统计学家解释--以及为什么你坚持其他惯例而不是三年级的水平(因为Wolfram这么认为)。

现在,这是唯一发现的与法律部分有关的接头。

Для расчета вероятности нецентрального T-распределения Стьюдента в языке R используется алгоритм AS 243, предложенный Lenth [6]. Достоинством этого метода является быстрый рекуррентный расчет членов бесконечного ряда с неполной бета-функций. Но в статье [7] было показано, что из-за ошибки оценки точности при суммировании членов ряда данный алгоритм приводит к ошибкам (таблица 3 в статье [7]), особенно для больших значений параметра нецентральности delta. Авторы статьи [7] предложили скорректированный алгоритм рекуррентного расчета вероятности нецентрального T-распределения.

У нас в в статистической библиотеке MQL5 используется правильный алгоритм для расчета вероятностей из статьи [7] , что дает точные результаты.

 

我告诉你,你是如此努力地想摆脱具体的讨论。

至少你承认了一个问题。你忘了承认,我们有专家能够检查、理解并找到更好的解决方案。

阿列克谢,等待R的答复。并注意到你如何停止回答@Quantum的 问题。他是故意引导你整齐地走向一个已知的目标。

到目前为止,我们这边有Mathematica + Wolfram Alpha + Mathlab + MQL5,而你们这边有OPSorced R。其中的代码写得很草率,完全没有你所期望的20年之久的项目的精炼。