Построение корреляционной матрицы для моделирования данных - python - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь построить разные корреляционные матрицы с различным диапазоном значений корреляции. Эти корреляционные матрицы будут использоваться для моделирования данных с использованием метода numpy .random.multivariate_normal. Эти корреляционные матрицы могут быть визуально описаны следующим образом: Рассматриваемые корреляционные матрицы. Представленные значения являются недиагональными переменными корреляциями. Например, в матрице 1 переменные 1–4 коррелировали друг с другом при r = 0,8. Однако корреляции между этими и всеми другими переменными были равны 0.

Существует два размера матриц корреляции I wi sh, одна из которых содержит 9 переменных, а другая - 18. Следующий рисунок 1 , я пытался построить матрицу I:

def Simulation(num_samples,correlations):

M1 = np.eye(9)
M2 = np.eye(18)
np.putmask(M1[:4,:4],M1[:4,:4]==0,correlations[0])
np.putmask(M1[4:7,4:7],M1[4:7,4:7]==0,correlations[1])
np.putmask(M1[7:9,7:9],M1[7:9,7:9]==0,correlations[2])
np.putmask(M1[:4,4:],M1[:4,4:]==0,correlations[3])
np.putmask(M1[4:,:4],M1[4:,:4]==0,correlations[3])
np.putmask(M1[4:7,7:,M1[4:7,7:]==0,correlations[3]])
np.putmask(M1[7:,:7],M1[7:,:7]==0,correlations[3])

, где "number_samples" будет использоваться в качестве аргумента для np.random.multivariate_normal, а "correlations" - это список из 4 коэффициентов корреляции для матрица. Например, матрица I будет иметь в качестве входного моделирования (30, [0.8,0.8,0.8,0.0]). Я написал только код для матрицы первого размера, а не 18 переменных. Есть ли более простой способ построить эти матрицы корреляции и заполнить их?

...