🟠
拡張クロスデータ行列法 with Python
はじめに
拡張クロスデータ行列法(extended-cross-data-matrix methodology (ECDM))は、CDMのデータ分割をいろんなパターンでするようにした方法です。
CDMについてはこちらをチェック。
今回は分割方法を紹介し、その分割するpythonコードを載せてあります。
ECDMを用いて推定量を求めるところまではしてないので詳しく知りたい方は参考文献をご確認ください。
拡張クロスデータ行列法
また、以下のように定義します:
注意:
また、
さらに、以下のように定義します:
ECDMを用いて
Pythonコード
def ECDM(X):
d, n = X.shape
n1 = np.ceil(n / 2).astype(int)
n2 = n - n1
data_n1 = []
data_n2 = []
for k in range(3, 2 * n):
if np.floor(k / 2) >= n1:
v_n1_k = set(range(int(np.floor(k / 2) - n1 + 1), int(np.floor(k / 2) + 1)))
else:
v_n1_k = set(range(1, int(np.floor(k / 2) + 1))).union(set(range(int(np.floor(k / 2) + n2 + 1), n + 1)))
if np.floor(k / 2) <= n1:
v_n2_k = set(range(int(np.floor(k / 2) + 1), int(np.floor(k / 2) + n2 + 1)))
else:
v_n2_k = set(range(1, int(np.floor(k / 2) - n1 + 1))).union(set(range(int(np.floor(k / 2) + 1), n + 1)))
a = np.array(list(v_n1_k))-1
b = np.array(list(v_n2_k))-1
data_n1.append(X[:, a])
data_n2.append(X[:, b])
return np.array(data_n1), np.array(data_n2)
参考文献
- 青嶋誠、矢田和善 (2019)「高次元の統計学」
https://www.kyoritsu-pub.co.jp/book/b10003167.html - R パッケージ “Extended-Cross-Data-Matrix”マニュアル https://www.math.tsukuba.ac.jp/~aoshima-lab/ECDM(JPN).pdf
Discussion