Makaledeki orijinal R hata ifadesine geri dönelim.
Görüşümüz geçerliliğini koruyor - hatalar var ve bunlar uygulamadaki ihmalden kaynaklanıyor.
Uzmanınız bana esas hakkında cevap vermek istemiyor. Wolfram'da ve diğerlerinde dürttü.
Görüşümüzü tekrar edeceğim. Gama dağılımında herhangi bir hata yoktur. Matematik camiasındaki bir uzlaşım meselesi. Sizin açınızdan doğru olmayan bir hatayla ilgili bir ifade var.
Versiyonunuzdaki yoğunluk için sıfır çıktısı, öncelikle olası seçeneklerden (kurallar) biridir. İkincisi, bu değerin (nan, 0 veya 1) seçiminden uygulamalı analizin özü hiçbir şeyi etkilemez. İstatistikleri tahmin etmek için dağılım fonksiyonları kullanılır. Bu dağılım sıfırdır. Ve bu yeterli.
t dağılımı ile ilgili. Bu hatayı R'nin en son sürümünde yeniden oluşturdum. Ancak algoritmanın özüne girmedim. Düzeltmenin gerçekten gerekli olduğunu kabul ediyorum.
Fikrinize saygı duyuyorum. Ama neden bundan sen sorumlusun?
Tekrarlıyorum.
Versiyonunuzdaki yoğunluk için sıfır çıktısı, öncelikle olası seçeneklerden (kurallar) biridir. İkincisi, bu değerin (nan, 0 veya 1) seçiminden uygulamalı analizin özü hiçbir şeyi etkilemez. İstatistikleri tahmin etmek için dağılım fonksiyonları kullanılır. Bu noktada dağılım sıfırdır. Ve bu yeterli.
Genel olarak ekleyeceğim , hesaplamaların hızlanması bir artı. Yani, nesnel olarak, makalenize göre işlevlerin uygulanması daha kötü ve hatta daha iyi değildir.
0^0 ve 0! boş çarpım kuralı nedeniyle 1'e eşittir. IEEE standardı, 0^0'ın 1'i değerlendirmesi gerektiğini söyler. Dolayısıyla çoğu bilgisayar yazılımı onu bu şekilde değerlendirecektir. 0'a değerlendirmenin yararlı olduğu durumlar yoktur.
0^0=1 olduğunu varsayan birçok formül vardır, örneğin polinomlar ve kuvvet serileri için notasyon, temel sayı aritmetiği, binom teoremi, vb., bunların tümü 0^0=1 olduğunu varsayar. Örneğin, x=0'ı x^0+x^1+x^2+... = 1/(1-x) olarak değiştirmek, 0^0 = 1'i gösterir.
Yani bu ifadeyi 1'e çevirmenin bir standardı vardır ve ifadeyi 0'a çevirmenin bir faydası veya zararı yoktur.
Sanırım R kodlanmış 1 ... ve sizde 0 var.
Bu noktada ve tartışmanın bir anlamı yok. Bilgisayar değeri cebirsel olarak hesaplayamaz.
x = 0, alfa = 1, beta = 1 için pay, tüm kesri belirsizliğe getiren belirsiz bir değer alır.
Kesin olarak söylemek gerekirse, sıfır noktasındaki gama dağılımının yoğunluğunun tanımlanmadığını beyan ederiz. Ve sağdaki limiti alırken yoğunluk birliğe eşittir.
Bunun ışığında, "R'deki hesaplama hataları" ifadesinin formülasyonunun doğru olmadığına inanıyoruz. Daha doğrusu, bu bir uzlaşım meselesidir: sıfır ifadesinin sıfırın gücüne eşit olarak nasıl düşünüleceği. Gama dağılımının yoğunluğunu sıfır noktasında sıfıra eşitlemek, herhangi bir geleneksel uygulama gibi görünmüyor.
belirttiğiniz gibi x=0 noktasında bir belirsizlik içerdiğinden fonksiyon tanımlamaya uygun değildir.
x>=0 yerine x>0 koşulunu koyarsak belirsizlik olmayacak ve bu formülü kullanarak değerleri hesaplamak mümkün olacaktır.
Uygulamaya gelince - Mathematica ve Matlab, mühendislik hesaplamaları için endüstri standartları olarak kabul edilebilir, 0 verirler, yani. o zaman ifade sadece x>0 için geçerlidir.
Bir fonksiyon tanımlamanın, onun hesaplanma şeklini belirtmek anlamına geldiği gerçeğinden başlayabilirsiniz.
Azaltılmış ifade
belirttiğiniz gibi x=0 noktasında bir belirsizlik içerdiğinden fonksiyon tanımlamaya uygun değildir.
x>=0 yerine x>0 koşulunu koyarsak belirsizlik olmayacak ve bu formülü kullanarak değerleri hesaplamak mümkün olacaktır.
Uygulamaya gelince - Mathematica ve Matlab, mühendislik hesaplamaları için endüstri standartları olarak kabul edilebilir, 0 verirler, yani. o zaman ifade sadece x>0 için geçerlidir.
Doğru şekilde. Fonksiyon pozitif alan (0,inf) üzerinde tanımlanır.
Bu arada, ilginç. Wolfram, [0,inf] uzayındaki gama dağılımının olasılık fonksiyonunu tanımlar. Ve böylece sıfırda belirli bir değer veriyorlar... Bu garip.
Mathematica ve Matlab, mühendislik hesaplamaları için endüstri standartları olarak kabul edilebilir
Çözümü olmayan bir durumu aldınız, Wolfram'ın döndürdüğü sonuca baktınız ve diğer tüm sonuçları yanlış olarak adlandırdınız. Bu mühendislik hesaplamaları değil, dogmadır.
Veya R'yi standart olarak alıp Wolfram'da bir hata bulma hakkında yazabilirler. Sanırım tüm matematiksel yazılımları alıp böyle bir durumda ne döndürdüklerine göre iki gruba ayırırsanız - %50 / %50 şeklinde bir bölme olacaktır, mql ile ilgili yazıya bir düzine softin daha ekleyebilirsiniz. mql'den üstündür.
AS 243'te belirtilen hatalar için teşekkür ederiz. Ancak, net bir çözümü olmayan parametrelerle diğer işlevlerin davranışını suçlamamalısınız. Bu nedenle, mql'nin avantajları hakkında bir makale yazmak gerekiyordu - burada R'de 15 ondalık basamak hatası olan şöyle ve böyle bir işlev var. Ve mql'de daha doğru olan başka bir fonksiyonumuz var. Her şey kültürel ve bilimseldi ve şimdi olduğu gibi dogmatik değildi.
Birkaç sayfa için , fonksiyon tanımları alanının kenarlarında Vash ve R algoritmaları arasındaki farklar üzerinde bir anlaşmazlık var. Uç noktalar uç noktalardır ve uygulamada farklılıklar ihmal edilebilir.
Ancak bu durumda, çok daha önemli bir sorum var:
Tüm işlevleriniz için belgeler nerede?
Daha önce, işlevinizi aldığımızı düşündüm, sonra işlevleriniz analog olduğu için R belgelerini alıyoruz ve R belgelerinin algoritmaları tanımlayan veya R tarafından belirtilen bağlantıları izleyen bölümlerine dalıyoruz. R çok yüksek kaliteye sahip dokümantasyon ve referans aparatı.
Anlaşmazlık sırasında, işlevlerinizin R'den farklı olduğunu öğrendim - bunlar, algoritmaları başka kaynaklara dayanan diğer bazı işlevlerdir. Makalenin kendisinde bununla ilgili hiçbir şey yok, belge yok. Ve bunu Renat'tan tamamen farklı bir bağlamda öğreniyoruz.
Uygulamada, kodu R'den MQL5'e taşımanın imkansız olduğu konusunda kesin bir sonuç vardır.
Ve bu yüzden.
"R'nin bir analoğu" yazıyorsa ve bir analog için herhangi bir belge verilmemişse, bu %100 analogdur ve kodu yorumlayıcıdan derleyiciye zahmet etmeden aktarabilirim. Ve durum böyle değilse, kodu R'den MQL5'e taşıma fikrine son vermek için bir vaka yeterlidir. Çalışma kodunu R'ye taşırken, algoritmaların uygulanmasındaki incelikler nedeniyle çalışmayan MQL kodu aldığınızda, hiç kimse tamamen çıkmaz bir baş ağrısına sahip olmak istemez.
Daha önce, işlevinizi aldığımızı düşündüm, sonra işlevleriniz analog olduğu için R belgelerini alıyoruz ve R belgelerinin algoritmaları tanımlayan veya R tarafından belirtilen bağlantıları izleyen bölümlerine dalıyoruz. R çok yüksek kaliteye sahip dokümantasyon ve referans aparatı.
Anlaşmazlık sırasında, işlevlerinizin R'den farklı olduğunu öğrendim - bunlar, algoritmaları başka kaynaklara dayanan diğer bazı işlevlerdir. Makalenin kendisinde bununla ilgili hiçbir şey yok, belge yok. Ve bunu Renat'tan tamamen farklı bir bağlamda öğreniyoruz.
Uygulamada, kodu R'den MQL5'e taşımanın imkansız olduğu konusunda kesin bir sonuç vardır.
Ve bu yüzden.
"R'nin bir analoğu" yazıyorsa ve bir analog için herhangi bir belge verilmemişse, bu %100 analogdur ve kodu yorumlayıcıdan derleyiciye zahmet etmeden aktarabilirim. Ve durum böyle değilse, kodu R'den MQL5'e taşıma fikrine son vermek için bir vaka yeterlidir. Çalışma kodunu R'ye taşırken, algoritmaların uygulanmasındaki incelikler nedeniyle çalışmayan MQL kodu aldığınızda, hiç kimse tamamen çıkmaz bir baş ağrısına sahip olmak istemez.
Fonksiyon, bir dizi rastgele değişken x[] için mu ve sigma parametreleriyle normal dağılımın olasılık yoğunluk fonksiyonunun değerlerini hesaplar. Hata durumunda false döndürür. R'deki dnorm() analogu .
boolMathProbabilityDensityNormal (
constdouble &x[], // [in] Массив со значениями случайной величиныconstdouble mu, // [in] Параметр распределения mean (математическое ожидание)constdouble sigma, // [in] Параметр распределения sigma (среднеквадратическое отклонение) constbool log_mode, // [in] Флаг расчета логарифма значения, если log_mode=true, то рассчитывается натуральный логарифм плотности вероятностиdouble &result[] // [out] Массив для значений функции плотности вероятности
);
2) normal analog:
Fonksiyon, x[] rasgele değişkenler dizisi için mu ve sigma parametreleriyle normal olasılık dağılım fonksiyonunun değerini hesaplar. Hata durumunda false döndürür. R'deki pnorm() analogu .
bool MathCumulativeDistributionNormal (
constdouble &x[], // [in] Массив со значениями случайной величиныconstdouble mu, // [in] Математическое ожиданиеconstdouble sigma, // [in] Среднеквадратическое отклонениеconstbool tail, // [in] Флаг расчета, если lower_tail=true, то рассчитывается вероятность того, что случайная величина не превысит xconstbool log_mode, // [in] Флаг расчета логарифма значения, если log_mode=true, то рассчитывается натуральный логарифм вероятности
double &result[] // [out] Массив для значений функции вероятности
);
3) qnorm analogu:
Olasılık[] dizisi olasılık değerleri için fonksiyon, mu ve sigma parametreleri ile ters normal dağılım fonksiyonunun değerlerini hesaplar. Hata durumunda false döndürür.R'deki qnorm() analogu .
boolMathQuantileNormal (
constdouble &probability[], // [in] Массив со значениями вероятностей случайной величиныconstdouble mu, // [in] Математическое ожиданиеconstdouble sigma, // [in] Среднеквадратическое отклонениеconstbool tail, // [in] Флаг расчета, если lower_tail=false, то расчет ведется для вероятности 1.0-probabilityconstbool log_mode, // [in] Флаг расчета, если log_mode=true, то расчет ведется для вероятности Exp(probability)double &result[] // [out] Массив со значениями квантилей
);
Kullanımlarına bir örnek:
#include <Math\Stat\Normal.mqh> //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ voidOnStart () { //--- arrays for calculated values double x_values[]; double normal_pdf[]; double normal_cdf[]; double normal_quantile[]; //--- prepare x values constint N= 11 ; ArrayResize (x_values,N); for ( int i= 0 ;i<N;i++) x_values[i]=i* 1.0 /(N- 1 ); //--- set distribution parameters double mu= 2.0 ; double sigma= 1.0 ; //--- calculate pdf, cdf and quantiles MathProbabilityDensityNormal(x_values,mu,sigma, false ,normal_pdf); MathCumulativeDistributionNormal(x_values,mu,sigma, true , false ,normal_cdf); MathQuantileNormal(normal_cdf,mu,sigma, true , false ,normal_quantile); //--- show calculated values for ( int i= 0 ;i<N;i++) PrintFormat ( "1 %d, x=%.20e PDF=%.20e, CDF=%.20e, Q=%.20e," ,i,x_values[i],normal_pdf[i],normal_cdf[i],normal_quantile[i]); }
Sonuç:
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 0, X = 0.000000000000000000E + 00 PDF = 5.39909665131880628364e-02, CDF = 2.27501319481792120547E-02, q = 0.000000000000000000E + 00, 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 1, X = 1.0000000000000055511E-01 PDF = 6.56158147746765951780E-02, CDF = 2.87165598160018034624E-02, q = 1.000000000000088818E-01, 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 2, X = 2.000000000000011102E-01 PDF = 7.89501583008941493214E-02, CDF = 3.59303191129258098213E-02, q = 2.000000000000177636e-01, 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 3, X = 2.999999999999999988898E-01 PDF = 9.40490773768869470217E-02, CDF = 4.45654627585430410108E-02, q = 3.000000000000266454e-01, 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 4, X = 4.000000000000022204E-01 PDF = 1.1092083467955543315E-01, CDF = 547992916995579740225E-02, q = 3.999999999999911182e-01 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 5, X = 5.000000000000000000E-01 PDF = 1.29517595665891743772e-01, CDF = 6.68072012688580713080E-02, Q = 5.000000000000222045E-01, 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 6, x = 5.99999999999999977796e-01 pdf = 1.49727465635744877437e-01, CDF = 8.07566592337710387195E-02, q = 6.00 milyar-01, q = 6.0000000000310862e-01 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 7, x = 6.999999999999999555591E-01 PDF = 1.71368542047807355438e-01, CDF = 9.68004845856103440793E-02, q = 7.000000000000177636e-01 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 8, X = 8.000000000000044409E-01 PDF = 1.94186054983212952330E-01, CDF = 1.1506967021708289515E-01, Q = 8.000000000000044409E-01, 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 9, X = 9.000000000000022204E-01 PDF = 2.17852177032550525793E-01, CDF = 1.35666060946382671659E-01, Q = 9.000000000000133227E-01, 2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 10, X = 1.000000000000000000E + 00 PDF = 2.41970724519143365328E-01, CDF = 1.58655253931457046468E-01, q = 1.000000000000000000E + 00,
Рассмотрены функции для работы с основными статистическими распределениями, реализованными в языке R. Это распределения Коши, Вейбулла, нормальное, логнормальное, логистическое, экспоненциальное, равномерное, гамма-распределение, центральное и нецентральные распределения Бета, хи-квадрат, F-распределения Фишера, t-распределения Стьюдента, а также дискретные биномиальное и отрицательное биномиальные распределения, геометрическое, гипергеометрическое и распределение Пуассона. Есть функции расчета теоретических моментов распределений, которые позволяют оценить степень соответствия реального распределения модельному.
Makaledeki orijinal R hata ifadesine geri dönelim.
Görüşümüz geçerliliğini koruyor - hatalar var ve bunlar uygulamadaki ihmalden kaynaklanıyor.
R destek ekibine bir soru sormayı deneyeceğim.
Ve onun yaptığı gibi derine iner, her şeyi anlatır, birkaç haftayı tekrar kontrol ederek geçirirsiniz. Ama bunun yerine, makalemizi bile okumadın.
Kendi payımıza, işi yaptık. Ve iyi yaptılar. Wolfram sizin için bir otorite değilse, o zaman bu iletişim şekline boşuna başladınız.
Lütfen içerik oluşturucuları kullanıcılarla karıştırmayın.
Ve onun yaptığı gibi derine iner, her şeyi anlatır, birkaç haftayı tekrar kontrol ederek geçirirsiniz. Ama bunun yerine, makalemizi bile okumadın.
Kendi payımıza, işi yaptık. Ve iyi yaptılar. Wolfram sizin için bir otorite değilse, o zaman bu iletişim şekline boşuna başladınız.
Lütfen içerik oluşturucuları kullanıcılarla karıştırmayın.
0^0=1 olduğunu varsayan birçok formül vardır, örneğin polinomlar ve kuvvet serileri için notasyon, temel sayı aritmetiği, binom teoremi, vb., bunların tümü 0^0=1 olduğunu varsayar. Örneğin, x=0'ı x^0+x^1+x^2+... = 1/(1-x) olarak değiştirmek, 0^0 = 1'i gösterir.
Bir fonksiyon tanımlamanın, onun hesaplanma şeklini belirtmek anlamına geldiği gerçeğinden başlayabilirsiniz.
Azaltılmış ifadeAyrıca, göre:
https://en.wikipedia.org/wiki/Gamma_distribution
x = 0, alfa = 1, beta = 1 için pay, tüm kesri belirsizliğe getiren belirsiz bir değer alır.
Kesin olarak söylemek gerekirse, sıfır noktasındaki gama dağılımının yoğunluğunun tanımlanmadığını beyan ederiz. Ve sağdaki limiti alırken yoğunluk birliğe eşittir.
Bunun ışığında, "R'deki hesaplama hataları" ifadesinin formülasyonunun doğru olmadığına inanıyoruz. Daha doğrusu, bu bir uzlaşım meselesidir: sıfır ifadesinin sıfırın gücüne eşit olarak nasıl düşünüleceği. Gama dağılımının yoğunluğunu sıfır noktasında sıfıra eşitlemek, herhangi bir geleneksel uygulama gibi görünmüyor.
belirttiğiniz gibi x=0 noktasında bir belirsizlik içerdiğinden fonksiyon tanımlamaya uygun değildir.
x>=0 yerine x>0 koşulunu koyarsak belirsizlik olmayacak ve bu formülü kullanarak değerleri hesaplamak mümkün olacaktır.
Uygulamaya gelince - Mathematica ve Matlab, mühendislik hesaplamaları için endüstri standartları olarak kabul edilebilir, 0 verirler, yani. o zaman ifade sadece x>0 için geçerlidir.
Bir fonksiyon tanımlamanın, onun hesaplanma şeklini belirtmek anlamına geldiği gerçeğinden başlayabilirsiniz.
Azaltılmış ifadebelirttiğiniz gibi x=0 noktasında bir belirsizlik içerdiğinden fonksiyon tanımlamaya uygun değildir.
x>=0 yerine x>0 koşulunu koyarsak belirsizlik olmayacak ve bu formülü kullanarak değerleri hesaplamak mümkün olacaktır.
Uygulamaya gelince - Mathematica ve Matlab, mühendislik hesaplamaları için endüstri standartları olarak kabul edilebilir, 0 verirler, yani. o zaman ifade sadece x>0 için geçerlidir.
Mathematica ve Matlab, mühendislik hesaplamaları için endüstri standartları olarak kabul edilebilir
Çözümü olmayan bir durumu aldınız, Wolfram'ın döndürdüğü sonuca baktınız ve diğer tüm sonuçları yanlış olarak adlandırdınız. Bu mühendislik hesaplamaları değil, dogmadır.
Veya R'yi standart olarak alıp Wolfram'da bir hata bulma hakkında yazabilirler. Sanırım tüm matematiksel yazılımları alıp böyle bir durumda ne döndürdüklerine göre iki gruba ayırırsanız - %50 / %50 şeklinde bir bölme olacaktır, mql ile ilgili yazıya bir düzine softin daha ekleyebilirsiniz. mql'den üstündür.
AS 243'te belirtilen hatalar için teşekkür ederiz. Ancak, net bir çözümü olmayan parametrelerle diğer işlevlerin davranışını suçlamamalısınız.
Bu nedenle, mql'nin avantajları hakkında bir makale yazmak gerekiyordu - burada R'de 15 ondalık basamak hatası olan şöyle ve böyle bir işlev var. Ve mql'de daha doğru olan başka bir fonksiyonumuz var. Her şey kültürel ve bilimseldi ve şimdi olduğu gibi dogmatik değildi.
x=0 noktasında a=0.5, b=1 parametrelerine sahip bir örnek düşünün
x=0 noktasını hariç tutmazsanız, yoğunluk birbirinden uzaklaşır ve her şey olasılıkla uyumludur.
Ve sonra da sorun yok:
CDF R hesaplanırken x=0 noktasını hariç tutarken, sonsuzluğun bir yerde kaybolduğu ortaya çıktı.
Sevgili meslektaşım!
Birkaç sayfa için , fonksiyon tanımları alanının kenarlarında Vash ve R algoritmaları arasındaki farklar üzerinde bir anlaşmazlık var. Uç noktalar uç noktalardır ve uygulamada farklılıklar ihmal edilebilir.
Ancak bu durumda, çok daha önemli bir sorum var:
Tüm işlevleriniz için belgeler nerede?
Daha önce, işlevinizi aldığımızı düşündüm, sonra işlevleriniz analog olduğu için R belgelerini alıyoruz ve R belgelerinin algoritmaları tanımlayan veya R tarafından belirtilen bağlantıları izleyen bölümlerine dalıyoruz. R çok yüksek kaliteye sahip dokümantasyon ve referans aparatı.
Anlaşmazlık sırasında, işlevlerinizin R'den farklı olduğunu öğrendim - bunlar, algoritmaları başka kaynaklara dayanan diğer bazı işlevlerdir. Makalenin kendisinde bununla ilgili hiçbir şey yok, belge yok. Ve bunu Renat'tan tamamen farklı bir bağlamda öğreniyoruz.
Uygulamada, kodu R'den MQL5'e taşımanın imkansız olduğu konusunda kesin bir sonuç vardır.
Ve bu yüzden.
"R'nin bir analoğu" yazıyorsa ve bir analog için herhangi bir belge verilmemişse, bu %100 analogdur ve kodu yorumlayıcıdan derleyiciye zahmet etmeden aktarabilirim. Ve durum böyle değilse, kodu R'den MQL5'e taşıma fikrine son vermek için bir vaka yeterlidir. Çalışma kodunu R'ye taşırken, algoritmaların uygulanmasındaki incelikler nedeniyle çalışmayan MQL kodu aldığınızda, hiç kimse tamamen çıkmaz bir baş ağrısına sahip olmak istemez.
Tüm işlevleriniz için belgeler nerede?
Daha önce, işlevinizi aldığımızı düşündüm, sonra işlevleriniz analog olduğu için R belgelerini alıyoruz ve R belgelerinin algoritmaları tanımlayan veya R tarafından belirtilen bağlantıları izleyen bölümlerine dalıyoruz. R çok yüksek kaliteye sahip dokümantasyon ve referans aparatı.
Anlaşmazlık sırasında, işlevlerinizin R'den farklı olduğunu öğrendim - bunlar, algoritmaları başka kaynaklara dayanan diğer bazı işlevlerdir. Makalenin kendisinde bununla ilgili hiçbir şey yok, belge yok. Ve bunu Renat'tan tamamen farklı bir bağlamda öğreniyoruz.
Uygulamada, kodu R'den MQL5'e taşımanın imkansız olduğu konusunda kesin bir sonuç vardır.
Ve bu yüzden.
"R'nin bir analoğu" yazıyorsa ve bir analog için herhangi bir belge verilmemişse, bu %100 analogdur ve kodu yorumlayıcıdan derleyiciye zahmet etmeden aktarabilirim. Ve durum böyle değilse, kodu R'den MQL5'e taşıma fikrine son vermek için bir vaka yeterlidir. Çalışma kodunu R'ye taşırken, algoritmaların uygulanmasındaki incelikler nedeniyle çalışmayan MQL kodu aldığınızda, hiç kimse tamamen çıkmaz bir baş ağrısına sahip olmak istemez.
Şu anda, işlevlerin açıklaması https://www.mql5.com/ru/articles/2742 makalesinde yer almaktadır.
Normal dağılımın mu=2, sigma=1 parametreleriyle hesaplanması örneğini ele alalım:
n <- 10
k <- seq(0,1,by=1/n)
mu=2
sigma=1
normal_pdf<-dnorm(k, mu, sigma, log = FALSE)
normal_cdf<-pnorm(k, mu, sigma, lower.tail=TRUE,log.p = FALSE)
normal_quantile <- qnorm(normal_cdf, mu,sigma, lower.tail=TRUE,log.p = FALSE)
normal_pdf
normal_cdf
normal_quantile
1) dnorm() işlevinin R analoğu şu işlevdir:
Fonksiyon, bir dizi rastgele değişken x[] için mu ve sigma parametreleriyle normal dağılımın olasılık yoğunluk fonksiyonunun değerlerini hesaplar. Hata durumunda false döndürür. R'deki dnorm() analogu .
2) normal analog:
Fonksiyon, x[] rasgele değişkenler dizisi için mu ve sigma parametreleriyle normal olasılık dağılım fonksiyonunun değerini hesaplar. Hata durumunda false döndürür. R'deki pnorm() analogu .
3) qnorm analogu:
Olasılık[] dizisi olasılık değerleri için fonksiyon, mu ve sigma parametreleri ile ters normal dağılım fonksiyonunun değerlerini hesaplar. Hata durumunda false döndürür. R'deki qnorm() analogu .
Kullanımlarına bir örnek:
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart ()
{
//--- arrays for calculated values
double x_values[];
double normal_pdf[];
double normal_cdf[];
double normal_quantile[];
//--- prepare x values
const int N= 11 ;
ArrayResize (x_values,N);
for ( int i= 0 ;i<N;i++)
x_values[i]=i* 1.0 /(N- 1 );
//--- set distribution parameters
double mu= 2.0 ;
double sigma= 1.0 ;
//--- calculate pdf, cdf and quantiles
MathProbabilityDensityNormal(x_values,mu,sigma, false ,normal_pdf);
MathCumulativeDistributionNormal(x_values,mu,sigma, true , false ,normal_cdf);
MathQuantileNormal(normal_cdf,mu,sigma, true , false ,normal_quantile);
//--- show calculated values
for ( int i= 0 ;i<N;i++)
PrintFormat ( "1 %d, x=%.20e PDF=%.20e, CDF=%.20e, Q=%.20e," ,i,x_values[i],normal_pdf[i],normal_cdf[i],normal_quantile[i]);
}
Sonuç:
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 0, X = 0.000000000000000000E + 00 PDF = 5.39909665131880628364e-02, CDF = 2.27501319481792120547E-02, q = 0.000000000000000000E + 00,
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 1, X = 1.0000000000000055511E-01 PDF = 6.56158147746765951780E-02, CDF = 2.87165598160018034624E-02, q = 1.000000000000088818E-01,
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 2, X = 2.000000000000011102E-01 PDF = 7.89501583008941493214E-02, CDF = 3.59303191129258098213E-02, q = 2.000000000000177636e-01,
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 3, X = 2.999999999999999988898E-01 PDF = 9.40490773768869470217E-02, CDF = 4.45654627585430410108E-02, q = 3.000000000000266454e-01,
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 4, X = 4.000000000000022204E-01 PDF = 1.1092083467955543315E-01, CDF = 547992916995579740225E-02, q = 3.999999999999911182e-01
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 5, X = 5.000000000000000000E-01 PDF = 1.29517595665891743772e-01, CDF = 6.68072012688580713080E-02, Q = 5.000000000000222045E-01,
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 6, x = 5.99999999999999977796e-01 pdf = 1.49727465635744877437e-01, CDF = 8.07566592337710387195E-02, q = 6.00 milyar-01, q = 6.0000000000310862e-01
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 7, x = 6.999999999999999555591E-01 PDF = 1.71368542047807355438e-01, CDF = 9.68004845856103440793E-02, q = 7.000000000000177636e-01
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 8, X = 8.000000000000044409E-01 PDF = 1.94186054983212952330E-01, CDF = 1.1506967021708289515E-01, Q = 8.000000000000044409E-01,
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 9, X = 9.000000000000022204E-01 PDF = 2.17852177032550525793E-01, CDF = 1.35666060946382671659E-01, Q = 9.000000000000133227E-01,
2016.11.11 11: 56: 46.413 Test (EURUSD, H1) 1 10, X = 1.000000000000000000E + 00 PDF = 2.41970724519143365328E-01, CDF = 1.58655253931457046468E-01, q = 1.000000000000000000E + 00,
R için hesaplamanın sonucu: