Рассмотрены функции для работы с основными статистическими распределениями, реализованными в языке R. Это распределения Коши, Вейбулла, нормальное, логнормальное, логистическое, экспоненциальное, равномерное, гамма-распределение, центральное и нецентральные распределения Бета, хи-квадрат, F-распределения Фишера, t-распределения Стьюдента, а также дискретные биномиальное и отрицательное биномиальные распределения, геометрическое, гипергеометрическое и распределение Пуассона. Есть функции расчета теоретических моментов распределений, которые позволяют оценить степень соответствия реального распределения модельному.
//+------------------------------------------------------------------+ //| Test_FindOblast'.mq4 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com/ru/users/-aleks- | //+------------------------------------------------------------------+ #property copyright"Copyright 2017, MetaQuotes Software Corp." #property link"https://www.mql5.com/ru/users/-aleks-" #property version"1.00" #property strict //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ voidOnStart() { int massivSize=19; //размер массива double Digit[19]= { 10, 20, 30, 40, 50, 51, 52, 53, 54, 60, 70, 80, 120, 150, 190, 210, 223, 232, 250, 260 }; double summDelta[19-1]; int N=massivSize-1;//Количество оставшихся цифровых значений double avrMass=0;//Среднее значение массива дельт int SizeMass=0;//Узнаем размер массива int SizeMassDigit=0;//Узнаем размер массива
//-Фильтр //1. Суммируем последовательно две дельты и умножаем значение на два for(int i=1;i<massivSize;i++) { summDelta[i-1]=((Digit[i]-Digit[i-1])+(Digit[i+1]-Digit[i]))*2; } for(int i=0;i<massivSize-1;i++) printf("summDelta[%d] = %G",i,summDelta[i]);
//3. Составляем новый числовой ряд, если значение меньше среднего значения //4. Повторяем пункт 2-3 пока числовой ряд не будет меньше половины первоначального ряда for(int Z=0;N>massivSize/2;Z++) { SizeMass=ArraySize(summDelta);//Узнаем размер массива SizeMassDigit=ArraySize(Digit);//Узнаем размер массива avrMass=0; int NOL=0; int CalcZero=0;
//2. Находим среднее значение получившегося числового ряда for(int i=0;i<SizeMass;i++) { if(summDelta[i]!=0)avrMass=avrMass+summDelta[i]; else NOL++; } avrMass=avrMass/(SizeMass-NOL); Print("Среднее значение получившегося числового ряда ",Z,"=",avrMass);
SizeMass=ArraySize(summDelta);//Узнаем размер массива avrMass=iMAOnArray(summDelta,0,SizeMass,0,0,0); Print("Среднее значение получившегося числового ряда=",avrMass);
//-Основной алгоритм //1. Находим разницу между числами - это как раз их близость друг от друга.
//2. Если число меньше среднего значения дельт, получившихся из п.1, то - 1, а если нет - 0.
//3. Если значение из п.2 равно 1, то суммируем значение с предыдущим итогом, если нет - 0.
//4. Находим максимальное значение из пункта 3.
//5. Определяем диапазон - находим значение из пункта 4 и ищем вверх из пункта 3 число с нулевым значением, потом увеличиваем найденное число на единицу. //Таким образом мы получаем диапазон чисел, плотность которых наибольшая по отношению к другим. } //+------------------------------------------------------------------+
ln(a)被定义为曲线f(x)=1/x下从1到a的面积。
会有帮助吗?
ln(a)被定义为曲线f(x)=1/x下从1到a的面积。
会有帮助吗?
它能提供什么帮助?
这一切都在那里。
我可以用什么函数来查找。
1.数字组的数量。
2.每组的密度相互之间的关系。
3.群体之间的平均密度。
4.填充数字行的组的百分比。
用哪种功能我可以找到。
我不知道。我读了这个主题的标题。
我明白了。显然,这个主题的标题不是一个好标题,因为它并没有真正触及问题的核心。
制作一个过滤器是战斗的一半。欢迎大家对代码进行批评,以改进它。
//| Test_FindOblast'.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com/ru/users/-aleks- |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com/ru/users/-aleks-"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
int massivSize=19; //размер массива
double Digit[19]=
{
10,
20,
30,
40,
50,
51,
52,
53,
54,
60,
70,
80,
120,
150,
190,
210,
223,
232,
250,
260
};
double summDelta[19-1];
int N=massivSize-1;//Количество оставшихся цифровых значений
double avrMass=0;//Среднее значение массива дельт
int SizeMass=0;//Узнаем размер массива
int SizeMassDigit=0;//Узнаем размер массива
//-Фильтр
//1. Суммируем последовательно две дельты и умножаем значение на два
for(int i=1;i<massivSize;i++)
{
summDelta[i-1]=((Digit[i]-Digit[i-1])+(Digit[i+1]-Digit[i]))*2;
}
for(int i=0;i<massivSize-1;i++) printf("summDelta[%d] = %G",i,summDelta[i]);
//3. Составляем новый числовой ряд, если значение меньше среднего значения
//4. Повторяем пункт 2-3 пока числовой ряд не будет меньше половины первоначального ряда
for(int Z=0;N>massivSize/2;Z++)
{
SizeMass=ArraySize(summDelta);//Узнаем размер массива
SizeMassDigit=ArraySize(Digit);//Узнаем размер массива
avrMass=0;
int NOL=0;
int CalcZero=0;
//2. Находим среднее значение получившегося числового ряда
for(int i=0;i<SizeMass;i++)
{
if(summDelta[i]!=0)avrMass=avrMass+summDelta[i];
else NOL++;
}
avrMass=avrMass/(SizeMass-NOL);
Print("Среднее значение получившегося числового ряда ",Z,"=",avrMass);
//Обнуляем отфильтрованные значения массива summDelta
for(int i=0;i<SizeMass;i++)
{
if(summDelta[i]>avrMass)
{
summDelta[i]=0;
N--;
}
}
for(int i=0;i<SizeMass;i++) printf("Обнуление summDelta[%d] = %G",i,summDelta[i]);
//Обнуляем отфильтрованные значения массива SizeMassDigit
for(int i=0;i<SizeMassDigit;i++)
{
if(i==0)
{
if(summDelta[i]!=0) Digit[i]=Digit[i];
else Digit[i]=0;
}
if(i==1)
{
if(summDelta[i-1]!=0 || summDelta[i]!=0) Digit[i]=Digit[i];
else Digit[i]=0;
}
if(i>1 && i<SizeMass)
{
if(summDelta[i-2]!=0 || summDelta[i-1]!=0 || summDelta[i]!=0) Digit[i]=Digit[i];
else Digit[i]=0;
}
if(i==SizeMass-1+1) //Предпоследняя ячейка
{
if(summDelta[i-1-1]!=0 || summDelta[i-1-2]!=0) Digit[i]=Digit[i];
else Digit[i]=0;
}
if(i==SizeMass-1+2) //Последняя ячейка
{
if(summDelta[i-1-2]!=0) Digit[i]=Digit[i];
else Digit[i]=0;
}
}
for(int i=0;i<SizeMassDigit;i++) printf("Обнуление Digit[%d] = %G",i,Digit[i]);
}
SizeMass=ArraySize(summDelta);//Узнаем размер массива
SizeMassDigit=ArraySize(Digit);//Узнаем размер массива
avrMass=0;
int NOL=0;
int CalcZero=0;
//Удаление обнуленных данных массива summDelta
for(int i=0;i<SizeMass;i++)
{
if(summDelta[i]!=0)
{
ArrayCopy(summDelta,summDelta,i-CalcZero,i,1);
}
else CalcZero++;
}
//Удаление обнуленных данных массива Digit
CalcZero=0;
for(int i=0;i<SizeMassDigit;i++)
{
if(Digit[i]!=0)
{
ArrayCopy(Digit,Digit,i-CalcZero,i,1);
}
else CalcZero++;
}
for(int i=0;i<SizeMass;i++) printf("До обрезания массива summDelta[%d] = %G",i,summDelta[i]);
for(int i=0;i<SizeMassDigit;i++) printf("До обрезания массива Digit[%d] = %G",i,Digit[i]);
SizeMass=ArraySize(summDelta);//Узнаем размер массива
SizeMassDigit=ArraySize(Digit);//Узнаем размер массива
Print("N=",N);
if(N!=0)
{
ArrayResize(summDelta,N,0);
for(int i=0;i<N;i++) printf("summDelta[%d] = %G",i,summDelta[i]);
ArrayResize(Digit,SizeMassDigit-CalcZero,0);
for(int i=0;i<SizeMassDigit-CalcZero;i++) printf("Digit[%d] = %G",i,Digit[i]);
}
else
{
for(int i=0;i<N;i++) printf("summDelta[%d] = %G",i,summDelta[i]);
for(int i=0;i<SizeMassDigit-CalcZero;i++) printf("Digit[%d] = %G",i,Digit[i]);
return;
}
SizeMass=ArraySize(summDelta);//Узнаем размер массива
avrMass=iMAOnArray(summDelta,0,SizeMass,0,0,0);
Print("Среднее значение получившегося числового ряда=",avrMass);
//-Основной алгоритм
//1. Находим разницу между числами - это как раз их близость друг от друга.
//2. Если число меньше среднего значения дельт, получившихся из п.1, то - 1, а если нет - 0.
//3. Если значение из п.2 равно 1, то суммируем значение с предыдущим итогом, если нет - 0.
//4. Находим максимальное значение из пункта 3.
//5. Определяем диапазон - находим значение из пункта 4 и ищем вверх из пункта 3 число с нулевым значением, потом увеличиваем найденное число на единицу.
//Таким образом мы получаем диапазон чисел, плотность которых наибольшая по отношению к другим.
}
//+------------------------------------------------------------------+
制作一个过滤器是战斗的一半。欢迎大家对代码进行批评,以改进它。
制作了一个过滤器,描述其特点。
该批评什么呢--代码的质量还是过滤器的质量?
你是否做了一个过滤器,描述其特点。
该批评什么呢--代码的质量还是过滤器的质量?
此处对过滤器的描述https://www.mql5.com/ru/forum/163871/page3#comment_3940913
批评代码或想法--我很乐意就这个话题进行交流。
此处对过滤器的描述https://www.mql5.com/ru/forum/163871/page3#comment_3940913
批评代码或想法--我很乐意就这个问题进行任何交流。
> 我正在测试这样一种算法,在处理前过滤数据。
> 1.依次对两个三角洲进行求和,并将该值乘以2。
> 2.我们找到所产生的数字序列的均值
这是小孩子的游戏。
第1点是(SMA 2)*4
第2点--你得到的是什么长度的 "所得数字序列 "的平均值?