vector x = {10,34,23,54,9};
vector y = {4,5,11,15,20};
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
Print("Ковариация рассчиталась по выборке");
Print(x.Cov(y));
Print("\nДисперсия рассчиталась по совокупности");
Print(x.Var());
}
2024.11.2813:50:24.694 Ковариация рассчиталась по выборке
2024.11.2813:50:24.694 [[350.5,5.750000000000007]
2024.11.2813:50:24.694 [5.750000000000007,45.5]]
2024.11.2813:50:24.6942024.11.2813:50:24.694 Дисперсия рассчиталась по совокупности
2024.11.2813:50:24.694280.4
В статистике есть понятия "полная выборка" и "подвыборка".
Для полной выборки считается size. Для подвыборки (например, в скользящем окне) считается size-1
О чём и речь. У вас для x.Cov(y) считает как "подвыборка" size-1, для x.Var() считает как "полная выборка" size.
Почему разногласие в двух методах? Например я хочу использовать оба метода в неком расчёте. Сейчас один метод считает "подвыборку", второй метод "полную выборку". Ну это не корректор ведь будет.
О чём и речь. У вас для x.Cov(y) считает как "подвыборка" size-1, для x.Var() считает как "полная выборка" size.
Почему разногласие в двух методах? Например я хочу использовать оба метода в неком расчёте. Сейчас один метод считает "подвыборку", второй метод "полную выборку". Ну это не корректор ведь будет.
Для рыночных данных используется "подвыборка".
Мы считаем ровно так же, как считаются в питоне аналогичные функции cov и var
numpy.cov# , , , , , , , , # Estimate a covariance matrix, given data and weights. Covariance indicates the level to which two variables vary together. If we examine N-dimensional samples, , then the covariance matrix element is the covariance of and . The element is the variance of . See the notes for an outline of the algorithm. Parameters m...
всё нормально...это просто чудеса Print() и приведения типов в нём. По хорошему его надо использовать только с единственным аргументом - строкой. Остальное только для быстрой отладки и чревато фокусами.
вот так примерно (константа copy-paste взята у вас)
datetime d=(datetime)StringToInteger("1732785720");
Print("date is "+TimeToString(d,TIME_DATE|TIME_MINUTES|TIME_SECONDS));
Калькулятор ковариации

Калькулятор дисперсии
Очевидно, что дисперсия должна так-же рассчитываться по выборке, т.е. (size-1)
Не читается дата записанная в файл. Что не так?
Вывод:
LJ 0 12:44:54.122 TestScript (EURUSD,H4) -----
NS 0 12:44:54.122 TestScript (EURUSD,H4) Date1=2024.11.28 09:22:00
QS 0 12:44:54.122 TestScript (EURUSD,H4) Str= 1732785720 2024.11.28 09:22
QQ 0 12:44:54.122 TestScript (EURUSD,H4) Date2=1970.01.01 00:00:00
CL 0 12:44:54.122 TestScript (EURUSD,H4) StrStr[0]= 1732785720 StrStr[1]=2024.11.28 StrStr[2]=09:22
DJ 0 12:44:54.122 TestScript (EURUSD,H4) Date3=1970.01.01 00:00:00
Калькулятор ковариации
Калькулятор дисперсии
Очевидно, что дисперсия должна так-же рассчитываться по выборке, т.е. (size-1)
Это - неочевидно.
В статистике есть понятия "полная выборка" и "подвыборка".
Для полной выборки считается size. Для подвыборки (например, в скользящем окне) считается size-1
Это - неочевидно.
В статистике есть понятия "полная выборка" и "подвыборка".
Для полной выборки считается size. Для подвыборки (например, в скользящем окне) считается size-1
О чём и речь. У вас
для x.Cov(y) считает как "подвыборка" size-1,
для x.Var() считает как "полная выборка" size.
Почему разногласие в двух методах?
Например я хочу использовать оба метода в неком расчёте.
Сейчас один метод считает "подвыборку", второй метод "полную выборку".
Ну это не корректор ведь будет.
Для рыночных данных используется "подвыборка".
О чём и речь. У вас
для x.Cov(y) считает как "подвыборка" size-1,
для x.Var() считает как "полная выборка" size.
Почему разногласие в двух методах?
Например я хочу использовать оба метода в неком расчёте.
Сейчас один метод считает "подвыборку", второй метод "полную выборку".
Ну это не корректор ведь будет.
Для рыночных данных используется "подвыборка".
Мы считаем ровно так же, как считаются в питоне аналогичные функции cov и var
А если в питоне ошибка ))
Ну неправильно же cov и var считать по разным выборкам.
А если в питоне ошибка ))
Ну неправильно же cov и var считать по разным выборкам.
Добавим в методы Std, Var и Cov параметр ddof (Delta Degrees of Freedom), чтобы можно было устанавливать делитель на size или size-1
Добавим в методы Std, Var и Cov параметр ddof (Delta Degrees of Freedom), чтобы можно было устанавливать делитель на size или size-1
Спасибо.
Не читается дата записанная в файл. Что не так?
Вывод:
LJ 0 12:44:54.122 TestScript (EURUSD,H4) -----
NS 0 12:44:54.122 TestScript (EURUSD,H4) Date1=2024.11.28 09:22:00
QS 0 12:44:54.122 TestScript (EURUSD,H4) Str= 1732785720 2024.11.28 09:22
QQ 0 12:44:54.122 TestScript (EURUSD,H4) Date2=1970.01.01 00:00:00
CL 0 12:44:54.122 TestScript (EURUSD,H4) StrStr[0]= 1732785720 StrStr[1]=2024.11.28 StrStr[2]=09:22
DJ 0 12:44:54.122 TestScript (EURUSD,H4) Date3=1970.01.01 00:00:00
всё нормально...это просто чудеса Print() и приведения типов в нём. По хорошему его надо использовать только с единственным аргументом - строкой. Остальное только для быстрой отладки и чревато фокусами.
вот так примерно (константа copy-paste взята у вас)
Print("date is "+TimeToString(d,TIME_DATE|TIME_MINUTES|TIME_SECONDS));
Попробовал, не помогло.
DL 0 23:51:40.684 TestScript (EURUSD,H4) Date3=1970.01.01 00:00:00
PG 0 23:51:40.684 TestScript (EURUSD,H4) date is 1970.01.01 00:00:00