ありがとう。
私のつまずきを説明してください。HSICは任意の古典関数Y=F(X1, X2, ...) に対して依存性を示すことがわかりますか?
Evgeniy Chernish #:
なぜなら依存性が非常に弱く(例えば強いノイズのため)、それを検出できない可能性があるからである。しかし一般的には、データに何か有意なものがあれば、テストはそれを検出する。
なぜなら依存性が非常に弱く(例えば強いノイズのため)、それを検出できない可能性があるからである。しかし一般的には、データに何か有意なものがあれば、テストはそれを検出する。
私は異なる性質のデータを取りました。
// Yはシンボルのバー、X1はYの前のバー、X2はX1の前のバー。 bool Fill( double &X1[], double &X2[], double &Y[], const int Size = 1000, const datetime Time = 0, const string Symb = NULL ) { int Pos = iBarShift(Symb, PERIOD_CURRENT, Time ? Time : TimeCurrent()); return((CopyClose(Symb, PERIOD_CURRENT, Pos, Size, Y) == Size) && (CopyClose(Symb, PERIOD_CURRENT, Pos += Size, Size, X1) == Size) && (CopyClose(Symb, PERIOD_CURRENT, Pos += Size, Size, X2) == Size)); }
提案した並べ替えスクリプトでは、このような置換を行った。
if (SData == Nonlinear_dependence){ /* double x1 []; MathRandomUniform(-5,5,data_,x1); double x2 []; MathRandomUniform(-5,5,data_,x2); double NormD[]; MathRandomNormal(0,0.1,data_,NormD); double y[]; ArrayResize(y,data_); for (int i=0;i<data_;i++){ y[i] = pow(x1[i],2)*cos(M_PI*x2[i]) + NormD[i]; // Y = X1^2 * cos(pi*X2) + Noise } */. double x1[], x2[], y[]; Fill(x1, x2, y, data_);
結果はEURUSDのものである。
Test6 (EURUSD,M1) Коэффициент корреляции (X1, Y) = 0.3757 Test6 (EURUSD,M1) Коэффициент корреляции (X2, Y) = -0.4280 Test6 (EURUSD,M1) ----------------Nonlinear_dependence------------- Test6 (EURUSD,M1) Время выполнения: 12.688 seconds Test6 (EURUSD,M1) ----------------------------------- Test6 (EURUSD,M1) Number observations 1000 Test6 (EURUSD,M1) HSIC: 0.01050641 Test6 (EURUSD,M1) p-value: 0.0000 Test6 (EURUSD,M1) Critical value: 0.0010 Test6 (EURUSD,M1) Отвергаем H0: Наблюдения зависимы
次に、ランダム増分に基づいてカスタム・シンボルを作成し、それを実行した。
Test6 (RANDOM_EURUSD,M1) Коэффициент корреляции (X1, Y) = -0.6103 Test6 (RANDOM_EURUSD,M1) Коэффициент корреляции (X2, Y) = -0.4954 Test6 (RANDOM_EURUSD,M1) ----------------Nonlinear_dependence------------- Test6 (RANDOM_EURUSD,M1) Время выполнения: 12.656 seconds Test6 (RANDOM_EURUSD,M1) ----------------------------------- Test6 (RANDOM_EURUSD,M1) Number observations 1000 Test6 (RANDOM_EURUSD,M1) HSIC: 0.00900188 Test6 (RANDOM_EURUSD,M1) p-value: 0.0000 Test6 (RANDOM_EURUSD,M1) Critical value: 0.0009 Test6 (RANDOM_EURUSD,M1) Отвергаем H0: Наблюдения зависимы
なぜ2番目のケースでは依存性があるのでしょうか?大雑把に言えば、確率変数の累積和である3つのベクトル間には依存性があると考えられる。
興味深い記事だ。この方法については知らなかった。相互情報よりも優れている点はありますか?(相互情報)の方が一般的だったからです。
また、通常より遅いこれらの異なる基準よりも、依存関係を決定するために高速MOモデルを計算する方がより速いことが多いことにも気づきました。本来は逆であるべきですが :)
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索

新しい記事「ヒルベルト=シュミット独立性基準(HSIC)」はパブリッシュされました:
金融商品の価格データを扱うトレーダーにとっての主な課題は、正の期待値を有する取引システム(EA)を構築することです。このようなシステムを設計する際には、学習および実運用に使用されるデータ内に隠れた依存関係が存在することを前提とする場合が一般的です。しかし、この仮定を統計的に検証するという問題が十分に検証されることはほとんどありません。一般には、アウトオブサンプルデータでのテスト結果を通じて間接的に答えが得られると考えられています。
一方で、特徴量と目的変数の間に関係が存在するかどうかという問いに対する統計的に妥当な結論は、極めて重要です。肯定的な結果は予測モデルの利用を支持しますが、否定的な結果は「アルゴリズムはいったい何を予測しようとしているのか」という疑問を生じさせます。
数理統計学において、確率変数間に確率的依存関係が存在するかどうかという問いには、独立性検定によって答えます。そのような基準の一つがHSIC統計検定であり、2005年に統計学者アーサー・グレットンによって提案された強力なノンパラメトリック手法です。
相関係数が線形関係しか検出できないのに対し、HSICは線形および非線形の両方の関係を検出することができます。この性質により、特徴選択、因果分析、その他の機械学習タスクで広く利用されています。本記事では、HSICの動作原理を分析し、MQL5環境で実装します。
作者: Evgeniy Chernish